private ProvisioningService(int provisioningOptionId, ProvisioningParameters provisioningParameters) { _provisioningTasks = Factory.CreatePipeline(provisioningOptionId, provisioningParameters); _provisioningParameters = provisioningParameters; SetParameters(); }
private static void SetDay1Parameters(ProvisioningParameters parameters, string theme) { // Database Properties parameters.Tenant.DatabaseName = Settings.TenantDbName; parameters.Tenant.SqlVersion = Settings.TenantDbVersion; parameters.Tenant.UserName = Settings.TenantDbUsername; parameters.Tenant.Password = Settings.TenantDbPassword; // Deployment Switches parameters.Properties.HasDatabaseSchema = true; parameters.Properties.HasDatabaseViews = true; // Deployment Scripts parameters.Properties.DatabaseSchema = ResourceHelper.ReadText(@"Tenant\Database\Schema.sql"); parameters.Properties.DatabaseViews = ResourceHelper.ReadText(@"Tenant\Database\Views.sql"); parameters.Properties.WebSitePackage = ResourceHelper.ReadBytes(@"Tenant\Website\Package.zip"); parameters.Properties.WebSitePackageName = "scheduleTenant-package.zip"; // Database switch (theme) { case "Rock": parameters.Properties.DatabaseInformation = ResourceHelper.ReadText(@"Tenant\Database\Rock.sql"); break; case "Classical": parameters.Properties.DatabaseInformation = ResourceHelper.ReadText(@"Tenant\Database\Symphony.sql"); break; case "Pop": parameters.Properties.DatabaseInformation = ResourceHelper.ReadText(@"Tenant\Database\Pop.sql"); break; } }
private static BaseProvisioner CreatePipelineComponent(ProvisioningPipelineTask task, ProvisioningParameters provisioningParameters) { switch (task.TaskCode) { // Shared Components case Provisioner.Shared_ResourceGroup: return new Shared.ResourceGroup(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_SqlServerSchema: return new Shared.SqlSchemaDeployment(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_SqlServerPopulate: return new Shared.SqlSchemaPopulator(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_SearchService: return new Shared.SearchService(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_WebHostingPlan: return new Shared.WebHostingPlanCreator(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_Website: return new Shared.WebSiteCreator(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_TrafficManager: return new Shared.TrafficManagerProfile(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_SqlAuditing: return new Shared.SqlAuditing(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Shared_DocumentDb: return new Shared.DocumentDb(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); // Day 1 Components case Provisioner.Day1_StorageAccount: return new StorageAccountCreator(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Day1_SqlServer: return new Day1.SqlDatabase(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Day1_WebsiteDeployment: return new Day1.WebSiteDeployment(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); // Day 2 Components case Provisioner.Day2_StorageAccount: return new StorageAccountCreator(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Day2_SqlServer: return new Day2.SqlDatabase(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Day2_WebsiteDeployment: return new Day2.WebSiteDeployment(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); case Provisioner.Day2_DataFactory: return new Day2.DataFactory111(task.Id, task.Position, task.GroupNo, task.WaitForCompletion); default: return null; } }
private static ProvisioningParameters GetParameters(int day, IEnumerable <AzureLocation> dataCenters, TenantModel scheduleTenant, TenantModel day1Tenant, bool isAdminInterface) { // Default Parameters var parameters = new ProvisioningParameters() { Tenant = new Tenant() { TenantId = scheduleTenant.TenantId, SiteName = scheduleTenant.SiteName, Theme = scheduleTenant.Theme, }, Properties = new Properties() { LocationPrimary = scheduleTenant.DataCenter, TargetUsername = scheduleTenant.Username, TargetSubscription = scheduleTenant.SubscriptionId, TargetTenant = scheduleTenant.OrganizationId, IsRunningFromAdminInterface = isAdminInterface, V12Locations = dataCenters.Select(d => d.Name).ToList(), }, }; // Add Values if (day == 1) { SetDay1Parameters(parameters, scheduleTenant.Theme); } else { SetDay2Parameters(parameters); } return(parameters); }
public static List<BaseProvisioner> CreatePipeline(int provisioningOptionId, ProvisioningParameters provisioningParameters) { // FetchById components and their execution order for option (Standand/Premium) var provisioningPipelineRepository = new ProvisioningPipelineRepository(); var tasks = provisioningPipelineRepository.FetchPipelineTasks(provisioningOptionId); // Create the Pipeline components based on their unique codes var pipeline = new List<BaseProvisioner>(); tasks.ForEach(t => pipeline.Add(CreatePipelineComponent(t, provisioningParameters))); return pipeline; }
private static void SetDay2Parameters(ProvisioningParameters parameters) { // Database Properties parameters.Tenant.DatabaseName = Settings.ProductRecommendationsDbName; parameters.Tenant.SqlVersion = Settings.ProductRecommendationsDbVersion; parameters.Tenant.UserName = Settings.ProductRecommendationsDbUsername; parameters.Tenant.Password = Settings.ProductRecommendationsDbPassword; // Deployment Switches parameters.Properties.HasDatabaseSchema = true; parameters.Properties.HasDatabaseViews = false; // Deployment Scripts parameters.Properties.DatabaseSchema = ResourceHelper.ReadText(@"ProductRecommendations\Database\Schema.sql"); parameters.Properties.DatabaseInformation = ResourceHelper.ReadText(@"ProductRecommendations\Database\Populate.sql"); parameters.Properties.WebSitePackage = ResourceHelper.ReadBytes(@"ProductRecommendations\Website\Package.zip"); parameters.Properties.WebSitePackageName = "recommendations-package.zip"; }
private static ProvisioningParameters GetParameters(int day, IEnumerable<AzureLocation> dataCenters, TenantModel scheduleTenant, TenantModel day1Tenant, bool isAdminInterface) { // Default Parameters var parameters = new ProvisioningParameters() { Tenant = new Tenant() { TenantId = scheduleTenant.TenantId, SiteName = scheduleTenant.SiteName, Theme = scheduleTenant.Theme, }, Properties = new Properties() { LocationPrimary = scheduleTenant.DataCenter, TargetUsername = scheduleTenant.Username, TargetSubscription = scheduleTenant.SubscriptionId, TargetTenant = scheduleTenant.OrganizationId, IsRunningFromAdminInterface = isAdminInterface, V12Locations = dataCenters.Select(d => d.Name).ToList(), }, }; // Add Values if (day == 1) { SetDay1Parameters(parameters, scheduleTenant.Theme); } else { SetDay2Parameters(parameters); } return parameters; }