private Environment CreateEnvironment(ProvisioningViewModel viewModel, string environment) { string subscriptionId = _settings.GetSubscriptionId(environment); string resourceGroupName = string.Concat(viewModel.ProjectName, "-", environment + "-rg"); return(new Environment(resourceGroupName, subscriptionId, viewModel.ProjectName, environment, viewModel.Email)); }
public ActionResult Provisioning(ProvisioningViewModel vm) { if (!vm.ProvisioningInformation.Any(p => p.Select && string.IsNullOrEmpty(p.SiteUrl))) { var commands = vm.ProvisioningInformation.Where(p => p.Select).Select(p => new ForceProvisioningCompletionCommand { ProjectId = p.Id, SiteUrl = p.SiteUrl }).ToList(); commands.ForEach(c => _bus.Send <ForceProvisioningCompletionCommand> (m => { m.ProjectId = c.ProjectId; m.SiteUrl = c.SiteUrl; } )); ViewBag.Message = "Provisioning requests updated; refresh in a few minutes to see the result."; } else { ViewBag.Message = "Invalid request(s) selected; ensure all selected requests have a site url."; } vm.Projects = _projectRepository.GetAllWhichFailedProvisioning(); return(View(vm)); }
private ProvisioningRequest CreateRequest(ProvisioningViewModel provisioningViewModel, bool vnetCreatedBefore) { ProvisioningRequest provisioningRequest = new ProvisioningRequest(provisioningViewModel.ProvisionAzure, provisioningViewModel.ProvisionVSTS, provisioningViewModel.ProjectName, provisioningViewModel.Email, provisioningViewModel.OwnerObjectId); if (provisioningViewModel.ProvisionAzure) { if (provisioningViewModel.ProvisionDevEnvironment) { provisioningRequest.Environments.Add(CreateEnvironment(provisioningViewModel, Environments.Development)); } if (provisioningViewModel.ProvisionTestEnvironment) { provisioningRequest.Environments.Add(CreateEnvironment(provisioningViewModel, Environments.Test)); } if (provisioningViewModel.ProvisionStagingEnvironment) { provisioningRequest.Environments.Add(CreateEnvironment(provisioningViewModel, Environments.Staging)); } } if (!vnetCreatedBefore && provisioningRequest.Environments.Any()) { provisioningRequest.Environments.First().CreateVNet = true; } return(provisioningRequest); }
public IActionResult Index() { var provisioningViewModel = new ProvisioningViewModel(); SetUserMetadata(provisioningViewModel); return(View(provisioningViewModel)); }
public ActionResult Provisioning() { var projects = _projectRepository.GetAllWhichFailedProvisioning(); var vm = new ProvisioningViewModel { Projects = projects }; return(View(vm)); }
public async Task <IActionResult> Index(ProvisioningViewModel provisioningViewModel) { SetUserMetadata(provisioningViewModel); if (string.IsNullOrWhiteSpace(provisioningViewModel.Email) || string.IsNullOrWhiteSpace(provisioningViewModel.OwnerObjectId)) { provisioningViewModel.ErrorMessage = "Could not retrieve objectId or email from currently logged in user"; return(View(provisioningViewModel)); } if (!ModelState.IsValid) { return(View(provisioningViewModel)); } List <ExistingEnvironment> existingEnvironments = _validator.IsValid(provisioningViewModel); if (existingEnvironments.Any()) { string errorMessage = string.Empty; foreach (var environment in existingEnvironments) { if (!string.IsNullOrWhiteSpace(environment.ErrorMessage)) { errorMessage += environment.ErrorMessage; } } if (!string.IsNullOrEmpty(errorMessage)) { provisioningViewModel.ErrorMessage = errorMessage; return(View(provisioningViewModel)); } } if (!provisioningViewModel.ProvisionAzure && !provisioningViewModel.ProvisionVSTS) { provisioningViewModel.ErrorMessage = "Please select a provisioning option below!"; return(View(provisioningViewModel)); } var success = await _provisioning.Run(provisioningViewModel, existingEnvironments.Any()); if (success) { return(View("Success")); } else { return(View("Error")); } }
public List <ExistingEnvironment> IsValid(ProvisioningViewModel model) { List <ExistingEnvironment> existingEnvironments = new List <ExistingEnvironment>(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_settings.GetProjectDbConnectionString()); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference("tblproject"); bool devExists = Exists(table, model.ProjectName, Environments.Development).Result; if (devExists) { var dev = new ExistingEnvironment { Name = Environments.Development }; if (model.ProvisionDevEnvironment) { dev.ErrorMessage = $"Project with name {model.ProjectName} already has an existing development environment"; } existingEnvironments.Add(dev); } bool testExists = Exists(table, model.ProjectName, Environments.Test).Result; if (testExists) { var test = new ExistingEnvironment { Name = Environments.Test }; if (model.ProvisionTestEnvironment) { test.ErrorMessage = $"Project with name {model.ProjectName} already has an existing test environment"; } existingEnvironments.Add(test); } bool stagingExists = Exists(table, model.ProjectName, Environments.Staging).Result; if (stagingExists) { var staging = new ExistingEnvironment { Name = Environments.Staging }; if (model.ProvisionStagingEnvironment) { staging.ErrorMessage = $"Project with name {model.ProjectName} already has an existing staging environment"; } existingEnvironments.Add(staging); } return(existingEnvironments); }
private void SetUserMetadata(ProvisioningViewModel provisioningViewModel) { //TODO: Remove default provisioningViewModel.Email = GetValueOfUserClaim("name"); provisioningViewModel.OwnerObjectId = GetValueOfUserClaim("http://schemas.microsoft.com/identity/claims/objectidentifier"); }
public async Task <bool> Run(ProvisioningViewModel provisioningViewModel, bool vnetCreatedBefore) { var request = CreateRequest(provisioningViewModel, vnetCreatedBefore); return(await _workflow.Trigger(request)); }