mirror of
https://github.com/goharbor/harbor.git
synced 2025-01-08 17:08:17 +01:00
d1ee94bbc9
Adding DTR replication support Signed-off-by: Greg Sidelinger <gate@ilive4code.net>
199 lines
6.2 KiB
Go
199 lines
6.2 KiB
Go
// Copyright Project Harbor Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// const definition
|
|
const (
|
|
RegistryTypeHarbor RegistryType = "harbor"
|
|
RegistryTypeDockerHub RegistryType = "docker-hub"
|
|
RegistryTypeDockerRegistry RegistryType = "docker-registry"
|
|
RegistryTypeHuawei RegistryType = "huawei-SWR"
|
|
RegistryTypeGoogleGcr RegistryType = "google-gcr"
|
|
RegistryTypeAwsEcr RegistryType = "aws-ecr"
|
|
RegistryTypeAzureAcr RegistryType = "azure-acr"
|
|
RegistryTypeAliAcr RegistryType = "ali-acr"
|
|
RegistryTypeJfrogArtifactory RegistryType = "jfrog-artifactory"
|
|
RegistryTypeQuay RegistryType = "quay"
|
|
RegistryTypeGitLab RegistryType = "gitlab"
|
|
RegistryTypeDTR RegistryType = "dtr"
|
|
|
|
RegistryTypeHelmHub RegistryType = "helm-hub"
|
|
|
|
FilterStyleTypeText = "input"
|
|
FilterStyleTypeRadio = "radio"
|
|
FilterStyleTypeList = "list"
|
|
)
|
|
|
|
// RegistryType indicates the type of registry
|
|
type RegistryType string
|
|
|
|
// CredentialType represents the supported credential types
|
|
// e.g: u/p, OAuth token
|
|
type CredentialType string
|
|
|
|
// const definitions
|
|
const (
|
|
// CredentialTypeBasic indicates credential by user name, password
|
|
CredentialTypeBasic = "basic"
|
|
// CredentialTypeOAuth indicates credential by OAuth token
|
|
CredentialTypeOAuth = "oauth"
|
|
// CredentialTypeSecret is only used by the communication of Harbor internal components
|
|
CredentialTypeSecret = "secret"
|
|
)
|
|
|
|
// Credential keeps the access key and/or secret for the related registry
|
|
type Credential struct {
|
|
// Type of the credential
|
|
Type CredentialType `json:"type"`
|
|
// The key of the access account, for OAuth token, it can be empty
|
|
AccessKey string `json:"access_key"`
|
|
// The secret or password for the key
|
|
AccessSecret string `json:"access_secret"`
|
|
}
|
|
|
|
// HealthStatus describes whether a target is healthy or not
|
|
type HealthStatus string
|
|
|
|
const (
|
|
// Healthy indicates registry is healthy
|
|
Healthy = "healthy"
|
|
// Unhealthy indicates registry is unhealthy
|
|
Unhealthy = "unhealthy"
|
|
// Unknown indicates health status of registry is unknown
|
|
Unknown = "unknown"
|
|
)
|
|
|
|
// TODO add validation for Registry
|
|
|
|
// Registry keeps the related info of registry
|
|
// Data required for the secure access way is not contained here.
|
|
// DAO layer is not considered here
|
|
type Registry struct {
|
|
ID int64 `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Type RegistryType `json:"type"`
|
|
URL string `json:"url"`
|
|
// TokenServiceURL is only used for local harbor instance to
|
|
// avoid the requests passing through the external proxy for now
|
|
TokenServiceURL string `json:"token_service_url"`
|
|
Credential *Credential `json:"credential"`
|
|
Insecure bool `json:"insecure"`
|
|
Status string `json:"status"`
|
|
CreationTime time.Time `json:"creation_time"`
|
|
UpdateTime time.Time `json:"update_time"`
|
|
}
|
|
|
|
// FilterStyle ...
|
|
type FilterStyle struct {
|
|
Type FilterType `json:"type"`
|
|
Style string `json:"style"`
|
|
Values []string `json:"values,omitempty"`
|
|
}
|
|
|
|
// EndpointPattern ...
|
|
type EndpointPattern struct {
|
|
EndpointType EndpointType `json:"endpoint_type"`
|
|
Endpoints []*Endpoint `json:"endpoints"`
|
|
}
|
|
|
|
// EndpointType ..
|
|
type EndpointType string
|
|
|
|
const (
|
|
// EndpointPatternTypeStandard ...
|
|
EndpointPatternTypeStandard EndpointType = "EndpointPatternTypeStandard"
|
|
// EndpointPatternTypeFix ...
|
|
EndpointPatternTypeFix EndpointType = "EndpointPatternTypeFix"
|
|
// EndpointPatternTypeList ...
|
|
EndpointPatternTypeList EndpointType = "EndpointPatternTypeList"
|
|
)
|
|
|
|
// Endpoint ...
|
|
type Endpoint struct {
|
|
Key string `json:"key"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
// CredentialPattern ...
|
|
type CredentialPattern struct {
|
|
AccessKeyType AccessKeyType `json:"access_key_type"`
|
|
AccessKeyData string `json:"access_key_data"`
|
|
AccessSecretType AccessSecretType `json:"access_secret_type"`
|
|
AccessSecretData string `json:"access_secret_data"`
|
|
}
|
|
|
|
// AccessKeyType ..
|
|
type AccessKeyType string
|
|
|
|
const (
|
|
// AccessKeyTypeStandard ...
|
|
AccessKeyTypeStandard AccessKeyType = "AccessKeyTypeStandard"
|
|
// AccessKeyTypeFix ...
|
|
AccessKeyTypeFix AccessKeyType = "AccessKeyTypeFix"
|
|
)
|
|
|
|
// AccessSecretType ...
|
|
type AccessSecretType string
|
|
|
|
const (
|
|
// AccessSecretTypeStandard ...
|
|
AccessSecretTypeStandard AccessSecretType = "AccessSecretTypePass"
|
|
// AccessSecretTypeFile ...
|
|
AccessSecretTypeFile AccessSecretType = "AccessSecretTypeFile"
|
|
)
|
|
|
|
// RegistryInfo provides base info and capability declarations of the registry
|
|
type RegistryInfo struct {
|
|
Type RegistryType `json:"type"`
|
|
Description string `json:"description"`
|
|
SupportedResourceTypes []ResourceType `json:"-"`
|
|
SupportedResourceFilters []*FilterStyle `json:"supported_resource_filters"`
|
|
SupportedTriggers []TriggerType `json:"supported_triggers"`
|
|
}
|
|
|
|
// AdapterPattern provides base info and capability declarations of the registry
|
|
type AdapterPattern struct {
|
|
EndpointPattern *EndpointPattern `json:"endpoint_pattern"`
|
|
CredentialPattern *CredentialPattern `json:"credential_pattern"`
|
|
}
|
|
|
|
// NewDefaultAdapterPattern ...
|
|
func NewDefaultAdapterPattern() *AdapterPattern {
|
|
return &AdapterPattern{
|
|
EndpointPattern: NewDefaultEndpointPattern(),
|
|
CredentialPattern: NewDefaultCredentialPattern(),
|
|
}
|
|
}
|
|
|
|
// NewDefaultEndpointPattern ...
|
|
func NewDefaultEndpointPattern() *EndpointPattern {
|
|
return &EndpointPattern{
|
|
EndpointType: EndpointPatternTypeStandard,
|
|
}
|
|
}
|
|
|
|
// NewDefaultCredentialPattern ...
|
|
func NewDefaultCredentialPattern() *CredentialPattern {
|
|
return &CredentialPattern{
|
|
AccessKeyType: AccessKeyTypeStandard,
|
|
AccessSecretType: AccessSecretTypeStandard,
|
|
}
|
|
}
|