Skip to content

Commit bbaa2f5

Browse files
authored
Merge pull request Azure#11042 from ThejaChoudary/master
Adding support to set custom hostnames for WebAppSlots#10980
2 parents 5276f00 + 6a24273 commit bbaa2f5

File tree

5 files changed

+2855
-2135
lines changed

5 files changed

+2855
-2135
lines changed

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

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

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

Lines changed: 1239 additions & 1068 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+
*Fixing issue to set custom hostnames for WebAppSlots
2122

2223
## Version 1.6.0
2324
* Set-AzWebapp and Set-AzWebappSlot supports AlwaysOn, MinTls and FtpsState properties

src/Websites/Websites/Cmdlets/DeploymentSlots/SetAzureWebAppSlot.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ public class SetAzureWebAppSlotCmdlet : WebAppSlotBaseCmdlet
133133
[ValidateSet("AllAllowed", "Disabled", "FtpsOnly")]
134134
public string FtpsState { get; set; }
135135

136+
[Parameter(ParameterSetName = ParameterSet1Name, Mandatory = false, HelpMessage = "Custom hostnames associated with web app slot")]
137+
[ValidateNotNullOrEmpty]
138+
public string[] HostNames { get; set; }
139+
136140

137141
public override void ExecuteCmdlet()
138142
{
@@ -260,6 +264,10 @@ public override void ExecuteCmdlet()
260264
//Update WebApp object after site update
261265
WebApp = new PSSite(WebsitesClient.GetWebApp(ResourceGroupName, Name, null));
262266
}
267+
if (parameters.Contains("HostNames"))
268+
{
269+
WebsitesClient.AddCustomHostNames(ResourceGroupName, location, Name,HostNames, Slot);
270+
}
263271

264272
break;
265273
case ParameterSet2Name:
@@ -298,6 +306,7 @@ public override void ExecuteCmdlet()
298306
CmdletHelpers.TryParseAppServicePlanMetadataFromResourceId(WebApp.ServerFarmId, out rg, out servicePlanName);
299307
WebApp.AzureStoragePath = null; // the API to update site Object doesn't have the AzureStorage Path property
300308
WebsitesClient.UpdateWebApp(ResourceGroupName, location, Name, Slot, servicePlanName, WebApp);
309+
WebsitesClient.AddCustomHostNames(ResourceGroupName, location, Name, WebApp.HostNames.ToArray(), Slot);
301310
break;
302311
}
303312

src/Websites/Websites/Utilities/WebsitesClient.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,11 @@ public void UpdateWebApp(string resourceGroupName, string location, string webAp
128128
}
129129
}
130130

131-
public void AddCustomHostNames(string resourceGroupName, string location, string webAppName, string[] hostNames)
131+
public void AddCustomHostNames(string resourceGroupName, string location, string webAppName, string[] hostNames, string slotName=null)
132132
{
133-
var webApp = WrappedWebsitesClient.WebApps().Get(resourceGroupName, webAppName);
133+
var webApp = (slotName == null)
134+
? WrappedWebsitesClient.WebApps().Get(resourceGroupName, webAppName)
135+
: GetWebApp(resourceGroupName, webAppName, slotName);
134136
var currentHostNames = webApp.HostNames;
135137

136138
// Add new hostnames
@@ -140,11 +142,22 @@ public void AddCustomHostNames(string resourceGroupName, string location, string
140142
{
141143
if (!currentHostNames.Contains(hostName, StringComparer.OrdinalIgnoreCase))
142144
{
143-
WrappedWebsitesClient.WebApps().CreateOrUpdateHostNameBinding(resourceGroupName, webAppName,
145+
if (slotName == null)
146+
{
147+
WrappedWebsitesClient.WebApps().CreateOrUpdateHostNameBinding(resourceGroupName, webAppName,
144148
hostName, new HostNameBinding
145149
{
146150
SiteName = webAppName,
147151
});
152+
}
153+
else
154+
{
155+
WrappedWebsitesClient.WebApps().CreateOrUpdateHostNameBindingSlot(resourceGroupName, webAppName,
156+
hostName, new HostNameBinding
157+
{
158+
SiteName = webAppName,
159+
}, slotName);
160+
}
148161
}
149162
}
150163
catch (Exception e)
@@ -160,7 +173,14 @@ public void AddCustomHostNames(string resourceGroupName, string location, string
160173
{
161174
if (!hostNames.Contains(hostName, StringComparer.OrdinalIgnoreCase))
162175
{
163-
WrappedWebsitesClient.WebApps().DeleteHostNameBinding(resourceGroupName, webAppName, hostName);
176+
if (slotName == null)
177+
{
178+
WrappedWebsitesClient.WebApps().DeleteHostNameBinding(resourceGroupName, webAppName, hostName);
179+
}
180+
else
181+
{
182+
WrappedWebsitesClient.WebApps().DeleteHostNameBindingSlot(resourceGroupName, webAppName, slotName, hostName);
183+
}
164184
}
165185
}
166186
catch (Exception e)

0 commit comments

Comments
 (0)