/// <summary>
        /// <para>Returns descriptions for existing environments.</para>
        /// </summary>
        ///
        /// <param name="describeEnvironmentsRequest">Container for the necessary parameters to execute the DescribeEnvironments service method on
        ///           AmazonElasticBeanstalk.</param>
        ///
        /// <returns>The response from the DescribeEnvironments service method, as returned by AmazonElasticBeanstalk.</returns>
        ///
        public DescribeEnvironmentsResponse DescribeEnvironments(DescribeEnvironmentsRequest describeEnvironmentsRequest)
        {
            IRequest <DescribeEnvironmentsRequest> request  = new DescribeEnvironmentsRequestMarshaller().Marshall(describeEnvironmentsRequest);
            DescribeEnvironmentsResponse           response = Invoke <DescribeEnvironmentsRequest, DescribeEnvironmentsResponse> (request, this.signer, DescribeEnvironmentsResponseUnmarshaller.GetInstance());

            return(response);
        }
        public async Task <List <EnvironmentDescription> > ListOfElasticBeanstalkEnvironments(string?applicationName)
        {
            var beanstalkClient = _awsClientFactory.GetAWSClient <IAmazonElasticBeanstalk>();
            var environments    = new List <EnvironmentDescription>();

            if (string.IsNullOrEmpty(applicationName))
            {
                return(environments);
            }

            var request = new DescribeEnvironmentsRequest
            {
                ApplicationName = applicationName
            };

            do
            {
                var response = await beanstalkClient.DescribeEnvironmentsAsync(request);

                request.NextToken = response.NextToken;

                environments.AddRange(response.Environments);
            } while (!string.IsNullOrEmpty(request.NextToken));

            return(environments);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets information about AWS Cloud9 development environments.
        /// </summary>
        /// <param name="request">Container for the necessary parameters to execute the DescribeEnvironments service method.</param>
        ///
        /// <returns>The response from the DescribeEnvironments service method, as returned by Cloud9.</returns>
        /// <exception cref="Amazon.Cloud9.Model.BadRequestException">
        /// The target request is invalid.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.ConflictException">
        /// A conflict occurred.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.ForbiddenException">
        /// An access permissions issue occurred.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.InternalServerErrorException">
        /// An internal server error occurred.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.LimitExceededException">
        /// A service limit was exceeded.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.NotFoundException">
        /// The target resource cannot be found.
        /// </exception>
        /// <exception cref="Amazon.Cloud9.Model.TooManyRequestsException">
        /// Too many service requests were made over the given time period.
        /// </exception>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironments">REST API Reference for DescribeEnvironments Operation</seealso>
        public virtual DescribeEnvironmentsResponse DescribeEnvironments(DescribeEnvironmentsRequest request)
        {
            var marshaller   = DescribeEnvironmentsRequestMarshaller.Instance;
            var unmarshaller = DescribeEnvironmentsResponseUnmarshaller.Instance;

            return(Invoke <DescribeEnvironmentsRequest, DescribeEnvironmentsResponse>(request, marshaller, unmarshaller));
        }
Esempio n. 4
0
        /// <summary>
        /// Initiates the asynchronous execution of the DescribeEnvironments operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the DescribeEnvironments operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/cloud9-2017-09-23/DescribeEnvironments">REST API Reference for DescribeEnvironments Operation</seealso>
        public virtual Task <DescribeEnvironmentsResponse> DescribeEnvironmentsAsync(DescribeEnvironmentsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = DescribeEnvironmentsRequestMarshaller.Instance;
            var unmarshaller = DescribeEnvironmentsResponseUnmarshaller.Instance;

            return(InvokeAsync <DescribeEnvironmentsRequest, DescribeEnvironmentsResponse>(request, marshaller,
                                                                                           unmarshaller, cancellationToken));
        }
        internal virtual DescribeEnvironmentsResponse DescribeEnvironments(DescribeEnvironmentsRequest request)
        {
            var options = new InvokeOptions();

            options.RequestMarshaller    = DescribeEnvironmentsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeEnvironmentsResponseUnmarshaller.Instance;

            return(Invoke <DescribeEnvironmentsResponse>(request, options));
        }
Esempio n. 6
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));
        }
Esempio n. 7
0
        /// <summary>
        /// 获取租户下环境列表
        /// </summary>
        /// <param name="req"><see cref="DescribeEnvironmentsRequest"/></param>
        /// <returns><see cref="DescribeEnvironmentsResponse"/></returns>
        public DescribeEnvironmentsResponse DescribeEnvironmentsSync(DescribeEnvironmentsRequest req)
        {
            JsonResponseModel <DescribeEnvironmentsResponse> rsp = null;

            try
            {
                var strResp = this.InternalRequestSync(req, "DescribeEnvironments");
                rsp = JsonConvert.DeserializeObject <JsonResponseModel <DescribeEnvironmentsResponse> >(strResp);
            }
            catch (JsonSerializationException e)
            {
                throw new TencentCloudSDKException(e.Message);
            }
            return(rsp.Response);
        }
        public async Task<List<EnvironmentDescription>> ListOfElasticBeanstalkEnvironments(OrchestratorSession session, string applicationName)
        {
            var beanstalkClient = _awsClientFactory.GetAWSClient<IAmazonElasticBeanstalk>(session.AWSCredentials, session.AWSRegion);
            var environments = new List<EnvironmentDescription>();
            var request = new DescribeEnvironmentsRequest
            {
                ApplicationName = applicationName
            };

            do
            {
                var response = await beanstalkClient.DescribeEnvironmentsAsync(request);
                request.NextToken = response.NextToken;

                environments.AddRange(response.Environments);

            } while (!string.IsNullOrEmpty(request.NextToken));

            return environments;
        }
Esempio n. 9
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonElasticBeanstalkConfig config = new AmazonElasticBeanstalkConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonElasticBeanstalkClient client = new AmazonElasticBeanstalkClient(creds, config);

            DescribeEnvironmentsResponse resp = new DescribeEnvironmentsResponse();
            DescribeEnvironmentsRequest  req  = new DescribeEnvironmentsRequest
            {
            };

            resp = client.DescribeEnvironments(req);
            CheckError(resp.HttpStatusCode, "200");

            foreach (var obj in resp.Environments)
            {
                AddObject(obj);
            }
        }
Esempio n. 10
0
        private async Task <bool> DoesEnvironmentExist(string applicationName, string environmentName)
        {
            var request = new DescribeEnvironmentsRequest {
                ApplicationName = applicationName
            };

            request.EnvironmentNames.Add(environmentName);
            var response = await this.EBClient.DescribeEnvironmentsAsync(request);

            if (response.Environments.Where(x => x.Status != EnvironmentStatus.Terminated && x.Status != EnvironmentStatus.Terminating).Count() != 1)
            {
                return(false);
            }

            var environment = response.Environments[0];

            if (environment.Status == EnvironmentStatus.Terminated || environment.Status == EnvironmentStatus.Terminating)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 11
0
        private async Task <bool> WaitForDeploymentCompletionAsync(string applicationName, string environmentName, DateTime startingEventDate)
        {
            var requestEnvironment = new DescribeEnvironmentsRequest
            {
                ApplicationName  = applicationName,
                EnvironmentNames = new List <string> {
                    environmentName
                }
            };

            var requestEvents = new DescribeEventsRequest
            {
                ApplicationName = applicationName,
                EnvironmentName = environmentName,
                StartTime       = startingEventDate
            };

            var success = true;
            var lastPrintedEventDate           = startingEventDate;
            EnvironmentDescription environment = new EnvironmentDescription();

            do
            {
                Thread.Sleep(5000);

                var responseEnvironments = await this.EBClient.DescribeEnvironmentsAsync(requestEnvironment);

                if (responseEnvironments.Environments.Count == 0)
                {
                    throw new ElasticBeanstalkExceptions("Failed to find environment when waiting for deployment completion", ElasticBeanstalkExceptions.EBCode.FailedToFindEnvironment);
                }

                environment = responseEnvironments.Environments[0];

                requestEvents.StartTime = lastPrintedEventDate;
                var responseEvents = await this.EBClient.DescribeEventsAsync(requestEvents);

                if (responseEvents.Events.Count > 0)
                {
                    for (int i = responseEvents.Events.Count - 1; i >= 0; i--)
                    {
                        var evnt = responseEvents.Events[i];
                        if (evnt.EventDate <= lastPrintedEventDate)
                        {
                            continue;
                        }

                        this.Logger?.WriteLine(evnt.EventDate.ToLocalTime() + "    " + evnt.Severity + "    " + evnt.Message);
                        if (evnt.Message.StartsWith("Failed to deploy application", StringComparison.OrdinalIgnoreCase) ||
                            evnt.Message.StartsWith("Failed to launch environment", StringComparison.OrdinalIgnoreCase) ||
                            evnt.Message.StartsWith("Error occurred during build: Command hooks failed", StringComparison.OrdinalIgnoreCase))
                        {
                            success = false;
                        }
                    }

                    lastPrintedEventDate = responseEvents.Events[0].EventDate;
                }
            } while (environment.Status == EnvironmentStatus.Launching || environment.Status == EnvironmentStatus.Updating);

            if (success)
            {
                this.Logger?.WriteLine("Environment update complete: http://{0}/", environment.EndpointURL);
            }

            return(success);
        }