Skip to content

Commit 5a0ff2e

Browse files
authored
Add Tag option in create IotDps cmdlet (#13411)
1 parent 8dcd9bb commit 5a0ff2e

File tree

5 files changed

+290
-504
lines changed

5 files changed

+290
-504
lines changed

src/DeviceProvisioningServices/DeviceProvisioningServices.Test/ScenarioTests/IotDpsTests.ps1

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,15 @@ function Test-AzureIotDpsLifeCycle
4949
# Create or Update Resource Group
5050
$resourceGroup = New-AzResourceGroup -Name $ResourceGroupName -Location $Location
5151

52+
# Add Tags to Iot Hub Device Provisioning Service
53+
$tags = @{}
54+
$tags.Add($Tag1Key, $Tag1Value)
55+
5256
# Create Iot Hub Device Provisioning Service
53-
$newIotDps1 = New-AzIoTDps -ResourceGroupName $ResourceGroupName -Name $IotDpsName -Location $Location
57+
$newIotDps1 = New-AzIoTDps -ResourceGroupName $ResourceGroupName -Name $IotDpsName -Location $Location -Tag $tags
58+
Assert-True { $newIotDps1.Name -eq $IotDpsName }
59+
Assert-True { $newIotDps1.Tags.Count -eq 1 }
60+
Assert-True { $newIotDps1.Tags.Item($Tag1Key) -eq $Tag1Value }
5461

5562
# Get Iot Hub Device Provisioning Service
5663
$iotDps = Get-AzIoTDps -ResourceGroupName $ResourceGroupName -Name $IotDpsName
@@ -62,13 +69,6 @@ function Test-AzureIotDpsLifeCycle
6269
$updatedIotDps1 = Get-AzIoTDps -ResourceGroupName $ResourceGroupName -Name $IotDpsName | Update-AzIotDps -AllocationPolicy $NewAllocationPolicy
6370
Assert-True { $updatedIotDps1.Properties.AllocationPolicy -eq $NewAllocationPolicy }
6471

65-
# Add Tags to Iot Hub Device Provisioning Service
66-
$tags = @{}
67-
$tags.Add($Tag1Key, $Tag1Value)
68-
$updatedIotDps2 = Update-AzIoTDps -ResourceGroupName $ResourceGroupName -Name $IotDpsName -Tag $tags
69-
Assert-True { $updatedIotDps2.Tags.Count -eq 1 }
70-
Assert-True { $updatedIotDps2.Tags.Item($Tag1Key) -eq $Tag1Value }
71-
7272
# Add more Tags to Iot Hub Device Provisioning Service
7373
$tags.Clear()
7474
$tags.Add($Tag2Key, $Tag2Value)

src/DeviceProvisioningServices/DeviceProvisioningServices.Test/SessionRecords/Commands.DeviceProvisioningServices.Test.IotDpsTests/IotDpsLifeCycle.json

Lines changed: 245 additions & 491 deletions
Large diffs are not rendered by default.

src/DeviceProvisioningServices/DeviceProvisioningServices/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Allow tags in IoT Device Provisioning Service create cmdlet.
2122

2223
## Version 0.8.0
2324
* Update devices provisioning service sdk

src/DeviceProvisioningServices/DeviceProvisioningServices/Cmdlet/IotDps/NewAzureRmIotDeviceProvisioningService.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515
namespace Microsoft.Azure.Commands.Management.DeviceProvisioningServices
1616
{
1717
using System;
18+
using System.Collections;
19+
using System.Linq;
1820
using System.Management.Automation;
1921
using Azure.Management.Internal.Resources;
2022
using Azure.Management.Internal.Resources.Models;
2123
using Microsoft.Azure.Commands.Management.DeviceProvisioningServices.Models;
2224
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
2325
using Microsoft.Azure.Management.DeviceProvisioningServices.Models;
26+
using Microsoft.WindowsAzure.Commands.Utilities.Common;
2427
using DPSResources = Microsoft.Azure.Commands.Management.DeviceProvisioningServices.Properties.Resources;
2528

2629
[Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "IoTDeviceProvisioningService", DefaultParameterSetName = ResourceParameterSet, SupportsShouldProcess = true)]
@@ -68,6 +71,12 @@ public class NewAzureRmIoTDeviceProvisioningService : IotDpsBaseCmdlet
6871
[ValidateSet(new string[] { "S1" }, IgnoreCase = true)]
6972
public string SkuName { get; set; }
7073

74+
[Parameter(
75+
Mandatory = false,
76+
HelpMessage = "IoT Device Provisioning Service instance tags. Property bag in key-value pairs in the form of a hash table.")]
77+
[ValidateNotNullOrEmpty]
78+
public Hashtable Tag { get; set; }
79+
7180
public override void ExecuteCmdlet()
7281
{
7382
if (ShouldProcess(Name, DPSResources.AddDeviceProvisioningService))
@@ -115,6 +124,11 @@ public override void ExecuteCmdlet()
115124
provisioningServiceDescription.Sku = new IotDpsSkuInfo(IotDpsSku.S1);
116125
}
117126

127+
if (this.IsParameterBound(c => c.Tag))
128+
{
129+
provisioningServiceDescription.Tags = this.Tag.Cast<DictionaryEntry>().ToDictionary(kvp => (string)kvp.Key, kvp => (string)kvp.Value);
130+
}
131+
118132
IotDpsCreateOrUpdate(this.ResourceGroupName, this.Name, provisioningServiceDescription);
119133
this.WriteObject(IotDpsUtils.ToPSProvisioningServiceDescription(GetIotDpsResource(this.ResourceGroupName, this.Name)), false);
120134
}

src/DeviceProvisioningServices/DeviceProvisioningServices/help/New-AzIoTDeviceProvisioningService.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Create an Azure IoT Hub device provisioning service.
1414

1515
```
1616
New-AzIoTDeviceProvisioningService [-ResourceGroupName] <String> [-Name] <String> [-Location <String>]
17-
[-AllocationPolicy <String>] [-SkuName <String>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
18-
[-Confirm] [<CommonParameters>]
17+
[-AllocationPolicy <String>] [-SkuName <String>] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>]
18+
[-WhatIf] [-Confirm] [<CommonParameters>]
1919
```
2020

2121
## DESCRIPTION
@@ -25,7 +25,9 @@ For an introduction to Azure IoT Hub Device Provisioning Service, see https://do
2525

2626
### Example 1
2727
```
28-
PS C:\> New-AzIoTDeviceProvisioningService -ResourceGroupName "myresourcegroup" -Name "myiotdps"
28+
PS C:\> $tags = @{}
29+
PS C:\> $tags.Add('key1','value1')
30+
PS C:\> New-AzIoTDeviceProvisioningService -ResourceGroupName "myresourcegroup" -Name "myiotdps" -Tag $tags
2931
3032
ResourceGroupName : myresourcegroup
3133
Name : myiotdps
@@ -35,13 +37,13 @@ ServiceOperationsHostName : myiotdps.azure-devices-provisioning.net
3537
IotHubs : 0
3638
State : Active
3739
AllocationPolicy : Hashed
38-
Tags : {}
40+
Tags : {[key1, value1]}
3941
SkuName : S1
4042
SkuTier : Standard
4143
Etag : AAAAAAAT52k=
4244
```
4345

44-
Create an Azure IoT Hub device provisioning service with the standard pricing tier S1, in the region of the resource group.
46+
Create an Azure IoT Hub device provisioning service with the standard pricing tier S1 and tags, in the region of the resource group.
4547

4648
### Example 2
4749
```
@@ -157,6 +159,21 @@ Accept pipeline input: False
157159
Accept wildcard characters: False
158160
```
159161
162+
### -Tag
163+
IoT Device Provisioning Service instance tags. Property bag in key-value pairs in the form of a hash table.
164+
165+
```yaml
166+
Type: System.Collections.Hashtable
167+
Parameter Sets: (All)
168+
Aliases:
169+
170+
Required: False
171+
Position: Named
172+
Default value: None
173+
Accept pipeline input: False
174+
Accept wildcard characters: False
175+
```
176+
160177
### -Confirm
161178
Prompts you for confirmation before running the cmdlet.
162179

0 commit comments

Comments
 (0)