Ejemplo n.º 1
0
        public async Task <ActionResult <string> > GetAsync()
        {
            var environment = "gidu-api";
            var server      = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            var textDefault = $"GIDU API's <br> by Jeff <br> 2019 <br>" +
                              $"{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}";

            if (server == "Production")
            {
                var credencials = new BasicAWSCredentials(
                    Environment.GetEnvironmentVariable("AWS_AccessKey"),
                    Environment.GetEnvironmentVariable("AWS_SecretKey"));

                var elasticBeanstalkClient = new AmazonElasticBeanstalkClient(credencials, RegionEndpoint.SAEast1);
                var configs = (await elasticBeanstalkClient.DescribeEnvironmentsAsync()).
                              Environments.Where(e => e.EnvironmentName == environment).First();

                return($"{textDefault} <br>" +
                       $"{configs.HealthStatus} <br>" +
                       $"{configs.Status} <br>" +
                       $"{configs.VersionLabel} <br>" +
                       $"{configs.DateUpdated} <br>");
            }

            return(textDefault);
        }
Ejemplo n.º 2
0
        public IEnumerable <ElasticBeanstalkService> GetServices()
        {
            var beanstalkClient = new AmazonElasticBeanstalkClient();
            var response        = beanstalkClient.DescribeEnvironmentsAsync().Result;

            return(response.Environments.Select(e => _serviceFactory.Create(e)));
        }
Ejemplo n.º 3
0
        // GET: Beanstalk
        public async Task <ActionResult> Index()
        {
            DescribeEnvironmentsResponse environmentsDescription;
            var activeEnvironmentsTask = this.clientRepository.GetActiveEnvironments();

            using (AmazonElasticBeanstalkClient client = new AmazonElasticBeanstalkClient(RegionEndpoint.EUWest1))
            {
                DescribeEnvironmentsRequest request = new DescribeEnvironmentsRequest();
                environmentsDescription = await client.DescribeEnvironmentsAsync(request);
            }

            var environments = environmentsDescription.Environments;

            environments.RemoveAll(x => x.Status == EnvironmentStatus.Terminated || x.Status == EnvironmentStatus.Terminating);

            var activeEnvironments = await activeEnvironmentsTask;

            BeanstalkGroupViewModel[] viewModels =
                new BeanstalkGroupViewModel[HomeController.BeanstalkGroups.Length + 1];

            for (int i = 0; i < HomeController.BeanstalkGroups.Length; i++)
            {
                viewModels[i] = new BeanstalkGroupViewModel(HomeController.BeanstalkGroups[i]);

                for (int j = environments.Count - 1; j >= 0; j--)
                {
                    if (environments[j].EnvironmentName.StartsWith(HomeController.BeanstalkGroups[i], StringComparison.OrdinalIgnoreCase))
                    {
                        // add something
                        var obj = Convert(environments[j]);
                        obj.HasBeanpole = activeEnvironments.ContainsKey(obj.EnvironmentName);

                        viewModels[i].Environments.Add(obj);
                        environments.RemoveAt(j);
                    }
                }
            }

            var unknownGroup = new BeanstalkGroupViewModel("Unknown");

            for (int i = 0; i < environments.Count; i++)
            {
                unknownGroup.Environments.Add(Convert(environments[i]));
            }
            viewModels[viewModels.Length - 1] = unknownGroup;

            for (int i = 0; i < viewModels.Length; i++)
            {
                viewModels[i].Environments.Sort((x, y) => StringComparer.OrdinalIgnoreCase.Compare(x.EnvironmentName, y.EnvironmentName));
            }

            return(View(viewModels));
        }
Ejemplo n.º 4
0
        private static async Task SendToSlack(string channel, MessageData data)
        {
            var beanstalkClient = new AmazonElasticBeanstalkClient();

            var response = await beanstalkClient.DescribeEnvironmentsAsync(new DescribeEnvironmentsRequest
            {
                ApplicationName  = data.Application,
                EnvironmentNames = new List <string> {
                    data.Environment
                }
            });

            var httpClient = new HttpClient();

            var payload = new
            {
                channel     = channel,
                username    = "******",
                attachments = new[]
                {
                    new
                    {
                        color  = data.Status.ToString().ToLower(),
                        text   = data.Message,
                        fields = new object[]
                        {
                            new
                            {
                                title = "Version Label",
                                value = response.Environments[0].VersionLabel
                            },
                            new
                            {
                                title  = "Application",
                                value  = $"<https://ap-northeast-1.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-1#/application/overview?applicationName={data.Application}|{data.Application}>",
                                @short = true
                            },
                            new
                            {
                                title  = "Environment",
                                value  = $"<https://ap-northeast-1.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-1#/environment/dashboard?applicationName={data.Application}&environmentId={response.Environments[0].EnvironmentId}|{data.Environment}>",
                                @short = true
                            },
                            new
                            {
                                title = "Environment URL",
                                value = data.EnvironmentUrl
                            },
                            new
                            {
                                title = "Timestamp",
                                value = data.Timestamp
                            }
                        }
                    }
                }
            };

            var jsonString = JsonConvert.SerializeObject(payload);

            await httpClient.PostAsync("https://hooks.slack.com/services/XXXXX", new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("payload", jsonString)
            }));
        }