diff --git a/nexus3/pkg/repository/docker/docker_hosted_test.go b/nexus3/pkg/repository/docker/docker_hosted_test.go index c27fdaa..0f92363 100644 --- a/nexus3/pkg/repository/docker/docker_hosted_test.go +++ b/nexus3/pkg/repository/docker/docker_hosted_test.go @@ -11,7 +11,7 @@ import ( ) func getTestDockerHostedRepository(name string) repository.DockerHostedRepository { - writePolicy := repository.StorageWritePolicyAllow + latestPolicy := false return repository.DockerHostedRepository{ Name: name, Online: true, @@ -19,10 +19,11 @@ func getTestDockerHostedRepository(name string) repository.DockerHostedRepositor Cleanup: &repository.Cleanup{ PolicyNames: []string{"weekly-cleanup"}, }, - Storage: repository.HostedStorage{ + Storage: repository.DockerHostedStorage{ BlobStoreName: "default", StrictContentTypeValidation: true, - WritePolicy: &writePolicy, + WritePolicy: repository.StorageWritePolicyAllow, + LatestPolicy: &latestPolicy, }, Component: &repository.Component{ ProprietaryComponents: true, @@ -37,7 +38,7 @@ func getTestDockerHostedRepository(name string) repository.DockerHostedRepositor } func getTestProDockerHostedRepository(name string) repository.DockerHostedRepository { - writePolicy := repository.StorageWritePolicyAllow + latestPolicy := true return repository.DockerHostedRepository{ Name: name, Online: true, @@ -45,10 +46,11 @@ func getTestProDockerHostedRepository(name string) repository.DockerHostedReposi Cleanup: &repository.Cleanup{ PolicyNames: []string{"weekly-cleanup"}, }, - Storage: repository.HostedStorage{ + Storage: repository.DockerHostedStorage{ BlobStoreName: "default", StrictContentTypeValidation: true, - WritePolicy: &writePolicy, + WritePolicy: repository.StorageWritePolicyAllow, + LatestPolicy: &latestPolicy, }, Component: &repository.Component{ ProprietaryComponents: true, diff --git a/nexus3/schema/repository/docker.go b/nexus3/schema/repository/docker.go index 8534f3d..432b6e5 100644 --- a/nexus3/schema/repository/docker.go +++ b/nexus3/schema/repository/docker.go @@ -17,9 +17,9 @@ type DockerGroupRepository struct { } type DockerHostedRepository struct { - Name string `json:"name"` - Online bool `json:"online"` - Storage HostedStorage `json:"storage"` + Name string `json:"name"` + Online bool `json:"online"` + Storage DockerHostedStorage `json:"storage"` Docker `json:"docker"` *Cleanup `json:"cleanup,omitempty"` @@ -67,3 +67,18 @@ type DockerProxy struct { // Url of Docker Index to use IndexURL *string `json:"indexUrl,omitempty"` } + +// DockerHostedStorage contains repository storage for hosted docker +type DockerHostedStorage struct { + // Blob store used to store repository contents + BlobStoreName string `json:"blobStoreName"` + + // StrictContentTypeValidation: Whether to validate uploaded content's MIME type appropriate for the repository format + StrictContentTypeValidation bool `json:"strictContentTypeValidation"` + + // WritePolicy controls if deployments of and updates to assets are allowed + WritePolicy StorageWritePolicy `json:"writePolicy"` + + // LatestPolicy: Whether to allow redeploying the 'latest' tag but defer to the Deployment Policy for all other tags + LatestPolicy *bool `json:"latestPolicy,omitempty"` +}