public override void ExecuteCmdlet() { if (string.Equals(ParameterSetName, ParameterSet2Name)) { string rg, name, slot; if (!CmdletHelpers.TryParseWebAppMetadataFromResourceId(WebApp.Id, out rg, out name, out slot, true)) { throw new ValidationMetadataException("Input object is a deployment slot but should be a production web app"); } ResourceGroupName = rg; Name = name; } if (string.IsNullOrWhiteSpace(Slot)) { var output = WebsitesClient.ListWebApps(ResourceGroupName, Name); var slots = new List <PSSite>(); foreach (var slot in output) { slots.Add(new PSSite(slot)); } WriteObject(slots, true); } else { WriteObject(new PSSite(WebsitesClient.GetWebApp(ResourceGroupName, Name, Slot))); } }
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); } }
private void GetBySubscription() { const string progressDescriptionFormat = "Progress: {0}/{1} resource groups processed."; const string progressCurrentOperationFormat = "Getting web apps for resource group '{0}'"; var progressRecord = new ProgressRecord(1, "Get web apps from all resource groups in subscription", "Progress:") { CurrentOperation = "Getting all subscription resource groups ..." }; WriteProgress(progressRecord); var resourceGroups = ResourcesClient.ResourceManagementClient.FilterResources(new FilterResourcesOptions { ResourceType = "Microsoft.Web/Sites" }).Select(s => s.ResourceGroupName).Distinct(StringComparer.OrdinalIgnoreCase).ToArray(); var list = new List <PSSite>(); for (var i = 0; i < resourceGroups.Length; i++) { var rg = resourceGroups[i]; try { var result = WebsitesClient.ListWebApps(rg, null); if (result != null) { foreach (var item in result) { list.Add(new PSSite(item)); } } } catch (Exception e) { WriteExceptionError(e); } progressRecord.CurrentOperation = string.Format(progressCurrentOperationFormat, rg); progressRecord.StatusDescription = string.Format(progressDescriptionFormat, i + 1, resourceGroups.Length); progressRecord.PercentComplete = (100 * (i + 1)) / resourceGroups.Length; WriteProgress(progressRecord); } WriteObject(list, true); }
private void GetByResourceGroup() { var list = new List <Site>(); try { var result = WebsitesClient.ListWebApps(ResourceGroupName, null); if (result != null) { list.AddRange(result); } } catch (Exception e) { WriteExceptionError(e); } WriteObject(list, true); }
private void GetByResourceGroup() { var list = new List <PSSite>(); try { var result = WebsitesClient.ListWebApps(ResourceGroupName, null); if (result != null) { foreach (var item in result) { WebsitesClient.GetWebAppConfiguration(ResourceGroupName, item.Name, null, item); list.Add(new PSSite(item)); } } } catch (Exception e) { WriteExceptionError(e); } WriteObject(list, true); }
protected override void ProcessRecord() { if (string.Equals(ParameterSetName, ParameterSet2Name)) { string rg, name, slot; if (!CmdletHelpers.TryParseWebAppMetadataFromResourceId(WebApp.Id, out rg, out name, out slot, true)) { throw new ValidationMetadataException("Input object is a deployment slot but should be a production web app"); } ResourceGroupName = rg; Name = name; } if (string.IsNullOrWhiteSpace(Slot)) { WriteObject(WebsitesClient.ListWebApps(ResourceGroupName, Name)); } else { WriteObject(WebsitesClient.GetWebApp(ResourceGroupName, Name, Slot)); } }
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); } }