...
Docker Repository Schema:
DockerRepo
id: Long
host: String
port: Integer
uname: String (used only for external repositories?)
name: String (this is the 'repo name')
createdOn: String
createdBy: String
modifiedOn: String
modifiedBy: String
etag: String
Note: This is versionable. The version must include the digest and allow a tag.DockerRepository extends Entity
- name (registryhost/reponame)
metadataprovider validates format and that, for managed repo's, the name starts with the parent entity id, that external repos' registryhosts don't violate the blacklist
- list of tag/digest pairs
digests must be unique
tags are optional but must be unique
for managed repo's the list can't be edited by the user
We have a 'white list' of registry hosts for which we answer authorization requests and a 'reserved' list of registry hosts for which external repositories can't be created. (This allows us to reserve address spaces for the future. E.g. the white list could contain docker.synapse.org:443 and the reserved list *.synapse.org.)
Services:
Create, Update and Delete entity: not allowed for entities which are 'managed', i.e. their host field matches that of a managed repo.
...