Documentation ¶
Overview ¶
* OCI Distribution Specification Client * * For more information visit below URL * https://github.com/opencontainers/distribution-spec/blob/main/spec.md#endpoints *
Index ¶
- Constants
- Variables
- func ParseImag(image string) (domain, path, name, tag string, err error)
- func SplitImageNameTag(image string) (string, string)
- func TryLogin(ctx context.Context, registryurl string, username, password string) error
- type AdditionLink
- type Artifact
- type Client
- func (c *Client) AddArtifactLabel(ctx context.Context, image string, labelid int64) error
- func (c *Client) AddArtifactLabelFromKey(ctx context.Context, image string, key, desc string) error
- func (c *Client) CreateGlobalLabels(ctx context.Context, key, desc string) error
- func (c *Client) CreateProjectLabels(ctx context.Context, projectid int64, key, desc string) error
- func (c *Client) DeleteArtifactLabel(ctx context.Context, image string, labelid int64) error
- func (c *Client) DeleteArtifactLabelFromKey(ctx context.Context, image string, key string) error
- func (c *Client) GetArtifact(ctx context.Context, image string, options GetArtifactOptions) (*Artifact, error)
- func (c *Client) GetArtifactVulnerabilities(ctx context.Context, image string) (*Vulnerabilities, error)
- func (c *Client) ListArtifact(ctx context.Context, image string, options GetArtifactOptions) ([]Artifact, error)
- func (c *Client) ListGlobalLabels(ctx context.Context) ([]model.Label, error)
- func (c *Client) ListProjectLabels(ctx context.Context, projectid int) ([]model.Label, error)
- func (c *Client) ListProjectRepositories(ctx context.Context, project string, options ListProjectRepositoriesOptions) ([]RepoRecord, error)
- func (c *Client) ScanArtifact(ctx context.Context, image string) error
- func (c *Client) SystemInfo(ctx context.Context) (*SystemInfo, error)
- type GetArtifactOptions
- type HarborAuth
- type Label
- type ListProjectRepositoriesOptions
- type OCIDistributionClient
- type Options
- type RepoRecord
- type SystemInfo
- type Tag
- type Vulnerabilities
Constants ¶
const LabelColorRed = "#C92100"
Variables ¶
var ErrNotHarborImage = errors.New("not a harbor suit image")
Functions ¶
func ParseImag ¶
ParseImag barbor.foo.com/project/artifact:tag -> barbor.foo.com,project,artifact,tag barbor.foo.com/project/foo/artifact:tag -> barbor.foo.com,project,foo/artifact,tag barbor.foo.com/artifact:tag -> barbor.foo.com,library,artifact,tag project/artifact:tag -> docker.io,project,artifact,tag
func SplitImageNameTag ¶
Types ¶
type AdditionLink ¶
type AdditionLink struct { HREF string `json:"href"` Absolute bool `json:"absolute"` // specify the href is an absolute URL or not }
AdditionLink is a link via that the addition can be fetched
type Artifact ¶
type Artifact struct { artifact.Artifact Tags []Tag `json:"tags"` AdditionLinks map[string]AdditionLink `json:"addition_links"` Labels []Label `json:"labels"` ScanOverview map[string]vuln.NativeReportSummary `json:"scan_overview"` }
nolint: tagliatelle
type Client ¶
type Client struct { OCIDistributionClient // contains filtered or unexported fields }
func (*Client) AddArtifactLabel ¶
POST https://{host}/api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/labels {"id":2}
func (*Client) AddArtifactLabelFromKey ¶
func (*Client) CreateGlobalLabels ¶
POST https://{host}/api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/labels
func (*Client) CreateProjectLabels ¶
func (*Client) DeleteArtifactLabel ¶
DELETE https://{host}/api/v2.0/projects/projects/{{project_name}}/repositories/{{repository_name}}/artifacts/{{reference}}/labels/{label_id}
func (*Client) DeleteArtifactLabelFromKey ¶
func (*Client) GetArtifact ¶
func (c *Client) GetArtifact(ctx context.Context, image string, options GetArtifactOptions) (*Artifact, error)
GET https://{host}/api/v2.0/projects/{{project_name}}/repositories/{{repository_name}}/artifacts/{{reference}}?with_scan_overview=true
func (*Client) GetArtifactVulnerabilities ¶
func (c *Client) GetArtifactVulnerabilities(ctx context.Context, image string) (*Vulnerabilities, error)
GET https://{host}/api/v2.0/projects/{project}/repositories/{repository_name}/artifacts/{reference}/additions/vulnerabilities
func (*Client) ListArtifact ¶
func (c *Client) ListArtifact(ctx context.Context, image string, options GetArtifactOptions) ([]Artifact, error)
GET https://{host}/api/v2.0/projects/{{project_name}}/repositories/{{repository_name}}/artifacts
func (*Client) ListGlobalLabels ¶
GET https://{host}/api/v2.0/labels?scope=g
func (*Client) ListProjectLabels ¶
GET https://{host}/api/v2.0/labels?scope=p&project_id={id}
func (*Client) ListProjectRepositories ¶ added in v1.23.0
func (c *Client) ListProjectRepositories(ctx context.Context, project string, options ListProjectRepositoriesOptions) ([]RepoRecord, error)
GET https://{host}/api/v2.0/projects/{project}/repositories?page_size=15&page=1
func (*Client) ScanArtifact ¶
POST https://{host}/api/v2.0/projects/{{project_name}}/repositories/{{repository_name}}/artifacts/{{reference}}/scan
func (*Client) SystemInfo ¶
func (c *Client) SystemInfo(ctx context.Context) (*SystemInfo, error)
GET https://{host}/api/v2.0/systeminfo
type GetArtifactOptions ¶
type HarborAuth ¶
type Label ¶
type Label struct { ID int64 `json:"id"` Name string `json:"name"` Description string `json:"description"` Color string `json:"color"` Level string `json:"level"` Scope string `json:"scope"` ProjectID int64 `json:"project_id"` CreationTime time.Time `json:"creation_time"` UpdateTime time.Time `json:"update_time"` Deleted bool `json:"deleted"` }
Label holds information used for a label nolint: tagliatelle
type ListProjectRepositoriesOptions ¶ added in v1.23.0
type OCIDistributionClient ¶
func NewOCIDistributionClient ¶
func NewOCIDistributionClient(server, username, password string) *OCIDistributionClient
func (*OCIDistributionClient) ListTags ¶
func (c *OCIDistributionClient) ListTags(ctx context.Context, image string) (*specsv1.TagList, error)
end-8a GET /v2/<name>/tags/list
func (*OCIDistributionClient) Ping ¶
func (c *OCIDistributionClient) Ping(ctx context.Context) error
参考OCI规范此段实现 https://github.com/opencontainers/distribution-spec/blob/main/spec.md#determining-support 目前大部分(所有)镜像仓库均实现了OCI Distribution 规范,可以使用 /v2 接口进行推断, 如果认证成功则返回200则认为实现了OCI且认证成功 end-1 GET /v2/ 200 404/401
type RepoRecord ¶ added in v1.23.0
type RepoRecord struct { RepositoryID int64 `json:"repository_id"` Name string `json:"name"` ProjectID int64 `json:"project_id"` Description string `json:"description"` PullCount int64 `json:"pull_count"` StarCount int64 `json:"star_count"` CreationTime time.Time `json:"creation_time"` UpdateTime time.Time `json:"update_time"` }
RepoRecord holds the record of an repository in DB, all the infors are from the registry notification event. nolint: tagliatelle
type SystemInfo ¶
type SystemInfo struct { WithNotary bool `json:"with_notary"` AuthMode string `json:"auth_mode"` RegistryUrl string `json:"registry_url"` ExternalUrl string `json:"external_url"` ProjectCreationRestriction string `json:"project_creation_restriction"` SelfRegistration bool `json:"self_registration"` HasCaRoot bool `json:"has_ca_root"` HarborVersion string `json:"harbor_version"` RegistryStorageProviderName string `json:"registry_storage_provider_name"` ReadOnly bool `json:"read_only"` WithChartmuseum bool `json:"with_chartmuseum"` NotificationEnable bool `json:"notification_enable"` }
nolint: tagliatelle
type Tag ¶
type Tag struct { ID int64 `json:"id"` RepositoryID int64 `json:"repository_id"` ArtifactID int64 `json:"artifact_id"` Name string `json:"name"` PushTime time.Time `json:"push_time"` PullTime time.Time `json:"pull_time"` Immutable bool `json:"immutable"` Signed bool `json:"signed"` }
Tag is the overall view of tag nolint: tagliatelle