public async Task <ExportPipeline> CreateExportPipelineResourceAsync() { var exportResourceGroupName = options.ExportPipeline.ResourceGroupName; var exportRegistryName = options.ExportPipeline.RegistryName; var registry = await registryClient.Registries.GetAsync( exportResourceGroupName, exportRegistryName).ConfigureAwait(false); if (registry != null) { var exportPipeline = new ExportPipeline( name: options.ExportPipeline.PipelineName, location: registry.Location, identity: IdentityHelper.GetManagedIdentity(options.ExportPipeline.UserAssignedIdentity), target: new ExportPipelineTargetProperties { Type = "AzureStorageBlobContainer", Uri = options.ExportPipeline.ContainerUri, KeyVaultUri = options.ExportPipeline.KeyVaultUri }, options: options.ExportPipeline.Options ); return(await registryClient.ExportPipelines.CreateAsync(registryName : options.ExportPipeline.RegistryName, resourceGroupName : options.ExportPipeline.ResourceGroupName, exportPipelineName : options.ExportPipeline.PipelineName, exportPipelineCreateParameters : exportPipeline).ConfigureAwait(false)); } else { throw new ArgumentException($"Could not find registry '{exportRegistryName}'. Please ensure the registry exists in the current resource group {exportResourceGroupName}."); } }
public async Task ExportImagesAsync(ExportPipeline exportPipeline) { var pipelineId = exportPipeline.Id; var pipelineRunName = options.ExportPipelineRun.PipelineRunName; var targetName = options.ExportPipelineRun.TargetName; var artifacts = options.ExportPipelineRun.Artifacts; Console.WriteLine($"Export PipelineRun properties:"); Console.WriteLine($" registryName: {options.ExportPipeline.RegistryName}"); Console.WriteLine($" pipelineRunName: {options.ExportPipelineRun.PipelineRunName}"); Console.WriteLine($" pipelineResourceId: {pipelineId}"); Console.WriteLine($" targetName: {options.ExportPipelineRun.TargetName}"); Console.WriteLine($" artifacts: {string.Join(Environment.NewLine, artifacts)}"); Console.WriteLine($"======================================================================"); var pipelineRunRequest = new PipelineRunRequest { PipelineResourceId = pipelineId, Target = new PipelineRunTargetProperties { Type = "AzureStorageBlob", Name = targetName }, Artifacts = artifacts }; Console.WriteLine($"Running pipelineRun {pipelineRunName}..."); var pipelineRun = await registryClient.PipelineRuns.CreateAsync(registryName : options.ExportPipeline.RegistryName, resourceGroupName : options.ExportPipeline.ResourceGroupName, pipelineRunName : pipelineRunName, request : pipelineRunRequest).ConfigureAwait(false); if (string.Equals(pipelineRun.ProvisioningState, "Failed", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine($"PipelineRun {pipelineRunName} failed with the inner error '{pipelineRun.Response.PipelineRunErrorMessage}'."); } else { Console.WriteLine($"PipelineRun {pipelineRunName} completed successfully!"); Console.WriteLine($"Uploaded blob {targetName} to {options.ExportPipeline.ContainerUri}."); } }
public void Validate() { if (string.IsNullOrWhiteSpace(TenantId)) { throw new ArgumentNullException(nameof(TenantId)); } if (string.IsNullOrWhiteSpace(MIClientId) && (string.IsNullOrWhiteSpace(SPClientId) || string.IsNullOrWhiteSpace(SPClientSecret))) { throw new ArgumentNullException($"Missing {nameof(MIClientId)} or {nameof(SPClientId)}/{nameof(SPClientSecret)}"); } if (string.IsNullOrWhiteSpace(SubscriptionId)) { throw new ArgumentNullException(nameof(SubscriptionId)); } ExportPipeline.Validate(); ImportPipeline.Validate(); }
/// <summary> /// Creates an export pipeline for a container registry with the specified /// parameters. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group to which the container registry belongs. /// </param> /// <param name='registryName'> /// The name of the container registry. /// </param> /// <param name='exportPipelineName'> /// The name of the export pipeline. /// </param> /// <param name='exportPipelineCreateParameters'> /// The parameters for creating an export pipeline. /// </param> public static ExportPipeline Create(this IExportPipelinesOperations operations, string resourceGroupName, string registryName, string exportPipelineName, ExportPipeline exportPipelineCreateParameters) { return(operations.CreateAsync(resourceGroupName, registryName, exportPipelineName, exportPipelineCreateParameters).GetAwaiter().GetResult()); }
/// <summary> /// Creates an export pipeline for a container registry with the specified /// parameters. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group to which the container registry belongs. /// </param> /// <param name='registryName'> /// The name of the container registry. /// </param> /// <param name='exportPipelineName'> /// The name of the export pipeline. /// </param> /// <param name='exportPipelineCreateParameters'> /// The parameters for creating an export pipeline. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async System.Threading.Tasks.Task <ExportPipeline> BeginCreateAsync(this IExportPipelinesOperations operations, string resourceGroupName, string registryName, string exportPipelineName, ExportPipeline exportPipelineCreateParameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginCreateWithHttpMessagesAsync(resourceGroupName, registryName, exportPipelineName, exportPipelineCreateParameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }