Skip to content

Commit b22a736

Browse files
authored
[Compute] Adding sharing profile to New-AzCapacityReservationGroup and Update-AzCapacityReservationGroup (#24420)
* sharing profile changes * adding test * fix help * Added help message * Updating test synopsis
1 parent 5d99039 commit b22a736

File tree

8 files changed

+178
-16
lines changed

8 files changed

+178
-16
lines changed

src/Compute/Compute.Test/ScenarioTests/VirtualMachineTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,5 +633,13 @@ public void TestVMTLWithGallerySourceImage()
633633
{
634634
TestRunner.RunTestScript("Test-VMTLWithGallerySourceImage");
635635
}
636+
637+
[Fact]
638+
[Trait(Category.AcceptanceType, Category.LiveOnly)]
639+
public void TestCapacityReservationSharingProfile()
640+
{
641+
TestRunner.RunTestScript("Test-CapacityReservationSharingProfile");
642+
}
643+
636644
}
637645
}

src/Compute/Compute.Test/ScenarioTests/VirtualMachineTests.ps1

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7441,3 +7441,51 @@ function Test-VMTLWithGallerySourceImage
74417441
Clean-ResourceGroup $rgname;
74427442
}
74437443
}
7444+
7445+
7446+
<#
7447+
.SYNOPSIS
7448+
Testing Capacity Reservation Sharing profile parameter
7449+
Setting Sharing profile with multiple subs
7450+
Then unsharing using empty string as value
7451+
#>
7452+
function Test-CapacityReservationSharingProfile
7453+
{
7454+
# Setup
7455+
$rgname = Get-ComputeTestResourceName;
7456+
$loc = 'WestEurope';
7457+
7458+
try
7459+
{
7460+
New-AzResourceGroup -Name $rgname -Location $loc -Force;
7461+
7462+
# create a CRG
7463+
$CRGName = 'CRG' + $rgname
7464+
New-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -Location $loc -SharingProfile "/subscriptions/88fd8cb2-8248-499e-9a2d-4929a4b0133c"
7465+
7466+
# try Get-CRG with InstanceView
7467+
$CRG = Get-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -InstanceView
7468+
Assert-AreEqual "/subscriptions/88fd8cb2-8248-499e-9a2d-4929a4b0133c" $crg.SharingProfile.SubscriptionIds.Id
7469+
7470+
# Update CRG with new subscription
7471+
Update-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -SharingProfile "/subscriptions/88fd8cb2-8248-499e-9a2d-4929a4b0133c", "/subscriptions/24fb23e3-6ba3-41f0-9b6e-e41131d5d61e"
7472+
$CRG = Get-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -InstanceView
7473+
Assert-AreEqual 2 $crg.SharingProfile.SubscriptionIds.Count
7474+
7475+
# Clear Sharing Profile for CapacityReservationGroup
7476+
Update-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -SharingProfile ""
7477+
$CRG = Get-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName -InstanceView
7478+
Assert-AreEqual $null $crg.SharingProfile
7479+
7480+
# remove CRG
7481+
Remove-AzCapacityReservationGroup -ResourceGroupName $rgname -Name $CRGName
7482+
$CRG = Get-AzCapacityReservationGroup -ResourceGroupName $rgname
7483+
Assert-AreEqual $null $CRG.count
7484+
7485+
}
7486+
finally
7487+
{
7488+
# Cleanup
7489+
Clean-ResourceGroup $rgname;
7490+
}
7491+
}

src/Compute/Compute/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
`New-AzGalleryImageVersion` defaulting to turn on TrustedLaunchSupported and HyperVGeneration to V2.
3030
`New-AzVM` and `New-AzVmss` will default to the image `Windows Server 2022 Azure Edition` instead of `Windows 2016 Datacenter` by default.
3131
`Get-AzVmss` will no longer allow empty values to `ResourceGroupName` and `VMScaleSetName` to avoid a bug where it will just return nothing.
32+
* Added a new parameter `-SharingProfile` to `New-AzCapacityReservationGroup` and `Update-AzCapacityReservationGroup`.
3233

3334
## Version 7.1.2
3435
* Fixed `New-AzVM` when a source image is specified to avoid an error on the `Version` value.

src/Compute/Compute/Generated/CapacityReservation/NewAzCapacityReservationGroupCommand.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//
1+
//
22
// Copyright (c) Microsoft and contributors. All rights reserved.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -70,6 +70,11 @@ public class NewAzureCapacityReservationGroup : ComputeAutomationBaseCmdlet
7070
Mandatory = false)]
7171
public string[] Zone { get; set; }
7272

73+
[Parameter(
74+
Mandatory = false,
75+
HelpMessage = "Allows a Capacity Reservation Group to be shared across subscriptions. Pass \"\" to unshare all subscriptions. It is an array of strings; Contains an array of Arm resource ids of subscriptions\r\neg : \"/subscriptions/{subscriptionId1}\", \"/subscriptions/{subscriptionId2}\"\r\n")]
76+
public string[] SharingProfile { get; set; }
77+
7378
public override void ExecuteCmdlet()
7479
{
7580
base.ExecuteCmdlet();
@@ -88,11 +93,29 @@ public override void ExecuteCmdlet()
8893
{
8994
capacityReservationGroup.Zones = this.Zone;
9095
}
96+
if (this.IsParameterBound(c => c.SharingProfile))
97+
{
98+
ResourceSharingProfile resourceSharingProfile = new ResourceSharingProfile();
99+
foreach (var item in this.SharingProfile)
100+
{
101+
if (item.Equals("", StringComparison.OrdinalIgnoreCase))
102+
continue;
103+
SubResource subResource = new SubResource(item);
104+
if (resourceSharingProfile.SubscriptionIds == null)
105+
{
106+
resourceSharingProfile.SubscriptionIds = new List<SubResource>();
107+
}
108+
resourceSharingProfile.SubscriptionIds.Add(subResource);
109+
}
110+
capacityReservationGroup.SharingProfile = resourceSharingProfile;
111+
}
91112

92113
var result = CapacityReservationGroupClient.CreateOrUpdate(this.ResourceGroupName, this.Name, capacityReservationGroup);
93114
var psObject = new PSCapacityReservationGroup();
94115
ComputeAutomationAutoMapperProfile.Mapper.Map<CapacityReservationGroup, PSCapacityReservationGroup>(result, psObject);
95116
WriteObject(psObject);
117+
118+
96119
}
97120
});
98121
}

src/Compute/Compute/Generated/CapacityReservation/UpdateAzCapacityReservationGroupCommand.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ public class UpdateAzureCapacityReservationGroup : ComputeAutomationBaseCmdlet
7474
[ResourceIdCompleter("Microsoft.Compute/capacityReservationGroups")]
7575
public string ResourceId { get; set; }
7676

77+
[Parameter(
78+
Mandatory = false)]
79+
public string[] SharingProfile { get; set; }
80+
7781
[Parameter(Mandatory = false,
7882
HelpMessage = "Run cmdlet in the background")]
7983
public SwitchParameter AsJob { get; set; }
@@ -117,8 +121,23 @@ public override void ExecuteCmdlet()
117121
capacityReservationGroupUpdate.Tags = tags;
118122
}
119123

120-
result = CapacityReservationGroupClient.Update(resourceGroupName, name, capacityReservationGroupUpdate);
124+
if (this.IsParameterBound(c => c.SharingProfile))
125+
{
126+
ResourceSharingProfile resourceSharingProfile = new ResourceSharingProfile();
127+
foreach (var item in this.SharingProfile)
128+
{
129+
SubResource subResource = new SubResource(item);
130+
if (resourceSharingProfile.SubscriptionIds == null)
131+
{
132+
resourceSharingProfile.SubscriptionIds = new List<SubResource>();
133+
}
134+
resourceSharingProfile.SubscriptionIds.Add(subResource);
135+
}
136+
capacityReservationGroupUpdate.SharingProfile = resourceSharingProfile;
137+
}
138+
121139

140+
result = CapacityReservationGroupClient.Update(resourceGroupName, name, capacityReservationGroupUpdate);
122141

123142
var psObject = new PSCapacityReservationGroup();
124143
ComputeAutomationAutoMapperProfile.Mapper.Map<CapacityReservationGroup, PSCapacityReservationGroup>(result, psObject);

src/Compute/Compute/Generated/Models/PSCapacityReservationGroup.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Text.RegularExpressions;
44
using Microsoft.Azure.Management.Compute.Models;
@@ -16,5 +16,6 @@ public class PSCapacityReservationGroup
1616
public IList<SubResourceReadOnly> VirtualMachinesAssociated { get; set; }
1717
public CapacityReservationGroupInstanceView InstanceView { get; set; }
1818
public IList<string> Zones { get; set; }
19+
public ResourceSharingProfile SharingProfile { get; set; }
1920
}
20-
}
21+
}

src/Compute/Compute/help/New-AzCapacityReservationGroup.md

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Creates a Capacity Reservation Group
1414

1515
```
1616
New-AzCapacityReservationGroup -ResourceGroupName <String> -Name <String> -Location <String> [-AsJob]
17-
[-Tag <Hashtable>] [-Zone <String[]>] [-DefaultProfile <IAzureContextContainer>]
18-
[-WhatIf] [-Confirm] [<CommonParameters>]
17+
[-Tag <Hashtable>] [-Zone <String[]>] [-SharingProfile <String[]>] [-DefaultProfile <IAzureContextContainer>]
18+
[-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm] [<CommonParameters>]
1919
```
2020

2121
## DESCRIPTION
@@ -92,6 +92,21 @@ Accept pipeline input: True (ByPropertyName)
9292
Accept wildcard characters: False
9393
```
9494
95+
### -ProgressAction
96+
{{ Fill ProgressAction Description }}
97+
98+
```yaml
99+
Type: System.Management.Automation.ActionPreference
100+
Parameter Sets: (All)
101+
Aliases: proga
102+
103+
Required: False
104+
Position: Named
105+
Default value: None
106+
Accept pipeline input: False
107+
Accept wildcard characters: False
108+
```
109+
95110
### -ResourceGroupName
96111
Specifies the name of a resource group.
97112
@@ -107,6 +122,21 @@ Accept pipeline input: True (ByPropertyName)
107122
Accept wildcard characters: False
108123
```
109124
125+
### -SharingProfile
126+
Allows a Capacity Reservation Group to be shared across subscriptions. Pass "" to unshare all subscriptions. It is an array of strings; Contains an array of Arm resource ids of subscriptions eg : "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
127+
128+
```yaml
129+
Type: System.String[]
130+
Parameter Sets: (All)
131+
Aliases:
132+
133+
Required: False
134+
Position: Named
135+
Default value: None
136+
Accept pipeline input: False
137+
Accept wildcard characters: False
138+
```
139+
110140
### -Tag
111141
Specifies that resources and resource groups can be tagged with a set of name-value pairs. Adding tags to resources enables you to group resources together across resource groups and to create your own views. Each resource or resource group can have a maximum of 15 tags.
112142

src/Compute/Compute/help/Update-AzCapacityReservationGroup.md

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,29 @@ Update the Capacity Reservation Group.
1414

1515
### DefaultParameter (Default)
1616
```
17-
Update-AzCapacityReservationGroup [-AsJob] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>]
18-
[-WhatIf] [-Confirm] [<CommonParameters>]
17+
Update-AzCapacityReservationGroup [-SharingProfile <String[]>] [-AsJob] [-Tag <Hashtable>]
18+
[-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm]
19+
[<CommonParameters>]
1920
```
2021

2122
### DefaultParameterSet
2223
```
23-
Update-AzCapacityReservationGroup -ResourceGroupName <String> -Name <String> [-AsJob] [-Tag <Hashtable>]
24-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
25-
[<CommonParameters>]
24+
Update-AzCapacityReservationGroup -ResourceGroupName <String> -Name <String> [-SharingProfile <String[]>]
25+
[-AsJob] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>]
26+
[-WhatIf] [-Confirm] [<CommonParameters>]
2627
```
2728

2829
### InputObjectParameterSet
2930
```
30-
Update-AzCapacityReservationGroup -CapacityReservationGroup <PSCapacityReservationGroup> [-AsJob]
31-
[-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
32-
[-Confirm] [<CommonParameters>]
31+
Update-AzCapacityReservationGroup -CapacityReservationGroup <PSCapacityReservationGroup>
32+
[-SharingProfile <String[]>] [-AsJob] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>]
33+
[-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm] [<CommonParameters>]
3334
```
3435

3536
### ResourceIDParameterSet
3637
```
37-
Update-AzCapacityReservationGroup -ResourceId <String> [-AsJob] [-Tag <Hashtable>]
38-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
38+
Update-AzCapacityReservationGroup -ResourceId <String> [-SharingProfile <String[]>] [-AsJob] [-Tag <Hashtable>]
39+
[-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm]
3940
[<CommonParameters>]
4041
```
4142

@@ -120,6 +121,21 @@ Accept pipeline input: True (ByPropertyName)
120121
Accept wildcard characters: False
121122
```
122123
124+
### -ProgressAction
125+
{{ Fill ProgressAction Description }}
126+
127+
```yaml
128+
Type: System.Management.Automation.ActionPreference
129+
Parameter Sets: (All)
130+
Aliases: proga
131+
132+
Required: False
133+
Position: Named
134+
Default value: None
135+
Accept pipeline input: False
136+
Accept wildcard characters: False
137+
```
138+
123139
### -ResourceGroupName
124140
Specifies the name of a resource group.
125141
@@ -150,6 +166,22 @@ Accept pipeline input: True (ByPropertyName)
150166
Accept wildcard characters: False
151167
```
152168
169+
### -SharingProfile
170+
Allows a Capacity Reservation Group to be shared across subscriptions. Pass "" to unshare all subscriptions. It is an array of strings; Contains an array of Arm resource ids of subscriptions
171+
eg : "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
172+
173+
```yaml
174+
Type: System.String[]
175+
Parameter Sets: (All)
176+
Aliases:
177+
178+
Required: False
179+
Position: Named
180+
Default value: None
181+
Accept pipeline input: False
182+
Accept wildcard characters: False
183+
```
184+
153185
### -Tag
154186
Resource tags.
155187

0 commit comments

Comments
 (0)