public async Task <Response <GalleryImageVersion> > GetAsync(string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, ReplicationStatusTypes?expand = null, CancellationToken cancellationToken = default) { if (resourceGroupName == null) { throw new ArgumentNullException(nameof(resourceGroupName)); } if (galleryName == null) { throw new ArgumentNullException(nameof(galleryName)); } if (galleryImageName == null) { throw new ArgumentNullException(nameof(galleryImageName)); } if (galleryImageVersionName == null) { throw new ArgumentNullException(nameof(galleryImageVersionName)); } using var message = CreateGetRequest(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, expand); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: { GalleryImageVersion value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); value = GalleryImageVersion.DeserializeGalleryImageVersion(document.RootElement); return(Response.FromValue(value, message.Response)); }
private void ValidateGalleryImageVersion(GalleryImageVersion imageVersionIn, GalleryImageVersion imageVersionOut) { Assert.False(string.IsNullOrEmpty(imageVersionOut.ProvisioningState.ToString())); if (imageVersionIn.Tags != null) { foreach (KeyValuePair <string, string> kvp in imageVersionIn.Tags) { Assert.AreEqual(kvp.Value, imageVersionOut.Tags[kvp.Key]); } } Assert.AreEqual(imageVersionIn.Location, imageVersionOut.Location); Assert.False(string.IsNullOrEmpty(imageVersionOut.StorageProfile.Source.Id), "imageVersionOut.PublishingProfile.Source.ManagedImage.Id is null or empty."); Assert.NotNull(imageVersionOut.PublishingProfile.EndOfLifeDate); Assert.NotNull(imageVersionOut.PublishingProfile.PublishedDate); Assert.NotNull(imageVersionOut.StorageProfile); }
public async Task GalleryImageVersion_CRUD_Tests() { EnsureClientsInitialized(LocationEastUs2); string rgName = Recording.GenerateAssetName(ResourceGroupPrefix); VirtualMachine vm = null; string imageName = Recording.GenerateAssetName("psTestSourceImage"); vm = await CreateCRPImage(rgName, imageName); Assert.False(string.IsNullOrEmpty(sourceImageId)); Trace.TraceInformation(string.Format("Created the source image id: {0}", sourceImageId)); string galleryName = Recording.GenerateAssetName(GalleryNamePrefix); Gallery gallery = GetTestInputGallery(); await WaitForCompletionAsync(await GalleriesOperations.StartCreateOrUpdateAsync(rgName, galleryName, gallery)); Trace.TraceInformation(string.Format("Created the gallery: {0} in resource group: {1}", galleryName, rgName)); string galleryImageName = Recording.GenerateAssetName(GalleryImageNamePrefix); GalleryImage inputGalleryImage = GetTestInputGalleryImage(); await WaitForCompletionAsync((await GalleryImagesOperations.StartCreateOrUpdateAsync(rgName, galleryName, galleryImageName, inputGalleryImage))); Trace.TraceInformation(string.Format("Created the gallery image: {0} in gallery: {1}", galleryImageName, galleryName)); string galleryImageVersionName = "1.0.0"; GalleryImageVersion inputImageVersion = GetTestInputGalleryImageVersion(sourceImageId); await WaitForCompletionAsync(await GalleryImageVersionsOperations.StartCreateOrUpdateAsync(rgName, galleryName, galleryImageName, galleryImageVersionName, inputImageVersion)); Trace.TraceInformation(string.Format("Created the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); GalleryImageVersion imageVersionFromGet = await GalleryImageVersionsOperations.GetAsync(rgName, galleryName, galleryImageName, galleryImageVersionName); Assert.NotNull(imageVersionFromGet); ValidateGalleryImageVersion(inputImageVersion, imageVersionFromGet); imageVersionFromGet = await GalleryImageVersionsOperations.GetAsync(rgName, galleryName, galleryImageName, galleryImageVersionName, ReplicationStatusTypes.ReplicationStatus); Assert.AreEqual(StorageAccountType.StandardLRS, imageVersionFromGet.PublishingProfile.StorageAccountType); Assert.AreEqual(StorageAccountType.StandardLRS, imageVersionFromGet.PublishingProfile.TargetRegions.First().StorageAccountType); Assert.NotNull(imageVersionFromGet.ReplicationStatus); Assert.NotNull(imageVersionFromGet.ReplicationStatus.Summary); inputImageVersion.PublishingProfile.EndOfLifeDate = Recording.UtcNow.AddDays(100); await WaitForCompletionAsync(await GalleryImageVersionsOperations.StartCreateOrUpdateAsync(rgName, galleryName, galleryImageName, galleryImageVersionName, inputImageVersion)); Trace.TraceInformation(string.Format("Updated the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); imageVersionFromGet = await GalleryImageVersionsOperations.GetAsync(rgName, galleryName, galleryImageName, galleryImageVersionName); Assert.NotNull(imageVersionFromGet); ValidateGalleryImageVersion(inputImageVersion, imageVersionFromGet); Trace.TraceInformation("Listing the gallery image versions"); List <GalleryImageVersion> listGalleryImageVersionsResult = await(GalleryImageVersionsOperations. ListByGalleryImageAsync(rgName, galleryName, galleryImageName)).ToEnumerableAsync(); Assert.IsTrue(listGalleryImageVersionsResult.Count() == 1); //Assert.Single(listGalleryImageVersionsResult); //Assert.Null(listGalleryImageVersionsResult.NextPageLink); await WaitForCompletionAsync(await GalleryImageVersionsOperations.StartDeleteAsync(rgName, galleryName, galleryImageName, galleryImageVersionName)); listGalleryImageVersionsResult = await(GalleryImageVersionsOperations. ListByGalleryImageAsync(rgName, galleryName, galleryImageName)).ToEnumerableAsync(); //Assert.Null(listGalleryImageVersionsResult.NextPageLink); Trace.TraceInformation(string.Format("Deleted the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); this.WaitMinutes(5); await WaitForCompletionAsync(await ImagesOperations.StartDeleteAsync(rgName, imageName)); Trace.TraceInformation("Deleted the CRP image."); await WaitForCompletionAsync(await VirtualMachinesOperations.StartDeleteAsync(rgName, vm.Name)); Trace.TraceInformation("Deleted the virtual machine."); await WaitForCompletionAsync(await GalleryImagesOperations.StartDeleteAsync(rgName, galleryName, galleryImageName)); Trace.TraceInformation("Deleted the gallery image."); WaitSeconds(100); await WaitForCompletionAsync(await GalleriesOperations.StartDeleteAsync(rgName, galleryName)); WaitSeconds(100); Trace.TraceInformation("Deleted the gallery."); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { if (ShouldProcess(this.Name, VerbsCommon.New)) { string resourceGroupName = this.ResourceGroupName; string galleryName = this.GalleryName; string galleryImageName = this.GalleryImageDefinitionName; string galleryImageVersionName = this.Name; GalleryImageVersion galleryImageVersion = new GalleryImageVersion(); galleryImageVersion.Location = this.Location; galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); galleryImageVersion.PublishingProfile.Source = new GalleryArtifactSource(); galleryImageVersion.PublishingProfile.Source.ManagedImage = new ManagedArtifact(); galleryImageVersion.PublishingProfile.Source.ManagedImage.Id = this.SourceImageId; if (this.IsParameterBound(c => c.Tag)) { galleryImageVersion.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value); } if (this.IsParameterBound(c => c.ReplicaCount)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ReplicaCount = this.ReplicaCount; } if (this.IsParameterBound(c => c.PublishingProfileExcludeFromLatest)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ExcludeFromLatest = this.PublishingProfileExcludeFromLatest.IsPresent; } if (this.IsParameterBound(c => c.PublishingProfileEndOfLifeDate)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.EndOfLifeDate = this.PublishingProfileEndOfLifeDate; } if (this.IsParameterBound(c => c.StorageAccountType)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.StorageAccountType = this.StorageAccountType; } if (this.IsParameterBound(c => c.TargetRegion)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.TargetRegions = new List <TargetRegion>(); foreach (var t in this.TargetRegion) { galleryImageVersion.PublishingProfile.TargetRegions.Add(new TargetRegion((string)t["Name"], (int?)t["ReplicaCount"], (string)t["StorageAccountType"])); } } var result = GalleryImageVersionsClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); var psObject = new PSGalleryImageVersion(); ComputeAutomationAutoMapperProfile.Mapper.Map <GalleryImageVersion, PSGalleryImageVersion>(result, psObject); WriteObject(psObject); } }); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { if (ShouldProcess(this.Name, VerbsData.Update)) { string resourceGroupName; string galleryName; string galleryImageName; string galleryImageVersionName; switch (this.ParameterSetName) { case "ResourceIdParameter": resourceGroupName = GetResourceGroupName(this.ResourceId); galleryName = GetResourceName(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageName = GetInstanceId(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageVersionName = GetVersion(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); break; case "ObjectParameter": resourceGroupName = GetResourceGroupName(this.InputObject.Id); galleryName = GetResourceName(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageName = GetInstanceId(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageVersionName = GetVersion(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); break; default: resourceGroupName = this.ResourceGroupName; galleryName = this.GalleryName; galleryImageName = this.GalleryImageDefinitionName; galleryImageVersionName = this.Name; break; } var galleryImageVersion = new GalleryImageVersion(); if (this.ParameterSetName == "ObjectParameter") { ComputeAutomationAutoMapperProfile.Mapper.Map <PSGalleryImageVersion, GalleryImageVersion>(this.InputObject, galleryImageVersion); } else { galleryImageVersion = GalleryImageVersionsClient.Get(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName); } if (this.IsParameterBound(c => c.Tag)) { galleryImageVersion.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value); } if (this.IsParameterBound(c => c.ReplicaCount)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ReplicaCount = this.ReplicaCount; } if (this.IsParameterBound(c => c.PublishingProfileExcludeFromLatest)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ExcludeFromLatest = this.PublishingProfileExcludeFromLatest.IsPresent; } if (this.IsParameterBound(c => c.PublishingProfileEndOfLifeDate)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.EndOfLifeDate = this.PublishingProfileEndOfLifeDate; } if (this.IsParameterBound(c => c.TargetRegion)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.TargetRegions = new List <TargetRegion>(); foreach (var t in this.TargetRegion) { galleryImageVersion.PublishingProfile.TargetRegions.Add(new TargetRegion((string)t["Name"], (int?)t["ReplicaCount"])); } } var result = GalleryImageVersionsClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); var psObject = new PSGalleryImageVersion(); ComputeAutomationAutoMapperProfile.Mapper.Map <GalleryImageVersion, PSGalleryImageVersion>(result, psObject); WriteObject(psObject); } }); }
public async Task <Response> CreateOrUpdateAsync(string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, GalleryImageVersion galleryImageVersion, CancellationToken cancellationToken = default) { if (resourceGroupName == null) { throw new ArgumentNullException(nameof(resourceGroupName)); } if (galleryName == null) { throw new ArgumentNullException(nameof(galleryName)); } if (galleryImageName == null) { throw new ArgumentNullException(nameof(galleryImageName)); } if (galleryImageVersionName == null) { throw new ArgumentNullException(nameof(galleryImageVersionName)); } if (galleryImageVersion == null) { throw new ArgumentNullException(nameof(galleryImageVersion)); } using var message = CreateCreateOrUpdateRequest(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: case 201: case 202: return(message.Response); default: throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); } }
internal HttpMessage CreateCreateOrUpdateRequest(string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, GalleryImageVersion galleryImageVersion) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Put; var uri = new RawRequestUriBuilder(); uri.Reset(endpoint); uri.AppendPath("/subscriptions/", false); uri.AppendPath(subscriptionId, true); uri.AppendPath("/resourceGroups/", false); uri.AppendPath(resourceGroupName, true); uri.AppendPath("/providers/Microsoft.Compute/galleries/", false); uri.AppendPath(galleryName, true); uri.AppendPath("/images/", false); uri.AppendPath(galleryImageName, true); uri.AppendPath("/versions/", false); uri.AppendPath(galleryImageVersionName, true); uri.AppendQuery("api-version", "2019-12-01", true); request.Uri = uri; request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(galleryImageVersion); request.Content = content; return(message); }
public virtual GalleryImageVersionsCreateOrUpdateOperation StartCreateOrUpdate(string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, GalleryImageVersion galleryImageVersion, CancellationToken cancellationToken = default) { if (resourceGroupName == null) { throw new ArgumentNullException(nameof(resourceGroupName)); } if (galleryName == null) { throw new ArgumentNullException(nameof(galleryName)); } if (galleryImageName == null) { throw new ArgumentNullException(nameof(galleryImageName)); } if (galleryImageVersionName == null) { throw new ArgumentNullException(nameof(galleryImageVersionName)); } if (galleryImageVersion == null) { throw new ArgumentNullException(nameof(galleryImageVersion)); } using var scope = _clientDiagnostics.CreateScope("GalleryImageVersionsOperations.StartCreateOrUpdate"); scope.Start(); try { var originalResponse = RestClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion, cancellationToken); return(new GalleryImageVersionsCreateOrUpdateOperation(_clientDiagnostics, _pipeline, RestClient.CreateCreateOrUpdateRequest(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion).Request, originalResponse)); } catch (Exception e) { scope.Failed(e); throw; } }
public PoolImageReference(GalleryImage galleryImage, GalleryImageVersion galleryImageVersion) { CustomImageResourceId = galleryImageVersion.Id; Type = ImageReferenceType.Gallery; Os = ParseOperatingSystem(galleryImage.OsType.ToString()); }
public void GalleryImageVersion_CRUD_Tests() { string originalTestLocation = Environment.GetEnvironmentVariable("AZURE_VM_TEST_LOCATION"); using (MockContext context = MockContext.Start(this.GetType())) { Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", galleryHomeLocation); EnsureClientsInitialized(context); string rgName = ComputeManagementTestUtilities.GenerateName(ResourceGroupPrefix); VirtualMachine vm = null; string imageName = ComputeManagementTestUtilities.GenerateName("psTestSourceImage"); try { string sourceImageId = ""; vm = CreateCRPImage(rgName, imageName, ref sourceImageId); Assert.False(string.IsNullOrEmpty(sourceImageId)); Trace.TraceInformation(string.Format("Created the source image id: {0}", sourceImageId)); string galleryName = ComputeManagementTestUtilities.GenerateName(GalleryNamePrefix); Gallery gallery = GetTestInputGallery(); m_CrpClient.Galleries.CreateOrUpdate(rgName, galleryName, gallery); Trace.TraceInformation(string.Format("Created the gallery: {0} in resource group: {1}", galleryName, rgName)); string galleryImageName = ComputeManagementTestUtilities.GenerateName(GalleryImageNamePrefix); GalleryImage inputGalleryImage = GetTestInputGalleryImage(); m_CrpClient.GalleryImages.CreateOrUpdate(rgName, galleryName, galleryImageName, inputGalleryImage); Trace.TraceInformation(string.Format("Created the gallery image: {0} in gallery: {1}", galleryImageName, galleryName)); string galleryImageVersionName = "1.0.0"; GalleryImageVersion inputImageVersion = GetTestInputGalleryImageVersion(sourceImageId); m_CrpClient.GalleryImageVersions.CreateOrUpdate(rgName, galleryName, galleryImageName, galleryImageVersionName, inputImageVersion); Trace.TraceInformation(string.Format("Created the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); GalleryImageVersion imageVersionFromGet = m_CrpClient.GalleryImageVersions.Get(rgName, galleryName, galleryImageName, galleryImageVersionName); Assert.NotNull(imageVersionFromGet); ValidateGalleryImageVersion(inputImageVersion, imageVersionFromGet); imageVersionFromGet = m_CrpClient.GalleryImageVersions.Get(rgName, galleryName, galleryImageName, galleryImageVersionName, ReplicationStatusTypes.ReplicationStatus); Assert.Equal(StorageAccountType.StandardLRS, imageVersionFromGet.PublishingProfile.StorageAccountType); Assert.Equal(StorageAccountType.StandardLRS, imageVersionFromGet.PublishingProfile.TargetRegions.First().StorageAccountType); Assert.NotNull(imageVersionFromGet.ReplicationStatus); Assert.NotNull(imageVersionFromGet.ReplicationStatus.Summary); inputImageVersion.PublishingProfile.EndOfLifeDate = DateTime.Now.AddDays(100).Date; m_CrpClient.GalleryImageVersions.CreateOrUpdate(rgName, galleryName, galleryImageName, galleryImageVersionName, inputImageVersion); Trace.TraceInformation(string.Format("Updated the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); imageVersionFromGet = m_CrpClient.GalleryImageVersions.Get(rgName, galleryName, galleryImageName, galleryImageVersionName); Assert.NotNull(imageVersionFromGet); ValidateGalleryImageVersion(inputImageVersion, imageVersionFromGet); Trace.TraceInformation("Listing the gallery image versions"); IPage <GalleryImageVersion> listGalleryImageVersionsResult = m_CrpClient.GalleryImageVersions. ListByGalleryImage(rgName, galleryName, galleryImageName); Assert.Single(listGalleryImageVersionsResult); Assert.Null(listGalleryImageVersionsResult.NextPageLink); m_CrpClient.GalleryImageVersions.Delete(rgName, galleryName, galleryImageName, galleryImageVersionName); listGalleryImageVersionsResult = m_CrpClient.GalleryImageVersions. ListByGalleryImage(rgName, galleryName, galleryImageName); Assert.Empty(listGalleryImageVersionsResult); Assert.Null(listGalleryImageVersionsResult.NextPageLink); Trace.TraceInformation(string.Format("Deleted the gallery image version: {0} in gallery image: {1}", galleryImageVersionName, galleryImageName)); ComputeManagementTestUtilities.WaitMinutes(5); m_CrpClient.Images.Delete(rgName, imageName); Trace.TraceInformation("Deleted the CRP image."); m_CrpClient.VirtualMachines.Delete(rgName, vm.Name); Trace.TraceInformation("Deleted the virtual machine."); m_CrpClient.GalleryImages.Delete(rgName, galleryName, galleryImageName); Trace.TraceInformation("Deleted the gallery image."); m_CrpClient.Galleries.Delete(rgName, galleryName); Trace.TraceInformation("Deleted the gallery."); } finally { Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", originalTestLocation); if (vm != null) { m_CrpClient.VirtualMachines.Delete(rgName, vm.Name); } m_CrpClient.Images.Delete(rgName, imageName); } } }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { if (ShouldProcess(this.Name, VerbsCommon.New)) { string resourceGroupName = this.ResourceGroupName; string galleryName = this.GalleryName; string galleryImageName = this.GalleryImageDefinitionName; string galleryImageVersionName = this.Name; GalleryImageVersion galleryImageVersion = new GalleryImageVersion(); galleryImageVersion.Location = this.Location; if (this.IsParameterBound(c => c.Tag)) { galleryImageVersion.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value); } if (this.IsParameterBound(c => c.DataDiskImage)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } galleryImageVersion.StorageProfile.DataDiskImages = this.DataDiskImage; } if (this.IsParameterBound(c => c.OSDiskImage)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } galleryImageVersion.StorageProfile.OsDiskImage = this.OSDiskImage; } if (this.IsParameterBound(c => c.ReplicaCount)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ReplicaCount = this.ReplicaCount; } if (this.IsParameterBound(c => c.PublishingProfileExcludeFromLatest)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ExcludeFromLatest = this.PublishingProfileExcludeFromLatest.IsPresent; } if (this.IsParameterBound(c => c.PublishingProfileEndOfLifeDate)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.EndOfLifeDate = this.PublishingProfileEndOfLifeDate; } if (this.IsParameterBound(c => c.StorageAccountType)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.StorageAccountType = this.StorageAccountType; } if (this.IsParameterBound(c => c.TargetRegion)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.TargetRegions = new List <TargetRegion>(); foreach (var t in this.TargetRegion) { var target = new TargetRegion() { Name = (string)t["Name"], RegionalReplicaCount = (int?)t["ReplicaCount"], StorageAccountType = (string)t["StorageAccountType"], }; if (t["Encryption"] != null) { var osDiskEncryptionSetId = (string)((Hashtable)((Hashtable)t["Encryption"])["osDiskImage"])["DiskEncryptionSetId"]; var osDiskImageEncryption = new OSDiskImageEncryption(osDiskEncryptionSetId); List <DataDiskImageEncryption> dataDiskImageEncryption = null; var dataDiskImage = (object[])((Hashtable)t["Encryption"])["dataDiskImages"]; if (dataDiskImage != null) { dataDiskImageEncryption = new List <DataDiskImageEncryption>(); foreach (Hashtable dataDiskEncryptionSetId in dataDiskImage) { DataDiskImageEncryption d = new DataDiskImageEncryption((int)dataDiskEncryptionSetId["Lun"], (string)dataDiskEncryptionSetId["DiskEncryptionSetId"]); dataDiskImageEncryption.Add(d); } } target.Encryption = new EncryptionImages(osDiskImageEncryption, dataDiskImageEncryption); } galleryImageVersion.PublishingProfile.TargetRegions.Add(target); } } Dictionary <string, List <string> > auxAuthHeader = null; if (this.IsParameterBound(c => c.SourceImageId)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } if (galleryImageVersion.StorageProfile.Source == null) { galleryImageVersion.StorageProfile.Source = new GalleryArtifactVersionSource(); } galleryImageVersion.StorageProfile.Source.Id = this.SourceImageId; var resourceId = ResourceId.TryParse(this.SourceImageId); if (string.Equals("galleries", resourceId?.ResourceType?.Provider, StringComparison.OrdinalIgnoreCase) && !string.Equals(this.ComputeClient?.ComputeManagementClient?.SubscriptionId, resourceId?.SubscriptionId, StringComparison.OrdinalIgnoreCase)) { List <string> resourceIds = new List <string>(); resourceIds.Add(this.SourceImageId); var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds); if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0) { auxAuthHeader = new Dictionary <string, List <string> >(auxHeaderDictionary); } } } GalleryImageVersion result; if (auxAuthHeader != null) { var res = GalleryImageVersionsClient.CreateOrUpdateWithHttpMessagesAsync( this.ResourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion, auxAuthHeader).GetAwaiter().GetResult(); result = res.Body; } else { result = GalleryImageVersionsClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); } var psObject = new PSGalleryImageVersion(); ComputeAutomationAutoMapperProfile.Mapper.Map <GalleryImageVersion, PSGalleryImageVersion>(result, psObject); WriteObject(psObject); } }); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { if (ShouldProcess(this.Name, VerbsData.Update)) { string resourceGroupName; string galleryName; string galleryImageName; string galleryImageVersionName; switch (this.ParameterSetName) { case "ResourceIdParameter": resourceGroupName = GetResourceGroupName(this.ResourceId); galleryName = GetResourceName(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageName = GetInstanceId(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageVersionName = GetVersion(this.ResourceId, "Microsoft.Compute/Galleries", "Images", "Versions"); break; case "ObjectParameter": resourceGroupName = GetResourceGroupName(this.InputObject.Id); galleryName = GetResourceName(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageName = GetInstanceId(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); galleryImageVersionName = GetVersion(this.InputObject.Id, "Microsoft.Compute/Galleries", "Images", "Versions"); break; default: resourceGroupName = this.ResourceGroupName; galleryName = this.GalleryName; galleryImageName = this.GalleryImageDefinitionName; galleryImageVersionName = this.Name; break; } var galleryImageVersion = new GalleryImageVersion(); if (this.ParameterSetName == "ObjectParameter") { ComputeAutomationAutoMapperProfile.Mapper.Map <PSGalleryImageVersion, GalleryImageVersion>(this.InputObject, galleryImageVersion); } else { galleryImageVersion = GalleryImageVersionsClient.Get(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName); } if (this.IsParameterBound(c => c.Tag)) { galleryImageVersion.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value); } if (this.IsParameterBound(c => c.ReplicaCount)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ReplicaCount = this.ReplicaCount; } if (this.IsParameterBound(c => c.PublishingProfileExcludeFromLatest)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ExcludeFromLatest = this.PublishingProfileExcludeFromLatest.IsPresent; } if (this.IsParameterBound(c => c.PublishingProfileEndOfLifeDate)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.EndOfLifeDate = this.PublishingProfileEndOfLifeDate; } if (this.IsParameterBound(c => c.TargetRegion)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.TargetRegions = new List <TargetRegion>(); foreach (var t in this.TargetRegion) { var target = new TargetRegion() { Name = (string)t["Name"], RegionalReplicaCount = (int?)t["ReplicaCount"], StorageAccountType = (string)t["StorageAccountType"], }; if (t["Encryption"] != null) { var osDiskEncryptionSetId = (string)((Hashtable)((Hashtable)t["Encryption"])["osDiskImage"])["DiskEncryptionSetId"]; var osDiskImageEncryption = new OSDiskImageEncryption(osDiskEncryptionSetId); List <DataDiskImageEncryption> dataDiskImageEncryption = null; var dataDiskImage = (object[])((Hashtable)t["Encryption"])["dataDiskImages"]; if (dataDiskImage != null) { dataDiskImageEncryption = new List <DataDiskImageEncryption>(); foreach (Hashtable dataDiskEncryptionSetId in dataDiskImage) { DataDiskImageEncryption d = new DataDiskImageEncryption((int)dataDiskEncryptionSetId["Lun"], (string)dataDiskEncryptionSetId["DiskEncryptionSetId"]); dataDiskImageEncryption.Add(d); } } target.Encryption = new EncryptionImages(osDiskImageEncryption, dataDiskImageEncryption); } galleryImageVersion.PublishingProfile.TargetRegions.Add(target); } } if (galleryImageVersion.StorageProfile != null && galleryImageVersion.StorageProfile.Source != null && galleryImageVersion.StorageProfile.Source.Id != null) { galleryImageVersion.StorageProfile.Source.Id = null; } galleryImageVersion.StorageProfile.DataDiskImages = null; galleryImageVersion.StorageProfile.OsDiskImage = null; var result = GalleryImageVersionsClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); var psObject = new PSGalleryImageVersion(); ComputeAutomationAutoMapperProfile.Mapper.Map <GalleryImageVersion, PSGalleryImageVersion>(result, psObject); WriteObject(psObject); } }); }
/// <summary> /// Create or update a gallery image version. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='galleryName'> /// The name of the Shared Image Gallery in which the Image Definition resides. /// </param> /// <param name='galleryImageName'> /// The name of the gallery image definition in which the Image Version is to /// be created. /// </param> /// <param name='galleryImageVersionName'> /// The name of the gallery image version to be created. Needs to follow /// semantic version name pattern: The allowed characters are digit and period. /// Digits must be within the range of a 32-bit integer. Format: /// <MajorVersion>.<MinorVersion>.<Patch> /// </param> /// <param name='galleryImageVersion'> /// Parameters supplied to the create or update gallery image version /// operation. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <GalleryImageVersion> CreateOrUpdateAsync(this IGalleryImageVersionsOperations operations, string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, GalleryImageVersion galleryImageVersion, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Create or update a gallery image version. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='galleryName'> /// The name of the Shared Image Gallery in which the Image Definition resides. /// </param> /// <param name='galleryImageName'> /// The name of the gallery image definition in which the Image Version is to /// be created. /// </param> /// <param name='galleryImageVersionName'> /// The name of the gallery image version to be created. Needs to follow /// semantic version name pattern: The allowed characters are digit and period. /// Digits must be within the range of a 32-bit integer. Format: /// <MajorVersion>.<MinorVersion>.<Patch> /// </param> /// <param name='galleryImageVersion'> /// Parameters supplied to the create or update gallery image version /// operation. /// </param> public static GalleryImageVersion CreateOrUpdate(this IGalleryImageVersionsOperations operations, string resourceGroupName, string galleryName, string galleryImageName, string galleryImageVersionName, GalleryImageVersion galleryImageVersion) { return(operations.CreateOrUpdateAsync(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion).GetAwaiter().GetResult()); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { if (ShouldProcess(this.Name, VerbsCommon.New)) { string resourceGroupName = this.ResourceGroupName; string galleryName = this.GalleryName; string galleryImageName = this.GalleryImageDefinitionName; string galleryImageVersionName = this.Name; GalleryImageVersion galleryImageVersion = new GalleryImageVersion(); galleryImageVersion.Location = this.Location; if (this.IsParameterBound(c => c.SourceImageId)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } if (galleryImageVersion.StorageProfile.Source == null) { galleryImageVersion.StorageProfile.Source = new GalleryArtifactVersionSource(); } galleryImageVersion.StorageProfile.Source.Id = this.SourceImageId; } if (this.IsParameterBound(c => c.Tag)) { galleryImageVersion.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value); } if (this.IsParameterBound(c => c.DataDiskImage)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } galleryImageVersion.StorageProfile.DataDiskImages = this.DataDiskImage; } if (this.IsParameterBound(c => c.OSDiskImage)) { if (galleryImageVersion.StorageProfile == null) { galleryImageVersion.StorageProfile = new GalleryImageVersionStorageProfile(); } galleryImageVersion.StorageProfile.OsDiskImage = this.OSDiskImage; } if (this.IsParameterBound(c => c.ReplicaCount)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ReplicaCount = this.ReplicaCount; } if (this.IsParameterBound(c => c.PublishingProfileExcludeFromLatest)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.ExcludeFromLatest = this.PublishingProfileExcludeFromLatest.IsPresent; } if (this.IsParameterBound(c => c.PublishingProfileEndOfLifeDate)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.EndOfLifeDate = this.PublishingProfileEndOfLifeDate; } if (this.IsParameterBound(c => c.StorageAccountType)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.StorageAccountType = this.StorageAccountType; } if (this.IsParameterBound(c => c.TargetRegion)) { if (galleryImageVersion.PublishingProfile == null) { galleryImageVersion.PublishingProfile = new GalleryImageVersionPublishingProfile(); } galleryImageVersion.PublishingProfile.TargetRegions = new List <TargetRegion>(); foreach (var t in this.TargetRegion) { var target = new TargetRegion() { Name = (string)t["Name"], RegionalReplicaCount = (int?)t["ReplicaCount"], StorageAccountType = (string)t["StorageAccountType"], }; if (t["Encryption"] != null) { var osDiskEncryptionSetId = (string)((Hashtable)((Hashtable)t["Encryption"])["osDiskImage"])["DiskEncryptionSetId"]; var osDiskImageEncryption = new OSDiskImageEncryption(osDiskEncryptionSetId); List <DataDiskImageEncryption> dataDiskImageEncryption = null; var dataDiskImage = (object[])((Hashtable)t["Encryption"])["dataDiskImages"]; if (dataDiskImage != null) { dataDiskImageEncryption = new List <DataDiskImageEncryption>(); foreach (Hashtable dataDiskEncryptionSetId in dataDiskImage) { DataDiskImageEncryption d = new DataDiskImageEncryption((int)dataDiskEncryptionSetId["Lun"], (string)dataDiskEncryptionSetId["DiskEncryptionSetId"]); dataDiskImageEncryption.Add(d); } } target.Encryption = new EncryptionImages(osDiskImageEncryption, dataDiskImageEncryption); } galleryImageVersion.PublishingProfile.TargetRegions.Add(target); } } var result = GalleryImageVersionsClient.CreateOrUpdate(resourceGroupName, galleryName, galleryImageName, galleryImageVersionName, galleryImageVersion); var psObject = new PSGalleryImageVersion(); ComputeAutomationAutoMapperProfile.Mapper.Map <GalleryImageVersion, PSGalleryImageVersion>(result, psObject); WriteObject(psObject); } }); }