forked from Azure/azure-sdk-for-js
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ContainerRegistry] Migrate samples to v2 workflow (Azure#14750)
* [ContainerRegistry] Migrate samples to v2 workflow * Add comments about endpoint format * Address CR feedback - move listing by pages to separate methods as they are more advanced scenarios. - also update apidocs link for beta.1 as docs haven't been published * Use javascript tag in JS samples' package.json * Update sdk/containerregistry/container-registry/sample.env Co-authored-by: Will Temple <witemple@microsoft.com> Co-authored-by: Will Temple <witemple@microsoft.com>
- Loading branch information
1 parent
96e954d
commit 3d1c99f
Showing
20 changed files
with
481 additions
and
223 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
sdk/containerregistry/container-registry/samples-dev/containerRegistryClient.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// Copyright (c) Microsoft Corporation. | ||
// Licensed under the MIT License. | ||
|
||
/** | ||
* @summary Demonstrates the use of a ContainerRegistryClient. | ||
* @azsdk-weight 10 | ||
*/ | ||
|
||
import { ContainerRegistryClient } from "@azure/container-registry"; | ||
import { DefaultAzureCredential } from "@azure/identity"; | ||
import * as dotenv from "dotenv"; | ||
dotenv.config(); | ||
|
||
export async function main() { | ||
// endpoint should be in the form of "https://myregistryname.azurecr.io" | ||
// where "myregistryname" is the actual name of your registry | ||
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT || "<endpoint>"; | ||
const client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential()); | ||
await listRepositories(client); | ||
|
||
// Advanced: listing by pages | ||
const pageSize = 2; | ||
await listRepositoriesByPages(client, pageSize); | ||
|
||
const repositoryName = "repository-name-to-delete"; | ||
await deleteRepository(client, repositoryName); | ||
} | ||
|
||
async function listRepositories(client: ContainerRegistryClient) { | ||
console.log("Listing repositories"); | ||
const iterator = client.listRepositories(); | ||
for await (const repository of iterator) { | ||
console.log(` repository: ${repository}`); | ||
} | ||
} | ||
|
||
async function listRepositoriesByPages(client: any, pageSize: number) { | ||
console.log("Listing repositories by pages"); | ||
const pages = client.listRepositories().byPage({ maxPageSize: pageSize }); | ||
let result = await pages.next(); | ||
while (!result.done) { | ||
console.log(" -- page -- "); | ||
for (const repository of result.value) { | ||
console.log(` repository: ${repository}`); | ||
} | ||
result = await pages.next(); | ||
} | ||
} | ||
|
||
async function deleteRepository(client: ContainerRegistryClient, repositoryName: string) { | ||
console.log("Deleting a repository"); | ||
const response = await client.deleteRepository(repositoryName); | ||
console.log( | ||
`Artifacts deleted: ${(response && | ||
response.deletedRegistryArtifactDigests && | ||
response.deletedRegistryArtifactDigests.length) || | ||
0}` | ||
); | ||
console.log( | ||
`Tags deleted: ${(response && | ||
response.deletedRegistryArtifactDigests && | ||
response.deletedRegistryArtifactDigests.length) || | ||
0}` | ||
); | ||
} | ||
|
||
main().catch((err) => { | ||
console.error("The sample encountered an error:", err); | ||
}); |
135 changes: 135 additions & 0 deletions
135
sdk/containerregistry/container-registry/samples-dev/containerRepositoryClient.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
// Copyright (c) Microsoft Corporation. | ||
// Licensed under the MIT License. | ||
|
||
/** | ||
* @summary Demonstrates the use of a ContainerRepositoryClient. | ||
* @azsdk-weight 5 | ||
*/ | ||
|
||
import { ContainerRepositoryClient, RegistryArtifactProperties } from "@azure/container-registry"; | ||
import { DefaultAzureCredential } from "@azure/identity"; | ||
import * as dotenv from "dotenv"; | ||
dotenv.config(); | ||
|
||
export async function main() { | ||
// endpoint should be in the form of "https://myregistryname.azurecr.io" | ||
// where "myregistryname" is the actual name of your registry | ||
const endpoint = process.env.CONTAINER_REGISTRY_ENDPOINT || "<endpoint>"; | ||
const repository = process.env.REPOSITORY_NAME || "<repository name>"; | ||
|
||
const client = new ContainerRepositoryClient(endpoint, repository, new DefaultAzureCredential()); | ||
await getProperties(client); | ||
await listTags(client); | ||
|
||
const artifacts = await listArtifacts(client); | ||
|
||
if (artifacts && artifacts.length) { | ||
const digest = artifacts[0].digest; | ||
if (digest) { | ||
await getArtifactProperties(client, digest); | ||
|
||
await deleteArtifact(client, digest); | ||
} | ||
} | ||
|
||
// Advanced: listing by pages | ||
const pageSize = 2; | ||
await listTagsByPages(client, pageSize); | ||
await listArtifactsByPages(client, pageSize); | ||
} | ||
|
||
async function listTags(client: ContainerRepositoryClient) { | ||
console.log("Listing tags"); | ||
const iterator = client.listTags({ orderBy: "timeasc" }); | ||
for await (const tag of iterator) { | ||
console.log(` tag: ${tag.name}`); | ||
console.log(` digest: ${tag.digest}`); | ||
console.log(` created on: ${tag.createdOn}`); | ||
console.log(` last updated on: ${tag.lastUpdatedOn}`); | ||
} | ||
} | ||
|
||
async function listTagsByPages(client: ContainerRepositoryClient, pagesSize: number) { | ||
console.log("Listing tags by pages"); | ||
const pages = client.listTags().byPage({ maxPageSize: pagesSize }); | ||
let result = await pages.next(); | ||
while (!result.done) { | ||
console.log(" -- page -- "); | ||
for (const tag of result.value) { | ||
console.log(` tag: ${tag.name}`); | ||
console.log(` digest: ${tag.digest}`); | ||
console.log(` created on: ${tag.createdOn}`); | ||
console.log(` last updated on: ${tag.lastUpdatedOn}`); | ||
console.log(""); | ||
} | ||
result = await pages.next(); | ||
} | ||
} | ||
|
||
async function listArtifacts( | ||
client: ContainerRepositoryClient | ||
): Promise<RegistryArtifactProperties[]> { | ||
console.log("Listing artifacts"); | ||
const artifacts: RegistryArtifactProperties[] = []; | ||
const iterator = client.listRegistryArtifacts(); | ||
for await (const artifact of iterator) { | ||
artifacts.push(artifact); | ||
console.log(` digest: ${artifact.digest}`); | ||
console.log(` created on: ${artifact.createdOn}`); | ||
console.log(` last updated on: ${artifact.lastUpdatedOn}`); | ||
} | ||
|
||
return artifacts; | ||
} | ||
|
||
async function listArtifactsByPages(client: any, pageSize: number) { | ||
console.log("Listing artifacts by pages"); | ||
const pages = client.listRegistryArtifacts().byPage({ maxPageSize: pageSize }); | ||
let result = await pages.next(); | ||
while (!result.done) { | ||
console.log(" -- page -- "); | ||
for (const artifact of result.value) { | ||
console.log(` digest: ${artifact.digest}`); | ||
console.log(` created on: ${artifact.createdOn}`); | ||
console.log(` last updated on: ${artifact.lastUpdatedOn}`); | ||
console.log(""); | ||
} | ||
result = await pages.next(); | ||
} | ||
} | ||
|
||
async function getProperties(client: ContainerRepositoryClient) { | ||
console.log("Retrieving repository properties..."); | ||
const properties = await client.getProperties(); | ||
console.log(` name: ${properties.name}`); | ||
console.log(` created on: ${properties.createdOn}`); | ||
console.log(` last updated on: ${properties.lastUpdatedOn}`); | ||
console.log(` artifact count: ${properties.registryArtifactCount}`); | ||
console.log(` tag count: ${properties.tagCount}`); | ||
const writableProps = properties.writeableProperties; | ||
if (writableProps) { | ||
console.log(" writable properties:"); | ||
console.log( | ||
` { canDelete: ${writableProps.canDelete}, canList: ${writableProps.canList}, canRead: ${writableProps.canRead}, canWrite: ${writableProps.canWrite}}` | ||
); | ||
} | ||
} | ||
|
||
async function getArtifactProperties(client: ContainerRepositoryClient, digest: string) { | ||
console.log(`Retrieving registry artifact properties for ${digest}`); | ||
const properties = await client.getRegistryArtifactProperties(digest); | ||
console.log(` created on: ${properties.createdOn}`); | ||
console.log(` last updated on: ${properties.lastUpdatedOn}`); | ||
console.log(` arch : ${properties.cpuArchitecture}`); | ||
console.log(` os : ${properties.operatingSystem}`); | ||
console.log(` size : ${properties.size} bytes`); | ||
} | ||
|
||
async function deleteArtifact(client: ContainerRepositoryClient, digest: string) { | ||
console.log(`Deleting registry artifact for ${digest}`); | ||
await client.deleteRegistryArtifact(digest); | ||
} | ||
|
||
main().catch((err) => { | ||
console.error("The sample encountered an error:", err); | ||
}); |
51 changes: 0 additions & 51 deletions
51
sdk/containerregistry/container-registry/samples/javascript/containerRegistryClient.js
This file was deleted.
Oops, something went wrong.
11 changes: 0 additions & 11 deletions
11
sdk/containerregistry/container-registry/samples/javascript/sample.env
This file was deleted.
Oops, something went wrong.
10 changes: 0 additions & 10 deletions
10
sdk/containerregistry/container-registry/samples/tsconfig.json
This file was deleted.
Oops, something went wrong.
11 changes: 0 additions & 11 deletions
11
sdk/containerregistry/container-registry/samples/typescript/sample.env
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.