public async Task Test_CheckCreateWebSite_WithExistingSite()
        {
            using (var client = ManagementClient.CreateWebSiteClient())
            {
                const string webspace = WebSpaceNames.NorthEuropeWebSpace;

                var parameters =
                    new WebSiteCreateParameters
                {
                    Name       = "fct-" + Guid.NewGuid().ToString().Split('-').Last(),
                    ServerFarm = await FlexConfiguration.WebPlanChooser.Choose(client, webspace)
                };

                try
                {
                    await client.WebSites.CreateAsync(webspace, parameters);

                    await client.CreateWebSiteIfNotExistsAsync(webspace, parameters);
                }
                finally
                {
                    client.WebSites.Delete(
                        webspace,
                        parameters.Name,
                        new WebSiteDeleteParameters
                    {
                        DeleteAllSlots        = true,
                        DeleteEmptyServerFarm = false,
                        DeleteMetrics         = true
                    });
                }
            }
        }
        private string CreateWebsite()
        {
            bool   validWebsiteNameFound = false;
            string websiteName;

            do
            {
                websiteName = GenerateRandomName(TestArtifactType.Website);
                WebSiteIsHostnameAvailableResponse nameCheckResponse = WebsiteManagementClient.WebSites.IsHostnameAvailable(websiteName);
                validWebsiteNameFound = nameCheckResponse.IsAvailable;
            }while (!validWebsiteNameFound);

            WebSiteCreateParameters parameter = new WebSiteCreateParameters();

            parameter.Name       = websiteName;
            parameter.ServerFarm = WebsiteServerFarmName;
            parameter.WebSpace   = new WebSiteCreateParameters.WebSpaceDetails()
            {
                GeoRegion = WebsiteGeoRegion,
                Name      = WebSpaceName,
                Plan      = WebsitePlanName
            };

            this.WebsiteManagementClient.WebSites.Create(WebSpaceName, parameter);

            RegisterToCleanup(websiteName, _websitesToCleanup);
            return(websiteName);
        }
Example #3
0
        public async Task <WebSiteGetPublishProfileResponse> CreateWebsite(string WebSiteName)
        {
            string Location = "SouthCentralUSwebspace";

            using (var client = GetWebSiteManagementClient())
            {
                string WebSpaceName = Location;

                var parameters = new WebSiteCreateParameters
                {
                    Name       = WebSiteName,
                    ServerFarm = ""
                };
                try
                {
                    var result = await client.WebSites.CreateAsync(WebSpaceName, parameters);

                    //(result.WebSite.State == "Running") ?

                    return(await GetPublishProfile(client, WebSiteName));
                }
                catch (Exception ex)
                {
                    return(null);
                }
            }
        }
        /// <summary>
        ///     Create a website
        /// </summary>
        /// <param name="webSpaceName"></param>
        /// <param name="siteSettings"></param>
        /// <param name="connectionStringInfo"></param>
        /// <returns></returns>
        public WebSite CreateWebSite(string webSpaceName, WebSiteCreateParameters siteSettings,
                                     WebSiteUpdateConfigurationParameters.ConnectionStringInfo connectionStringInfo = null)
        {
            if (siteSettings == null)
            {
                throw new ArgumentNullException("siteSettings");
            }

            siteSettings.Name = string.IsNullOrEmpty(siteSettings.Name)
                ? Dependencies.TestResourcesCollector.GetUniqueWebSiteName()
                : siteSettings.Name.ToLowerInvariant();

            if (siteSettings.HostNames == null || siteSettings.HostNames.Count == 0)
            {
                siteSettings.HostNames = new [] { siteSettings.Name + Dependencies.Subscription.DefaultWebSitesDomainName };
            }

            if (string.IsNullOrEmpty(siteSettings.WebSpaceName))
            {
                siteSettings.WebSpaceName = webSpaceName;
            }

            TestEasyLog.Instance.Info(string.Format("Creating web site '{0}'", siteSettings.Name));

            var createWebsiteResult = WebSiteManagementClient.WebSites.CreateAsync(webSpaceName,
                                                                                   siteSettings,
                                                                                   new CancellationToken()).Result;

            var newSite = createWebsiteResult.WebSite;

            Dependencies.TestResourcesCollector.Remember(AzureResourceType.WebSite, newSite.Name, newSite);

            if (connectionStringInfo != null)
            {
                var existingConfig            = CreateWebSiteUpdateParameters(newSite.Name);
                var existingConnectionStrings = existingConfig.ConnectionStrings;
                if (existingConnectionStrings.All(cs => cs.Name != connectionStringInfo.Name))
                {
                    existingConnectionStrings.Add(connectionStringInfo);
                    UpdateWebSiteConfig(webSpaceName, newSite.Name, existingConfig);
                }
            }

            return(newSite);
        }
Example #5
0
        /// <summary>
        /// Create a new website.
        /// </summary>
        /// <param name="webspaceName">Web space to create site in.</param>
        /// <param name="siteToCreate">Details about the site to create.</param>
        /// <returns></returns>
        public Site CreateWebsite(string webspaceName, SiteWithWebSpace siteToCreate)
        {
            var options = new WebSiteCreateParameters
            {
                Name         = siteToCreate.Name,
                WebSpaceName = siteToCreate.WebSpaceToCreate.Name,
                WebSpace     = new WebSiteCreateParameters.WebSpaceDetails
                {
                    GeoRegion = siteToCreate.WebSpaceToCreate.GeoRegion,
                    Name      = siteToCreate.WebSpaceToCreate.Name,
                    Plan      = siteToCreate.WebSpaceToCreate.Plan,
                }
            };

            siteToCreate.HostNames.ForEach(s => options.HostNames.Add(s));

            var response = WebsiteManagementClient.WebSites.Create(webspaceName, options);

            return(response.WebSite.ToSite());
        }
Example #6
0
        public ActionResult NewSite(string SiteName, string WebSpaceName)
        {
            var cred   = GetCredentials();
            var client = new WebSiteManagementClient(cred);

            var parameters = new WebSiteCreateParameters
            {
                Name         = SiteName,
                SiteMode     = WebSiteMode.Limited,
                ComputeMode  = WebSiteComputeMode.Shared,
                WebSpaceName = WebSpaceName
            };

            parameters.HostNames.Add(
                string.Format("{0}.azurewebsites.net", SiteName)
                );

            var result = client.WebSites.Create(WebSpaceName, parameters);

            var viewModel = GetHomePageViewModel(client);

            return(View("Index", viewModel));
        }
Example #7
0
        /// <summary>
        /// Create a new website in production.
        /// </summary>
        /// <param name="webspaceName">Web space to create site in.</param>
        /// <param name="siteToCreate">Details about the site to create.</param>
        /// <returns>The created site object</returns>
        private Site CreateWebsite(string webspaceName, SiteWithWebSpace siteToCreate)
        {
            var options = new WebSiteCreateParameters
            {
                Name = siteToCreate.Name,
                WebSpaceName = siteToCreate.WebSpaceToCreate.Name,
                WebSpace = new WebSiteCreateParameters.WebSpaceDetails
                {
                    GeoRegion = siteToCreate.WebSpaceToCreate.GeoRegion,
                    Name = siteToCreate.WebSpaceToCreate.Name,
                    Plan = siteToCreate.WebSpaceToCreate.Plan
                }
            };

            siteToCreate.HostNames.ForEach(s => options.HostNames.Add(s));

            var response = WebsiteManagementClient.WebSites.Create(webspaceName, options);
            return response.WebSite.ToSite();
        }
Example #8
0
 /// <summary>
 /// You can create a web site by using a POST request that includes the
 /// name of the web site and other information in the request body.
 /// (see
 /// http://msdn.microsoft.com/en-us/library/windowsazure/dn166986.aspx
 /// for more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.WindowsAzure.Management.WebSites.IWebSiteOperations.
 /// </param>
 /// <param name='webSpaceName'>
 /// The name of the web space.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the Create Web Site operation.
 /// </param>
 /// <returns>
 /// The Create Web Space operation response.
 /// </returns>
 public static Task <WebSiteCreateResponse> CreateAsync(this IWebSiteOperations operations, string webSpaceName, WebSiteCreateParameters parameters)
 {
     return(operations.CreateAsync(webSpaceName, parameters, CancellationToken.None));
 }
Example #9
0
 /// <summary>
 /// You can create a web site by using a POST request that includes the
 /// name of the web site and other information in the request body.
 /// (see
 /// http://msdn.microsoft.com/en-us/library/windowsazure/dn166986.aspx
 /// for more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.WindowsAzure.Management.WebSites.IWebSiteOperations.
 /// </param>
 /// <param name='webSpaceName'>
 /// The name of the web space.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the Create Web Site operation.
 /// </param>
 /// <returns>
 /// The Create Web Space operation response.
 /// </returns>
 public static WebSiteCreateResponse Create(this IWebSiteOperations operations, string webSpaceName, WebSiteCreateParameters parameters)
 {
     try
     {
         return(operations.CreateAsync(webSpaceName, parameters).Result);
     }
     catch (AggregateException ex)
     {
         if (ex.InnerExceptions.Count > 1)
         {
             throw;
         }
         else
         {
             throw ex.InnerException;
         }
     }
 }
Example #10
0
 /// <summary>
 /// You can create a web site by using a POST request that includes the
 /// name of the web site and other information in the request body.
 /// (see
 /// http://msdn.microsoft.com/en-us/library/windowsazure/dn166986.aspx
 /// for more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.WindowsAzure.Management.WebSites.IWebSiteOperations.
 /// </param>
 /// <param name='webSpaceName'>
 /// Required. The name of the web space.
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters supplied to the Create Web Site operation.
 /// </param>
 /// <returns>
 /// The Create Web Site operation response.
 /// </returns>
 public static WebSiteCreateResponse Create(this IWebSiteOperations operations, string webSpaceName, WebSiteCreateParameters parameters)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IWebSiteOperations)s).CreateAsync(webSpaceName, parameters);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
Example #11
0
        public async Task <bool> CreateSite(string SiteName,
                                            string WebSpaceName,
                                            string BlogName,
                                            string Description,
                                            string Copywright)
        {
            try
            {
                Trace("Getting Credentials");

                var cred   = ManagementLibraryUtilities.GetCredentials();
                var client = new WebSiteManagementClient(cred);

                var parameters = new WebSiteCreateParameters
                {
                    Name         = SiteName,
                    SiteMode     = WebSiteMode.Limited,
                    ComputeMode  = WebSiteComputeMode.Shared,
                    WebSpaceName = WebSpaceName
                };

                parameters.HostNames.Add(
                    string.Format("{0}.azurewebsites.net", SiteName)
                    );

                Trace("Creating Site {0}", SiteName);

                var result = client.WebSites.Create(WebSpaceName, parameters);

                Trace("Created {0}. Getting publish profiles.", SiteName);

                var profiles = await client.WebSites.GetPublishProfileAsync(WebSpaceName, SiteName);

                var webDeployProfile = profiles.First(x => x.MSDeploySite != null);
                var webSitePath      = HttpContext.Current.Server.MapPath(@"~/App_Data/MiniBlog");

                Trace("Deploying site {0}", SiteName);

                new WebDeployPublishingHelper(
                    webDeployProfile.PublishUrl,
                    webDeployProfile.MSDeploySite,
                    webDeployProfile.UserName,
                    webDeployProfile.UserPassword,
                    webSitePath
                    )
                .PublishFolder();

                Trace("Deployed site {0}", SiteName);

                Trace("Getting configuration for {0}", SiteName);

                // get the site's configuration
                var settingsResult = await client.WebSites.GetConfigurationAsync(WebSpaceName, SiteName);

                settingsResult.AppSettings.Add("blog:name", BlogName);
                settingsResult.AppSettings.Add("blog:description", Description);
                settingsResult.AppSettings.Add("blog:copyrightOwner", Copywright);

                Trace("Saving site configuration for {0}", SiteName);

                // update the site's configuration
                await client.WebSites.UpdateConfigurationAsync(WebSpaceName, SiteName,
                                                               new WebSiteUpdateConfigurationParameters
                {
                    AppSettings = settingsResult.AppSettings
                });

                Trace("Site {0} is ready.", SiteName);

                return(true);
            }
            catch (Exception ex)
            {
                Trace("Exception: {0}", ex.ToString());
                return(false);
            }
        }
        /// <summary>
        /// Checks for the existence of a specific Azure Web Site, if it doesn't exist it will create it.
        /// </summary>
        /// <param name="client">The <see cref="WebSiteManagementClient"/> that is performing the operation.</param>
        /// <param name="webSpace">The name of the Web Space where the site should be.</param>
        /// <param name="parameters">The <see cref="WebSiteCreateParameters"/> that define the site we want to create.</param>
        /// <returns>The async <see cref="Task"/> wrapper.</returns>
        public static async Task CreateWebSiteIfNotExistsAsync(this WebSiteManagementClient client, string webSpace, WebSiteCreateParameters parameters)
        {
            Contract.Requires(client != null);
            Contract.Requires(!string.IsNullOrWhiteSpace(webSpace));
            Contract.Requires(parameters != null);

            WebSiteGetResponse service = null;

            FlexStreams.BuildEventsObserver.OnNext(new CheckIfExistsEvent(AzureResource.WebSite, parameters.Name));

            try
            {
                service = await client.WebSites.GetAsync(webSpace, parameters.Name, null);
            }
            catch (CloudException cex)
            {
                if (cex.Error.Code != "NotFound")
                {
                    throw;
                }
            }

            if (service != null)
            {
                FlexStreams.BuildEventsObserver.OnNext(new FoundExistingEvent(AzureResource.WebSite, parameters.Name));
                return;
            }

            await client.WebSites.CreateAsync(webSpace, parameters);

            FlexStreams.BuildEventsObserver.OnNext(new ProvisionEvent(AzureResource.WebSite, parameters.Name));
        }