public override void ExecuteCmdlet() { base.ExecuteCmdlet(); CloningInfo cloningInfo = null; if (SourceWebApp != null) { cloningInfo = new CloningInfo { SourceWebAppId = SourceWebApp.Id, SourceWebAppLocation = SourceWebApp.Location, CloneCustomHostNames = !IgnoreCustomHostNames.IsPresent, CloneSourceControl = !IgnoreSourceControl.IsPresent, ConfigureLoadBalancing = false, AppSettingsOverrides = AppSettingsOverrides == null ? null : AppSettingsOverrides.Cast <DictionaryEntry>().ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value.ToString(), StringComparer.Ordinal) }; cloningInfo = new PSCloningInfo(cloningInfo); } var webApp = new PSSite(WebsitesClient.GetWebApp(ResourceGroupName, Name, null)); var site = new PSSite(WebsitesClient.CreateWebApp(ResourceGroupName, Name, Slot, webApp.Location, AppServicePlan == null?webApp.ServerFarmId : AppServicePlan, cloningInfo, AseName, AseResourceGroupName)); UpdateConfigIfNeeded(site); }
public void CreateWithClonedWebApp() { string trafficManagerProfielId = IsResource(TrafficManagerProfile) ? TrafficManagerProfile : null; string trafficManagerProfileName = IsResource(TrafficManagerProfile) ? null : TrafficManagerProfile; CloningInfo cloningInfo = null; if (SourceWebApp != null) { cloningInfo = new CloningInfo { SourceWebAppId = SourceWebApp.Id, CloneCustomHostNames = !IgnoreCustomHostNames.IsPresent, SourceWebAppLocation = SourceWebApp.Location, CloneSourceControl = !IgnoreSourceControl.IsPresent, TrafficManagerProfileId = trafficManagerProfielId, TrafficManagerProfileName = trafficManagerProfileName, ConfigureLoadBalancing = !string.IsNullOrEmpty(TrafficManagerProfile), AppSettingsOverrides = AppSettingsOverrides == null ? null : AppSettingsOverrides.Cast <DictionaryEntry>().ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value.ToString(), StringComparer.Ordinal) }; cloningInfo = new PSCloningInfo(cloningInfo); } var cloneWebAppSlots = false; string[] slotNames = null; string srcResourceGroupName = null; string srcwebAppName = null; string srcSlotName = null; if (IncludeSourceWebAppSlots.IsPresent) { CmdletHelpers.TryParseWebAppMetadataFromResourceId(SourceWebApp.Id, out srcResourceGroupName, out srcwebAppName, out srcSlotName); var slots = WebsitesClient.ListWebApps(srcResourceGroupName, srcwebAppName); if (slots != null && slots.Any()) { slotNames = slots.Select(s => s.Name.Replace(srcwebAppName + "/", string.Empty)).ToArray(); cloneWebAppSlots = true; } } if (cloneWebAppSlots) { WriteVerboseWithTimestamp("Cloning source web app '{0}' to destination web app {1}", srcwebAppName, Name); } WriteObject(new PSSite(WebsitesClient.CreateWebApp(ResourceGroupName, Name, null, Location, AppServicePlan, cloningInfo, AseName, AseResourceGroupName))); if (cloneWebAppSlots) { WriteVerboseWithTimestamp("Cloning all deployment slots of source web app '{0}' to destination web app {1}", srcwebAppName, Name); CloneSlots(slotNames); } }
public PSCloningInfo(CloningInfo other) : base( sourceWebAppId: other.SourceWebAppId, correlationId: other.CorrelationId, overwrite: other.Overwrite, cloneCustomHostNames: other.CloneCustomHostNames, cloneSourceControl: other.CloneSourceControl, hostingEnvironment: other.HostingEnvironment, appSettingsOverrides: other.AppSettingsOverrides, configureLoadBalancing: other.ConfigureLoadBalancing, trafficManagerProfileId: other.TrafficManagerProfileId, trafficManagerProfileName: other.TrafficManagerProfileName ) { }
internal WebSiteData(ResourceIdentifier id, string name, ResourceType type, SystemData systemData, IDictionary <string, string> tags, AzureLocation location, string kind, ManagedServiceIdentity identity, ExtendedLocation extendedLocation, string state, IReadOnlyList <string> hostNames, string repositorySiteName, UsageState?usageState, bool?enabled, IReadOnlyList <string> enabledHostNames, SiteAvailabilityState?availabilityState, IList <HostNameSslState> hostNameSslStates, string serverFarmId, bool?reserved, bool?isXenon, bool?hyperV, DateTimeOffset?lastModifiedTimeUtc, SiteConfigProperties siteConfig, IReadOnlyList <string> trafficManagerHostNames, bool?scmSiteAlsoStopped, string targetSwapSlot, HostingEnvironmentProfile hostingEnvironmentProfile, bool?clientAffinityEnabled, bool?clientCertEnabled, ClientCertMode?clientCertMode, string clientCertExclusionPaths, bool?hostNamesDisabled, string customDomainVerificationId, string outboundIpAddresses, string possibleOutboundIpAddresses, int?containerSize, int?dailyMemoryTimeQuota, DateTimeOffset?suspendedTill, int?maxNumberOfWorkers, CloningInfo cloningInfo, string resourceGroup, bool?isDefaultContainer, string defaultHostName, SlotSwapStatus slotSwapStatus, bool?httpsOnly, RedundancyMode?redundancyMode, Guid?inProgressOperationId, bool?storageAccountRequired, string keyVaultReferenceIdentity, string virtualNetworkSubnetId) : base(id, name, type, systemData, tags, location, kind) { Identity = identity; ExtendedLocation = extendedLocation; State = state; HostNames = hostNames; RepositorySiteName = repositorySiteName; UsageState = usageState; Enabled = enabled; EnabledHostNames = enabledHostNames; AvailabilityState = availabilityState; HostNameSslStates = hostNameSslStates; ServerFarmId = serverFarmId; Reserved = reserved; IsXenon = isXenon; HyperV = hyperV; LastModifiedTimeUtc = lastModifiedTimeUtc; SiteConfig = siteConfig; TrafficManagerHostNames = trafficManagerHostNames; ScmSiteAlsoStopped = scmSiteAlsoStopped; TargetSwapSlot = targetSwapSlot; HostingEnvironmentProfile = hostingEnvironmentProfile; ClientAffinityEnabled = clientAffinityEnabled; ClientCertEnabled = clientCertEnabled; ClientCertMode = clientCertMode; ClientCertExclusionPaths = clientCertExclusionPaths; HostNamesDisabled = hostNamesDisabled; CustomDomainVerificationId = customDomainVerificationId; OutboundIpAddresses = outboundIpAddresses; PossibleOutboundIpAddresses = possibleOutboundIpAddresses; ContainerSize = containerSize; DailyMemoryTimeQuota = dailyMemoryTimeQuota; SuspendedTill = suspendedTill; MaxNumberOfWorkers = maxNumberOfWorkers; CloningInfo = cloningInfo; ResourceGroup = resourceGroup; IsDefaultContainer = isDefaultContainer; DefaultHostName = defaultHostName; SlotSwapStatus = slotSwapStatus; HttpsOnly = httpsOnly; RedundancyMode = redundancyMode; InProgressOperationId = inProgressOperationId; StorageAccountRequired = storageAccountRequired; KeyVaultReferenceIdentity = keyVaultReferenceIdentity; VirtualNetworkSubnetId = virtualNetworkSubnetId; }
public override void ExecuteCmdlet() { CloningInfo cloningInfo = null; if (SourceWebApp != null) { cloningInfo = new CloningInfo { SourceWebAppId = SourceWebApp.Id, CloneCustomHostNames = !IgnoreCustomHostNames.IsPresent, CloneSourceControl = !IgnoreSourceControl.IsPresent, TrafficManagerProfileId = TrafficManagerProfileId, TrafficManagerProfileName = TrafficManagerProfileName, ConfigureLoadBalancing = !string.IsNullOrEmpty(TrafficManagerProfileId) || !string.IsNullOrEmpty(TrafficManagerProfileName), AppSettingsOverrides = AppSettingsOverrides == null ? null: AppSettingsOverrides.Cast <DictionaryEntry>().ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value.ToString(), StringComparer.Ordinal) }; } WriteObject(WebsitesClient.CreateWebApp(ResourceGroupName, Name, null, Location, AppServicePlan, cloningInfo)); }
protected override void ProcessRecord() { base.ProcessRecord(); CloningInfo cloningInfo = null; if (SourceWebApp != null) { cloningInfo = new CloningInfo { SourceWebAppId = SourceWebApp.Id, CloneCustomHostNames = !IgnoreCustomHostNames.IsPresent, CloneSourceControl = !IgnoreSourceControl.IsPresent, ConfigureLoadBalancing = false, AppSettingsOverrides = AppSettingsOverrides == null ? null : AppSettingsOverrides.Cast <DictionaryEntry>().ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value.ToString(), StringComparer.Ordinal) }; } var webApp = WebsitesClient.GetWebApp(ResourceGroupName, Name, null); WriteObject(WebsitesClient.CreateWebApp(ResourceGroupName, Name, Slot, webApp.Location, AppServicePlan, cloningInfo)); }
public Site CreateWebApp(string resourceGroupName, string webAppName, string slotName, string location, string serverFarmId, CloningInfo cloningInfo, string aseName, string aseResourceGroupName) { Site createdWebSite = null; string qualifiedSiteName; var profile = CreateHostingEnvironmentProfile(resourceGroupName, aseResourceGroupName, aseName); if (CmdletHelpers.ShouldUseDeploymentSlot(webAppName, slotName, out qualifiedSiteName)) { createdWebSite = WrappedWebsitesClient.WebApps().CreateOrUpdateSiteSlot( resourceGroupName, webAppName, slot: slotName, siteEnvelope: new Site { #if !NETSTANDARD SiteName = qualifiedSiteName, #else Name = qualifiedSiteName, #endif Location = location, ServerFarmId = serverFarmId, CloningInfo = cloningInfo, HostingEnvironmentProfile = profile }); } else { createdWebSite = WrappedWebsitesClient.WebApps().CreateOrUpdateSite( resourceGroupName, webAppName, siteEnvelope: new Site { #if !NETSTANDARD SiteName = qualifiedSiteName, #else Name = qualifiedSiteName, #endif Location = location, ServerFarmId = serverFarmId, CloningInfo = cloningInfo, HostingEnvironmentProfile = profile }); } GetWebAppConfiguration(resourceGroupName, webAppName, slotName, createdWebSite); return(createdWebSite); }
internal static WebSiteData DeserializeWebSiteData(JsonElement element) { Optional <ManagedServiceIdentity> identity = default; Optional <ExtendedLocation> extendedLocation = default; Optional <string> kind = default; IDictionary <string, string> tags = default; AzureLocation location = default; ResourceIdentifier id = default; string name = default; ResourceType type = default; SystemData systemData = default; Optional <string> state = default; Optional <IReadOnlyList <string> > hostNames = default; Optional <string> repositorySiteName = default; Optional <UsageState> usageState = default; Optional <bool> enabled = default; Optional <IReadOnlyList <string> > enabledHostNames = default; Optional <SiteAvailabilityState> availabilityState = default; Optional <IList <HostNameSslState> > hostNameSslStates = default; Optional <string> serverFarmId = default; Optional <bool> reserved = default; Optional <bool> isXenon = default; Optional <bool> hyperV = default; Optional <DateTimeOffset> lastModifiedTimeUtc = default; Optional <SiteConfigProperties> siteConfig = default; Optional <IReadOnlyList <string> > trafficManagerHostNames = default; Optional <bool> scmSiteAlsoStopped = default; Optional <string> targetSwapSlot = default; Optional <HostingEnvironmentProfile> hostingEnvironmentProfile = default; Optional <bool> clientAffinityEnabled = default; Optional <bool> clientCertEnabled = default; Optional <ClientCertMode> clientCertMode = default; Optional <string> clientCertExclusionPaths = default; Optional <bool> hostNamesDisabled = default; Optional <string> customDomainVerificationId = default; Optional <string> outboundIpAddresses = default; Optional <string> possibleOutboundIpAddresses = default; Optional <int> containerSize = default; Optional <int> dailyMemoryTimeQuota = default; Optional <DateTimeOffset?> suspendedTill = default; Optional <int?> maxNumberOfWorkers = default; Optional <CloningInfo> cloningInfo = default; Optional <string> resourceGroup = default; Optional <bool> isDefaultContainer = default; Optional <string> defaultHostName = default; Optional <SlotSwapStatus> slotSwapStatus = default; Optional <bool> httpsOnly = default; Optional <RedundancyMode> redundancyMode = default; Optional <Guid?> inProgressOperationId = default; Optional <bool> storageAccountRequired = default; Optional <string> keyVaultReferenceIdentity = default; Optional <string> virtualNetworkSubnetId = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("identity")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } identity = JsonSerializer.Deserialize <ManagedServiceIdentity>(property.Value.ToString()); continue; } if (property.NameEquals("extendedLocation")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } extendedLocation = ExtendedLocation.DeserializeExtendedLocation(property.Value); continue; } if (property.NameEquals("kind")) { kind = property.Value.GetString(); continue; } if (property.NameEquals("tags")) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("location")) { location = property.Value.GetString(); continue; } if (property.NameEquals("id")) { id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = property.Value.GetString(); continue; } if (property.NameEquals("systemData")) { systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString()); continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("state")) { state = property0.Value.GetString(); continue; } if (property0.NameEquals("hostNames")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <string> array = new List <string>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(item.GetString()); } hostNames = array; continue; } if (property0.NameEquals("repositorySiteName")) { repositorySiteName = property0.Value.GetString(); continue; } if (property0.NameEquals("usageState")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } usageState = property0.Value.GetString().ToUsageState(); continue; } if (property0.NameEquals("enabled")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enabled = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("enabledHostNames")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <string> array = new List <string>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(item.GetString()); } enabledHostNames = array; continue; } if (property0.NameEquals("availabilityState")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } availabilityState = property0.Value.GetString().ToSiteAvailabilityState(); continue; } if (property0.NameEquals("hostNameSslStates")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <HostNameSslState> array = new List <HostNameSslState>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(HostNameSslState.DeserializeHostNameSslState(item)); } hostNameSslStates = array; continue; } if (property0.NameEquals("serverFarmId")) { serverFarmId = property0.Value.GetString(); continue; } if (property0.NameEquals("reserved")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } reserved = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("isXenon")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } isXenon = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("hyperV")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } hyperV = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("lastModifiedTimeUtc")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } lastModifiedTimeUtc = property0.Value.GetDateTimeOffset("O"); continue; } if (property0.NameEquals("siteConfig")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } siteConfig = SiteConfigProperties.DeserializeSiteConfigProperties(property0.Value); continue; } if (property0.NameEquals("trafficManagerHostNames")) { if (property0.Value.ValueKind == JsonValueKind.Null) { trafficManagerHostNames = null; continue; } List <string> array = new List <string>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(item.GetString()); } trafficManagerHostNames = array; continue; } if (property0.NameEquals("scmSiteAlsoStopped")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } scmSiteAlsoStopped = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("targetSwapSlot")) { targetSwapSlot = property0.Value.GetString(); continue; } if (property0.NameEquals("hostingEnvironmentProfile")) { if (property0.Value.ValueKind == JsonValueKind.Null) { hostingEnvironmentProfile = null; continue; } hostingEnvironmentProfile = HostingEnvironmentProfile.DeserializeHostingEnvironmentProfile(property0.Value); continue; } if (property0.NameEquals("clientAffinityEnabled")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } clientAffinityEnabled = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("clientCertEnabled")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } clientCertEnabled = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("clientCertMode")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } clientCertMode = property0.Value.GetString().ToClientCertMode(); continue; } if (property0.NameEquals("clientCertExclusionPaths")) { clientCertExclusionPaths = property0.Value.GetString(); continue; } if (property0.NameEquals("hostNamesDisabled")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } hostNamesDisabled = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("customDomainVerificationId")) { customDomainVerificationId = property0.Value.GetString(); continue; } if (property0.NameEquals("outboundIpAddresses")) { outboundIpAddresses = property0.Value.GetString(); continue; } if (property0.NameEquals("possibleOutboundIpAddresses")) { possibleOutboundIpAddresses = property0.Value.GetString(); continue; } if (property0.NameEquals("containerSize")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } containerSize = property0.Value.GetInt32(); continue; } if (property0.NameEquals("dailyMemoryTimeQuota")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } dailyMemoryTimeQuota = property0.Value.GetInt32(); continue; } if (property0.NameEquals("suspendedTill")) { if (property0.Value.ValueKind == JsonValueKind.Null) { suspendedTill = null; continue; } suspendedTill = property0.Value.GetDateTimeOffset("O"); continue; } if (property0.NameEquals("maxNumberOfWorkers")) { if (property0.Value.ValueKind == JsonValueKind.Null) { maxNumberOfWorkers = null; continue; } maxNumberOfWorkers = property0.Value.GetInt32(); continue; } if (property0.NameEquals("cloningInfo")) { if (property0.Value.ValueKind == JsonValueKind.Null) { cloningInfo = null; continue; } cloningInfo = CloningInfo.DeserializeCloningInfo(property0.Value); continue; } if (property0.NameEquals("resourceGroup")) { resourceGroup = property0.Value.GetString(); continue; } if (property0.NameEquals("isDefaultContainer")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } isDefaultContainer = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("defaultHostName")) { defaultHostName = property0.Value.GetString(); continue; } if (property0.NameEquals("slotSwapStatus")) { if (property0.Value.ValueKind == JsonValueKind.Null) { slotSwapStatus = null; continue; } slotSwapStatus = SlotSwapStatus.DeserializeSlotSwapStatus(property0.Value); continue; } if (property0.NameEquals("httpsOnly")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } httpsOnly = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("redundancyMode")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } redundancyMode = property0.Value.GetString().ToRedundancyMode(); continue; } if (property0.NameEquals("inProgressOperationId")) { if (property0.Value.ValueKind == JsonValueKind.Null) { inProgressOperationId = null; continue; } inProgressOperationId = property0.Value.GetGuid(); continue; } if (property0.NameEquals("storageAccountRequired")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } storageAccountRequired = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("keyVaultReferenceIdentity")) { keyVaultReferenceIdentity = property0.Value.GetString(); continue; } if (property0.NameEquals("virtualNetworkSubnetId")) { virtualNetworkSubnetId = property0.Value.GetString(); continue; } } continue; } } return(new WebSiteData(id, name, type, systemData, tags, location, kind.Value, identity, extendedLocation.Value, state.Value, Optional.ToList(hostNames), repositorySiteName.Value, Optional.ToNullable(usageState), Optional.ToNullable(enabled), Optional.ToList(enabledHostNames), Optional.ToNullable(availabilityState), Optional.ToList(hostNameSslStates), serverFarmId.Value, Optional.ToNullable(reserved), Optional.ToNullable(isXenon), Optional.ToNullable(hyperV), Optional.ToNullable(lastModifiedTimeUtc), siteConfig.Value, Optional.ToList(trafficManagerHostNames), Optional.ToNullable(scmSiteAlsoStopped), targetSwapSlot.Value, hostingEnvironmentProfile.Value, Optional.ToNullable(clientAffinityEnabled), Optional.ToNullable(clientCertEnabled), Optional.ToNullable(clientCertMode), clientCertExclusionPaths.Value, Optional.ToNullable(hostNamesDisabled), customDomainVerificationId.Value, outboundIpAddresses.Value, possibleOutboundIpAddresses.Value, Optional.ToNullable(containerSize), Optional.ToNullable(dailyMemoryTimeQuota), Optional.ToNullable(suspendedTill), Optional.ToNullable(maxNumberOfWorkers), cloningInfo.Value, resourceGroup.Value, Optional.ToNullable(isDefaultContainer), defaultHostName.Value, slotSwapStatus.Value, Optional.ToNullable(httpsOnly), Optional.ToNullable(redundancyMode), Optional.ToNullable(inProgressOperationId), Optional.ToNullable(storageAccountRequired), keyVaultReferenceIdentity.Value, virtualNetworkSubnetId.Value)); }
public Site CreateWebApp(string resourceGroupName, string webAppName, string slotName, string location, string serverFarmId, CloningInfo cloningInfo) { Site createdWebSite = null; string qualifiedSiteName; if (CmdletHelpers.ShouldUseDeploymentSlot(webAppName, slotName, out qualifiedSiteName)) { createdWebSite = WrappedWebsitesClient.Sites.CreateOrUpdateSiteSlot( resourceGroupName, webAppName, slot: slotName, siteEnvelope: new Site { SiteName = qualifiedSiteName, Location = location, ServerFarmId = serverFarmId, CloningInfo = cloningInfo }); } else { createdWebSite = WrappedWebsitesClient.Sites.CreateOrUpdateSite( resourceGroupName, webAppName, siteEnvelope: new Site { SiteName = qualifiedSiteName, Location = location, ServerFarmId = serverFarmId, CloningInfo = cloningInfo }); } GetWebAppConfiguration(resourceGroupName, webAppName, slotName, createdWebSite); return(createdWebSite); }
public void CreateWithClonedWebApp() { string trafficManagerProfielId = IsResource(TrafficManagerProfile) ? TrafficManagerProfile : null; string trafficManagerProfileName = IsResource(TrafficManagerProfile) ? null : TrafficManagerProfile; CloningInfo cloningInfo = null; if (SourceWebApp != null) { cloningInfo = new CloningInfo { SourceWebAppId = SourceWebApp.Id, CloneCustomHostNames = !IgnoreCustomHostNames.IsPresent, SourceWebAppLocation = SourceWebApp.Location, CloneSourceControl = !IgnoreSourceControl.IsPresent, TrafficManagerProfileId = trafficManagerProfielId, TrafficManagerProfileName = trafficManagerProfileName, ConfigureLoadBalancing = !string.IsNullOrEmpty(TrafficManagerProfile), AppSettingsOverrides = AppSettingsOverrides == null ? null : AppSettingsOverrides.Cast <DictionaryEntry>().ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value.ToString(), StringComparer.Ordinal) }; cloningInfo = new PSCloningInfo(cloningInfo); } var cloneWebAppSlots = false; string[] slotNames = null; string srcResourceGroupName = null; string srcwebAppName = null; string srcSlotName = null; if (IncludeSourceWebAppSlots.IsPresent) { CmdletHelpers.TryParseWebAppMetadataFromResourceId(SourceWebApp.Id, out srcResourceGroupName, out srcwebAppName, out srcSlotName); var slots = WebsitesClient.ListWebApps(srcResourceGroupName, srcwebAppName); if (slots != null && slots.Any()) { slotNames = slots.Select(s => s.Name.Replace(srcwebAppName + "/", string.Empty)).ToArray(); cloneWebAppSlots = true; } } if (cloneWebAppSlots) { WriteVerboseWithTimestamp("Cloning source web app '{0}' to destination web app {1}", srcwebAppName, Name); } try { WriteObject(new PSSite(WebsitesClient.CreateWebApp(ResourceGroupName, Name, null, Location, AppServicePlan, cloningInfo, AseName, AseResourceGroupName))); } catch (Exception e) { if (e.Message.Contains("Operation returned an invalid status code \'BadRequest\'")) { var message = e.Message + "\nIf AppServicePlan is present in other resourceGroup, please provide AppServicePlan in following format : \" /subscriptions/{subscriptionId}/resourcegroups/{resourcegroupName}/providers/Microsoft.Web/serverfarms/{serverFarmName}\""; WriteObject(message); throw new Exception(message, e); } throw e; } if (cloneWebAppSlots) { WriteVerboseWithTimestamp("Cloning all deployment slots of source web app '{0}' to destination web app {1}", srcwebAppName, Name); CloneSlots(slotNames); } }