We will want to support building these types of applications using the SDK.
TODO: Can we identify external customer application types as well?
- Azure ACR CLI
- Docker CLI (uses Docker /v2 endpoints)
- Azure PowerShell for ACR
- Azure Portal ACR Repositories blade
- VSCode Docker plugin
- AKS
- ACI
- Azure App Services
- MCR uses ACR endpoints from their ingestion pipeline
- Azure Security Center
- TODO: Customer?
- TODO: Customer?
- ADO
- Data Bricks
- AML
We will want to support implementation of each of these scenarios in the SDK. These are the flows that customers will use to build the above-listed types of applications. We will classify these scenarios as common/advanced so we can design the simplest APIs for the most common scenarios.
-
View, delete contents of a registry
-
Check whether resources exist in registry
-
Create instance of a specific-schema of manifest directly, see: https://github.com/sajayantony/acr-cli/blob/main/Services/ContentStore.cs#L149
Use /v2 endpoints to upload layers (blobs) and manifest
See: https://github.com/sajayantony/acr-cli/blob/main/Services/ContentStore.cs#L127
Use /v2 endpoints to download layers (blobs) and manifest
See: https://github.com/sajayantony/acr-cli/blob/main/Services/ContentStore.cs#L31
See: https://github.com/sajayantony/acr-cli/blob/main/Services/ContentStore.cs#L85
Mount a blob from another repository
TODO: Is this only for layers, or would we support it for manifests or other blobs as well?
- Page through repositories
- Page through tags, potentially ordering by last update time
Create, get, update, delete on metadata for repository, manifest, tags.
Set read/write permissions on images
- AAD authentication within the context of the SDK.
- TODO: Will customers need an access token outside the SDK and want that from the SDK?
- Note: We will not support Basic Auth as described here in the Track 2 library
- OCI-compliant artifacts
- Helm charts
- TODO: Other?
-TODO: What functionality does the service support here? What apps would be built on it?
-TODO: Data plane task endpoints will need to be added to the Swagger file.
Note: this functionality is internal-only and won't be exposed in Track 2 client.
- TODO: Go client library?
- TODO: Support for DockerHub? (not just ACR registries)
- TODO: Other functionality the service supports that is not currently described in the service's Swagger file?
- TODO: Will we need to support
application/vnd.docker.distribution.manifest.v1+json
manifests, or can we leave this functionality out entirely and throw exceptions if we see this media type?