private void ValidateCapacityReservationGroup(CapacityReservationGroup expectedCRG, CapacityReservationGroup actualCRG)
        {
            if (expectedCRG == null)
            {
                Assert.Null(actualCRG);
            }
            else
            {
                Assert.NotNull(actualCRG);
                if (expectedCRG.CapacityReservations == null)
                {
                    Assert.Null(actualCRG.CapacityReservations);
                }
                else
                {
                    Assert.NotNull(actualCRG);
                    Assert.True(actualCRG.CapacityReservations.SequenceEqual(expectedCRG.CapacityReservations));
                }
                Assert.Equal(expectedCRG.Location, actualCRG.Location);
                Assert.Equal(expectedCRG.Name, actualCRG.Name);

                if (expectedCRG.Zones != null)
                {
                    Assert.True(actualCRG.Zones.SequenceEqual(expectedCRG.Zones));
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.Name, VerbsCommon.New))
                {
                    CapacityReservationGroup capacityReservationGroup = new CapacityReservationGroup();
                    capacityReservationGroup.Location = this.Location;

                    if (this.IsParameterBound(c => c.Tag))
                    {
                        capacityReservationGroup.Tags = this.Tag.Cast <DictionaryEntry>().ToDictionary(ht => (string)ht.Key, ht => (string)ht.Value);
                    }
                    if (this.IsParameterBound(c => c.Zone))
                    {
                        capacityReservationGroup.Zones = this.Zone;
                    }

                    var result   = CapacityReservationGroupClient.CreateOrUpdate(this.ResourceGroupName, this.Name, capacityReservationGroup);
                    var psObject = new PSCapacityReservationGroup();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <CapacityReservationGroup, PSCapacityReservationGroup>(result, psObject);
                    WriteObject(psObject);
                }
            });
        }
 private void ValidateCapacityReservationGroupInstanceView(CapacityReservationGroup actualCRGWithInstanceView, params CapacityReservation[] expectedCapacityReservationsInInstanceView)
 {
     Assert.NotNull(actualCRGWithInstanceView);
     Assert.Equal(expectedCapacityReservationsInInstanceView.Count(), actualCRGWithInstanceView.InstanceView.CapacityReservations.Count);
     foreach (CapacityReservation capacityReservation in expectedCapacityReservationsInInstanceView)
     {
         Assert.True(actualCRGWithInstanceView.InstanceView.CapacityReservations.FirstOrDefault(cr => cr.Name.Equals(capacityReservation.Name)) != null);
     }
 }
        public void TestNonZonalCapacityReservationGroupInstanceView()
        {
            string originalTestLocation = Environment.GetEnvironmentVariable("AZURE_VM_TEST_LOCATION");

            using (MockContext context = MockContext.Start(this.GetType()))
            {
                Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", "southcentralus");
                EnsureClientsInitialized(context);

                string baseRGName = ComputeManagementTestUtilities.GenerateName(TestPrefix);
                string rgName     = baseRGName + "CR";
                string crgName    = "CRG-1";
                string crName     = "CR-1";

                try
                {
                    //Create a capacity reservation group, then get the capacity reseravation group and validate that they match
                    CapacityReservationGroup createdCRG  = CreateCapacityReservationGroup(rgName, crgName, availabilityZones: null);
                    CapacityReservationGroup returnedCRG = m_CrpClient.CapacityReservationGroups.Get(rgName, crgName);
                    ValidateCapacityReservationGroup(createdCRG, returnedCRG);

                    //Create CapacityReservation within the CapacityReservationGroup and validate
                    var createdCR  = CreateCapacityReservation(rgName, crgName, crName, "Standard_DS1_v2");
                    var returnedCR = m_CrpClient.CapacityReservations.Get(rgName, crgName, crName);
                    ValidateCapacityReservation(createdCR, returnedCR);

                    // Validate Capacity Reservation group instance view
                    CapacityReservationGroup returnedCRGWithInstanceView = m_CrpClient.CapacityReservationGroups.Get(rgName, crgName, CapacityReservationGroupInstanceViewTypes.InstanceView);
                    ValidateCapacityReservationGroupInstanceView(returnedCRGWithInstanceView, createdCR);

                    //Delete CapacityReservations and CapacityReservationGroups
                    m_CrpClient.CapacityReservations.Delete(rgName, crgName, crName);
                    m_CrpClient.CapacityReservationGroups.Delete(rgName, crgName);
                }
                finally
                {
                    m_ResourcesClient.ResourceGroups.Delete(rgName);
                    Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", originalTestLocation);
                }
            }
        }
 /// <summary>
 /// The operation to create or update a capacity reservation group. When
 /// updating a capacity reservation group, only tags may be modified. Please
 /// refer to https://aka.ms/CapacityReservation for more details.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='capacityReservationGroupName'>
 /// The name of the capacity reservation group.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the Create capacity reservation Group.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <CapacityReservationGroup> CreateOrUpdateAsync(this ICapacityReservationGroupsOperations operations, string resourceGroupName, string capacityReservationGroupName, CapacityReservationGroup parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, capacityReservationGroupName, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// The operation to create or update a capacity reservation group. When
 /// updating a capacity reservation group, only tags may be modified. Please
 /// refer to https://aka.ms/CapacityReservation for more details.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='capacityReservationGroupName'>
 /// The name of the capacity reservation group.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the Create capacity reservation Group.
 /// </param>
 public static CapacityReservationGroup CreateOrUpdate(this ICapacityReservationGroupsOperations operations, string resourceGroupName, string capacityReservationGroupName, CapacityReservationGroup parameters)
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, capacityReservationGroupName, parameters).GetAwaiter().GetResult());
 }
예제 #7
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                string resourceGroupName;
                string capacityReservationGroupName;

                if (this.ParameterSetName == ResourceIDParameterSet)
                {
                    resourceGroupName            = GetResourceGroupName(this.ResourceId);
                    capacityReservationGroupName = GetResourceName(this.ResourceId, "Microsoft.Compute/capacityReservationGroups");
                }
                else
                {
                    resourceGroupName            = this.ResourceGroupName;
                    capacityReservationGroupName = this.Name;
                }

                if (ShouldGetByName(resourceGroupName, capacityReservationGroupName))
                {
                    CapacityReservationGroup result = new CapacityReservationGroup();
                    if (this.InstanceView.IsPresent)
                    {
                        result = CapacityReservationGroupClient.Get(resourceGroupName, capacityReservationGroupName, "InstanceView");
                    }
                    else
                    {
                        result = CapacityReservationGroupClient.Get(resourceGroupName, capacityReservationGroupName);
                    }
                    var psObject = new PSCapacityReservationGroup();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <CapacityReservationGroup, PSCapacityReservationGroup>(result, psObject);
                    WriteObject(psObject);
                }
                else if (ShouldListByResourceGroup(resourceGroupName, capacityReservationGroupName))
                {
                    var result       = CapacityReservationGroupClient.ListByResourceGroup(resourceGroupName);
                    var resultList   = result.ToList();
                    var nextPageLink = result.NextPageLink;
                    while (!string.IsNullOrEmpty(nextPageLink))
                    {
                        var pageResult = CapacityReservationGroupClient.ListByResourceGroupNext(nextPageLink);
                        foreach (var pageItem in pageResult)
                        {
                            resultList.Add(pageItem);
                        }
                        nextPageLink = pageResult.NextPageLink;
                    }
                    var psObject = new List <PSCapacityReservationGroupList>();
                    foreach (var r in resultList)
                    {
                        psObject.Add(ComputeAutomationAutoMapperProfile.Mapper.Map <CapacityReservationGroup, PSCapacityReservationGroupList>(r));
                    }
                    WriteObject(TopLevelWildcardFilter(resourceGroupName, capacityReservationGroupName, psObject), true);
                }
                else
                {
                    var result       = CapacityReservationGroupClient.ListBySubscription();
                    var resultList   = result.ToList();
                    var nextPageLink = result.NextPageLink;
                    while (!string.IsNullOrEmpty(nextPageLink))
                    {
                        var pageResult = CapacityReservationGroupClient.ListBySubscriptionNext(nextPageLink);
                        foreach (var pageItem in pageResult)
                        {
                            resultList.Add(pageItem);
                        }
                        nextPageLink = pageResult.NextPageLink;
                    }
                    var psObject = new List <PSCapacityReservationGroupList>();
                    foreach (var r in resultList)
                    {
                        psObject.Add(ComputeAutomationAutoMapperProfile.Mapper.Map <CapacityReservationGroup, PSCapacityReservationGroupList>(r));
                    }
                    WriteObject(TopLevelWildcardFilter(resourceGroupName, capacityReservationGroupName, psObject), true);
                }
            });
        }
        public void TestCapacityReservationOperations()
        {
            string originalTestLocation = Environment.GetEnvironmentVariable("AZURE_VM_TEST_LOCATION");

            using (MockContext context = MockContext.Start(this.GetType()))
            {
                Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", "southcentralus");
                EnsureClientsInitialized(context);

                string baseRGName = ComputeManagementTestUtilities.GenerateName(TestPrefix);
                string rgName     = baseRGName + "CR";
                string crgName    = "CRG-1";
                string crName     = "CR-1";

                try
                {
                    // Create a capacity reservation group, then get the capacity reservation group and validate that they match
                    CapacityReservationGroup createdCRG = CreateCapacityReservationGroup(rgName, crgName, new List <string> {
                        "1", "2"
                    });
                    CapacityReservationGroup returnedCRG = m_CrpClient.CapacityReservationGroups.Get(rgName, crgName);
                    ValidateCapacityReservationGroup(createdCRG, returnedCRG);

                    createdCRG.Tags = new Dictionary <string, string>()
                    {
                        { "testKey", "testValue" }
                    };
                    returnedCRG = m_CrpClient.CapacityReservationGroups.Update(rgName, crgName, createdCRG.Tags);
                    ValidateCapacityReservationGroup(createdCRG, returnedCRG);

                    //List CapacityReservationGroups by subscription and by resourceGroup
                    var listCRGsResponse = m_CrpClient.CapacityReservationGroups.ListByResourceGroup(rgName);
                    Assert.Single(listCRGsResponse);
                    ValidateCapacityReservationGroup(createdCRG, listCRGsResponse.First());
                    listCRGsResponse = m_CrpClient.CapacityReservationGroups.ListBySubscription();

                    returnedCRG = listCRGsResponse.First(crg => crg.Id == createdCRG.Id);
                    Assert.NotNull(returnedCRG);
                    ValidateCapacityReservationGroup(createdCRG, returnedCRG);

                    //Create CapacityReservation within the CapacityReservationGroup and validate
                    var createdCR  = CreateCapacityReservation(rgName, crgName, crName, "Standard_DS1_v2", availabilityZone: "1");
                    var returnedCR = m_CrpClient.CapacityReservations.Get(rgName, crgName, crName);
                    ValidateCapacityReservation(createdCR, returnedCR);

                    //List CapacityReservations
                    var listCRsResponse = m_CrpClient.CapacityReservations.ListByCapacityReservationGroup(rgName, crgName);
                    Assert.Single(listCRsResponse);
                    ValidateCapacityReservation(createdCR, listCRsResponse.First());

                    //Delete CapacityReservations and CapacityReservations
                    m_CrpClient.CapacityReservations.Delete(rgName, crgName, crName);
                    m_CrpClient.CapacityReservationGroups.Delete(rgName, crgName);
                }
                finally
                {
                    m_ResourcesClient.ResourceGroups.Delete(rgName);
                    Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", originalTestLocation);
                }
            }
        }