public void AddWebSpaceTest() { WebSpace webSpace = new WebSpace {Name = "newwebspace"}; // Add without any cache from before Cache.AddWebSpace(SubscriptionName, webSpace); WebSpaces getWebSpaces = Cache.GetWebSpaces(SubscriptionName); Assert.IsNotNull(getWebSpaces.Find(ws => ws.Name.Equals("newwebspace"))); }
public static void AddWebSpace(string subscriptionId, WebSpace webSpace) { WebSpaces webSpaces = GetWebSpaces(subscriptionId); if (webSpaces == null) { webSpaces = new WebSpaces(); } webSpaces.Add(webSpace); SaveSpaces(subscriptionId, webSpaces); }
private Site CreateSite(WebSpace webspace, SiteWithWebSpace website) { Site createdWebsite = null; try { if (WebsitesClient.WebsiteExists(website.Name) && !string.IsNullOrEmpty(Slot)) { createdWebsite = WebsitesClient.GetWebsite(website.Name); // API makes sure site is in Standard mode WebsitesClient.CreateWebsite(createdWebsite.WebSpace, website, Slot); } else { WebsitesClient.CreateWebsite(webspace.Name, website, null); } createdWebsite = WebsitesClient.GetWebsite(website.Name); Cache.AddSite(CurrentContext.Subscription.Id.ToString(), createdWebsite); SiteConfig websiteConfiguration = WebsitesClient.GetWebsiteConfiguration(createdWebsite.Name, Slot); WriteObject(new SiteWithConfig(createdWebsite, websiteConfiguration)); } catch (CloudException ex) { if (SiteAlreadyExists(ex) && (Git || GitHub)) { // Handle conflict - it's ok to attempt to use cmdlet on an // existing website if you're updating the source control stuff. WriteWarning(ex.Message); createdWebsite = WebsitesClient.GetWebsite(website.Name, null); } else if (HostNameValidationFailed(ex)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else if (BadPlan(ex)) { throw new EndpointNotFoundException(); } else { WriteExceptionError(new Exception(ex.Message)); } } return(createdWebsite); }
public void RemoveWebSpaceTest() { WebSpace webSpace = new WebSpace { Name = "newwebspace" }; // Add without any cache from before Cache.AddWebSpace(SubscriptionName, webSpace); WebSpaces getWebSpaces = Cache.GetWebSpaces(SubscriptionName); Assert.IsNotNull(getWebSpaces.Find(ws => ws.Name.Equals("newwebspace"))); // Now remove it Cache.RemoveWebSpace(SubscriptionName, webSpace); getWebSpaces = Cache.GetWebSpaces(SubscriptionName); Assert.IsNull(getWebSpaces.Find(ws => ws.Name.Equals("newwebspace"))); }
private WebSpace GetDefaultWebSpace(IList <WebSpace> webspaceList) { WebSpace webspace = webspaceList.FirstOrDefault(); if (webspace == null) { try { string defaultLocation = WebsitesClient.GetDefaultLocation(); webspace = WebSpaceForLocation(defaultLocation); } catch { throw new Exception(Resources.CreateWebsiteFailed); } } return(webspace); }
public override void ExecuteCmdlet() { WebsitesClient = WebsitesClient ?? new WebsitesClient(CurrentSubscription, WriteDebug); string suffix = WebsitesClient.GetWebsiteDnsSuffix(); if (Git && GitHub) { throw new Exception("Please run the command with either -Git or -GitHub options. Not both."); } if (Git) { PublishingUsername = GetPublishingUser(); } WebSpaces webspaceList = null; InvokeInOperationContext(() => { webspaceList = RetryCall(s => Channel.GetWebSpacesWithCache(s)); }); if (Git && webspaceList.Count == 0) { // If location is still empty or null, give portal instructions. string error = string.Format(Resources.PortalInstructions, Name); throw new Exception(!Git ? error : string.Format("{0}\n{1}", error, Resources.PortalInstructionsGit)); } WebSpace webspace = null; if (string.IsNullOrEmpty(Location)) { // If no location was provided as a parameter, try to default it webspace = webspaceList.FirstOrDefault(); if (webspace == null) { webspace = new WebSpace { GeoRegion = WebsitesClient.GetDefaultLocation(), Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } else { // Find the webspace that corresponds to the georegion webspace = webspaceList.FirstOrDefault(w => w.GeoRegion.Equals(Location, StringComparison.OrdinalIgnoreCase)); if (webspace == null) { // If no webspace corresponding to the georegion was found, attempt to create it webspace = new WebSpace { Name = Regex.Replace(Location.ToLower(), " ", "") + "webspace", GeoRegion = Location, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } SiteWithWebSpace website = new SiteWithWebSpace { Name = Name, HostNames = new[] { string.Format("{0}.{1}", Name, suffix) }, WebSpace = webspace.Name, WebSpaceToCreate = webspace }; if (!string.IsNullOrEmpty(Hostname)) { List <string> newHostNames = new List <string>(website.HostNames); newHostNames.Add(Hostname); website.HostNames = newHostNames.ToArray(); } try { InvokeInOperationContext(() => RetryCall(s => Channel.CreateSite(s, webspace.Name, website))); // If operation succeeded try to update cache with new webspace if that's the case if (webspaceList.FirstOrDefault(ws => ws.Name.Equals(webspace.Name)) == null) { Cache.AddWebSpace(CurrentSubscription.SubscriptionId, webspace); } Cache.AddSite(CurrentSubscription.SubscriptionId, website); SiteConfig websiteConfiguration = null; InvokeInOperationContext(() => { websiteConfiguration = RetryCall(s => Channel.GetSiteConfig(s, website.WebSpace, website.Name)); WaitForOperation(CommandRuntime.ToString()); }); WriteObject(new SiteWithConfig(website, websiteConfiguration)); } catch (ProtocolException ex) { // Handle site creating indepently so that cmdlet is idempotent. string message = ProcessException(ex, false); if (message.Equals(string.Format(Resources.WebsiteAlreadyExistsReplacement, Name)) && (Git || GitHub)) { WriteWarning(message); } else if (message.Equals(Resources.DefaultHostnamesValidation)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else { WriteExceptionError(new Exception(message)); } } if (Git || GitHub) { try { Directory.SetCurrentDirectory(SessionState.Path.CurrentFileSystemLocation.Path); } catch (Exception) { // Do nothing if session state is not present } LinkedRevisionControl linkedRevisionControl = null; if (Git) { linkedRevisionControl = new GitClient(this); } else if (GitHub) { linkedRevisionControl = new GithubClient(this, GithubCredentials, GithubRepository); } linkedRevisionControl.Init(); CopyIisNodeWhenServerJsPresent(); UpdateLocalConfigWithSiteName(Name, webspace.Name); InitializeRemoteRepo(webspace.Name, Name); Site updatedWebsite = RetryCall(s => Channel.GetSite(s, webspace.Name, Name, "repositoryuri,publishingpassword,publishingusername")); if (Git) { AddRemoteToLocalGitRepo(updatedWebsite); } linkedRevisionControl.Deploy(updatedWebsite); linkedRevisionControl.Dispose(); } }
public override void ExecuteCmdlet() { WebsitesClient = WebsitesClient ?? new WebsitesClient(CurrentSubscription, WriteDebug); string suffix = WebsitesClient.GetWebsiteDnsSuffix(); if (Git && GitHub) { throw new Exception("Please run the command with either -Git or -GitHub options. Not both."); } if (Git) { PublishingUsername = GetPublishingUser(); } WebSpaces webspaceList = null; InvokeInOperationContext(() => { webspaceList = RetryCall(s => Channel.GetWebSpaces(s)); }); if (Git && webspaceList.Count == 0) { // If location is still empty or null, give portal instructions. string error = string.Format(Resources.PortalInstructions, Name); throw new Exception(!Git ? error : string.Format("{0}\n{1}", error, Resources.PortalInstructionsGit)); } WebSpace webspace = null; if (string.IsNullOrEmpty(Location)) { // If no location was provided as a parameter, try to default it webspace = webspaceList.FirstOrDefault(); if (webspace == null) { string defaultLocation; try { defaultLocation = WebsitesClient.GetDefaultLocation(); } catch { throw new Exception(Resources.CreateWebsiteFailed); } webspace = new WebSpace { Name = Regex.Replace(defaultLocation.ToLower(), " ", "") + "webspace", GeoRegion = defaultLocation, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } else { // Find the webspace that corresponds to the georegion webspace = webspaceList.FirstOrDefault(w => w.GeoRegion.Equals(Location, StringComparison.OrdinalIgnoreCase)); if (webspace == null) { // If no webspace corresponding to the georegion was found, attempt to create it webspace = new WebSpace { Name = Regex.Replace(Location.ToLower(), " ", "") + "webspace", GeoRegion = Location, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } SiteWithWebSpace website = new SiteWithWebSpace { Name = Name, HostNames = new[] { string.Format("{0}.{1}", Name, suffix) }, WebSpace = webspace.Name, WebSpaceToCreate = webspace }; if (!string.IsNullOrEmpty(Hostname)) { List<string> newHostNames = new List<string>(website.HostNames); newHostNames.Add(Hostname); website.HostNames = newHostNames.ToArray(); } try { CreateSite(webspace, website); } catch (EndpointNotFoundException) { // Create webspace with VirtualPlan failed, try with subscription id webspace.Plan = CurrentSubscription.SubscriptionId; CreateSite(webspace, website); } if (Git || GitHub) { try { Directory.SetCurrentDirectory(SessionState.Path.CurrentFileSystemLocation.Path); } catch (Exception) { // Do nothing if session state is not present } LinkedRevisionControl linkedRevisionControl = null; if (Git) { linkedRevisionControl = new GitClient(this); } else if (GitHub) { linkedRevisionControl = new GithubClient(this, GithubCredentials, GithubRepository); } linkedRevisionControl.Init(); CopyIisNodeWhenServerJsPresent(); UpdateLocalConfigWithSiteName(Name, webspace.Name); InitializeRemoteRepo(webspace.Name, Name); Site updatedWebsite = RetryCall(s => Channel.GetSite(s, webspace.Name, Name, "repositoryuri,publishingpassword,publishingusername")); if (Git) { AddRemoteToLocalGitRepo(updatedWebsite); } linkedRevisionControl.Deploy(updatedWebsite); linkedRevisionControl.Dispose(); } }
public IAsyncResult BeginUpdateWebSpace(string subscriptionName, string name, bool allowPendingState, WebSpace webSpace, AsyncCallback callback, object state) { throw new NotImplementedException(); }
public override void ExecuteCmdlet() { if (Git && GitHub) { throw new Exception("Please run the command with either -Git or -GitHub options. Not both."); } if (Git) { PublishingUsername = GetPublishingUser(); } WebSpaces webspaceList = null; InvokeInOperationContext(() => { webspaceList = RetryCall(s => Channel.GetWebSpacesWithCache(s)); }); if (Git && webspaceList.Count == 0) { // If location is still empty or null, give portal instructions. string error = string.Format(Resources.PortalInstructions, Name); throw new Exception(!Git ? error : string.Format("{0}\n{1}", error, Resources.PortalInstructionsGit)); } WebSpace webspace = null; if (string.IsNullOrEmpty(Location)) { // If no location was provided as a parameter, try to default it webspace = webspaceList.FirstOrDefault(); if (webspace == null) { // Use east us webspace = new WebSpace { Name = "eastuswebspace", GeoRegion = "East US", Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } else { // Find the webspace that corresponds to the georegion webspace = webspaceList.FirstOrDefault(w => w.GeoRegion.Equals(Location, StringComparison.OrdinalIgnoreCase)); if (webspace == null) { // If no webspace corresponding to the georegion was found, attempt to create it webspace = new WebSpace { Name = Regex.Replace(Location.ToLower(), " ", "") + "webspace", GeoRegion = Location, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } SiteWithWebSpace website = new SiteWithWebSpace { Name = Name, HostNames = new[] { Name + General.AzureWebsiteHostNameSuffix }, WebSpace = webspace.Name, WebSpaceToCreate = webspace }; if (!string.IsNullOrEmpty(Hostname)) { List<string> newHostNames = new List<string>(website.HostNames); newHostNames.Add(Hostname); website.HostNames = newHostNames.ToArray(); } try { InvokeInOperationContext(() => RetryCall(s => Channel.CreateSite(s, webspace.Name, website))); // If operation succeeded try to update cache with new webspace if that's the case if (webspaceList.FirstOrDefault(ws => ws.Name.Equals(webspace.Name)) == null) { Cache.AddWebSpace(CurrentSubscription.SubscriptionId, webspace); } Cache.AddSite(CurrentSubscription.SubscriptionId, website); SiteConfig websiteConfiguration = null; InvokeInOperationContext(() => { websiteConfiguration = RetryCall(s => Channel.GetSiteConfig(s, website.WebSpace, website.Name)); WaitForOperation(CommandRuntime.ToString()); }); WriteObject(new SiteWithConfig(website, websiteConfiguration)); } catch (ProtocolException ex) { // Handle site creating indepently so that cmdlet is idempotent. string message = ProcessException(ex, false); if (message.Equals(string.Format(Resources.WebsiteAlreadyExistsReplacement, Name)) && (Git || GitHub)) { WriteWarning(message); } else if (message.Equals(Resources.DefaultHostnamesValidation)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else { WriteExceptionError(new Exception(message)); } } if (Git || GitHub) { try { Directory.SetCurrentDirectory(SessionState.Path.CurrentFileSystemLocation.Path); } catch (Exception) { // Do nothing if session state is not present } LinkedRevisionControl linkedRevisionControl = null; if (Git) { linkedRevisionControl = new GitClient(this); } else if (GitHub) { linkedRevisionControl = new GithubClient(this, GithubCredentials, GithubRepository); } linkedRevisionControl.Init(); CopyIisNodeWhenServerJsPresent(); UpdateLocalConfigWithSiteName(Name, webspace.Name); InitializeRemoteRepo(webspace.Name, Name); Site updatedWebsite = RetryCall(s => Channel.GetSite(s, webspace.Name, Name, "repositoryuri,publishingpassword,publishingusername")); if (Git) { AddRemoteToLocalGitRepo(updatedWebsite); } linkedRevisionControl.Deploy(updatedWebsite); linkedRevisionControl.Dispose(); } }
private void CreateSite(WebSpace webspace, SiteWithWebSpace website) { try { WebsitesClient.CreateWebsite(webspace.Name, website); Cache.AddSite(CurrentSubscription.SubscriptionId, website); SiteConfig websiteConfiguration = WebsitesClient.GetWebsiteConfiguration(Name); WriteObject(new SiteWithConfig(website, websiteConfiguration)); } catch (CloudException ex) { if (SiteAlreadyExists(ex) && (Git || GitHub)) { // Handle conflict - it's ok to attempt to use cmdlet on an // existing website if you're updating the source control stuff. WriteWarning(ex.Message); } else if (HostNameValidationFailed(ex)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else if (BadPlan(ex)) { throw new EndpointNotFoundException(); } else { WriteExceptionError(new Exception(ex.Message)); } } }
private void UpdateSourceControlPublishing(WebSpace webspace) { try { Directory.SetCurrentDirectory(SessionState.Path.CurrentFileSystemLocation.Path); } catch (Exception) { // Do nothing if session state is not present } using (LinkedRevisionControl linkedRevisionControl = CreateLinkedRevisionControl()) { linkedRevisionControl.Init(); CopyIisNodeWhenServerJsPresent(); UpdateLocalConfigWithSiteName(Name, webspace.Name); InitializeRemoteRepo(webspace.Name, Name); Site updatedWebsite = WebsitesClient.GetWebsite(Name); if (Git) { AddRemoteToLocalGitRepo(updatedWebsite); } linkedRevisionControl.Deploy(updatedWebsite); } }
private Site CreateSite(WebSpace webspace, SiteWithWebSpace website) { Site createdWebsite = null; try { if (WebsitesClient.WebsiteExists(website.Name) && !string.IsNullOrEmpty(Slot)) { createdWebsite = WebsitesClient.GetWebsite(website.Name); // API makes sure site is in Standard mode WebsitesClient.CreateWebsite(createdWebsite.WebSpace, website, Slot); } else { WebsitesClient.CreateWebsite(webspace.Name, website, null); } createdWebsite = WebsitesClient.GetWebsite(website.Name); Cache.AddSite(CurrentContext.Subscription.Id.ToString(), createdWebsite); SiteConfig websiteConfiguration = WebsitesClient.GetWebsiteConfiguration(createdWebsite.Name, Slot); WriteObject(new SiteWithConfig(createdWebsite, websiteConfiguration)); } catch (CloudException ex) { if (SiteAlreadyExists(ex) && (Git || GitHub)) { // Handle conflict - it's ok to attempt to use cmdlet on an // existing website if you're updating the source control stuff. WriteWarning(ex.Message); createdWebsite = WebsitesClient.GetWebsite(website.Name, null); } else if (HostNameValidationFailed(ex)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else if (BadPlan(ex)) { throw new EndpointNotFoundException(); } else { WriteExceptionError(new Exception(ex.Message)); } } return createdWebsite; }
private void CreateSite(WebSpace webspace, SiteWithWebSpace website) { try { InvokeInOperationContext(() => RetryCall(s => Channel.CreateSite(s, webspace.Name, website))); Cache.AddSite(CurrentSubscription.SubscriptionId, website); SiteConfig websiteConfiguration = null; InvokeInOperationContext(() => { websiteConfiguration = RetryCall(s => Channel.GetSiteConfig(s, website.WebSpace, website.Name)); WaitForOperation(CommandRuntime.ToString()); }); WriteObject(new SiteWithConfig(website, websiteConfiguration)); } catch (ProtocolException ex) { // Handle site creating indepently so that cmdlet is idempotent. string message = ProcessException(ex, false); if (message.Equals(string.Format(Resources.WebsiteAlreadyExistsReplacement, Name)) && (Git || GitHub)) { WriteWarning(message); } else if (message.Equals(Resources.DefaultHostnamesValidation)) { WriteExceptionError(new Exception(Resources.InvalidHostnameValidation)); } else { WriteExceptionError(new Exception(message)); } } }
public static void RemoveWebSpace(string subscriptionId, WebSpace webSpace) { WebSpaces webSpaces = GetWebSpaces(subscriptionId); if (webSpaces == null) { return; } webSpaces.RemoveAll(ws => ws.Name.Equals(webSpace.Name)); SaveSpaces(subscriptionId, webSpaces); }
public static WebSpace CreateWebSpace(this IWebsitesServiceManagement proxy, string subscriptionName, bool allowPendingState, WebSpace webSpace) { return proxy.EndCreateWebSpace(proxy.BeginCreateWebSpace(subscriptionName, allowPendingState, webSpace, null, null)); }
public static WebSpace UpdateWebSpace(this IWebsitesServiceManagement proxy, string subscriptionId, string name, bool allowPendingState, WebSpace webSpace) { return(proxy.EndUpdateWebSpace(proxy.BeginUpdateWebSpace(subscriptionId, name, allowPendingState, webSpace, null, null))); }
public override void ExecuteCmdlet() { WebsitesClient = WebsitesClient ?? new WebsitesClient(CurrentSubscription, WriteDebug); string suffix = WebsitesClient.GetWebsiteDnsSuffix(); if (Git && GitHub) { throw new Exception("Please run the command with either -Git or -GitHub options. Not both."); } if (Git) { PublishingUsername = GetPublishingUser(); } WebSpaces webspaceList = null; InvokeInOperationContext(() => { webspaceList = RetryCall(s => Channel.GetWebSpaces(s)); }); if (Git && webspaceList.Count == 0) { // If location is still empty or null, give portal instructions. string error = string.Format(Resources.PortalInstructions, Name); throw new Exception(!Git ? error : string.Format("{0}\n{1}", error, Resources.PortalInstructionsGit)); } WebSpace webspace = null; if (string.IsNullOrEmpty(Location)) { // If no location was provided as a parameter, try to default it webspace = webspaceList.FirstOrDefault(); if (webspace == null) { string defaultLocation; try { defaultLocation = WebsitesClient.GetDefaultLocation(); } catch { throw new Exception(Resources.CreateWebsiteFailed); } webspace = new WebSpace { Name = Regex.Replace(defaultLocation.ToLower(), " ", "") + "webspace", GeoRegion = defaultLocation, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } else { // Find the webspace that corresponds to the georegion webspace = webspaceList.FirstOrDefault(w => w.GeoRegion.Equals(Location, StringComparison.OrdinalIgnoreCase)); if (webspace == null) { // If no webspace corresponding to the georegion was found, attempt to create it webspace = new WebSpace { Name = Regex.Replace(Location.ToLower(), " ", "") + "webspace", GeoRegion = Location, Subscription = CurrentSubscription.SubscriptionId, Plan = "VirtualDedicatedPlan" }; } } SiteWithWebSpace website = new SiteWithWebSpace { Name = Name, HostNames = new[] { string.Format("{0}.{1}", Name, suffix) }, WebSpace = webspace.Name, WebSpaceToCreate = webspace }; if (!string.IsNullOrEmpty(Hostname)) { List <string> newHostNames = new List <string>(website.HostNames); newHostNames.Add(Hostname); website.HostNames = newHostNames.ToArray(); } try { CreateSite(webspace, website); } catch (EndpointNotFoundException) { // Create webspace with VirtualPlan failed, try with subscription id webspace.Plan = CurrentSubscription.SubscriptionId; CreateSite(webspace, website); } if (Git || GitHub) { try { Directory.SetCurrentDirectory(SessionState.Path.CurrentFileSystemLocation.Path); } catch (Exception) { // Do nothing if session state is not present } LinkedRevisionControl linkedRevisionControl = null; if (Git) { linkedRevisionControl = new GitClient(this); } else if (GitHub) { linkedRevisionControl = new GithubClient(this, GithubCredentials, GithubRepository); } linkedRevisionControl.Init(); CopyIisNodeWhenServerJsPresent(); UpdateLocalConfigWithSiteName(Name, webspace.Name); InitializeRemoteRepo(webspace.Name, Name); Site updatedWebsite = RetryCall(s => Channel.GetSite(s, webspace.Name, Name, "repositoryuri,publishingpassword,publishingusername")); if (Git) { AddRemoteToLocalGitRepo(updatedWebsite); } linkedRevisionControl.Deploy(updatedWebsite); linkedRevisionControl.Dispose(); } }