private async Task UpdateApplications(ICloudFoundryClient cloudFoundryClient, List <String> applicationNames, string status) { var appListTasks = applicationNames.Select(applicationName => new ApplicationRequest { Resource = new Resource { Entity = new Entity { Name = applicationName, State = status } } }).Select(applicationRequest => JsonConvert.SerializeObject(applicationRequest, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })).Select(applicationRequestJson => cloudFoundryClient.Client.PutAsync(string.Empty, new StringContent(applicationRequestJson, Encoding.UTF8, "application/json"))) .ToList(); // Wait asynchronously for all of them to finish await Task.WhenAll(appListTasks); _validation.ValidateResponses(appListTasks.Select(x => x.Result).ToList()); }
public async Task <IActionResult> ManageTAContainers([FromServices] ICloudFoundryClient cloudFoundryClient, string customerShortName, string projectShortName, string state) { ApplicationState applicationState; if (!Enum.TryParse(state, out applicationState)) { return(StatusCode((int)HttpStatusCode.InternalServerError, $"Application State '{state}' is not supported. The supported Application States are: " + $"{string.Join(", ", Enum.GetValues(typeof(ApplicationState)).Cast<ApplicationState>())}")); } // TA Applications are deployed in '{customerShortName}_{projectShortName}-{ApplicationName}' format in PCF var taApplications = _config.TAApplications.Select(applicationName => string.Format($"{customerShortName}_{projectShortName}-{applicationName}")).ToList(); await UpdateApplications(cloudFoundryClient, taApplications, state); return(Ok()); }