Skip to content

Commit 33bfec8

Browse files
authored
Merge pull request #5883 from hyonholee/asm
Add -ExtendedProperty parameter to New-AzureDeployment and Set-AzureD…
2 parents 487122b + 923c299 commit 33bfec8

File tree

8 files changed

+1472
-1233
lines changed

8 files changed

+1472
-1233
lines changed

src/ServiceManagement/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
## Current Release
21+
* Add -ExtendedProperty parameter to New-AzureDeployment and Set-AzureDeployment
2122

2223
## Version 5.1.2
2324
* Updated Diagnostics Agent configuration schema for Azure Monitor sink support.

src/ServiceManagement/Common/Commands.ScenarioTest/Resources/ServiceManagement/ServiceManagementTests.ps1

Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -299,17 +299,17 @@ function Run-AutoGeneratedVirtualMachineCmdletTests
299299
# Run dSMS Hosted Service test
300300
function Run-DSMSHostedServiceTest
301301
{
302-
# Setup
302+
# Setup
303303
$svcName = 'pstest' + (Get-CloudServiceName);
304-
$location = Get-DefaultLocation;
304+
$location = Get-DefaultLocation;
305305

306306
$storageName = 'pstest' + (getAssetName);
307307
New-AzureStorageAccount -StorageAccountName $storageName -Location $location;
308308

309309
# Associate the new storage account with the current subscription
310310
Set-CurrentStorageAccountName $storageName;
311311

312-
$testMode = Get-ComputeTestMode;
312+
$testMode = Get-ComputeTestMode;
313313
if ($testMode.ToLower() -ne 'playback')
314314
{
315315
$cspkg = '.\Resources\ServiceManagement\Files\dSMSTest.cspkg';
@@ -319,48 +319,48 @@ function Run-DSMSHostedServiceTest
319319
$cspkg = "https://${storageName}.blob.azure.windows.net/blob/dSMSTest.cspkg";
320320
}
321321
$cscfg = "$TestOutputRoot\Resources\ServiceManagement\Files\dSMSTest.cscfg";
322-
$cscfgChanged = "$TestOutputRoot\Resources\ServiceManagement\Files\dSMSTest-changed.cscfg";
323-
324-
# Create a temporary self-signed cert
325-
$cert = New-SelfSignedCertificate -DnsName "example.local" -CertStoreLocation "Cert:\CurrentUser\My";
326-
$certPath = "Cert:\CurrentUser\My\$($cert.Thumbprint)"
327-
# Update the cscfg to use the new cert
328-
(Get-Content $cscfg) | ForEach-Object {$_ -replace "\{\{PLACEHOLDER\}\}", $cert.Thumbprint} | Set-Content $cscfgChanged;
322+
$cscfgChanged = "$TestOutputRoot\Resources\ServiceManagement\Files\dSMSTest-changed.cscfg";
323+
324+
# Create a temporary self-signed cert
325+
$cert = New-SelfSignedCertificate -DnsName "example.local" -CertStoreLocation "Cert:\CurrentUser\My";
326+
$certPath = "Cert:\CurrentUser\My\$($cert.Thumbprint)"
327+
# Update the cscfg to use the new cert
328+
(Get-Content $cscfg) | ForEach-Object {$_ -replace "\{\{PLACEHOLDER\}\}", $cert.Thumbprint} | Set-Content $cscfgChanged;
329329

330330
try
331331
{
332-
# Create Hosted Service
333-
$result = New-AzureService -ServiceName $svcName -Location $location -Label $svcName -Description $svcName;
332+
# Create Hosted Service
333+
$result = New-AzureService -ServiceName $svcName -Location $location -Label $svcName -Description $svcName;
334334

335-
# Upload the certificate
336-
Add-AzureCertificate -ServiceName $svcName -CertToDeploy $cert;
335+
# Upload the certificate
336+
Add-AzureCertificate -ServiceName $svcName -CertToDeploy $cert;
337337

338338
# Deploy to staging
339339
$result = New-AzureDeployment -ServiceName $svcName -Package $cspkg -Configuration $cscfgChanged -Label $svcName -Slot Staging;
340340

341-
# Get Deployment
342-
$deploy = Get-AzureDeployment -ServiceName $svcName -Slot Staging;
341+
# Get Deployment
342+
$deploy = Get-AzureDeployment -ServiceName $svcName -Slot Staging;
343343

344-
# Make a change
345-
$newConfig = $deploy.Configuration -replace 'Setting name="DummySetting" value="Foo"', 'Setting name="DummySetting" value="Bar"';
346-
$newConfig | Set-Content $cscfgChanged;
344+
# Make a change
345+
$newConfig = $deploy.Configuration -replace 'Setting name="DummySetting" value="Foo"', 'Setting name="DummySetting" value="Bar"';
346+
$newConfig | Set-Content $cscfgChanged;
347347

348-
# Update configuration
349-
$result = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfgChanged -Slot Staging;
348+
# Update configuration
349+
$result = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfgChanged -Slot Staging;
350350
}
351351
finally
352352
{
353353
# Cleanup
354354
Cleanup-CloudService $svcName;
355-
Cleanup-Storage $storageName;
356-
if (Test-Path $cscfgChanged)
357-
{
358-
Remove-Item $cscfgChanged;
359-
}
360-
if (Test-Path $certPath)
361-
{
362-
Remove-Item $certPath
363-
}
355+
Cleanup-Storage $storageName;
356+
if (Test-Path $cscfgChanged)
357+
{
358+
Remove-Item $cscfgChanged;
359+
}
360+
if (Test-Path $certPath)
361+
{
362+
Remove-Item $certPath
363+
}
364364
}
365365
}
366366

@@ -393,7 +393,6 @@ function Run-NewAzureComputeArgumentListTests
393393
}
394394
}
395395

396-
397396
# Run New-AzureComputeParameterObject Cmdlet Tests
398397
function Run-NewAzureComputeParameterObjectTests
399398
{
@@ -594,7 +593,6 @@ function Run-ServiceExtensionSetCmdletTests
594593
}
595594
}
596595

597-
598596
# Run Service Deployment Extension Cmdlet Tests
599597
function Run-ServiceDeploymentExtensionCmdletTests
600598
{
@@ -637,22 +635,52 @@ function Run-ServiceDeploymentExtensionCmdletTests
637635
$rdpCfg2 = New-AzureServiceRemoteDesktopExtensionConfig -Credential $credential -Role $workerRoleLongName;
638636
$adCfg1 = New-AzureServiceADDomainExtensionConfig -Role $webRoleNameWithSpaces -WorkgroupName 'test1';
639637
$adCfg2 = New-AzureServiceADDomainExtensionConfig -Role $workerRoleLongName -WorkgroupName 'test2';
638+
$extProp1 = @{"extended1"="property1";"extended2"="property2"}
640639

641-
$st = New-AzureDeployment -ServiceName $svcName -Package $cspkg -Configuration $cscfg -Label $svcName -Slot Production -ExtensionConfiguration $rdpCfg1,$adCfg1;
640+
$st = New-AzureDeployment -ServiceName $svcName -Package $cspkg -Configuration $cscfg -Label $svcName -Slot Production `
641+
-ExtensionConfiguration $rdpCfg1,$adCfg1 -ExtendedProperty $extProp1;
642642
$exts = Get-AzureServiceExtension -ServiceName $svcName -Slot Production;
643643
Assert-True { $exts.Count -eq 2 };
644644

645-
$st = New-AzureDeployment -ServiceName $svcName -Package $cspkg -Configuration $cscfg -Label $svcName -Slot Staging -ExtensionConfiguration $rdpCfg2,$adCfg2;
645+
$deployment = Get-AzureDeployment -ServiceName $svcName -Slot Production;
646+
Assert-AreEqual 2 $deployment.ExtendedProperty.Count;
647+
Assert-AreEqual "extended1" $deployment.ExtendedProperty[0].Name;
648+
Assert-AreEqual "property1" $deployment.ExtendedProperty[0].Value;
649+
Assert-AreEqual "extended2" $deployment.ExtendedProperty[1].Name;
650+
Assert-AreEqual "property2" $deployment.ExtendedProperty[1].Value;
651+
652+
$st = New-AzureDeployment -ServiceName $svcName -Package $cspkg -Configuration $cscfg -Label $svcName -Slot Staging `
653+
-ExtensionConfiguration $rdpCfg2,$adCfg2;
646654
$exts = Get-AzureServiceExtension -ServiceName $svcName -Slot Staging;
647655
Assert-True { $exts.Count -eq 2 };
648656

649-
$st = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfg -Slot Production -ExtensionConfiguration $rdpCfg2;
657+
$deployment = Get-AzureDeployment -ServiceName $svcName -Slot Staging;
658+
Assert-AreEqual 0 $deployment.ExtendedProperty.Count;
659+
660+
$extProp2 = @{"extended1"="property2";"extended2"="property1"}
661+
$st = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfg -Slot Production `
662+
-ExtensionConfiguration $rdpCfg2 -ExtendedProperty $extProp2;
650663
$exts = Get-AzureServiceExtension -ServiceName $svcName -Slot Production;
651664
Assert-True { $exts.Count -eq 1 };
652665

653-
$st = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfg -Slot Staging -ExtensionConfiguration $rdpCfg1,$adCfg1;
666+
$deployment = Get-AzureDeployment -ServiceName $svcName -Slot Production;
667+
Assert-AreEqual 2 $deployment.ExtendedProperty.Count;
668+
Assert-AreEqual "extended1" $deployment.ExtendedProperty[0].Name;
669+
Assert-AreEqual "property2" $deployment.ExtendedProperty[0].Value;
670+
Assert-AreEqual "extended2" $deployment.ExtendedProperty[1].Name;
671+
Assert-AreEqual "property1" $deployment.ExtendedProperty[1].Value;
672+
673+
$st = Set-AzureDeployment -Config -ServiceName $svcName -Configuration $cscfg -Slot Staging `
674+
-ExtensionConfiguration $rdpCfg1,$adCfg1 -ExtendedProperty $extProp2;
654675
$exts = Get-AzureServiceExtension -ServiceName $svcName -Slot Staging;
655676
Assert-True { $exts.Count -eq 2 };
677+
678+
$deployment = Get-AzureDeployment -ServiceName $svcName -Slot Staging;
679+
Assert-AreEqual 2 $deployment.ExtendedProperty.Count;
680+
Assert-AreEqual "extended1" $deployment.ExtendedProperty[0].Name;
681+
Assert-AreEqual "property2" $deployment.ExtendedProperty[0].Value;
682+
Assert-AreEqual "extended2" $deployment.ExtendedProperty[1].Name;
683+
Assert-AreEqual "property1" $deployment.ExtendedProperty[1].Value;
656684
}
657685
finally
658686
{

src/ServiceManagement/Common/Commands.ScenarioTest/SessionRecords/Microsoft.WindowsAzure.Commands.ScenarioTest.ServiceManagementTests/RunServiceDeploymentExtensionCmdletTests.json

Lines changed: 1289 additions & 1180 deletions
Large diffs are not rendered by default.

src/ServiceManagement/Compute/Commands.ServiceManagement/HostedServices/NewAzureDeployment.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15-
1615
using System;
16+
using System.Collections;
1717
using System.Management.Automation;
1818
using System.Net;
19-
using Microsoft.Azure.Commands.Common.Authentication.Models;
2019
using Microsoft.WindowsAzure.Commands.Common;
2120
using Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions;
2221
using Microsoft.WindowsAzure.Commands.ServiceManagement.Helpers;
@@ -107,6 +106,13 @@ public ExtensionConfigurationInput[] ExtensionConfiguration
107106
set;
108107
}
109108

109+
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Extension configurations.")]
110+
public Hashtable ExtendedProperty
111+
{
112+
get;
113+
set;
114+
}
115+
110116
public virtual void NewPaaSDeploymentProcess()
111117
{
112118
bool removePackage = false;
@@ -199,6 +205,7 @@ public virtual void NewPaaSDeploymentProcess()
199205
Name = this.Name,
200206
StartDeployment = !this.DoNotStart.IsPresent,
201207
TreatWarningsAsError = this.TreatWarningsAsError.IsPresent,
208+
ExtendedProperties = this.ExtendedProperty != null ? ConvertToDictionary(this.ExtendedProperty) : null
202209
};
203210

204211
InvokeInOperationContext(() =>

src/ServiceManagement/Compute/Commands.ServiceManagement/HostedServices/SetAzureDeployment.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
// ----------------------------------------------------------------------------------
1414

1515
using System;
16+
using System.Collections;
1617
using System.Management.Automation;
1718
using System.Net;
18-
using Microsoft.Azure.Commands.Common.Authentication.Models;
1919
using Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions;
2020
using Microsoft.WindowsAzure.Commands.ServiceManagement.Helpers;
2121
using Microsoft.WindowsAzure.Commands.ServiceManagement.Properties;
@@ -129,14 +129,22 @@ public string NewStatus
129129
set;
130130
}
131131

132-
[Parameter(Position = 9, ValueFromPipelineByPropertyName = true, Mandatory = false, ParameterSetName = "Upgrade", HelpMessage = "Extension configurations.")]
133-
[Parameter(Position = 4, ValueFromPipelineByPropertyName = true, Mandatory = false, ParameterSetName = "Config", HelpMessage = "HelpMessage")]
132+
[Parameter(Position = 9, ValueFromPipelineByPropertyName = true, Mandatory = false, ParameterSetName = "Upgrade", HelpMessage = "Extension configurations")]
133+
[Parameter(Position = 4, ValueFromPipelineByPropertyName = true, Mandatory = false, ParameterSetName = "Config", HelpMessage = "Extension configurations")]
134134
public ExtensionConfigurationInput[] ExtensionConfiguration
135135
{
136136
get;
137137
set;
138138
}
139139

140+
[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = false, ParameterSetName = "Upgrade", HelpMessage = "Extended Property")]
141+
[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = false, ParameterSetName = "Config", HelpMessage = "Extended Property")]
142+
public Hashtable ExtendedProperty
143+
{
144+
get;
145+
set;
146+
}
147+
140148
public void ExecuteCommand()
141149
{
142150
string configString = string.Empty;
@@ -236,7 +244,8 @@ public void ExecuteCommand()
236244
ExtensionConfiguration = extConfig,
237245
PackageUri = packageUrl,
238246
Label = Label ?? ServiceName,
239-
Force = Force.IsPresent
247+
Force = Force.IsPresent,
248+
ExtendedProperties = ExtendedProperty != null ? ConvertToDictionary(ExtendedProperty) : null,
240249
};
241250

242251
if (!string.IsNullOrEmpty(RoleName))
@@ -277,7 +286,8 @@ public void ExecuteCommand()
277286
var changeDeploymentStatusParams = new DeploymentChangeConfigurationParameters
278287
{
279288
Configuration = configString,
280-
ExtensionConfiguration = extConfig
289+
ExtensionConfiguration = extConfig,
290+
ExtendedProperties = ExtendedProperty != null ? ConvertToDictionary(ExtendedProperty) : null
281291
};
282292

283293
ExecuteClientActionNewSM(

src/ServiceManagement/Compute/Commands.ServiceManagement/Microsoft.WindowsAzure.Commands.ServiceManagement.dll-Help.xml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18403,6 +18403,15 @@ PS C:\> New-AzureVMConfig -Name "VirtualMachine17" -InstanceSize Small -Image
1840318403
<maml:uri /></dev:type>
1840418404
<dev:defaultValue>None</dev:defaultValue>
1840518405
</command:parameter>
18406+
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named" aliases="none"><maml:name>ExtendedProperty</maml:name>
18407+
<maml:Description><maml:para>Specifies extended properties.
18408+
</maml:para>
18409+
</maml:Description>
18410+
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
18411+
<dev:type><maml:name>Hashtable</maml:name>
18412+
<maml:uri /></dev:type>
18413+
<dev:defaultValue>None</dev:defaultValue>
18414+
</command:parameter>
1840618415
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none"><maml:name>Profile</maml:name>
1840718416
<maml:Description><maml:para>Specifies the Azure profile from which this cmdlet reads. If you do not specify a profile, this cmdlet reads from the local default profile.
1840818417
</maml:para>
@@ -18511,6 +18520,15 @@ PS C:\&gt; New-AzureVMConfig -Name "VirtualMachine17" -InstanceSize Small -Image
1851118520
<maml:uri /></dev:type>
1851218521
<dev:defaultValue>None</dev:defaultValue>
1851318522
</command:parameter>
18523+
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named" aliases="none"><maml:name>ExtendedProperty</maml:name>
18524+
<maml:Description><maml:para>Specifies extended properties.
18525+
</maml:para>
18526+
</maml:Description>
18527+
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
18528+
<dev:type><maml:name>Hashtable</maml:name>
18529+
<maml:uri /></dev:type>
18530+
<dev:defaultValue>None</dev:defaultValue>
18531+
</command:parameter>
1851418532
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none"><maml:name>Profile</maml:name>
1851518533
<maml:Description><maml:para>Specifies the Azure profile from which this cmdlet reads. If you do not specify a profile, this cmdlet reads from the local default profile.
1851618534
</maml:para>
@@ -18550,7 +18568,7 @@ PS C:\&gt; New-AzureVMConfig -Name "VirtualMachine17" -InstanceSize Small -Image
1855018568
</dev:remarks>
1855118569
</command:example>
1855218570
<command:example><maml:title>-------------------------- Example 2: Create a deployment based on an extension configuration --------------------------</maml:title>
18553-
<dev:code>PS C:\&gt;New-AzureDeployment -ServiceName "ContosoService" -Slot "Production" -Package "https://contosostorage.blob.core.windows.net/container06/ContosoPackage.cspkg" -Configuration "C:\packages\ContosoConfiguration.cscfg" -ExtensionConfiguration "C:\packages\ContosoExtensionConfig.cscfg"</dev:code>
18571+
<dev:code>PS C:\&gt;New-AzureDeployment -ServiceName "ContosoService" -Slot "Production" -Package "https://contosostorage.blob.core.windows.net/container06/ContosoPackage.cspkg" -Configuration "C:\packages\ContosoConfiguration.cscfg" -ExtensionConfiguration "C:\packages\ContosoExtensionConfig.cscfg" -ExtendedProperty @{"key1"="value1"}</dev:code>
1855418572
<dev:remarks><maml:para>This command creates a production deployment based on a package and configuration. The command specifies an extension configuration named ContosoExtensionConfig.cscfg. This cmdlet creates GUIDs as the name and the label.
1855518573
</maml:para>
1855618574
</dev:remarks>
@@ -37071,6 +37089,15 @@ PS C:\&gt; Get-AzureVM -ServiceName "ContosoService" -Name "VirtualMachine07" |
3707137089
<maml:uri /></dev:type>
3707237090
<dev:defaultValue>None</dev:defaultValue>
3707337091
</command:parameter>
37092+
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named" aliases="none"><maml:name>ExtendedProperty</maml:name>
37093+
<maml:Description><maml:para>Specifies extended properties.
37094+
</maml:para>
37095+
</maml:Description>
37096+
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
37097+
<dev:type><maml:name>Hashtable</maml:name>
37098+
<maml:uri /></dev:type>
37099+
<dev:defaultValue>None</dev:defaultValue>
37100+
</command:parameter>
3707437101
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none"><maml:name>Profile</maml:name>
3707537102
<maml:Description><maml:para>Specifies the Azure profile from which this cmdlet reads. If you do not specify a profile, this cmdlet reads from the local default profile.
3707637103
</maml:para>
@@ -37142,6 +37169,15 @@ PS C:\&gt; Get-AzureVM -ServiceName "ContosoService" -Name "VirtualMachine07" |
3714237169
<maml:uri /></dev:type>
3714337170
<dev:defaultValue>None</dev:defaultValue>
3714437171
</command:parameter>
37172+
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named" aliases="none"><maml:name>ExtendedProperty</maml:name>
37173+
<maml:Description><maml:para>Specifies extended properties.
37174+
</maml:para>
37175+
</maml:Description>
37176+
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
37177+
<dev:type><maml:name>Hashtable</maml:name>
37178+
<maml:uri /></dev:type>
37179+
<dev:defaultValue>None</dev:defaultValue>
37180+
</command:parameter>
3714537181
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none"><maml:name>Profile</maml:name>
3714637182
<maml:Description><maml:para>Specifies the Azure profile from which this cmdlet reads. If you do not specify a profile, this cmdlet reads from the local default profile.
3714737183
</maml:para>
@@ -37327,6 +37363,15 @@ PS C:\&gt; Get-AzureVM -ServiceName "ContosoService" -Name "VirtualMachine07" |
3732737363
<maml:uri /></dev:type>
3732837364
<dev:defaultValue>None</dev:defaultValue>
3732937365
</command:parameter>
37366+
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named" aliases="none"><maml:name>ExtendedProperty</maml:name>
37367+
<maml:Description><maml:para>Specifies extended properties.
37368+
</maml:para>
37369+
</maml:Description>
37370+
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
37371+
<dev:type><maml:name>Hashtable</maml:name>
37372+
<maml:uri /></dev:type>
37373+
<dev:defaultValue>None</dev:defaultValue>
37374+
</command:parameter>
3733037375
<command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none"><maml:name>Profile</maml:name>
3733137376
<maml:Description><maml:para>Specifies the Azure profile from which this cmdlet reads. If you do not specify a profile, this cmdlet reads from the local default profile.
3733237377
</maml:para>
@@ -37405,7 +37450,7 @@ PS C:\&gt; Get-AzureVM -ServiceName "ContosoService" -Name "VirtualMachine07" |
3740537450
</dev:remarks>
3740637451
</command:example>
3740737452
<command:example><maml:title>-------------------------- Example 4: Install extension configuration in a service --------------------------</maml:title>
37408-
<dev:code>PS C:\&gt;Set-AzureDeployment -Config -ServiceName "ContosoService" -Mode "Automatic" -Package "https://contosostorage.blob.core.windows.net/container06/ContosoPackage.cspkg" -Configuration "C:\packages\ContosoConfiguration.cscfg" -Slot "Production" -ExtensionConfiguration "C:\packages\ContosoExtensionConfig.cscfg"</dev:code>
37453+
<dev:code>PS C:\&gt;Set-AzureDeployment -Config -ServiceName "ContosoService" -Mode "Automatic" -Package "https://contosostorage.blob.core.windows.net/container06/ContosoPackage.cspkg" -Configuration "C:\packages\ContosoConfiguration.cscfg" -Slot "Production" -ExtensionConfiguration "C:\packages\ContosoExtensionConfig.cscfg" -ExtendedProperty @{"key1"="value1"}</dev:code>
3740937454
<dev:remarks><maml:para>This command installs the extension configuration in the specified Cloud Service and applies them on roles.
3741037455
</maml:para>
3741137456
</dev:remarks>

0 commit comments

Comments
 (0)