public async Task SetImagePropertiesAsync() { // Set up await ImportImageAsync(TestEnvironment.Registry, "library/hello-world", new List <string>() { "v1", "latest" }); Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_SetArtifactPropertiesAsync // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient and RegistryArtifact to access image operations ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential()); RegistryArtifact image = client.GetArtifact("library/hello-world", "v1"); // Set permissions on the image's "latest" tag await image.UpdateTagPropertiesAsync("latest", new ArtifactTagProperties() { CanWrite = false, CanDelete = false }); #endregion // Reset registry state await image.UpdateTagPropertiesAsync("latest", new ArtifactTagProperties() { CanRead = true, CanList = true, CanWrite = true, CanDelete = true }); }
public void DeleteImages() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_DeleteImage // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential()); // Iterate through repositories Pageable <string> repositoryNames = client.GetRepositoryNames(); foreach (string repositoryName in repositoryNames) { ContainerRepository repository = client.GetRepository(repositoryName); // Obtain the images ordered from newest to oldest Pageable <ArtifactManifestProperties> imageManifests = repository.GetManifestPropertiesCollection(orderBy: ArtifactManifestOrderBy.LastUpdatedOnDescending); // Delete images older than the first three. foreach (ArtifactManifestProperties imageManifest in imageManifests.Skip(3)) { Console.WriteLine($"Deleting image with digest {imageManifest.Digest}."); Console.WriteLine($" This image has the following tags: "); foreach (var tagName in imageManifest.Tags) { Console.WriteLine($" {imageManifest.RepositoryName}:{tagName}"); } repository.GetArtifact(imageManifest.Digest).Delete(); } } #endregion }
public void TestSetup() { client = InstrumentClient(new ContainerRegistryClient(_url, GetCredential(), new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud })); }
private static void ProcessContainerRegistry(IRegistry containerRegistry, ILogger log) { log.LogInformation($"Processing container registry {containerRegistry.Name} ..."); var clientOptions = new ContainerRegistryClientOptions() { Retry = { Delay = TimeSpan.FromSeconds(2), MaxDelay = TimeSpan.FromSeconds(30), MaxRetries = 25, Mode = RetryMode.Exponential }, Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }; var client = new ContainerRegistryClient(new Uri($"https://{containerRegistry.Name}.azurecr.io"), DefaultCredential, clientOptions); var repositoryNames = client.GetRepositoryNames(); var tasks = new List <Task>(); foreach (var repositoryName in repositoryNames) { tasks.Add(Task.Run(() => ProcessRepository(client, repositoryName, log))); } try { Task.WaitAll(tasks.ToArray()); } catch (AggregateException ae) { foreach (var e in ae.InnerExceptions) { log.LogError(e.Message); } } }
private static void ProcessRepository(ContainerRegistryClient client, string repositoryName, ILogger log) { log.LogInformation($"Processing repository {repositoryName} ..."); var tasks = new List <Task>(); Azure.Containers.ContainerRegistry.ContainerRepository repository = client.GetRepository(repositoryName); var manifests = repository.GetManifestPropertiesCollection(); foreach (var manifest in manifests) { if (manifest.Tags.Count < 1) { log.LogInformation($"Found untagged manifest {repositoryName}:{manifest.Digest}. Will delete."); tasks.Add(client.GetArtifact(repositoryName, manifest.Digest).DeleteAsync()); } } try { Task.WaitAll(tasks.ToArray()); } catch (AggregateException ae) { foreach (var e in ae.InnerExceptions) { log.LogError(e.Message); } } }
public async Task HandleErrorsAsync() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_HandleErrorsAsync Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a ContainerRepository class for an invalid repository string fakeRepositoryName = "doesnotexist"; ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(), new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }); ContainerRepository repository = client.GetRepository(fakeRepositoryName); try { await repository.GetPropertiesAsync(); } catch (RequestFailedException ex) when(ex.Status == 404) { Console.WriteLine("Repository wasn't found."); } #endregion Snippet:ContainerRegistry_Tests_Samples_HandleErrorsAsync }
public async Task AnonymouslyListTagsAsync() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.AnonymousAccessEndpoint); #region Snippet:ContainerRegistry_Tests_Samples_ListTagsAnonymousAsync // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient for anonymous access ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }); // Obtain a RegistryArtifact object to get access to image operations RegistryArtifact image = client.GetArtifact("library/hello-world", "latest"); // List the set of tags on the hello_world image tagged as "latest" AsyncPageable <ArtifactTagProperties> tags = image.GetAllTagPropertiesAsync(); // Iterate through the image's tags, listing the tagged alias for the image Console.WriteLine($"{image.FullyQualifiedReference} has the following aliases:"); await foreach (ArtifactTagProperties tag in tags) { Console.WriteLine($" {image.RegistryEndpoint.Host}/{image.RepositoryName}:{tag}"); } #endregion }
public void CorrectRequestForGetAllSubscriptionTiers() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.GetAllSubscriptionTiers(); factory.Received().GetPaginated <SubscriptionTier>("registry/options", null, "subscription_tiers"); }
public ListArtifacts(PerfOptions options) : base(options) { _client = new ContainerRegistryClient(new Uri(PerfTestEnvironment.Instance.Endpoint), PerfTestEnvironment.Instance.Credential, new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }); }
public void CorrectRequestForDelete() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.Delete(); factory.Received().ExecuteRaw("registry", null, null, Method.DELETE); }
public void CorrectRequestForGetSubscription() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.GetSubscription(); factory.Received().ExecuteRequest <Subscription>("registry/subscription", null, null, "subscription"); }
public void CorrectRequestForGetDockerCredentials() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.GetDockerCredentials(); factory.Received().ExecuteRequest <JObject>("registry/docker-credentials", null, null, "auths"); }
protected ContainerRepositoryClient CreateClient(string repository = null) { ContainerRegistryClient registryClient = new ContainerRegistryClient( new Uri(TestEnvironment.Endpoint), TestEnvironment.Credential, InstrumentClientOptions(new ContainerRegistryClientOptions())); return(InstrumentClient(registryClient.GetRepositoryClient(repository ?? _repositoryName))); }
public void CorrectRequestForDeleteRepositoryManifest() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.DeleteRepositoryManifest("registryName", "repositoryName", "manifestDigest"); var parameters = Arg.Is <List <Parameter> >(list => (string)list[0].Value == "registryName" && (string)list[1].Value == "repositoryName" && (string)list[2].Value == "manifestDigest"); factory.Received().ExecuteRaw("registry/{registryName}/repositories/{repositoryName}/digests/{manifestDigest}", parameters, null, Method.DELETE); }
public void CorrectRequestForGetActiveGarbageCollection() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.GetActiveGarbageCollection("registryName"); var parameters = Arg.Is <List <Parameter> >(list => (string)list[0].Value == "registryName"); factory.Received().ExecuteRequest <GarbageCollection>("registry/{registryName}/garbage-collection", parameters, null, "garbage_collections"); }
public void CorrectRequestForConfigure() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); var data = new Models.Requests.ContainerRegistryConfigure(); client.Configure(data); factory.Received().ExecuteRequest <Models.Responses.ContainerRegistryConfigure>("registry", null, data, null, Method.POST); }
public void CorrectRequestForGetAllRepositories() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); client.GetAllRepositories("registryName"); var parameters = Arg.Is <List <Parameter> >(list => (string)list[0].Value == "registryName"); factory.Received().GetPaginated <ContainerRegistryRepository>("registry/{registryName}/repositories", parameters, "repositories"); }
public void CorrectRequestForValidateName() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); var data = new ContainerRegistryValidateName(); client.ValidateName(data); factory.Received().ExecuteRaw("registry/validate-name", null, data, Method.POST); }
public void CorrectRequestForUpdateSubscriptionTier() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); var data = new UpdateSubscriptionTier(); client.UpdateSubscriptionTier(data); factory.Received().ExecuteRequest <SubscriptionTierUpdate>("registry/subscription", null, data, "subscription", Method.POST); }
public void CorrectRequestForUpdateGarbageCollection() { var factory = Substitute.For <IConnection>(); var client = new ContainerRegistryClient(factory); var data = new UpdateGarbageCollection(); client.UpdateGarbageCollection("registryName", "uuid", data); var parameters = Arg.Is <List <Parameter> >(list => (string)list[0].Value == "registryName" && (string)list[1].Value == "uuid"); factory.Received().ExecuteRequest <GarbageCollection>("registry/{registryName}/garbage-collection/{uuid}", parameters, data, "garbage_collections", Method.PUT); }
public async Task DeleteImagesAsync() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_DeleteImageAsync #if SNIPPET using System.Linq; using Azure.Containers.ContainerRegistry; using Azure.Identity; #endif // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(), new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }); // Iterate through repositories AsyncPageable <string> repositoryNames = client.GetRepositoryNamesAsync(); await foreach (string repositoryName in repositoryNames) { ContainerRepository repository = client.GetRepository(repositoryName); // Obtain the images ordered from newest to oldest AsyncPageable <ArtifactManifestProperties> imageManifests = repository.GetAllManifestPropertiesAsync(manifestOrder: ArtifactManifestOrder.LastUpdatedOnDescending); // Delete images older than the first three. await foreach (ArtifactManifestProperties imageManifest in imageManifests.Skip(3)) { RegistryArtifact image = repository.GetArtifact(imageManifest.Digest); Console.WriteLine($"Deleting image with digest {imageManifest.Digest}."); Console.WriteLine($" Deleting the following tags from the image: "); foreach (var tagName in imageManifest.Tags) { Console.WriteLine($" {imageManifest.RepositoryName}:{tagName}"); await image.DeleteTagAsync(tagName); } await image.DeleteAsync(); } } #endregion }
public async Task GetRepositories() { var endpoint = TestEnvironment.Endpoint; var userName = TestEnvironment.UserName; var password = TestEnvironment.Password; #region Snippet:GetSecret var client = new ContainerRegistryClient(new Uri(endpoint), userName, password); AsyncPageable <string> repositories = client.GetRepositoriesAsync(); await foreach (string repository in repositories) { Console.WriteLine(repository); } #endregion }
public async Task CreateClientAsync() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_CreateClientAsync // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential()); // Get the collection of repository names from the registry AsyncPageable <string> repositories = client.GetRepositoryNamesAsync(); await foreach (string repository in repositories) { Console.WriteLine(repository); } #endregion Snippet:ContainerRegistry_Tests_Samples_CreateClientAsync }
public void CreateClient() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_CreateClient // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential()); // Perform an operation Pageable <string> repositories = client.GetRepositoryNames(); foreach (string repository in repositories) { Console.WriteLine(repository); } #endregion Snippet:ContainerRegistry_Tests_Samples_CreateClient }
public DigitalOceanClient(string token) { var client = new RestClient(DigitalOceanApiUrl) { UserAgent = "digitalocean-api-dotnet" }; client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token)); _connection = new Connection(client); Account = new AccountClient(_connection); Actions = new ActionsClient(_connection); CdnEndpoints = new CdnEndpointsClient(_connection); Certificates = new CertificatesClient(_connection); ContainerRegistry = new ContainerRegistryClient(_connection); Databases = new DatabasesClient(_connection); DomainRecords = new DomainRecordsClient(_connection); Domains = new DomainsClient(_connection); DropletActions = new DropletActionsClient(_connection); Droplets = new DropletsClient(_connection); Firewalls = new FirewallsClient(_connection); FloatingIpActions = new FloatingIpActionsClient(_connection); FloatingIps = new FloatingIpsClient(_connection); ImageActions = new ImageActionsClient(_connection); Images = new ImagesClient(_connection); LoadBalancers = new LoadBalancerClient(_connection); Projects = new ProjectsClient(_connection); ProjectResources = new ProjectResourcesClient(_connection); Keys = new KeysClient(_connection); Kubernetes = new KubernetesClient(_connection); Regions = new RegionsClient(_connection); Sizes = new SizesClient(_connection); Snapshots = new SnapshotsClient(_connection); Tags = new TagsClient(_connection); Volumes = new VolumesClient(_connection); VolumeActions = new VolumeActionsClient(_connection); BalanceClient = new BalanceClient(_connection); Vpc = new VpcClient(_connection); }
public void CreateClient() { Environment.SetEnvironmentVariable("REGISTRY_ENDPOINT", TestEnvironment.Endpoint); #region Snippet:ContainerRegistry_Tests_Samples_CreateClient // Get the service endpoint from the environment Uri endpoint = new Uri(Environment.GetEnvironmentVariable("REGISTRY_ENDPOINT")); // Create a new ContainerRegistryClient ContainerRegistryClient client = new ContainerRegistryClient(endpoint, new DefaultAzureCredential(), new ContainerRegistryClientOptions() { Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud }); // Get the collection of repository names from the registry Pageable <string> repositories = client.GetRepositoryNames(); foreach (string repository in repositories) { Console.WriteLine(repository); } #endregion Snippet:ContainerRegistry_Tests_Samples_CreateClient }
public ListArtifacts(PerfOptions options) : base(options) { _client = new ContainerRegistryClient(new Uri(PerfTestEnvironment.Instance.Endpoint), PerfTestEnvironment.Instance.Credential); }
public void TestSetup() { client = InstrumentClient(new ContainerRegistryClient(_url, GetCredential(), new ContainerRegistryClientOptions())); }