diff env/lib/python3.9/site-packages/boto/beanstalk/layer1.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/boto/beanstalk/layer1.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,1202 @@
+# Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
+# Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
+# All Rights Reserved
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish, dis-
+# tribute, sublicense, and/or sell copies of the Software, and to permit
+# persons to whom the Software is furnished to do so, subject to the fol-
+# lowing conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+
+import boto
+import boto.jsonresponse
+from boto.compat import json
+from boto.regioninfo import RegionInfo
+from boto.connection import AWSQueryConnection
+
+
+class Layer1(AWSQueryConnection):
+
+    APIVersion = '2010-12-01'
+    DefaultRegionName = 'us-east-1'
+    DefaultRegionEndpoint = 'elasticbeanstalk.us-east-1.amazonaws.com'
+
+    def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
+                 is_secure=True, port=None,
+                 proxy=None, proxy_port=None,
+                 proxy_user=None, proxy_pass=None, debug=0,
+                 https_connection_factory=None, region=None, path='/',
+                 api_version=None, security_token=None, profile_name=None):
+        if not region:
+            region = RegionInfo(self, self.DefaultRegionName,
+                                self.DefaultRegionEndpoint)
+        self.region = region
+        super(Layer1, self).__init__(aws_access_key_id,
+                                    aws_secret_access_key,
+                                    is_secure, port, proxy, proxy_port,
+                                    proxy_user, proxy_pass,
+                                    self.region.endpoint, debug,
+                                    https_connection_factory, path,
+                                    security_token, profile_name=profile_name)
+
+    def _required_auth_capability(self):
+        return ['hmac-v4']
+
+    def _encode_bool(self, v):
+        v = bool(v)
+        return {True: "true", False: "false"}[v]
+
+    def _get_response(self, action, params, path='/', verb='GET'):
+        params['ContentType'] = 'JSON'
+        response = self.make_request(action, params, path, verb)
+        body = response.read().decode('utf-8')
+        boto.log.debug(body)
+        if response.status == 200:
+            return json.loads(body)
+        else:
+            raise self.ResponseError(response.status, response.reason, body)
+
+    def check_dns_availability(self, cname_prefix):
+        """Checks if the specified CNAME is available.
+
+        :type cname_prefix: string
+        :param cname_prefix: The prefix used when this CNAME is
+            reserved.
+        """
+        params = {'CNAMEPrefix': cname_prefix}
+        return self._get_response('CheckDNSAvailability', params)
+
+    def create_application(self, application_name, description=None):
+        """
+        Creates an application that has one configuration template
+        named default and no application versions.
+
+        :type application_name: string
+        :param application_name: The name of the application.
+            Constraint: This name must be unique within your account. If the
+            specified name already exists, the action returns an
+            InvalidParameterValue error.
+
+        :type description: string
+        :param description: Describes the application.
+
+        :raises: TooManyApplicationsException
+        """
+        params = {'ApplicationName': application_name}
+        if description:
+            params['Description'] = description
+        return self._get_response('CreateApplication', params)
+
+    def create_application_version(self, application_name, version_label,
+                                   description=None, s3_bucket=None,
+                                   s3_key=None, auto_create_application=None):
+        """Creates an application version for the specified application.
+
+        :type application_name: string
+        :param application_name: The name of the application. If no
+            application is found with this name, and AutoCreateApplication is
+            false, returns an InvalidParameterValue error.
+
+        :type version_label: string
+        :param version_label: A label identifying this version. Constraint:
+            Must be unique per application. If an application version already
+            exists with this label for the specified application, AWS Elastic
+            Beanstalk returns an InvalidParameterValue error.
+
+        :type description: string
+        :param description: Describes this version.
+
+        :type s3_bucket: string
+        :param s3_bucket: The Amazon S3 bucket where the data is located.
+
+        :type s3_key: string
+        :param s3_key: The Amazon S3 key where the data is located.  Both
+            s3_bucket and s3_key must be specified in order to use a specific
+            source bundle.  If both of these values are not specified the
+            sample application will be used.
+
+        :type auto_create_application: boolean
+        :param auto_create_application: Determines how the system behaves if
+            the specified application for this version does not already exist:
+            true: Automatically creates the specified application for this
+            version if it does not already exist.  false: Returns an
+            InvalidParameterValue if the specified application for this version
+            does not already exist.  Default: false  Valid Values: true | false
+
+        :raises: TooManyApplicationsException,
+                 TooManyApplicationVersionsException,
+                 InsufficientPrivilegesException,
+                 S3LocationNotInServiceRegionException
+
+        """
+        params = {'ApplicationName': application_name,
+                  'VersionLabel': version_label}
+        if description:
+            params['Description'] = description
+        if s3_bucket and s3_key:
+            params['SourceBundle.S3Bucket'] = s3_bucket
+            params['SourceBundle.S3Key'] = s3_key
+        if auto_create_application:
+            params['AutoCreateApplication'] = self._encode_bool(
+                auto_create_application)
+        return self._get_response('CreateApplicationVersion', params)
+
+    def create_configuration_template(self, application_name, template_name,
+                                      solution_stack_name=None,
+                                      source_configuration_application_name=None,
+                                      source_configuration_template_name=None,
+                                      environment_id=None, description=None,
+                                      option_settings=None):
+        """Creates a configuration template.
+
+        Templates are associated with a specific application and are used to
+        deploy different versions of the application with the same
+        configuration settings.
+
+        :type application_name: string
+        :param application_name: The name of the application to associate with
+            this configuration template. If no application is found with this
+            name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template.
+            Constraint: This name must be unique per application.  Default: If
+            a configuration template already exists with this name, AWS Elastic
+            Beanstalk returns an InvalidParameterValue error.
+
+        :type solution_stack_name: string
+        :param solution_stack_name: The name of the solution stack used by this
+            configuration. The solution stack specifies the operating system,
+            architecture, and application server for a configuration template.
+            It determines the set of configuration options as well as the
+            possible and default values.  Use ListAvailableSolutionStacks to
+            obtain a list of available solution stacks.  Default: If the
+            SolutionStackName is not specified and the source configuration
+            parameter is blank, AWS Elastic Beanstalk uses the default solution
+            stack. If not specified and the source configuration parameter is
+            specified, AWS Elastic Beanstalk uses the same solution stack as
+            the source configuration template.
+
+        :type source_configuration_application_name: string
+        :param source_configuration_application_name: The name of the
+            application associated with the configuration.
+
+        :type source_configuration_template_name: string
+        :param source_configuration_template_name: The name of the
+            configuration template.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment used with this
+            configuration template.
+
+        :type description: string
+        :param description: Describes this configuration.
+
+        :type option_settings: list
+        :param option_settings: If specified, AWS Elastic Beanstalk sets the
+            specified configuration option to the requested value. The new
+            value overrides the value obtained from the solution stack or the
+            source configuration template.
+
+        :raises: InsufficientPrivilegesException,
+                 TooManyConfigurationTemplatesException
+        """
+        params = {'ApplicationName': application_name,
+                  'TemplateName': template_name}
+        if solution_stack_name:
+            params['SolutionStackName'] = solution_stack_name
+        if source_configuration_application_name:
+            params['SourceConfiguration.ApplicationName'] = source_configuration_application_name
+        if source_configuration_template_name:
+            params['SourceConfiguration.TemplateName'] = source_configuration_template_name
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if description:
+            params['Description'] = description
+        if option_settings:
+            self._build_list_params(params, option_settings,
+                                   'OptionSettings.member',
+                                   ('Namespace', 'OptionName', 'Value'))
+        return self._get_response('CreateConfigurationTemplate', params)
+
+    def create_environment(self, application_name, environment_name,
+                           version_label=None, template_name=None,
+                           solution_stack_name=None, cname_prefix=None,
+                           description=None, option_settings=None,
+                           options_to_remove=None, tier_name=None,
+                           tier_type=None, tier_version='1.0'):
+        """Launches an environment for the application using a configuration.
+
+        :type application_name: string
+        :param application_name: The name of the application that contains the
+            version to be deployed.  If no application is found with this name,
+            CreateEnvironment returns an InvalidParameterValue error.
+
+        :type environment_name: string
+        :param environment_name: A unique name for the deployment environment.
+            Used in the application URL. Constraint: Must be from 4 to 23
+            characters in length. The name can contain only letters, numbers,
+            and hyphens. It cannot start or end with a hyphen. This name must
+            be unique in your account. If the specified name already exists,
+            AWS Elastic Beanstalk returns an InvalidParameterValue error.
+            Default: If the CNAME parameter is not specified, the environment
+            name becomes part of the CNAME, and therefore part of the visible
+            URL for your application.
+
+        :type version_label: string
+        :param version_label: The name of the application version to deploy. If
+            the specified application has no associated application versions,
+            AWS Elastic Beanstalk UpdateEnvironment returns an
+            InvalidParameterValue error.  Default: If not specified, AWS
+            Elastic Beanstalk attempts to launch the most recently created
+            application version.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template to
+            use in deployment. If no configuration template is found with this
+            name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
+            Condition: You must specify either this parameter or a
+            SolutionStackName, but not both. If you specify both, AWS Elastic
+            Beanstalk returns an InvalidParameterCombination error. If you do
+            not specify either, AWS Elastic Beanstalk returns a
+            MissingRequiredParameter error.
+
+        :type solution_stack_name: string
+        :param solution_stack_name: This is an alternative to specifying a
+            configuration name. If specified, AWS Elastic Beanstalk sets the
+            configuration values to the default values associated with the
+            specified solution stack.  Condition: You must specify either this
+            or a TemplateName, but not both. If you specify both, AWS Elastic
+            Beanstalk returns an InvalidParameterCombination error. If you do
+            not specify either, AWS Elastic Beanstalk returns a
+            MissingRequiredParameter error.
+
+        :type cname_prefix: string
+        :param cname_prefix: If specified, the environment attempts to use this
+            value as the prefix for the CNAME. If not specified, the
+            environment uses the environment name.
+
+        :type description: string
+        :param description: Describes this environment.
+
+        :type option_settings: list
+        :param option_settings: If specified, AWS Elastic Beanstalk sets the
+            specified configuration options to the requested value in the
+            configuration set for the new environment. These override the
+            values obtained from the solution stack or the configuration
+            template.  Each element in the list is a tuple of (Namespace,
+            OptionName, Value), for example::
+
+                [('aws:autoscaling:launchconfiguration',
+                    'Ec2KeyName', 'mykeypair')]
+
+        :type options_to_remove: list
+        :param options_to_remove: A list of custom user-defined configuration
+            options to remove from the configuration set for this new
+            environment.
+
+        :type tier_name: string
+        :param tier_name: The name of the tier.  Valid values are
+            "WebServer" and "Worker". Defaults to "WebServer".
+            The ``tier_name`` and a ``tier_type`` parameters are
+            related and the values provided must be valid.
+            The possible combinations are:
+
+              * "WebServer" and "Standard" (the default)
+              * "Worker" and "SQS/HTTP"
+
+        :type tier_type: string
+        :param tier_type: The type of the tier.  Valid values are
+            "Standard" if ``tier_name`` is "WebServer" and "SQS/HTTP"
+            if ``tier_name`` is "Worker". Defaults to "Standard".
+
+        :type tier_version: string
+        :type tier_version: The version of the tier.  Valid values
+            currently are "1.0". Defaults to "1.0".
+
+        :raises: TooManyEnvironmentsException, InsufficientPrivilegesException
+
+        """
+        params = {'ApplicationName': application_name,
+                  'EnvironmentName': environment_name}
+        if version_label:
+            params['VersionLabel'] = version_label
+        if template_name:
+            params['TemplateName'] = template_name
+        if solution_stack_name:
+            params['SolutionStackName'] = solution_stack_name
+        if cname_prefix:
+            params['CNAMEPrefix'] = cname_prefix
+        if description:
+            params['Description'] = description
+        if option_settings:
+            self._build_list_params(params, option_settings,
+                                   'OptionSettings.member',
+                                   ('Namespace', 'OptionName', 'Value'))
+        if options_to_remove:
+            self.build_list_params(params, options_to_remove,
+                                   'OptionsToRemove.member')
+        if tier_name and tier_type and tier_version:
+            params['Tier.Name'] = tier_name
+            params['Tier.Type'] = tier_type
+            params['Tier.Version'] = tier_version
+        return self._get_response('CreateEnvironment', params)
+
+    def create_storage_location(self):
+        """
+        Creates the Amazon S3 storage location for the account.  This
+        location is used to store user log files.
+
+        :raises: TooManyBucketsException,
+                 S3SubscriptionRequiredException,
+                 InsufficientPrivilegesException
+
+        """
+        return self._get_response('CreateStorageLocation', params={})
+
+    def delete_application(self, application_name,
+                           terminate_env_by_force=None):
+        """
+        Deletes the specified application along with all associated
+        versions and configurations. The application versions will not
+        be deleted from your Amazon S3 bucket.
+
+        :type application_name: string
+        :param application_name: The name of the application to delete.
+
+        :type terminate_env_by_force: boolean
+        :param terminate_env_by_force: When set to true, running
+            environments will be terminated before deleting the application.
+
+        :raises: OperationInProgressException
+
+        """
+        params = {'ApplicationName': application_name}
+        if terminate_env_by_force:
+            params['TerminateEnvByForce'] = self._encode_bool(
+                terminate_env_by_force)
+        return self._get_response('DeleteApplication', params)
+
+    def delete_application_version(self, application_name, version_label,
+                                   delete_source_bundle=None):
+        """Deletes the specified version from the specified application.
+
+        :type application_name: string
+        :param application_name: The name of the application to delete
+            releases from.
+
+        :type version_label: string
+        :param version_label: The label of the version to delete.
+
+        :type delete_source_bundle: boolean
+        :param delete_source_bundle: Indicates whether to delete the
+            associated source bundle from Amazon S3.  Valid Values: true |
+            false
+
+        :raises: SourceBundleDeletionException,
+                 InsufficientPrivilegesException,
+                 OperationInProgressException,
+                 S3LocationNotInServiceRegionException
+        """
+        params = {'ApplicationName': application_name,
+                  'VersionLabel': version_label}
+        if delete_source_bundle:
+            params['DeleteSourceBundle'] = self._encode_bool(
+                delete_source_bundle)
+        return self._get_response('DeleteApplicationVersion', params)
+
+    def delete_configuration_template(self, application_name, template_name):
+        """Deletes the specified configuration template.
+
+        :type application_name: string
+        :param application_name: The name of the application to delete
+            the configuration template from.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template to
+            delete.
+
+        :raises: OperationInProgressException
+
+        """
+        params = {'ApplicationName': application_name,
+                  'TemplateName': template_name}
+        return self._get_response('DeleteConfigurationTemplate', params)
+
+    def delete_environment_configuration(self, application_name,
+                                         environment_name):
+        """
+        Deletes the draft configuration associated with the running
+        environment.  Updating a running environment with any
+        configuration changes creates a draft configuration set. You can
+        get the draft configuration using DescribeConfigurationSettings
+        while the update is in progress or if the update fails. The
+        DeploymentStatus for the draft configuration indicates whether
+        the deployment is in process or has failed. The draft
+        configuration remains in existence until it is deleted with this
+        action.
+
+        :type application_name: string
+        :param application_name: The name of the application the
+            environment is associated with.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to delete
+            the draft configuration from.
+
+        """
+        params = {'ApplicationName': application_name,
+                  'EnvironmentName': environment_name}
+        return self._get_response('DeleteEnvironmentConfiguration', params)
+
+    def describe_application_versions(self, application_name=None,
+                                      version_labels=None):
+        """Returns descriptions for existing application versions.
+
+        :type application_name: string
+        :param application_name: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to only include ones that are associated
+            with the specified application.
+
+        :type version_labels: list
+        :param version_labels: If specified, restricts the returned
+            descriptions to only include ones that have the specified version
+            labels.
+
+        """
+        params = {}
+        if application_name:
+            params['ApplicationName'] = application_name
+        if version_labels:
+            self.build_list_params(params, version_labels,
+                                   'VersionLabels.member')
+        return self._get_response('DescribeApplicationVersions', params)
+
+    def describe_applications(self, application_names=None):
+        """Returns the descriptions of existing applications.
+
+        :type application_names: list
+        :param application_names: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to only include those with the specified
+            names.
+
+        """
+        params = {}
+        if application_names:
+            self.build_list_params(params, application_names,
+                                   'ApplicationNames.member')
+        return self._get_response('DescribeApplications', params)
+
+    def describe_configuration_options(self, application_name=None,
+                                       template_name=None,
+                                       environment_name=None,
+                                       solution_stack_name=None, options=None):
+        """Describes configuration options used in a template or environment.
+
+        Describes the configuration options that are used in a
+        particular configuration template or environment, or that a
+        specified solution stack defines. The description includes the
+        values the options, their default values, and an indication of
+        the required action on a running environment if an option value
+        is changed.
+
+        :type application_name: string
+        :param application_name: The name of the application associated with
+            the configuration template or environment. Only needed if you want
+            to describe the configuration options associated with either the
+            configuration template or environment.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template whose
+            configuration options you want to describe.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment whose
+            configuration options you want to describe.
+
+        :type solution_stack_name: string
+        :param solution_stack_name: The name of the solution stack whose
+            configuration options you want to describe.
+
+        :type options: list
+        :param options: If specified, restricts the descriptions to only
+            the specified options.
+        """
+        params = {}
+        if application_name:
+            params['ApplicationName'] = application_name
+        if template_name:
+            params['TemplateName'] = template_name
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        if solution_stack_name:
+            params['SolutionStackName'] = solution_stack_name
+        if options:
+            self.build_list_params(params, options, 'Options.member')
+        return self._get_response('DescribeConfigurationOptions', params)
+
+    def describe_configuration_settings(self, application_name,
+                                        template_name=None,
+                                        environment_name=None):
+        """
+        Returns a description of the settings for the specified
+        configuration set, that is, either a configuration template or
+        the configuration set associated with a running environment.
+        When describing the settings for the configuration set
+        associated with a running environment, it is possible to receive
+        two sets of setting descriptions. One is the deployed
+        configuration set, and the other is a draft configuration of an
+        environment that is either in the process of deployment or that
+        failed to deploy.
+
+        :type application_name: string
+        :param application_name: The application for the environment or
+            configuration template.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template to
+            describe.  Conditional: You must specify either this parameter or
+            an EnvironmentName, but not both. If you specify both, AWS Elastic
+            Beanstalk returns an InvalidParameterCombination error.  If you do
+            not specify either, AWS Elastic Beanstalk returns a
+            MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to describe.
+            Condition: You must specify either this or a TemplateName, but not
+            both. If you specify both, AWS Elastic Beanstalk returns an
+            InvalidParameterCombination error. If you do not specify either,
+            AWS Elastic Beanstalk returns MissingRequiredParameter error.
+        """
+        params = {'ApplicationName': application_name}
+        if template_name:
+            params['TemplateName'] = template_name
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('DescribeConfigurationSettings', params)
+
+    def describe_environment_resources(self, environment_id=None,
+                                       environment_name=None):
+        """Returns AWS resources for this environment.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment to retrieve AWS
+            resource usage data.  Condition: You must specify either this or an
+            EnvironmentName, or both. If you do not specify either, AWS Elastic
+            Beanstalk returns MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to retrieve
+            AWS resource usage data.  Condition: You must specify either this
+            or an EnvironmentId, or both. If you do not specify either, AWS
+            Elastic Beanstalk returns MissingRequiredParameter error.
+
+        :raises: InsufficientPrivilegesException
+        """
+        params = {}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('DescribeEnvironmentResources', params)
+
+    def describe_environments(self, application_name=None, version_label=None,
+                              environment_ids=None, environment_names=None,
+                              include_deleted=None,
+                              included_deleted_back_to=None):
+        """Returns descriptions for existing environments.
+
+        :type application_name: string
+        :param application_name: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to include only those that are associated
+            with this application.
+
+        :type version_label: string
+        :param version_label: If specified, AWS Elastic Beanstalk restricts the
+            returned descriptions to include only those that are associated
+            with this application version.
+
+        :type environment_ids: list
+        :param environment_ids: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to include only those that have the
+            specified IDs.
+
+        :type environment_names: list
+        :param environment_names: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to include only those that have the
+            specified names.
+
+        :type include_deleted: boolean
+        :param include_deleted: Indicates whether to include deleted
+            environments:  true: Environments that have been deleted after
+            IncludedDeletedBackTo are displayed.  false: Do not include deleted
+            environments.
+
+        :type included_deleted_back_to: timestamp
+        :param included_deleted_back_to: If specified when IncludeDeleted is
+            set to true, then environments deleted after this date are
+            displayed.
+        """
+        params = {}
+        if application_name:
+            params['ApplicationName'] = application_name
+        if version_label:
+            params['VersionLabel'] = version_label
+        if environment_ids:
+            self.build_list_params(params, environment_ids,
+                                   'EnvironmentIds.member')
+        if environment_names:
+            self.build_list_params(params, environment_names,
+                                   'EnvironmentNames.member')
+        if include_deleted:
+            params['IncludeDeleted'] = self._encode_bool(include_deleted)
+        if included_deleted_back_to:
+            params['IncludedDeletedBackTo'] = included_deleted_back_to
+        return self._get_response('DescribeEnvironments', params)
+
+    def describe_events(self, application_name=None, version_label=None,
+                        template_name=None, environment_id=None,
+                        environment_name=None, request_id=None, severity=None,
+                        start_time=None, end_time=None, max_records=None,
+                        next_token=None):
+        """Returns event descriptions matching criteria up to the last 6 weeks.
+
+        :type application_name: string
+        :param application_name: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to include only those associated with
+            this application.
+
+        :type version_label: string
+        :param version_label: If specified, AWS Elastic Beanstalk restricts the
+            returned descriptions to those associated with this application
+            version.
+
+        :type template_name: string
+        :param template_name: If specified, AWS Elastic Beanstalk restricts the
+            returned descriptions to those that are associated with this
+            environment configuration.
+
+        :type environment_id: string
+        :param environment_id: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to those associated with this
+            environment.
+
+        :type environment_name: string
+        :param environment_name: If specified, AWS Elastic Beanstalk restricts
+            the returned descriptions to those associated with this
+            environment.
+
+        :type request_id: string
+        :param request_id: If specified, AWS Elastic Beanstalk restricts the
+            described events to include only those associated with this request
+            ID.
+
+        :type severity: string
+        :param severity: If specified, limits the events returned from this
+            call to include only those with the specified severity or higher.
+
+        :type start_time: timestamp
+        :param start_time: If specified, AWS Elastic Beanstalk restricts the
+            returned descriptions to those that occur on or after this time.
+
+        :type end_time: timestamp
+        :param end_time: If specified, AWS Elastic Beanstalk restricts the
+            returned descriptions to those that occur up to, but not including,
+            the EndTime.
+
+        :type max_records: integer
+        :param max_records: Specifies the maximum number of events that can be
+            returned, beginning with the most recent event.
+
+        :type next_token: string
+        :param next_token: Pagination token. If specified, the events return
+            the next batch of results.
+        """
+        params = {}
+        if application_name:
+            params['ApplicationName'] = application_name
+        if version_label:
+            params['VersionLabel'] = version_label
+        if template_name:
+            params['TemplateName'] = template_name
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        if request_id:
+            params['RequestId'] = request_id
+        if severity:
+            params['Severity'] = severity
+        if start_time:
+            params['StartTime'] = start_time
+        if end_time:
+            params['EndTime'] = end_time
+        if max_records:
+            params['MaxRecords'] = max_records
+        if next_token:
+            params['NextToken'] = next_token
+        return self._get_response('DescribeEvents', params)
+
+    def list_available_solution_stacks(self):
+        """Returns a list of the available solution stack names."""
+        return self._get_response('ListAvailableSolutionStacks', params={})
+
+    def rebuild_environment(self, environment_id=None, environment_name=None):
+        """
+        Deletes and recreates all of the AWS resources (for example:
+        the Auto Scaling group, load balancer, etc.) for a specified
+        environment and forces a restart.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment to rebuild.
+            Condition: You must specify either this or an EnvironmentName, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to rebuild.
+            Condition: You must specify either this or an EnvironmentId, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :raises InvalidParameterValue: If environment_name doesn't refer to a currently active environment
+        :raises: InsufficientPrivilegesException
+        """
+        params = {}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('RebuildEnvironment', params)
+
+    def request_environment_info(self, info_type='tail', environment_id=None,
+                                 environment_name=None):
+        """
+        Initiates a request to compile the specified type of
+        information of the deployed environment.  Setting the InfoType
+        to tail compiles the last lines from the application server log
+        files of every Amazon EC2 instance in your environment. Use
+        RetrieveEnvironmentInfo to access the compiled information.
+
+        :type info_type: string
+        :param info_type: The type of information to request.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment of the
+            requested data. If no such environment is found,
+            RequestEnvironmentInfo returns an InvalidParameterValue error.
+            Condition: You must specify either this or an EnvironmentName, or
+            both. If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment of the
+            requested data. If no such environment is found,
+            RequestEnvironmentInfo returns an InvalidParameterValue error.
+            Condition: You must specify either this or an EnvironmentId, or
+            both. If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+        """
+        params = {'InfoType': info_type}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('RequestEnvironmentInfo', params)
+
+    def restart_app_server(self, environment_id=None, environment_name=None):
+        """
+        Causes the environment to restart the application container
+        server running on each Amazon EC2 instance.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment to restart the server
+            for.  Condition: You must specify either this or an
+            EnvironmentName, or both. If you do not specify either, AWS Elastic
+            Beanstalk returns MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to restart the
+            server for.  Condition: You must specify either this or an
+            EnvironmentId, or both. If you do not specify either, AWS Elastic
+            Beanstalk returns MissingRequiredParameter error.
+        """
+        params = {}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('RestartAppServer', params)
+
+    def retrieve_environment_info(self, info_type='tail', environment_id=None,
+                                  environment_name=None):
+        """
+        Retrieves the compiled information from a RequestEnvironmentInfo
+        request.
+
+        :type info_type: string
+        :param info_type: The type of information to retrieve.
+
+        :type environment_id: string
+        :param environment_id: The ID of the data's environment. If no such
+            environment is found, returns an InvalidParameterValue error.
+            Condition: You must specify either this or an EnvironmentName, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the data's environment. If no such
+            environment is found, returns an InvalidParameterValue error.
+            Condition: You must specify either this or an EnvironmentId, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+        """
+        params = {'InfoType': info_type}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('RetrieveEnvironmentInfo', params)
+
+    def swap_environment_cnames(self, source_environment_id=None,
+                                source_environment_name=None,
+                                destination_environment_id=None,
+                                destination_environment_name=None):
+        """Swaps the CNAMEs of two environments.
+
+        :type source_environment_id: string
+        :param source_environment_id: The ID of the source environment.
+            Condition: You must specify at least the SourceEnvironmentID or the
+            SourceEnvironmentName. You may also specify both. If you specify
+            the SourceEnvironmentId, you must specify the
+            DestinationEnvironmentId.
+
+        :type source_environment_name: string
+        :param source_environment_name: The name of the source environment.
+            Condition: You must specify at least the SourceEnvironmentID or the
+            SourceEnvironmentName. You may also specify both. If you specify
+            the SourceEnvironmentName, you must specify the
+            DestinationEnvironmentName.
+
+        :type destination_environment_id: string
+        :param destination_environment_id: The ID of the destination
+            environment.  Condition: You must specify at least the
+            DestinationEnvironmentID or the DestinationEnvironmentName. You may
+            also specify both. You must specify the SourceEnvironmentId with
+            the DestinationEnvironmentId.
+
+        :type destination_environment_name: string
+        :param destination_environment_name: The name of the destination
+            environment.  Condition: You must specify at least the
+            DestinationEnvironmentID or the DestinationEnvironmentName. You may
+            also specify both. You must specify the SourceEnvironmentName with
+            the DestinationEnvironmentName.
+        """
+        params = {}
+        if source_environment_id:
+            params['SourceEnvironmentId'] = source_environment_id
+        if source_environment_name:
+            params['SourceEnvironmentName'] = source_environment_name
+        if destination_environment_id:
+            params['DestinationEnvironmentId'] = destination_environment_id
+        if destination_environment_name:
+            params['DestinationEnvironmentName'] = destination_environment_name
+        return self._get_response('SwapEnvironmentCNAMEs', params)
+
+    def terminate_environment(self, environment_id=None, environment_name=None,
+                              terminate_resources=None):
+        """Terminates the specified environment.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment to terminate.
+            Condition: You must specify either this or an EnvironmentName, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to terminate.
+            Condition: You must specify either this or an EnvironmentId, or
+            both.  If you do not specify either, AWS Elastic Beanstalk returns
+            MissingRequiredParameter error.
+
+        :type terminate_resources: boolean
+        :param terminate_resources: Indicates whether the associated AWS
+            resources should shut down when the environment is terminated:
+            true: (default) The user AWS resources (for example, the Auto
+            Scaling group, LoadBalancer, etc.) are terminated along with the
+            environment.  false: The environment is removed from the AWS
+            Elastic Beanstalk but the AWS resources continue to operate.  For
+            more information, see the  AWS Elastic Beanstalk User Guide.
+            Default: true  Valid Values: true | false
+
+        :raises: InsufficientPrivilegesException
+        """
+        params = {}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        if terminate_resources:
+            params['TerminateResources'] = self._encode_bool(
+                terminate_resources)
+        return self._get_response('TerminateEnvironment', params)
+
+    def update_application(self, application_name, description=None):
+        """
+        Updates the specified application to have the specified
+        properties.
+
+        :type application_name: string
+        :param application_name: The name of the application to update.
+            If no such application is found, UpdateApplication returns an
+            InvalidParameterValue error.
+
+        :type description: string
+        :param description: A new description for the application.  Default: If
+            not specified, AWS Elastic Beanstalk does not update the
+            description.
+        """
+        params = {'ApplicationName': application_name}
+        if description:
+            params['Description'] = description
+        return self._get_response('UpdateApplication', params)
+
+    def update_application_version(self, application_name, version_label,
+                                   description=None):
+        """Updates the application version to have the properties.
+
+        :type application_name: string
+        :param application_name: The name of the application associated with
+            this version.  If no application is found with this name,
+            UpdateApplication returns an InvalidParameterValue error.
+
+        :type version_label: string
+        :param version_label: The name of the version to update. If no
+            application version is found with this label, UpdateApplication
+            returns an InvalidParameterValue error.
+
+        :type description: string
+        :param description: A new description for this release.
+        """
+        params = {'ApplicationName': application_name,
+                  'VersionLabel': version_label}
+        if description:
+            params['Description'] = description
+        return self._get_response('UpdateApplicationVersion', params)
+
+    def update_configuration_template(self, application_name, template_name,
+                                      description=None, option_settings=None,
+                                      options_to_remove=None):
+        """
+        Updates the specified configuration template to have the
+        specified properties or configuration option values.
+
+        :type application_name: string
+        :param application_name: The name of the application associated with
+            the configuration template to update. If no application is found
+            with this name, UpdateConfigurationTemplate returns an
+            InvalidParameterValue error.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template to update.
+            If no configuration template is found with this name,
+            UpdateConfigurationTemplate returns an InvalidParameterValue error.
+
+        :type description: string
+        :param description: A new description for the configuration.
+
+        :type option_settings: list
+        :param option_settings: A list of configuration option settings to
+            update with the new specified option value.
+
+        :type options_to_remove: list
+        :param options_to_remove: A list of configuration options to remove
+            from the configuration set.  Constraint: You can remove only
+            UserDefined configuration options.
+
+        :raises: InsufficientPrivilegesException
+        """
+        params = {'ApplicationName': application_name,
+                  'TemplateName': template_name}
+        if description:
+            params['Description'] = description
+        if option_settings:
+            self._build_list_params(params, option_settings,
+                                   'OptionSettings.member',
+                                   ('Namespace', 'OptionName', 'Value'))
+        if options_to_remove:
+            self.build_list_params(params, options_to_remove,
+                                   'OptionsToRemove.member')
+        return self._get_response('UpdateConfigurationTemplate', params)
+
+    def update_environment(self, environment_id=None, environment_name=None,
+                           version_label=None, template_name=None,
+                           description=None, option_settings=None,
+                           options_to_remove=None, tier_name=None,
+                           tier_type=None, tier_version='1.0'):
+        """
+        Updates the environment description, deploys a new application
+        version, updates the configuration settings to an entirely new
+        configuration template, or updates select configuration option
+        values in the running environment.  Attempting to update both
+        the release and configuration is not allowed and AWS Elastic
+        Beanstalk returns an InvalidParameterCombination error.  When
+        updating the configuration settings to a new template or
+        individual settings, a draft configuration is created and
+        DescribeConfigurationSettings for this environment returns two
+        setting descriptions with different DeploymentStatus values.
+
+        :type environment_id: string
+        :param environment_id: The ID of the environment to update. If no
+            environment with this ID exists, AWS Elastic Beanstalk returns an
+            InvalidParameterValue error.  Condition: You must specify either
+            this or an EnvironmentName, or both. If you do not specify either,
+            AWS Elastic Beanstalk returns MissingRequiredParameter error.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to update.  If no
+            environment with this name exists, AWS Elastic Beanstalk returns an
+            InvalidParameterValue error.  Condition: You must specify either
+            this or an EnvironmentId, or both. If you do not specify either,
+            AWS Elastic Beanstalk returns MissingRequiredParameter error.
+
+        :type version_label: string
+        :param version_label: If this parameter is specified, AWS Elastic
+            Beanstalk deploys the named application version to the environment.
+            If no such application version is found, returns an
+            InvalidParameterValue error.
+
+        :type template_name: string
+        :param template_name: If this parameter is specified, AWS Elastic
+            Beanstalk deploys this configuration template to the environment.
+            If no such configuration template is found, AWS Elastic Beanstalk
+            returns an InvalidParameterValue error.
+
+        :type description: string
+        :param description: If this parameter is specified, AWS Elastic
+            Beanstalk updates the description of this environment.
+
+        :type option_settings: list
+        :param option_settings: If specified, AWS Elastic Beanstalk updates the
+            configuration set associated with the running environment and sets
+            the specified configuration options to the requested value.
+
+        :type options_to_remove: list
+        :param options_to_remove: A list of custom user-defined configuration
+            options to remove from the configuration set for this environment.
+
+        :type tier_name: string
+        :param tier_name: The name of the tier.  Valid values are
+            "WebServer" and "Worker". Defaults to "WebServer".
+            The ``tier_name`` and a ``tier_type`` parameters are
+            related and the values provided must be valid.
+            The possible combinations are:
+
+              * "WebServer" and "Standard" (the default)
+              * "Worker" and "SQS/HTTP"
+
+        :type tier_type: string
+        :param tier_type: The type of the tier.  Valid values are
+            "Standard" if ``tier_name`` is "WebServer" and "SQS/HTTP"
+            if ``tier_name`` is "Worker". Defaults to "Standard".
+
+        :type tier_version: string
+        :type tier_version: The version of the tier.  Valid values
+            currently are "1.0". Defaults to "1.0".
+
+        :raises: InsufficientPrivilegesException
+        """
+        params = {}
+        if environment_id:
+            params['EnvironmentId'] = environment_id
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        if version_label:
+            params['VersionLabel'] = version_label
+        if template_name:
+            params['TemplateName'] = template_name
+        if description:
+            params['Description'] = description
+        if option_settings:
+            self._build_list_params(params, option_settings,
+                                   'OptionSettings.member',
+                                   ('Namespace', 'OptionName', 'Value'))
+        if options_to_remove:
+            self.build_list_params(params, options_to_remove,
+                                   'OptionsToRemove.member')
+        if tier_name and tier_type and tier_version:
+            params['Tier.Name'] = tier_name
+            params['Tier.Type'] = tier_type
+            params['Tier.Version'] = tier_version
+        return self._get_response('UpdateEnvironment', params)
+
+    def validate_configuration_settings(self, application_name,
+                                        option_settings, template_name=None,
+                                        environment_name=None):
+        """
+        Takes a set of configuration settings and either a
+        configuration template or environment, and determines whether
+        those values are valid.  This action returns a list of messages
+        indicating any errors or warnings associated with the selection
+        of option values.
+
+        :type application_name: string
+        :param application_name: The name of the application that the
+            configuration template or environment belongs to.
+
+        :type template_name: string
+        :param template_name: The name of the configuration template to
+            validate the settings against.  Condition: You cannot specify both
+            this and an environment name.
+
+        :type environment_name: string
+        :param environment_name: The name of the environment to validate the
+            settings against.  Condition: You cannot specify both this and a
+            configuration template name.
+
+        :type option_settings: list
+        :param option_settings: A list of the options and desired values to
+            evaluate.
+
+        :raises: InsufficientPrivilegesException
+        """
+        params = {'ApplicationName': application_name}
+        self._build_list_params(params, option_settings,
+                               'OptionSettings.member',
+                               ('Namespace', 'OptionName', 'Value'))
+        if template_name:
+            params['TemplateName'] = template_name
+        if environment_name:
+            params['EnvironmentName'] = environment_name
+        return self._get_response('ValidateConfigurationSettings', params)
+
+    def _build_list_params(self, params, user_values, prefix, tuple_names):
+        # For params such as the ConfigurationOptionSettings,
+        # they can specify a list of tuples where each tuple maps to a specific
+        # arg.  For example:
+        # user_values = [('foo', 'bar', 'baz']
+        # prefix=MyOption.member
+        # tuple_names=('One', 'Two', 'Three')
+        # would result in:
+        # MyOption.member.1.One = foo
+        # MyOption.member.1.Two = bar
+        # MyOption.member.1.Three = baz
+        for i, user_value in enumerate(user_values, 1):
+            current_prefix = '%s.%s' % (prefix, i)
+            for key, value in zip(tuple_names, user_value):
+                full_key = '%s.%s' % (current_prefix, key)
+                params[full_key] = value