Example #1
0
        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());
        }
Example #2
0
        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());
        }