project

package
v3.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2021 License: MIT Imports: 11 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// ErrProjectIllegalIDFormatMsg is the error message for ErrProjectIllegalIDFormat error.
	ErrProjectIllegalIDFormatMsg = "illegal format of provided ID value"

	// ErrProjectUnauthorizedMsg is the error message for ErrProjectUnauthorized error.
	ErrProjectUnauthorizedMsg = "unauthorized"

	// ErrProjectInternalErrorsMsg is the error message for ErrProjectInternalErrors error.
	ErrProjectInternalErrorsMsg = "unexpected internal errors"

	// ErrProjectNoPermissionMsg is the error message for ErrProjectNoPermission error.
	ErrProjectNoPermissionMsg = "user does not have permission to the project"

	// ErrProjectIDNotExistsMsg is the error message for ErrProjectIDNotExists error.
	ErrProjectIDNotExistsMsg = "project ID does not exist"

	// ErrProjectNameAlreadyExistsMsg is the error message for ErrProjectNameAlreadyExists error.
	ErrProjectNameAlreadyExistsMsg = "project name already exists"

	// ErrProjectMismatchMsg is the error message for ErrProjectMismatch error.
	ErrProjectMismatchMsg = "id/name pair not found on server side"

	// ErrProjectNotFoundMsg is the error message for ErrProjectNotFound error.
	ErrProjectNotFoundMsg = "project not found on server side"

	// ErrProjectNotProvidedMsg is the error message for ErrProjectNotProvided error.
	ErrProjectNotProvidedMsg = "no project provided"

	// ErrProjectNoMemberProvidedMsg is the error message for ErrProjectNoMemberProvided error.
	ErrProjectNoMemberProvidedMsg = "no project member provided"

	// ErrProjectMemberMismatchMsg is the error message for ErrProjectMemberMismatch error.
	ErrProjectMemberMismatchMsg = "no user with id/name pair found on server side"

	// ErrProjectMemberIllegalFormatMsg is the error message for ErrProjectMemberIllegalFormat error.
	ErrProjectMemberIllegalFormatMsg = "illegal format of project member or project id is invalid, or LDAP DN is invalid"

	// ErrProjectUserIsNoMemberMsg is the error message for ErrProjectUserIsNoMember.
	ErrProjectUserIsNoMemberMsg = "user is no member in project"

	// ErrProjectInvalidRequestMsg is the error message for ErrProjectInvalidRequest error.
	ErrProjectInvalidRequestMsg = "invalid request"

	// ErrProjectMetadataAlreadyExistsMsg is the error message for ErrProjectMetadataAlreadyExists error.
	ErrProjectMetadataAlreadyExistsMsg = "metadata key already exists"

	// ErrProjectUnknownResourceMsg is the error message for ErrProjectUnknownResource error.
	ErrProjectUnknownResourceMsg = "resource unknown"

	// ErrProjectNameNotProvidedMsg is the error message for ErrProjectNameNotProvided error.
	ErrProjectNameNotProvidedMsg = "project name not provided"

	// ErrProjectMetadataUndefinedMsg is the error message for ErrProjectMetadataUndefined error.
	ErrProjectMetadataUndefinedMsg = "project metadata undefined"

	// ErrProjectMetadataValueUndefinedMsg is the error message used for MetadataKey's being undefined or nil.
	ErrProjectMetadataValueUndefinedMsg = "project metadata value is nil: "

	// ErrProjectNoWebhookPolicyProvidedMsg is the error message for ErrProjectNoWebhookPolicyProvided error.
	ErrProjectNoWebhookPolicyProvidedMsg = "no webhook policy provided"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client interface {
	NewProject(ctx context.Context, name string, storageLimit *int64) (*modelv2.Project, error)
	DeleteProject(ctx context.Context, p *modelv2.Project) error
	GetProjectByName(ctx context.Context, name string) (*modelv2.Project, error)
	GetProjectByID(ctx context.Context, projectID int64) (*modelv2.Project, error)
	ListProjects(ctx context.Context, nameFilter string) ([]*modelv2.Project, error)
	UpdateProject(ctx context.Context, p *modelv2.Project, storageLimit *int64) error

	AddProjectMember(ctx context.Context, p *modelv2.Project, u *model.User, roleID int) error
	ListProjectMembers(ctx context.Context, p *modelv2.Project) ([]*model.ProjectMemberEntity, error)
	UpdateProjectMemberRole(ctx context.Context, p *modelv2.Project, u *model.User, roleID int) error
	DeleteProjectMember(ctx context.Context, p *modelv2.Project, u *model.User) error

	AddProjectMetadata(ctx context.Context, p *modelv2.Project, key MetadataKey, value string) error
	GetProjectMetadataValue(ctx context.Context, projectID int64, key MetadataKey) (string, error)
	ListProjectMetadata(ctx context.Context, p *modelv2.Project) (*modelv2.ProjectMetadata, error)
	UpdateProjectMetadata(ctx context.Context, p *modelv2.Project, key MetadataKey, value string) error
	DeleteProjectMetadataValue(ctx context.Context, p *modelv2.Project, key MetadataKey) error

	ListProjectRobots(ctx context.Context, p *modelv2.Project) ([]*model.RobotAccount, error)
	AddProjectRobot(ctx context.Context, p *modelv2.Project, robot *model.RobotAccountCreate) (string, error)
	UpdateProjectRobot(ctx context.Context, p *modelv2.Project, robotID int, robot *model.RobotAccountUpdate) error
	DeleteProjectRobot(ctx context.Context, p *modelv2.Project, robotID int) error

	ListProjectWebhookPolicies(ctx context.Context, p *modelv2.Project) ([]*model.WebhookPolicy, error)
	AddProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, webhookPolicy *model.WebhookPolicy) error
	UpdateProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, policyID int, policy *model.WebhookPolicy) error
	DeleteProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, policyID int) error
}

type ErrProjectIDNotExists

type ErrProjectIDNotExists struct{}

ErrProjectIDNotExists describes an error when no proper project ID is found.

func (*ErrProjectIDNotExists) Error

func (e *ErrProjectIDNotExists) Error() string

Error returns the error message.

type ErrProjectIllegalIDFormat

type ErrProjectIllegalIDFormat struct{}

ErrProjectIllegalIDFormat describes an illegal request format.

func (*ErrProjectIllegalIDFormat) Error

func (e *ErrProjectIllegalIDFormat) Error() string

Error returns the error message.

type ErrProjectInternalErrors

type ErrProjectInternalErrors struct{}

ErrProjectInternalErrors describes server-side internal errors.

func (*ErrProjectInternalErrors) Error

func (e *ErrProjectInternalErrors) Error() string

Error returns the error message.

type ErrProjectInvalidRequest

type ErrProjectInvalidRequest struct{}

ErrProjectMemberIllegalFormat describes an communication error when performing project member operations.

func (*ErrProjectInvalidRequest) Error

func (e *ErrProjectInvalidRequest) Error() string

Error returns the error message.

type ErrProjectMemberIllegalFormat

type ErrProjectMemberIllegalFormat struct{}

ErrProjectMemberIllegalFormat describes an communication error when performing project member operations.

func (*ErrProjectMemberIllegalFormat) Error

Error returns the error message.

type ErrProjectMemberMismatch

type ErrProjectMemberMismatch struct{}

ErrProjectMemberMismatch describes an error when user does not exist in context of project member operations.

func (*ErrProjectMemberMismatch) Error

func (e *ErrProjectMemberMismatch) Error() string

Error returns the error message.

type ErrProjectMetadataAlreadyExists

type ErrProjectMetadataAlreadyExists struct{}

ErrProjectMetadataAlreadyExists describes an error, which happens when a metadata key of a project is tried to be created a second time.

func (*ErrProjectMetadataAlreadyExists) Error

Error returns the error message.

type ErrProjectMetadataUndefined

type ErrProjectMetadataUndefined struct{}

ErrProjectMetadataUndefined describes an error accessing a project's metadata.

func (*ErrProjectMetadataUndefined) Error

Error returns the error message.

type ErrProjectMetadataValueAutoScanUndefined added in v3.1.1

type ErrProjectMetadataValueAutoScanUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValueAutoScanUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValueEnableContentTrustUndefined added in v3.1.1

type ErrProjectMetadataValueEnableContentTrustUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValueEnableContentTrustUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValuePreventVulUndefined added in v3.1.1

type ErrProjectMetadataValuePreventVulUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValuePreventVulUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValuePublicUndefined added in v3.1.1

type ErrProjectMetadataValuePublicUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValuePublicUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValueRetentionIDUndefined added in v3.1.1

type ErrProjectMetadataValueRetentionIDUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValueRetentionIDUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValueReuseSysCveAllowlistUndefined added in v3.1.1

type ErrProjectMetadataValueReuseSysCveAllowlistUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValueReuseSysCveAllowlistUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMetadataValueSeverityUndefined added in v3.1.1

type ErrProjectMetadataValueSeverityUndefined struct{}

ProjectMetadataValueEnableContentTrustUndefined describes an error regarding a metadata value being undefined or nil.

func (*ErrProjectMetadataValueSeverityUndefined) Error added in v3.1.1

Error returns the error message.

type ErrProjectMismatch

type ErrProjectMismatch struct{}

ErrProjectMismatch describes a failed lookup of a project with name/id pair.

func (*ErrProjectMismatch) Error

func (e *ErrProjectMismatch) Error() string

Error returns the error message.

type ErrProjectNameAlreadyExists

type ErrProjectNameAlreadyExists struct{}

ErrProjectNameAlreadyExists describes a duplicate project name error.

func (*ErrProjectNameAlreadyExists) Error

Error returns the error message.

type ErrProjectNameNotProvided

type ErrProjectNameNotProvided struct{}

ErrProjectNameNotProvided describes a missing project name.

func (*ErrProjectNameNotProvided) Error

func (e *ErrProjectNameNotProvided) Error() string

Error returns the error message.

type ErrProjectNoMemberProvided

type ErrProjectNoMemberProvided struct{}

ErrProjectNoMemberProvided

func (*ErrProjectNoMemberProvided) Error

Error returns the error message.

type ErrProjectNoPermission

type ErrProjectNoPermission struct{}

ErrProjectNoPermission describes a request error without permission.

func (*ErrProjectNoPermission) Error

func (e *ErrProjectNoPermission) Error() string

Error returns the error message.

type ErrProjectNoWebhookPolicyProvided added in v3.3.0

type ErrProjectNoWebhookPolicyProvided struct{}

ErrProjectNoWebhookPolicyProvided describes which happens, when no webhook policy is provided.

func (*ErrProjectNoWebhookPolicyProvided) Error added in v3.3.0

Error returns the error message.

type ErrProjectNotFound

type ErrProjectNotFound struct{}

ErrProjectNotFound describes an error when a specific project is not found.

func (*ErrProjectNotFound) Error

func (e *ErrProjectNotFound) Error() string

Error returns the error message.

type ErrProjectNotProvided

type ErrProjectNotProvided struct{}

func (*ErrProjectNotProvided) Error

func (e *ErrProjectNotProvided) Error() string

Error returns the error message.

type ErrProjectUnauthorized

type ErrProjectUnauthorized struct{}

ErrProjectUnauthorized describes an unauthorized request.

func (*ErrProjectUnauthorized) Error

func (e *ErrProjectUnauthorized) Error() string

Error returns the error message.

type ErrProjectUnknownResource

type ErrProjectUnknownResource struct{}

ErrProjectUnknownResource describes which happens, when requesting an unknown ressource.

func (*ErrProjectUnknownResource) Error

func (e *ErrProjectUnknownResource) Error() string

Error returns the error message.

type ErrProjectUserIsNoMember

type ErrProjectUserIsNoMember struct{}

ErrProjectUserIsNoMember describes an error case, where a given user is no member of a given project.

func (*ErrProjectUserIsNoMember) Error

func (e *ErrProjectUserIsNoMember) Error() string

Error returns the error message.

type MetadataKey

type MetadataKey string
const (
	ProjectMetadataKeyEnableContentTrust   MetadataKey = "enable_content_trust"
	ProjectMetadataKeyAutoScan             MetadataKey = "auto_scan"
	ProjectMetadataKeySeverity             MetadataKey = "severity"
	ProjectMetadataKeyReuseSysCveAllowlist MetadataKey = "reuse_sys_cve_whitelist"
	ProjectMetadataKeyPublic               MetadataKey = "public"
	ProjectMetadataKeyPreventVul           MetadataKey = "prevent_vul"
	ProjectMetadataKeyRetentionID          MetadataKey = "retention_id"
)

type RESTClient

type RESTClient struct {
	// The legacy swagger client
	LegacyClient *client.Harbor

	// The new client of the harbor v2 API
	V2Client *v2client.Harbor

	// AuthInfo contains the auth information that is provided on API calls.
	AuthInfo runtime.ClientAuthInfoWriter
}

RESTClient is a subclient for handling project related actions.

func NewClient

func NewClient(legacyClient *client.Harbor, v2Client *v2client.Harbor, authInfo runtime.ClientAuthInfoWriter) *RESTClient

func (*RESTClient) AddProjectMember

func (c *RESTClient) AddProjectMember(ctx context.Context, p *modelv2.Project, u *model.User, roleID int) error

AddProjectMember creates a membership between a user and a project.

func (*RESTClient) AddProjectMetadata

func (c *RESTClient) AddProjectMetadata(ctx context.Context, p *modelv2.Project, key MetadataKey, value string) error

AddMetadata adds metadata with a specific key and value to project p. See this for more explanation of possible keys and values: https://github.com/goharbor/harbor/blob/v1.10.2/api/harbor/swagger.yaml#L4894

func (*RESTClient) AddProjectRobot added in v3.0.5

func (c *RESTClient) AddProjectRobot(ctx context.Context, p *modelv2.Project, robot *model.RobotAccountCreate) (string, error)

AddProjectRobot adds a robot account to project p and returns the token.

func (*RESTClient) AddProjectWebhookPolicy added in v3.3.0

func (c *RESTClient) AddProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, policy *model.WebhookPolicy) error

AddProjectWebhookPolicy adds a webhook policy to project p.

func (*RESTClient) DeleteProject

func (c *RESTClient) DeleteProject(ctx context.Context, p *modelv2.Project) error

DeleteProject deletes the specified project. Returns an error when no matching project is found or when having difficulties talking to the API.

func (*RESTClient) DeleteProjectMember

func (c *RESTClient) DeleteProjectMember(ctx context.Context, p *modelv2.Project, u *model.User) error

DeleteProjectMember deletes the membership between a user and a project.

func (*RESTClient) DeleteProjectMetadataValue

func (c *RESTClient) DeleteProjectMetadataValue(ctx context.Context, p *modelv2.Project, key MetadataKey) error

DeleteMetadataValue deletes metadata of project p given by key.

func (*RESTClient) DeleteProjectRobot added in v3.0.5

func (c *RESTClient) DeleteProjectRobot(ctx context.Context, p *modelv2.Project, robotID int) error

DeleteProjectRobot deletes a robot account from project p.

func (*RESTClient) DeleteProjectWebhookPolicy added in v3.3.0

func (c *RESTClient) DeleteProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, policyID int) error

DeleteProjectWebhookPolicy deletes a webhook policy from project p.

func (*RESTClient) GetProjectByID

func (c *RESTClient) GetProjectByID(ctx context.Context, projectID int64) (*modelv2.Project, error)

GetProjectByID returns a project identified by its ID.

func (*RESTClient) GetProjectByName

func (c *RESTClient) GetProjectByName(ctx context.Context, name string) (*modelv2.Project, error)

GetProjectByName returns an existing project identified by name. Returns an error if it cannot find a matching project or when having difficulties talking to the API.

func (*RESTClient) GetProjectMetadataValue

func (c *RESTClient) GetProjectMetadataValue(ctx context.Context, projectID int64, key MetadataKey) (string, error)

GetProjectMetadataValue retrieves metadata with key of project p.

func (*RESTClient) ListProjectMembers

func (c *RESTClient) ListProjectMembers(ctx context.Context, p *modelv2.Project) ([]*model.ProjectMemberEntity, error)

ListProjectMembers returns a list of project members.

func (*RESTClient) ListProjectMetadata

func (c *RESTClient) ListProjectMetadata(ctx context.Context, p *modelv2.Project) (*modelv2.ProjectMetadata, error)

ListMetadata lists all metadata of a project

func (*RESTClient) ListProjectRobots added in v3.0.5

func (c *RESTClient) ListProjectRobots(ctx context.Context, p *modelv2.Project) ([]*model.RobotAccount, error)

ListProjectRobots returns a list of all robot accounts in project p.

func (*RESTClient) ListProjectWebhookPolicies added in v3.3.0

func (c *RESTClient) ListProjectWebhookPolicies(ctx context.Context, p *modelv2.Project) ([]*model.WebhookPolicy, error)

ListProjectWebhookPolicies returns a list of all webhook policies in project p.

func (*RESTClient) ListProjects

func (c *RESTClient) ListProjects(ctx context.Context, nameFilter string) ([]*modelv2.Project, error)

ListProjects returns a list of projects based on a name filter. Returns all projects if name is an empty string. Returns an error if no projects were found.

func (*RESTClient) NewProject

func (c *RESTClient) NewProject(ctx context.Context, name string, storageLimit *int64) (*modelv2.Project, error)

NewProject creates a new project with name as the project's name. Returns the project as it is stored inside Harbor or an error, if the project could not be created. CountLimit limits the number of repositories for this project. StorageLimit limits the allocatable space for this project.

func (*RESTClient) UpdateProject

func (c *RESTClient) UpdateProject(ctx context.Context, p *modelv2.Project, storageLimit *int64) error

UpdateProject updates a project with the specified data. Returns an error if name/ID pair of p does not match a stored project. Note: Only positive values of storageLimit are supported through this method. If you want to set an infinite storageLimit (-1), please refer to the quota client's 'UpdateStorageQuotaByProjectID' method.

func (*RESTClient) UpdateProjectMemberRole

func (c *RESTClient) UpdateProjectMemberRole(ctx context.Context, p *modelv2.Project, u *model.User, roleID int) error

UpdateProjectMemberRole updates the role of a project member.

func (*RESTClient) UpdateProjectMetadata

func (c *RESTClient) UpdateProjectMetadata(ctx context.Context, p *modelv2.Project, key MetadataKey, value string) error

UpdateMetadata deletes the specified metadata key, if it exists and re-adds this metadata key with the given value. This function works around the faulty behaviour of the corresponding 'Update' endpoint of the Harbor API.

func (*RESTClient) UpdateProjectRobot added in v3.0.5

func (c *RESTClient) UpdateProjectRobot(ctx context.Context, p *modelv2.Project, robotID int, robot *model.RobotAccountUpdate) error

UpdateProjectRobot updates a robot account in project p.

func (*RESTClient) UpdateProjectWebhookPolicy added in v3.3.0

func (c *RESTClient) UpdateProjectWebhookPolicy(ctx context.Context, p *modelv2.Project, policyID int, policy *model.WebhookPolicy) error

UpdateProjectWebhookPolicy updates a webhook policy in project p.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL