| # Copyright (c) 2015 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 |
| from boto.compat import json |
| from boto.connection import AWSQueryConnection |
| from boto.regioninfo import RegionInfo |
| from boto.exception import JSONResponseError |
| from boto.codedeploy import exceptions |
| |
| |
| class CodeDeployConnection(AWSQueryConnection): |
| """ |
| AWS CodeDeploy **Overview** |
| This is the AWS CodeDeploy API Reference. This guide provides |
| descriptions of the AWS CodeDeploy APIs. For additional |
| information, see the `AWS CodeDeploy User Guide`_. |
| **Using the APIs** |
| You can use the AWS CodeDeploy APIs to work with the following |
| items: |
| |
| |
| + Applications , which are unique identifiers that AWS CodeDeploy |
| uses to ensure that the correct combinations of revisions, |
| deployment configurations, and deployment groups are being |
| referenced during deployments. You can work with applications by |
| calling CreateApplication, DeleteApplication, GetApplication, |
| ListApplications, BatchGetApplications, and UpdateApplication to |
| create, delete, and get information about applications, and to |
| change information about an application, respectively. |
| + Deployment configurations , which are sets of deployment rules |
| and deployment success and failure conditions that AWS CodeDeploy |
| uses during deployments. You can work with deployment |
| configurations by calling CreateDeploymentConfig, |
| DeleteDeploymentConfig, GetDeploymentConfig, and |
| ListDeploymentConfigs to create, delete, and get information about |
| deployment configurations, respectively. |
| + Deployment groups , which represent groups of Amazon EC2 |
| instances to which application revisions can be deployed. You can |
| work with deployment groups by calling CreateDeploymentGroup, |
| DeleteDeploymentGroup, GetDeploymentGroup, ListDeploymentGroups, |
| and UpdateDeploymentGroup to create, delete, and get information |
| about single and multiple deployment groups, and to change |
| information about a deployment group, respectively. |
| + Deployment instances (also known simply as instances ), which |
| represent Amazon EC2 instances to which application revisions are |
| deployed. Deployment instances are identified by their Amazon EC2 |
| tags or Auto Scaling group names. Deployment instances belong to |
| deployment groups. You can work with deployment instances by |
| calling GetDeploymentInstance and ListDeploymentInstances to get |
| information about single and multiple deployment instances, |
| respectively. |
| + Deployments , which represent the process of deploying revisions |
| to deployment groups. You can work with deployments by calling |
| CreateDeployment, GetDeployment, ListDeployments, |
| BatchGetDeployments, and StopDeployment to create and get |
| information about deployments, and to stop a deployment, |
| respectively. |
| + Application revisions (also known simply as revisions ), which |
| are archive files that are stored in Amazon S3 buckets or GitHub |
| repositories. These revisions contain source content (such as |
| source code, web pages, executable files, any deployment scripts, |
| and similar) along with an Application Specification file (AppSpec |
| file). (The AppSpec file is unique to AWS CodeDeploy; it defines a |
| series of deployment actions that you want AWS CodeDeploy to |
| execute.) An application revision is uniquely identified by its |
| Amazon S3 object key and its ETag, version, or both. Application |
| revisions are deployed to deployment groups. You can work with |
| application revisions by calling GetApplicationRevision, |
| ListApplicationRevisions, and RegisterApplicationRevision to get |
| information about application revisions and to inform AWS |
| CodeDeploy about an application revision, respectively. |
| """ |
| APIVersion = "2014-10-06" |
| DefaultRegionName = "us-east-1" |
| DefaultRegionEndpoint = "codedeploy.us-east-1.amazonaws.com" |
| ServiceName = "codedeploy" |
| TargetPrefix = "CodeDeploy_20141006" |
| ResponseError = JSONResponseError |
| |
| _faults = { |
| "InvalidDeploymentIdException": exceptions.InvalidDeploymentIdException, |
| "InvalidDeploymentGroupNameException": exceptions.InvalidDeploymentGroupNameException, |
| "DeploymentConfigAlreadyExistsException": exceptions.DeploymentConfigAlreadyExistsException, |
| "InvalidRoleException": exceptions.InvalidRoleException, |
| "RoleRequiredException": exceptions.RoleRequiredException, |
| "DeploymentGroupAlreadyExistsException": exceptions.DeploymentGroupAlreadyExistsException, |
| "DeploymentConfigLimitExceededException": exceptions.DeploymentConfigLimitExceededException, |
| "InvalidNextTokenException": exceptions.InvalidNextTokenException, |
| "InvalidDeploymentConfigNameException": exceptions.InvalidDeploymentConfigNameException, |
| "InvalidSortByException": exceptions.InvalidSortByException, |
| "InstanceDoesNotExistException": exceptions.InstanceDoesNotExistException, |
| "InvalidMinimumHealthyHostValueException": exceptions.InvalidMinimumHealthyHostValueException, |
| "ApplicationLimitExceededException": exceptions.ApplicationLimitExceededException, |
| "ApplicationNameRequiredException": exceptions.ApplicationNameRequiredException, |
| "InvalidEC2TagException": exceptions.InvalidEC2TagException, |
| "DeploymentDoesNotExistException": exceptions.DeploymentDoesNotExistException, |
| "DeploymentLimitExceededException": exceptions.DeploymentLimitExceededException, |
| "InvalidInstanceStatusException": exceptions.InvalidInstanceStatusException, |
| "RevisionRequiredException": exceptions.RevisionRequiredException, |
| "InvalidBucketNameFilterException": exceptions.InvalidBucketNameFilterException, |
| "DeploymentGroupLimitExceededException": exceptions.DeploymentGroupLimitExceededException, |
| "DeploymentGroupDoesNotExistException": exceptions.DeploymentGroupDoesNotExistException, |
| "DeploymentConfigNameRequiredException": exceptions.DeploymentConfigNameRequiredException, |
| "DeploymentAlreadyCompletedException": exceptions.DeploymentAlreadyCompletedException, |
| "RevisionDoesNotExistException": exceptions.RevisionDoesNotExistException, |
| "DeploymentGroupNameRequiredException": exceptions.DeploymentGroupNameRequiredException, |
| "DeploymentIdRequiredException": exceptions.DeploymentIdRequiredException, |
| "DeploymentConfigDoesNotExistException": exceptions.DeploymentConfigDoesNotExistException, |
| "BucketNameFilterRequiredException": exceptions.BucketNameFilterRequiredException, |
| "InvalidTimeRangeException": exceptions.InvalidTimeRangeException, |
| "ApplicationDoesNotExistException": exceptions.ApplicationDoesNotExistException, |
| "InvalidRevisionException": exceptions.InvalidRevisionException, |
| "InvalidSortOrderException": exceptions.InvalidSortOrderException, |
| "InvalidOperationException": exceptions.InvalidOperationException, |
| "InvalidAutoScalingGroupException": exceptions.InvalidAutoScalingGroupException, |
| "InvalidApplicationNameException": exceptions.InvalidApplicationNameException, |
| "DescriptionTooLongException": exceptions.DescriptionTooLongException, |
| "ApplicationAlreadyExistsException": exceptions.ApplicationAlreadyExistsException, |
| "InvalidDeployedStateFilterException": exceptions.InvalidDeployedStateFilterException, |
| "DeploymentNotStartedException": exceptions.DeploymentNotStartedException, |
| "DeploymentConfigInUseException": exceptions.DeploymentConfigInUseException, |
| "InstanceIdRequiredException": exceptions.InstanceIdRequiredException, |
| "InvalidKeyPrefixFilterException": exceptions.InvalidKeyPrefixFilterException, |
| "InvalidDeploymentStatusException": exceptions.InvalidDeploymentStatusException, |
| } |
| |
| |
| def __init__(self, **kwargs): |
| region = kwargs.pop('region', None) |
| if not region: |
| region = RegionInfo(self, self.DefaultRegionName, |
| self.DefaultRegionEndpoint) |
| |
| if 'host' not in kwargs or kwargs['host'] is None: |
| kwargs['host'] = region.endpoint |
| |
| super(CodeDeployConnection, self).__init__(**kwargs) |
| self.region = region |
| |
| def _required_auth_capability(self): |
| return ['hmac-v4'] |
| |
| def batch_get_applications(self, application_names=None): |
| """ |
| Gets information about one or more applications. |
| |
| :type application_names: list |
| :param application_names: A list of application names, with multiple |
| application names separated by spaces. |
| |
| """ |
| params = {} |
| if application_names is not None: |
| params['applicationNames'] = application_names |
| return self.make_request(action='BatchGetApplications', |
| body=json.dumps(params)) |
| |
| def batch_get_deployments(self, deployment_ids=None): |
| """ |
| Gets information about one or more deployments. |
| |
| :type deployment_ids: list |
| :param deployment_ids: A list of deployment IDs, with multiple |
| deployment IDs separated by spaces. |
| |
| """ |
| params = {} |
| if deployment_ids is not None: |
| params['deploymentIds'] = deployment_ids |
| return self.make_request(action='BatchGetDeployments', |
| body=json.dumps(params)) |
| |
| def create_application(self, application_name): |
| """ |
| Creates a new application. |
| |
| :type application_name: string |
| :param application_name: The name of the application. This name must be |
| unique within the AWS user account. |
| |
| """ |
| params = {'applicationName': application_name, } |
| return self.make_request(action='CreateApplication', |
| body=json.dumps(params)) |
| |
| def create_deployment(self, application_name, deployment_group_name=None, |
| revision=None, deployment_config_name=None, |
| description=None, |
| ignore_application_stop_failures=None): |
| """ |
| Deploys an application revision to the specified deployment |
| group. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type deployment_group_name: string |
| :param deployment_group_name: The deployment group's name. |
| |
| :type revision: dict |
| :param revision: The type of revision to deploy, along with information |
| about the revision's location. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: The name of an existing deployment |
| configuration within the AWS user account. |
| If not specified, the value configured in the deployment group will be |
| used as the default. If the deployment group does not have a |
| deployment configuration associated with it, then |
| CodeDeployDefault.OneAtATime will be used by default. |
| |
| :type description: string |
| :param description: A comment about the deployment. |
| |
| :type ignore_application_stop_failures: boolean |
| :param ignore_application_stop_failures: If set to true, then if the |
| deployment causes the ApplicationStop deployment lifecycle event to |
| fail to a specific instance, the deployment will not be considered |
| to have failed to that instance at that point and will continue on |
| to the BeforeInstall deployment lifecycle event. |
| If set to false or not specified, then if the deployment causes the |
| ApplicationStop deployment lifecycle event to fail to a specific |
| instance, the deployment will stop to that instance, and the |
| deployment to that instance will be considered to have failed. |
| |
| """ |
| params = {'applicationName': application_name, } |
| if deployment_group_name is not None: |
| params['deploymentGroupName'] = deployment_group_name |
| if revision is not None: |
| params['revision'] = revision |
| if deployment_config_name is not None: |
| params['deploymentConfigName'] = deployment_config_name |
| if description is not None: |
| params['description'] = description |
| if ignore_application_stop_failures is not None: |
| params['ignoreApplicationStopFailures'] = ignore_application_stop_failures |
| return self.make_request(action='CreateDeployment', |
| body=json.dumps(params)) |
| |
| def create_deployment_config(self, deployment_config_name, |
| minimum_healthy_hosts=None): |
| """ |
| Creates a new deployment configuration. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: The name of the deployment configuration |
| to create. |
| |
| :type minimum_healthy_hosts: dict |
| :param minimum_healthy_hosts: The minimum number of healthy instances |
| that should be available at any time during the deployment. There |
| are two parameters expected in the input: type and value. |
| The type parameter takes either of the following values: |
| |
| |
| + HOST_COUNT: The value parameter represents the minimum number of |
| healthy instances, as an absolute value. |
| + FLEET_PERCENT: The value parameter represents the minimum number of |
| healthy instances, as a percentage of the total number of instances |
| in the deployment. If you specify FLEET_PERCENT, then at the start |
| of the deployment AWS CodeDeploy converts the percentage to the |
| equivalent number of instances and rounds fractional instances up. |
| |
| |
| The value parameter takes an integer. |
| |
| For example, to set a minimum of 95% healthy instances, specify a type |
| of FLEET_PERCENT and a value of 95. |
| |
| """ |
| params = {'deploymentConfigName': deployment_config_name, } |
| if minimum_healthy_hosts is not None: |
| params['minimumHealthyHosts'] = minimum_healthy_hosts |
| return self.make_request(action='CreateDeploymentConfig', |
| body=json.dumps(params)) |
| |
| def create_deployment_group(self, application_name, |
| deployment_group_name, |
| deployment_config_name=None, |
| ec_2_tag_filters=None, |
| auto_scaling_groups=None, |
| service_role_arn=None): |
| """ |
| Creates a new deployment group for application revisions to be |
| deployed to. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type deployment_group_name: string |
| :param deployment_group_name: The name of an existing deployment group |
| for the specified application. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: If specified, the deployment |
| configuration name must be one of the predefined values, or it can |
| be a custom deployment configuration: |
| |
| + CodeDeployDefault.AllAtOnce deploys an application revision to up to |
| all of the Amazon EC2 instances at once. The overall deployment |
| succeeds if the application revision deploys to at least one of the |
| instances. The overall deployment fails after the application |
| revision fails to deploy to all of the instances. For example, for |
| 9 instances, deploy to up to all 9 instances at once. The overall |
| deployment succeeds if any of the 9 instances is successfully |
| deployed to, and it fails if all 9 instances fail to be deployed |
| to. |
| + CodeDeployDefault.HalfAtATime deploys to up to half of the instances |
| at a time (with fractions rounded down). The overall deployment |
| succeeds if the application revision deploys to at least half of |
| the instances (with fractions rounded up); otherwise, the |
| deployment fails. For example, for 9 instances, deploy to up to 4 |
| instances at a time. The overall deployment succeeds if 5 or more |
| instances are successfully deployed to; otherwise, the deployment |
| fails. Note that the deployment may successfully deploy to some |
| instances, even if the overall deployment fails. |
| + CodeDeployDefault.OneAtATime deploys the application revision to only |
| one of the instances at a time. The overall deployment succeeds if |
| the application revision deploys to all of the instances. The |
| overall deployment fails after the application revision first fails |
| to deploy to any one instance. For example, for 9 instances, deploy |
| to one instance at a time. The overall deployment succeeds if all 9 |
| instances are successfully deployed to, and it fails if any of one |
| of the 9 instances fail to be deployed to. Note that the deployment |
| may successfully deploy to some instances, even if the overall |
| deployment fails. This is the default deployment configuration if a |
| configuration isn't specified for either the deployment or the |
| deployment group. |
| |
| |
| To create a custom deployment configuration, call the create deployment |
| configuration operation. |
| |
| :type ec_2_tag_filters: list |
| :param ec_2_tag_filters: The Amazon EC2 tags to filter on. |
| |
| :type auto_scaling_groups: list |
| :param auto_scaling_groups: A list of associated Auto Scaling groups. |
| |
| :type service_role_arn: string |
| :param service_role_arn: A service role ARN that allows AWS CodeDeploy |
| to act on the user's behalf when interacting with AWS services. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'deploymentGroupName': deployment_group_name, |
| } |
| if deployment_config_name is not None: |
| params['deploymentConfigName'] = deployment_config_name |
| if ec_2_tag_filters is not None: |
| params['ec2TagFilters'] = ec_2_tag_filters |
| if auto_scaling_groups is not None: |
| params['autoScalingGroups'] = auto_scaling_groups |
| if service_role_arn is not None: |
| params['serviceRoleArn'] = service_role_arn |
| return self.make_request(action='CreateDeploymentGroup', |
| body=json.dumps(params)) |
| |
| def delete_application(self, application_name): |
| """ |
| Deletes an application. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| """ |
| params = {'applicationName': application_name, } |
| return self.make_request(action='DeleteApplication', |
| body=json.dumps(params)) |
| |
| def delete_deployment_config(self, deployment_config_name): |
| """ |
| Deletes a deployment configuration. |
| |
| A deployment configuration cannot be deleted if it is |
| currently in use. Also, predefined configurations cannot be |
| deleted. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: The name of an existing deployment |
| configuration within the AWS user account. |
| |
| """ |
| params = {'deploymentConfigName': deployment_config_name, } |
| return self.make_request(action='DeleteDeploymentConfig', |
| body=json.dumps(params)) |
| |
| def delete_deployment_group(self, application_name, |
| deployment_group_name): |
| """ |
| Deletes a deployment group. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type deployment_group_name: string |
| :param deployment_group_name: The name of an existing deployment group |
| for the specified application. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'deploymentGroupName': deployment_group_name, |
| } |
| return self.make_request(action='DeleteDeploymentGroup', |
| body=json.dumps(params)) |
| |
| def get_application(self, application_name): |
| """ |
| Gets information about an application. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| """ |
| params = {'applicationName': application_name, } |
| return self.make_request(action='GetApplication', |
| body=json.dumps(params)) |
| |
| def get_application_revision(self, application_name, revision): |
| """ |
| Gets information about an application revision. |
| |
| :type application_name: string |
| :param application_name: The name of the application that corresponds |
| to the revision. |
| |
| :type revision: dict |
| :param revision: Information about the application revision to get, |
| including the revision's type and its location. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'revision': revision, |
| } |
| return self.make_request(action='GetApplicationRevision', |
| body=json.dumps(params)) |
| |
| def get_deployment(self, deployment_id): |
| """ |
| Gets information about a deployment. |
| |
| :type deployment_id: string |
| :param deployment_id: An existing deployment ID within the AWS user |
| account. |
| |
| """ |
| params = {'deploymentId': deployment_id, } |
| return self.make_request(action='GetDeployment', |
| body=json.dumps(params)) |
| |
| def get_deployment_config(self, deployment_config_name): |
| """ |
| Gets information about a deployment configuration. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: The name of an existing deployment |
| configuration within the AWS user account. |
| |
| """ |
| params = {'deploymentConfigName': deployment_config_name, } |
| return self.make_request(action='GetDeploymentConfig', |
| body=json.dumps(params)) |
| |
| def get_deployment_group(self, application_name, deployment_group_name): |
| """ |
| Gets information about a deployment group. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type deployment_group_name: string |
| :param deployment_group_name: The name of an existing deployment group |
| for the specified application. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'deploymentGroupName': deployment_group_name, |
| } |
| return self.make_request(action='GetDeploymentGroup', |
| body=json.dumps(params)) |
| |
| def get_deployment_instance(self, deployment_id, instance_id): |
| """ |
| Gets information about an Amazon EC2 instance as part of a |
| deployment. |
| |
| :type deployment_id: string |
| :param deployment_id: The unique ID of a deployment. |
| |
| :type instance_id: string |
| :param instance_id: The unique ID of an Amazon EC2 instance in the |
| deployment's deployment group. |
| |
| """ |
| params = { |
| 'deploymentId': deployment_id, |
| 'instanceId': instance_id, |
| } |
| return self.make_request(action='GetDeploymentInstance', |
| body=json.dumps(params)) |
| |
| def list_application_revisions(self, application_name, sort_by=None, |
| sort_order=None, s_3_bucket=None, |
| s_3_key_prefix=None, deployed=None, |
| next_token=None): |
| """ |
| Lists information about revisions for an application. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type sort_by: string |
| :param sort_by: The column name to sort the list results by: |
| |
| + registerTime: Sort the list results by when the revisions were |
| registered with AWS CodeDeploy. |
| + firstUsedTime: Sort the list results by when the revisions were first |
| used by in a deployment. |
| + lastUsedTime: Sort the list results by when the revisions were last |
| used in a deployment. |
| |
| |
| If not specified or set to null, the results will be returned in an |
| arbitrary order. |
| |
| :type sort_order: string |
| :param sort_order: The order to sort the list results by: |
| |
| + ascending: Sort the list results in ascending order. |
| + descending: Sort the list results in descending order. |
| |
| |
| If not specified, the results will be sorted in ascending order. |
| |
| If set to null, the results will be sorted in an arbitrary order. |
| |
| :type s_3_bucket: string |
| :param s_3_bucket: A specific Amazon S3 bucket name to limit the search |
| for revisions. |
| If set to null, then all of the user's buckets will be searched. |
| |
| :type s_3_key_prefix: string |
| :param s_3_key_prefix: A specific key prefix for the set of Amazon S3 |
| objects to limit the search for revisions. |
| |
| :type deployed: string |
| :param deployed: |
| Whether to list revisions based on whether the revision is the target |
| revision of an deployment group: |
| |
| |
| + include: List revisions that are target revisions of a deployment |
| group. |
| + exclude: Do not list revisions that are target revisions of a |
| deployment group. |
| + ignore: List all revisions, regardless of whether they are target |
| revisions of a deployment group. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list application revisions call, which can be used to return the |
| next set of applications in the list. |
| |
| """ |
| params = {'applicationName': application_name, } |
| if sort_by is not None: |
| params['sortBy'] = sort_by |
| if sort_order is not None: |
| params['sortOrder'] = sort_order |
| if s_3_bucket is not None: |
| params['s3Bucket'] = s_3_bucket |
| if s_3_key_prefix is not None: |
| params['s3KeyPrefix'] = s_3_key_prefix |
| if deployed is not None: |
| params['deployed'] = deployed |
| if next_token is not None: |
| params['nextToken'] = next_token |
| return self.make_request(action='ListApplicationRevisions', |
| body=json.dumps(params)) |
| |
| def list_applications(self, next_token=None): |
| """ |
| Lists the applications registered within the AWS user account. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list applications call, which can be used to return the next set of |
| applications in the list. |
| |
| """ |
| params = {} |
| if next_token is not None: |
| params['nextToken'] = next_token |
| return self.make_request(action='ListApplications', |
| body=json.dumps(params)) |
| |
| def list_deployment_configs(self, next_token=None): |
| """ |
| Lists the deployment configurations within the AWS user |
| account. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list deployment configurations call, which can be used to return |
| the next set of deployment configurations in the list. |
| |
| """ |
| params = {} |
| if next_token is not None: |
| params['nextToken'] = next_token |
| return self.make_request(action='ListDeploymentConfigs', |
| body=json.dumps(params)) |
| |
| def list_deployment_groups(self, application_name, next_token=None): |
| """ |
| Lists the deployment groups for an application registered |
| within the AWS user account. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list deployment groups call, which can be used to return the next |
| set of deployment groups in the list. |
| |
| """ |
| params = {'applicationName': application_name, } |
| if next_token is not None: |
| params['nextToken'] = next_token |
| return self.make_request(action='ListDeploymentGroups', |
| body=json.dumps(params)) |
| |
| def list_deployment_instances(self, deployment_id, next_token=None, |
| instance_status_filter=None): |
| """ |
| Lists the Amazon EC2 instances for a deployment within the AWS |
| user account. |
| |
| :type deployment_id: string |
| :param deployment_id: The unique ID of a deployment. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list deployment instances call, which can be used to return the |
| next set of deployment instances in the list. |
| |
| :type instance_status_filter: list |
| :param instance_status_filter: |
| A subset of instances to list, by status: |
| |
| |
| + Pending: Include in the resulting list those instances with pending |
| deployments. |
| + InProgress: Include in the resulting list those instances with in- |
| progress deployments. |
| + Succeeded: Include in the resulting list those instances with |
| succeeded deployments. |
| + Failed: Include in the resulting list those instances with failed |
| deployments. |
| + Skipped: Include in the resulting list those instances with skipped |
| deployments. |
| + Unknown: Include in the resulting list those instances with |
| deployments in an unknown state. |
| |
| """ |
| params = {'deploymentId': deployment_id, } |
| if next_token is not None: |
| params['nextToken'] = next_token |
| if instance_status_filter is not None: |
| params['instanceStatusFilter'] = instance_status_filter |
| return self.make_request(action='ListDeploymentInstances', |
| body=json.dumps(params)) |
| |
| def list_deployments(self, application_name=None, |
| deployment_group_name=None, |
| include_only_statuses=None, create_time_range=None, |
| next_token=None): |
| """ |
| Lists the deployments under a deployment group for an |
| application registered within the AWS user account. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type deployment_group_name: string |
| :param deployment_group_name: The name of an existing deployment group |
| for the specified application. |
| |
| :type include_only_statuses: list |
| :param include_only_statuses: A subset of deployments to list, by |
| status: |
| |
| + Created: Include in the resulting list created deployments. |
| + Queued: Include in the resulting list queued deployments. |
| + In Progress: Include in the resulting list in-progress deployments. |
| + Succeeded: Include in the resulting list succeeded deployments. |
| + Failed: Include in the resulting list failed deployments. |
| + Aborted: Include in the resulting list aborted deployments. |
| |
| :type create_time_range: dict |
| :param create_time_range: A deployment creation start- and end-time |
| range for returning a subset of the list of deployments. |
| |
| :type next_token: string |
| :param next_token: An identifier that was returned from the previous |
| list deployments call, which can be used to return the next set of |
| deployments in the list. |
| |
| """ |
| params = {} |
| if application_name is not None: |
| params['applicationName'] = application_name |
| if deployment_group_name is not None: |
| params['deploymentGroupName'] = deployment_group_name |
| if include_only_statuses is not None: |
| params['includeOnlyStatuses'] = include_only_statuses |
| if create_time_range is not None: |
| params['createTimeRange'] = create_time_range |
| if next_token is not None: |
| params['nextToken'] = next_token |
| return self.make_request(action='ListDeployments', |
| body=json.dumps(params)) |
| |
| def register_application_revision(self, application_name, revision, |
| description=None): |
| """ |
| Registers with AWS CodeDeploy a revision for the specified |
| application. |
| |
| :type application_name: string |
| :param application_name: The name of an existing AWS CodeDeploy |
| application within the AWS user account. |
| |
| :type description: string |
| :param description: A comment about the revision. |
| |
| :type revision: dict |
| :param revision: Information about the application revision to |
| register, including the revision's type and its location. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'revision': revision, |
| } |
| if description is not None: |
| params['description'] = description |
| return self.make_request(action='RegisterApplicationRevision', |
| body=json.dumps(params)) |
| |
| def stop_deployment(self, deployment_id): |
| """ |
| Attempts to stop an ongoing deployment. |
| |
| :type deployment_id: string |
| :param deployment_id: The unique ID of a deployment. |
| |
| """ |
| params = {'deploymentId': deployment_id, } |
| return self.make_request(action='StopDeployment', |
| body=json.dumps(params)) |
| |
| def update_application(self, application_name=None, |
| new_application_name=None): |
| """ |
| Changes an existing application's name. |
| |
| :type application_name: string |
| :param application_name: The current name of the application that you |
| want to change. |
| |
| :type new_application_name: string |
| :param new_application_name: The new name that you want to change the |
| application to. |
| |
| """ |
| params = {} |
| if application_name is not None: |
| params['applicationName'] = application_name |
| if new_application_name is not None: |
| params['newApplicationName'] = new_application_name |
| return self.make_request(action='UpdateApplication', |
| body=json.dumps(params)) |
| |
| def update_deployment_group(self, application_name, |
| current_deployment_group_name, |
| new_deployment_group_name=None, |
| deployment_config_name=None, |
| ec_2_tag_filters=None, |
| auto_scaling_groups=None, |
| service_role_arn=None): |
| """ |
| Changes information about an existing deployment group. |
| |
| :type application_name: string |
| :param application_name: The application name corresponding to the |
| deployment group to update. |
| |
| :type current_deployment_group_name: string |
| :param current_deployment_group_name: The current name of the existing |
| deployment group. |
| |
| :type new_deployment_group_name: string |
| :param new_deployment_group_name: The new name of the deployment group, |
| if you want to change it. |
| |
| :type deployment_config_name: string |
| :param deployment_config_name: The replacement deployment configuration |
| name to use, if you want to change it. |
| |
| :type ec_2_tag_filters: list |
| :param ec_2_tag_filters: The replacement set of Amazon EC2 tags to |
| filter on, if you want to change them. |
| |
| :type auto_scaling_groups: list |
| :param auto_scaling_groups: The replacement list of Auto Scaling groups |
| to be included in the deployment group, if you want to change them. |
| |
| :type service_role_arn: string |
| :param service_role_arn: A replacement service role's ARN, if you want |
| to change it. |
| |
| """ |
| params = { |
| 'applicationName': application_name, |
| 'currentDeploymentGroupName': current_deployment_group_name, |
| } |
| if new_deployment_group_name is not None: |
| params['newDeploymentGroupName'] = new_deployment_group_name |
| if deployment_config_name is not None: |
| params['deploymentConfigName'] = deployment_config_name |
| if ec_2_tag_filters is not None: |
| params['ec2TagFilters'] = ec_2_tag_filters |
| if auto_scaling_groups is not None: |
| params['autoScalingGroups'] = auto_scaling_groups |
| if service_role_arn is not None: |
| params['serviceRoleArn'] = service_role_arn |
| return self.make_request(action='UpdateDeploymentGroup', |
| body=json.dumps(params)) |
| |
| def make_request(self, action, body): |
| headers = { |
| 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action), |
| 'Host': self.region.endpoint, |
| 'Content-Type': 'application/x-amz-json-1.1', |
| 'Content-Length': str(len(body)), |
| } |
| http_request = self.build_base_http_request( |
| method='POST', path='/', auth_path='/', params={}, |
| headers=headers, data=body) |
| response = self._mexe(http_request, sender=None, |
| override_num_retries=10) |
| response_body = response.read().decode('utf-8') |
| boto.log.debug(response_body) |
| if response.status == 200: |
| if response_body: |
| return json.loads(response_body) |
| else: |
| json_body = json.loads(response_body) |
| fault_name = json_body.get('__type', None) |
| exception_class = self._faults.get(fault_name, self.ResponseError) |
| raise exception_class(response.status, response.reason, |
| body=json_body) |
| |