Skip to content

Commit eed22af

Browse files
[AppService]: Feature Azure#19496 Added -Tag parameter support to New-AzWebApp & New-AzWebAppSlot (Azure#20019)
* [AppService]: Feature Azure#19496 Please add -Tag parameter to New-AzWebAppSlot * Update WebAppTests.ps1 Review comments are updated * Update WebAppSlotTests.ps1 * Review Comments updated * Update NewAzureWebAppSlot.cs * Update NewAzureWebAppSlot.cs
1 parent 45771ce commit eed22af

File tree

12 files changed

+4846
-1591
lines changed

12 files changed

+4846
-1591
lines changed

src/Websites/Websites.Test/ScenarioTests/WebAppSlotTests.ps1

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ function Test-CreateNewWebAppSlot
297297
$planName = Get-WebHostPlanName
298298
$tier = "Standard"
299299
$resourceType = "Microsoft.Web/sites"
300+
$tag= @{"TagKey" = "TagValue"}
300301
try
301302
{
302303
#Setup
@@ -318,7 +319,7 @@ function Test-CreateNewWebAppSlot
318319
Assert-AreEqual $serverFarm.Id $result.ServerFarmId
319320

320321
# Create deployment slot
321-
$job = New-AzWebAppSlot -ResourceGroupName $rgname -Name $appname -Slot $slotname -AsJob
322+
$job = New-AzWebAppSlot -ResourceGroupName $rgname -Name $appname -Slot $slotname -Tag $tag -AsJob
322323
$job | Wait-Job
323324
$slot1 = $job | Receive-Job
324325

@@ -327,6 +328,8 @@ function Test-CreateNewWebAppSlot
327328
# Assert
328329
Assert-AreEqual $appWithSlotName $slot1.Name
329330
Assert-AreEqual $serverFarm.Id $slot1.ServerFarmId
331+
Assert-AreEqual $tag.Keys $slot1.Tags.Keys
332+
Assert-AreEqual $tag.Values $slot1.Tags.Values
330333
}
331334
finally
332335
{

src/Websites/Websites.Test/ScenarioTests/WebAppTests.ps1

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,20 +422,23 @@ function Test-CreateNewWebApp
422422
$tier = "Shared"
423423
$apiversion = "2015-08-01"
424424
$resourceType = "Microsoft.Web/sites"
425+
$tag= @{"TagKey" = "TagValue"}
425426
try
426427
{
427428
#Setup
428429
New-AzResourceGroup -Name $rgname -Location $location
429430
$serverFarm = New-AzAppServicePlan -ResourceGroupName $rgname -Name $whpName -Location $location -Tier $tier
430431

431432
# Create new web app
432-
$job = New-AzWebApp -ResourceGroupName $rgname -Name $wname -Location $location -AppServicePlan $whpName -AsJob
433+
$job = New-AzWebApp -ResourceGroupName $rgname -Name $wname -Location $location -AppServicePlan $whpName -Tag $tag -AsJob
433434
$job | Wait-Job
434435
$actual = $job | Receive-Job
435436

436437
# Assert
437438
Assert-AreEqual $wname $actual.Name
438439
Assert-AreEqual $serverFarm.Id $actual.ServerFarmId
440+
Assert-AreEqual $tag.Keys $actual.Tags.Keys
441+
Assert-AreEqual $tag.Values $actual.Tags.Values
439442

440443
# Get new web app
441444
$result = Get-AzWebApp -ResourceGroupName $rgname -Name $wname
@@ -1589,4 +1592,4 @@ function Test-TagsNotRemovedBySetWebApp
15891592
$asp = Get-AzAppServicePlan -ResourceGroupName $rgname -Name $aspName
15901593
Assert-AreEqual $webApp.ServerFarmId $asp.id
15911594
Assert-notNull $webApp.Tags
1592-
}
1595+
}

src/Websites/Websites.Test/SessionRecords/Microsoft.Azure.Commands.Websites.Test.ScenarioTests.WebAppSlotTests/TestCreateNewWebAppSlot.json

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

src/Websites/Websites.Test/SessionRecords/Microsoft.Azure.Commands.Websites.Test.ScenarioTests.WebAppTests/TestCreateNewWebApp.json

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

src/Websites/Websites.Test/SessionRecords/Microsoft.Azure.Commands.Websites.Test.ScenarioTests.WebAppTests/TestCreateNewWebAppSimple.json

Lines changed: 3941 additions & 734 deletions
Large diffs are not rendered by default.

src/Websites/Websites/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+
* Added Tag parameter for `New-AzWebApp` and `New-AzWebAppSlot`
2122

2223
## Version 2.11.5
2324
* Fixed `Publish-AzWebApp` to use latest publish API when deploying war package [#19791]

src/Websites/Websites/Cmdlets/DeploymentSlots/NewAzureWebAppSlot.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,10 @@ public class NewAzureWebAppSlotCmdlet : WebAppBaseClientCmdLet
9898

9999

100100
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
101-
public SwitchParameter AsJob { get; set; }
101+
public SwitchParameter AsJob { get; set; }
102+
103+
[Parameter(Mandatory = false, HelpMessage = "Tags are name/value pairs that enable you to categorize resources")]
104+
public Hashtable Tag { get; set; }
102105

103106
private Hashtable GetAppSettingsToUpdate()
104107
{
@@ -181,7 +184,7 @@ public override void ExecuteCmdlet()
181184
}
182185

183186
var webApp = new PSSite(WebsitesClient.GetWebApp(ResourceGroupName, Name, null));
184-
var site = new PSSite(WebsitesClient.CreateWebApp(ResourceGroupName, Name, Slot, webApp.Location, AppServicePlan==null?webApp.ServerFarmId : AppServicePlan, cloningInfo, AseName, AseResourceGroupName));
187+
var site = new PSSite(WebsitesClient.CreateWebApp(ResourceGroupName, Name, Slot, webApp.Location, AppServicePlan==null?webApp.ServerFarmId : AppServicePlan, cloningInfo, AseName, AseResourceGroupName, (IDictionary<string, string>)CmdletHelpers.ConvertToStringDictionary(Tag)));
185188
UpdateConfigIfNeeded(site);
186189
}
187190
}

src/Websites/Websites/Cmdlets/WebApps/NewAzureWebApp.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ public class NewAzureWebAppCmdlet : WebAppBaseClientCmdLet
137137
[Parameter(Mandatory = false, HelpMessage = "Path to the GitHub repository containign the web application to deploy.", ParameterSetName = SimpleParameterSet)]
138138
public string GitRepositoryPath { get; set; }
139139

140+
[Parameter(Mandatory = false, HelpMessage = "Tags are name/value pairs that enable you to categorize resources", ParameterSetName = SimpleParameterSet)]
141+
public Hashtable Tag { get; set; }
142+
140143
protected override void ProcessRecord()
141144
{
142145
try
@@ -386,7 +389,8 @@ public async Task<ResourceConfig<Site>> CreateConfigAsync()
386389
// If ContainerImageName is specified and appservice plan doesn’t exist (appServiceplan == null) we will try to create plan with windows container
387390
var farmStrategy = planRG.CreateServerFarmConfig(planResourceGroup, planName, appServiceplan == null && _cmdlet.ContainerImageName != null);
388391

389-
return rgStrategy.CreateSiteConfig(farmStrategy, _cmdlet.Name, this.GetNewConfig(appServiceplan));
392+
return rgStrategy.CreateSiteConfig(farmStrategy, _cmdlet.Name, this.GetNewConfig(appServiceplan)
393+
, (IDictionary<string, string>)CmdletHelpers.ConvertToStringDictionary(_cmdlet.Tag));
390394
}
391395
}
392396

src/Websites/Websites/Strategies/SiteStrategy.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Microsoft.Azure.Management.WebSites;
1515
using Microsoft.Azure.Management.WebSites.Models;
1616
using Microsoft.Azure.Management.Internal.Resources.Models;
17+
using System.Collections.Generic;
1718

1819
namespace Microsoft.Azure.Commands.Common.Strategies.WebApps
1920
{
@@ -28,16 +29,17 @@ static class SiteStrategy
2829
compulsoryLocation: true);
2930

3031
public static ResourceConfig<Site> CreateSiteConfig(this ResourceConfig<ResourceGroup> resourceGroup,
31-
ResourceConfig<AppServicePlan> plan, string siteName, SiteConfig siteConfig = null) =>
32+
ResourceConfig<AppServicePlan> plan, string siteName, SiteConfig siteConfig = null, IDictionary<string, string> tags=null) =>
3233
Strategy.CreateResourceConfig(
3334
resourceGroup,
3435
siteName,
3536
createModel: engine =>
36-
new Site(location: null, name: siteName)
37+
new Site(location: null, name: siteName, tags:tags)
3738
{
3839
//Name = siteName,
3940
SiteConfig = siteConfig,
40-
ServerFarmId = engine.GetId(plan)
41+
ServerFarmId = engine.GetId(plan),
42+
Tags = tags
4143
});
4244
}
4345
}

src/Websites/Websites/Utilities/WebsitesClient.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public WebSiteManagementClient WrappedWebsitesClient
5353
private set;
5454
}
5555

56-
public Site CreateWebApp(string resourceGroupName, string webAppName, string slotName, string location, string serverFarmId, CloningInfo cloningInfo, string aseName, string aseResourceGroupName)
56+
public Site CreateWebApp(string resourceGroupName, string webAppName, string slotName, string location, string serverFarmId, CloningInfo cloningInfo, string aseName, string aseResourceGroupName, IDictionary<string, string> tags = null)
5757
{
5858
Site createdWebSite = null;
5959
string qualifiedSiteName;
@@ -68,7 +68,8 @@ public Site CreateWebApp(string resourceGroupName, string webAppName, string slo
6868
Location = location,
6969
ServerFarmId = serverFarmId,
7070
CloningInfo = cloningInfo,
71-
HostingEnvironmentProfile = profile
71+
HostingEnvironmentProfile = profile,
72+
Tags = tags
7273
});
7374
}
7475
else
@@ -80,7 +81,8 @@ public Site CreateWebApp(string resourceGroupName, string webAppName, string slo
8081
Location = location,
8182
ServerFarmId = serverFarmId,
8283
CloningInfo = cloningInfo,
83-
HostingEnvironmentProfile = profile
84+
HostingEnvironmentProfile = profile,
85+
Tags = tags
8486
});
8587
}
8688

0 commit comments

Comments
 (0)