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));
            }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #8
0
        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;
            }
        }
コード例 #9
0
 public PoolImageReference(GalleryImage galleryImage, GalleryImageVersion galleryImageVersion)
 {
     CustomImageResourceId = galleryImageVersion.Id;
     Type = ImageReferenceType.Gallery;
     Os   = ParseOperatingSystem(galleryImage.OsType.ToString());
 }
コード例 #10
0
        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:
 /// &lt;MajorVersion&gt;.&lt;MinorVersion&gt;.&lt;Patch&gt;
 /// </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:
 /// &lt;MajorVersion&gt;.&lt;MinorVersion&gt;.&lt;Patch&gt;
 /// </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);
                }
            });
        }