Skip to content

Commit 58fcb41

Browse files
unknownunknown
unknown
authored and
unknown
committed
Combine Get-AzureVMImage and Get-AzureVMImageDetail cmdlets
Combine Get-AzureVMExtensionImage and Get-AzureVMExtensionImageDetail
1 parent 7edfeee commit 58fcb41

File tree

5 files changed

+186
-65
lines changed

5 files changed

+186
-65
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ function Test-VirtualMachineImageList
260260
foreach ($ver in $versions)
261261
{
262262
if ($ver -eq $null -or $ver -eq '') { continue; }
263-
$s6 = Get-AzureVMImageDetail -Location $locStr -PublisherName $pub -Offer $offer -Sku $sku -Version $ver;
263+
#$s6 = Get-AzureVMImageDetail -Location $locStr -PublisherName $pub -Offer $offer -Sku $sku -Version $ver;
264+
$s6 = Get-AzureVMImage -Location $locStr -PublisherName $pub -Offer $offer -Sku $sku -Version $ver;
264265
Assert-NotNull $s6;
265266
$s6;
266267

src/ResourceManager/Compute/Commands.Compute/ExtensionImages/GetAzureVMExtensionImageCommand.cs

Lines changed: 75 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,18 @@
2121

2222
namespace Microsoft.Azure.Commands.Compute
2323
{
24-
[Cmdlet(VerbsCommon.Get, ProfileNouns.VirtualMachineExtensionImage)]
25-
[OutputType(typeof(PSVirtualMachineExtensionImage))]
24+
[Cmdlet(VerbsCommon.Get,
25+
ProfileNouns.VirtualMachineExtensionImage,
26+
DefaultParameterSetName = ListVMImageExtensionParamSetName)]
27+
[OutputType(typeof(PSVirtualMachineExtensionImage),
28+
ParameterSetName = new[] { ListVMImageExtensionParamSetName })]
29+
[OutputType(typeof(PSVirtualMachineExtensionImageDetails),
30+
ParameterSetName = new[] { GetVMImageExtensionDetailParamSetName })]
2631
public class GetAzureVMExtensionImageCommand : VirtualMachineExtensionImageBaseCmdlet
2732
{
33+
protected const string ListVMImageExtensionParamSetName = "ListVMImageExtension";
34+
protected const string GetVMImageExtensionDetailParamSetName = "GetVMImageExtensionDetail";
35+
2836
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
2937
public string Location { get; set; }
3038

@@ -37,34 +45,76 @@ public class GetAzureVMExtensionImageCommand : VirtualMachineExtensionImageBaseC
3745
[Parameter, ValidateNotNullOrEmpty]
3846
public string FilterExpression { get; set; }
3947

48+
[Parameter(ParameterSetName = GetVMImageExtensionDetailParamSetName,
49+
Mandatory = true,
50+
ValueFromPipelineByPropertyName = true),
51+
ValidateNotNullOrEmpty]
52+
public string Version { get; set; }
53+
4054
public override void ExecuteCmdlet()
4155
{
4256
base.ExecuteCmdlet();
4357

44-
var parameters = new VirtualMachineExtensionImageListVersionsParameters
58+
if (this.PagingParameters.Equals(ListVMImageExtensionParamSetName))
59+
{
60+
var parameters = new VirtualMachineExtensionImageListVersionsParameters
61+
{
62+
Location = Location.Canonicalize(),
63+
PublisherName = PublisherName,
64+
Type = Type,
65+
FilterExpression = FilterExpression
66+
};
67+
68+
VirtualMachineImageResourceList result = this.VirtualMachineExtensionImageClient.ListVersions(parameters);
69+
70+
var images = from r in result.Resources
71+
select new PSVirtualMachineExtensionImage
72+
{
73+
RequestId = result.RequestId,
74+
StatusCode = result.StatusCode,
75+
Id = r.Id,
76+
Location = r.Location,
77+
Version = r.Name,
78+
PublisherName = this.PublisherName,
79+
Type = this.Type,
80+
FilterExpression = this.FilterExpression
81+
};
82+
83+
WriteObject(images, true);
84+
}
85+
else
4586
{
46-
Location = Location.Canonicalize(),
47-
PublisherName = PublisherName,
48-
Type = Type,
49-
FilterExpression = FilterExpression
50-
};
51-
52-
VirtualMachineImageResourceList result = this.VirtualMachineExtensionImageClient.ListVersions(parameters);
53-
54-
var images = from r in result.Resources
55-
select new PSVirtualMachineExtensionImage
56-
{
57-
RequestId = result.RequestId,
58-
StatusCode = result.StatusCode,
59-
Id = r.Id,
60-
Location = r.Location,
61-
Version = r.Name,
62-
PublisherName = this.PublisherName,
63-
Type = this.Type,
64-
FilterExpression = this.FilterExpression
65-
};
66-
67-
WriteObject(images, true);
87+
88+
var parameters = new VirtualMachineExtensionImageGetParameters
89+
{
90+
Location = Location.Canonicalize(),
91+
PublisherName = PublisherName,
92+
Type = Type,
93+
FilterExpression = FilterExpression,
94+
Version = Version
95+
};
96+
97+
VirtualMachineExtensionImageGetResponse result = this.VirtualMachineExtensionImageClient.Get(parameters);
98+
99+
var image = new PSVirtualMachineExtensionImageDetails
100+
{
101+
RequestId = result.RequestId,
102+
StatusCode = result.StatusCode,
103+
Id = result.VirtualMachineExtensionImage.Id,
104+
Location = result.VirtualMachineExtensionImage.Location,
105+
Name = result.VirtualMachineExtensionImage.Name,
106+
HandlerSchema = result.VirtualMachineExtensionImage.HandlerSchema,
107+
OperatingSystem = result.VirtualMachineExtensionImage.OperatingSystem,
108+
ComputeRole = result.VirtualMachineExtensionImage.ComputeRole,
109+
SupportsMultipleExtensions = result.VirtualMachineExtensionImage.SupportsMultipleExtensions,
110+
VMScaleSetEnabled = result.VirtualMachineExtensionImage.VMScaleSetEnabled,
111+
PublisherName = this.PublisherName,
112+
Type = this.Type,
113+
Version = this.Version
114+
};
115+
116+
WriteObject(image);
117+
}
68118
}
69119
}
70120
}

src/ResourceManager/Compute/Commands.Compute/Images/GetAzureVMImageCommand.cs

Lines changed: 105 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,55 +21,128 @@
2121

2222
namespace Microsoft.Azure.Commands.Compute
2323
{
24-
[Cmdlet(VerbsCommon.Get, ProfileNouns.VirtualMachineImage)]
25-
[OutputType(typeof(PSVirtualMachineImage))]
24+
[Cmdlet(VerbsCommon.Get,
25+
ProfileNouns.VirtualMachineImage,
26+
DefaultParameterSetName = ListVMImageParamSetName)]
27+
[OutputType(typeof(PSVirtualMachineImage),
28+
ParameterSetName = new [] {ListVMImageParamSetName})]
29+
[OutputType(typeof(PSVirtualMachineImageDetail),
30+
ParameterSetName = new [] {GetVMImageDetailParamSetName})]
2631
public class GetAzureVMImageCommand : VirtualMachineImageBaseCmdlet
2732
{
28-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
33+
protected const string ListVMImageParamSetName = "ListVMImage";
34+
protected const string GetVMImageDetailParamSetName = "GetVMImageDetail";
35+
36+
[Parameter(ParameterSetName = ListVMImageParamSetName,
37+
Mandatory = true,
38+
ValueFromPipelineByPropertyName = true)]
39+
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
40+
Mandatory = true,
41+
ValueFromPipelineByPropertyName = true)]
42+
[ValidateNotNullOrEmpty]
2943
public string Location { get; set; }
3044

31-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
45+
[Parameter(ParameterSetName = ListVMImageParamSetName,
46+
Mandatory = true,
47+
ValueFromPipelineByPropertyName = true)]
48+
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
49+
Mandatory = true,
50+
ValueFromPipelineByPropertyName = true)]
51+
[ValidateNotNullOrEmpty]
3252
public string PublisherName { get; set; }
3353

34-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
54+
[Parameter(ParameterSetName = ListVMImageParamSetName,
55+
Mandatory = true,
56+
ValueFromPipelineByPropertyName = true)]
57+
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
58+
Mandatory = true,
59+
ValueFromPipelineByPropertyName = true)]
60+
[ValidateNotNullOrEmpty]
3561
public string Offer { get; set; }
3662

37-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true), ValidateNotNullOrEmpty]
63+
[Parameter(ParameterSetName = ListVMImageParamSetName,
64+
Mandatory = true,
65+
ValueFromPipelineByPropertyName = true)]
66+
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
67+
Mandatory = true,
68+
ValueFromPipelineByPropertyName = true)]
69+
[ValidateNotNullOrEmpty]
3870
public string Skus { get; set; }
3971

40-
[Parameter, ValidateNotNullOrEmpty]
72+
[Parameter(ParameterSetName = ListVMImageParamSetName,
73+
ValueFromPipelineByPropertyName = true),
74+
ValidateNotNullOrEmpty]
4175
public string FilterExpression { get; set; }
4276

77+
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
78+
Mandatory = true,
79+
ValueFromPipelineByPropertyName = true),
80+
ValidateNotNullOrEmpty]
81+
public string Version { get; set; }
82+
4383
public override void ExecuteCmdlet()
4484
{
4585
base.ExecuteCmdlet();
4686

47-
var parameters = new VirtualMachineImageListParameters
87+
if (this.ParameterSetName.Equals(ListVMImageParamSetName))
4888
{
49-
Location = Location.Canonicalize(),
50-
Offer = Offer,
51-
PublisherName = PublisherName,
52-
Skus = Skus,
53-
FilterExpression = FilterExpression
54-
};
55-
56-
VirtualMachineImageResourceList result = this.VirtualMachineImageClient.List(parameters);
57-
58-
var images = from r in result.Resources
59-
select new PSVirtualMachineImage
60-
{
61-
RequestId = result.RequestId,
62-
StatusCode = result.StatusCode,
63-
Id = r.Id,
64-
Location = r.Location,
65-
Version = r.Name,
66-
PublisherName = this.PublisherName,
67-
Offer = this.Offer,
68-
Skus = this.Skus,
69-
FilterExpression = this.FilterExpression
70-
};
71-
72-
WriteObject(images, true);
89+
var parameters = new VirtualMachineImageListParameters
90+
{
91+
Location = Location.Canonicalize(),
92+
Offer = Offer,
93+
PublisherName = PublisherName,
94+
Skus = Skus,
95+
FilterExpression = FilterExpression
96+
};
97+
98+
VirtualMachineImageResourceList result = this.VirtualMachineImageClient.List(parameters);
99+
100+
var images = from r in result.Resources
101+
select new PSVirtualMachineImage
102+
{
103+
RequestId = result.RequestId,
104+
StatusCode = result.StatusCode,
105+
Id = r.Id,
106+
Location = r.Location,
107+
Version = r.Name,
108+
PublisherName = this.PublisherName,
109+
Offer = this.Offer,
110+
Skus = this.Skus,
111+
FilterExpression = this.FilterExpression
112+
};
113+
114+
WriteObject(images, true);
115+
}
116+
else
117+
{
118+
var parameters = new VirtualMachineImageGetParameters
119+
{
120+
Location = Location.Canonicalize(),
121+
PublisherName = PublisherName,
122+
Offer = Offer,
123+
Skus = Skus,
124+
Version = Version
125+
};
126+
127+
VirtualMachineImageGetResponse response = this.VirtualMachineImageClient.Get(parameters);
128+
129+
var image = new PSVirtualMachineImageDetail
130+
{
131+
RequestId = response.RequestId,
132+
StatusCode = response.StatusCode,
133+
Id = response.VirtualMachineImage.Id,
134+
Location = response.VirtualMachineImage.Location,
135+
Version = response.VirtualMachineImage.Name,
136+
PublisherName = this.PublisherName,
137+
Offer = this.Offer,
138+
Skus = this.Skus,
139+
OSDiskImage = response.VirtualMachineImage.OSDiskImage,
140+
DataDiskImages = response.VirtualMachineImage.DataDiskImages,
141+
PurchasePlan = response.VirtualMachineImage.PurchasePlan,
142+
};
143+
144+
WriteObject(image);
145+
}
73146
}
74147
}
75148
}

src/ResourceManager/Compute/Commands.Compute/Images/GetAzureVMImageDetailCommand.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,13 @@ public override void ExecuteCmdlet()
6161
StatusCode = response.StatusCode,
6262
Id = response.VirtualMachineImage.Id,
6363
Location = response.VirtualMachineImage.Location,
64-
Name = response.VirtualMachineImage.Name,
65-
OSDiskImage = response.VirtualMachineImage.OSDiskImage,
66-
DataDiskImages = response.VirtualMachineImage.DataDiskImages,
67-
PurchasePlan = response.VirtualMachineImage.PurchasePlan,
64+
Version = response.VirtualMachineImage.Name,
6865
PublisherName = this.PublisherName,
6966
Offer = this.Offer,
7067
Skus = this.Skus,
71-
Version = this.Version
68+
OSDiskImage = response.VirtualMachineImage.OSDiskImage,
69+
DataDiskImages = response.VirtualMachineImage.DataDiskImages,
70+
PurchasePlan = response.VirtualMachineImage.PurchasePlan,
7271
};
7372

7473
WriteObject(image);

src/ResourceManager/Compute/Commands.Compute/Models/PSVirtualMachineImage.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ public class PSVirtualMachineImage : PSVirtualMachineImageSku
4949

5050
public class PSVirtualMachineImageDetail : PSVirtualMachineImage
5151
{
52-
public string Name { get; set; }
53-
5452
public OSDiskImage OSDiskImage { get; set; }
5553

5654
public PurchasePlan PurchasePlan { get; set; }

0 commit comments

Comments
 (0)