rusoto_codedeploy/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::proto;
23use rusoto_core::request::HttpResponse;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27
28impl CodeDeployClient {
29    fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
30        let mut request = SignedRequest::new(http_method, "codedeploy", &self.region, request_uri);
31
32        request.set_content_type("application/x-amz-json-1.1".to_owned());
33
34        request
35    }
36
37    async fn sign_and_dispatch<E>(
38        &self,
39        request: SignedRequest,
40        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
41    ) -> Result<HttpResponse, RusotoError<E>> {
42        let mut response = self.client.sign_and_dispatch(request).await?;
43        if !response.status.is_success() {
44            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
45            return Err(from_response(response));
46        }
47
48        Ok(response)
49    }
50}
51
52use serde_json;
53/// <p>Represents the input of, and adds tags to, an on-premises instance operation.</p>
54#[derive(Clone, Debug, Default, PartialEq, Serialize)]
55#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
56pub struct AddTagsToOnPremisesInstancesInput {
57    /// <p>The names of the on-premises instances to which to add tags.</p>
58    #[serde(rename = "instanceNames")]
59    pub instance_names: Vec<String>,
60    /// <p>The tag key-value pairs to add to the on-premises instances.</p> <p>Keys and values are both required. Keys cannot be null or empty strings. Value-only tags are not allowed.</p>
61    #[serde(rename = "tags")]
62    pub tags: Vec<Tag>,
63}
64
65/// <p>Information about an alarm.</p>
66#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
67pub struct Alarm {
68    /// <p>The name of the alarm. Maximum length is 255 characters. Each alarm name can be used only once in a list of alarms.</p>
69    #[serde(rename = "name")]
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub name: Option<String>,
72}
73
74/// <p>Information about alarms associated with the deployment group.</p>
75#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
76pub struct AlarmConfiguration {
77    /// <p>A list of alarms configured for the deployment group. A maximum of 10 alarms can be added to a deployment group.</p>
78    #[serde(rename = "alarms")]
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub alarms: Option<Vec<Alarm>>,
81    /// <p>Indicates whether the alarm configuration is enabled.</p>
82    #[serde(rename = "enabled")]
83    #[serde(skip_serializing_if = "Option::is_none")]
84    pub enabled: Option<bool>,
85    /// <p><p>Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from Amazon CloudWatch. The default value is false.</p> <ul> <li> <p> <code>true</code>: The deployment proceeds even if alarm status information can&#39;t be retrieved from Amazon CloudWatch.</p> </li> <li> <p> <code>false</code>: The deployment stops if alarm status information can&#39;t be retrieved from Amazon CloudWatch.</p> </li> </ul></p>
86    #[serde(rename = "ignorePollAlarmFailure")]
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub ignore_poll_alarm_failure: Option<bool>,
89}
90
91/// <p> A revision for an AWS Lambda or Amazon ECS deployment that is a YAML-formatted or JSON-formatted string. For AWS Lambda and Amazon ECS deployments, the revision is the same as the AppSpec file. This method replaces the deprecated <code>RawString</code> data type. </p>
92#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
93pub struct AppSpecContent {
94    /// <p> The YAML-formatted or JSON-formatted revision string. </p> <p> For an AWS Lambda deployment, the content includes a Lambda function name, the alias for its original version, and the alias for its replacement version. The deployment shifts traffic from the original version of the Lambda function to the replacement version. </p> <p> For an Amazon ECS deployment, the content includes the task name, information about the load balancer that serves traffic to the container, and more. </p> <p> For both types of deployments, the content can specify Lambda functions that run at specified hooks, such as <code>BeforeInstall</code>, during a deployment. </p>
95    #[serde(rename = "content")]
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub content: Option<String>,
98    /// <p> The SHA256 hash value of the revision content. </p>
99    #[serde(rename = "sha256")]
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub sha_256: Option<String>,
102}
103
104/// <p>Information about an application.</p>
105#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
106#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
107pub struct ApplicationInfo {
108    /// <p>The application ID.</p>
109    #[serde(rename = "applicationId")]
110    #[serde(skip_serializing_if = "Option::is_none")]
111    pub application_id: Option<String>,
112    /// <p>The application name.</p>
113    #[serde(rename = "applicationName")]
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub application_name: Option<String>,
116    /// <p>The destination platform type for deployment of the application (<code>Lambda</code> or <code>Server</code>).</p>
117    #[serde(rename = "computePlatform")]
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub compute_platform: Option<String>,
120    /// <p>The time at which the application was created.</p>
121    #[serde(rename = "createTime")]
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub create_time: Option<f64>,
124    /// <p>The name for a connection to a GitHub account.</p>
125    #[serde(rename = "gitHubAccountName")]
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub git_hub_account_name: Option<String>,
128    /// <p>True if the user has authenticated with GitHub for the specified application. Otherwise, false.</p>
129    #[serde(rename = "linkedToGitHub")]
130    #[serde(skip_serializing_if = "Option::is_none")]
131    pub linked_to_git_hub: Option<bool>,
132}
133
134/// <p>Information about a configuration for automatically rolling back to a previous version of an application revision when a deployment is not completed successfully.</p>
135#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
136pub struct AutoRollbackConfiguration {
137    /// <p>Indicates whether a defined automatic rollback configuration is currently enabled.</p>
138    #[serde(rename = "enabled")]
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub enabled: Option<bool>,
141    /// <p>The event type or types that trigger a rollback.</p>
142    #[serde(rename = "events")]
143    #[serde(skip_serializing_if = "Option::is_none")]
144    pub events: Option<Vec<String>>,
145}
146
147/// <p>Information about an Auto Scaling group.</p>
148#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
149#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
150pub struct AutoScalingGroup {
151    /// <p>An Auto Scaling lifecycle event hook name.</p>
152    #[serde(rename = "hook")]
153    #[serde(skip_serializing_if = "Option::is_none")]
154    pub hook: Option<String>,
155    /// <p>The Auto Scaling group name.</p>
156    #[serde(rename = "name")]
157    #[serde(skip_serializing_if = "Option::is_none")]
158    pub name: Option<String>,
159}
160
161/// <p>Represents the input of a <code>BatchGetApplicationRevisions</code> operation.</p>
162#[derive(Clone, Debug, Default, PartialEq, Serialize)]
163#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
164pub struct BatchGetApplicationRevisionsInput {
165    /// <p>The name of an AWS CodeDeploy application about which to get revision information.</p>
166    #[serde(rename = "applicationName")]
167    pub application_name: String,
168    /// <p>An array of <code>RevisionLocation</code> objects that specify information to get about the application revisions, including type and location. The maximum number of <code>RevisionLocation</code> objects you can specify is 25.</p>
169    #[serde(rename = "revisions")]
170    pub revisions: Vec<RevisionLocation>,
171}
172
173/// <p>Represents the output of a <code>BatchGetApplicationRevisions</code> operation.</p>
174#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
175#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
176pub struct BatchGetApplicationRevisionsOutput {
177    /// <p>The name of the application that corresponds to the revisions.</p>
178    #[serde(rename = "applicationName")]
179    #[serde(skip_serializing_if = "Option::is_none")]
180    pub application_name: Option<String>,
181    /// <p>Information about errors that might have occurred during the API call.</p>
182    #[serde(rename = "errorMessage")]
183    #[serde(skip_serializing_if = "Option::is_none")]
184    pub error_message: Option<String>,
185    /// <p>Additional information about the revisions, including the type and location.</p>
186    #[serde(rename = "revisions")]
187    #[serde(skip_serializing_if = "Option::is_none")]
188    pub revisions: Option<Vec<RevisionInfo>>,
189}
190
191/// <p>Represents the input of a <code>BatchGetApplications</code> operation.</p>
192#[derive(Clone, Debug, Default, PartialEq, Serialize)]
193#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
194pub struct BatchGetApplicationsInput {
195    /// <p>A list of application names separated by spaces. The maximum number of application names you can specify is 100.</p>
196    #[serde(rename = "applicationNames")]
197    pub application_names: Vec<String>,
198}
199
200/// <p>Represents the output of a <code>BatchGetApplications</code> operation.</p>
201#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
202#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
203pub struct BatchGetApplicationsOutput {
204    /// <p>Information about the applications.</p>
205    #[serde(rename = "applicationsInfo")]
206    #[serde(skip_serializing_if = "Option::is_none")]
207    pub applications_info: Option<Vec<ApplicationInfo>>,
208}
209
210/// <p>Represents the input of a <code>BatchGetDeploymentGroups</code> operation.</p>
211#[derive(Clone, Debug, Default, PartialEq, Serialize)]
212#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
213pub struct BatchGetDeploymentGroupsInput {
214    /// <p>The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account.</p>
215    #[serde(rename = "applicationName")]
216    pub application_name: String,
217    /// <p>The names of the deployment groups.</p>
218    #[serde(rename = "deploymentGroupNames")]
219    pub deployment_group_names: Vec<String>,
220}
221
222/// <p>Represents the output of a <code>BatchGetDeploymentGroups</code> operation.</p>
223#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
224#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
225pub struct BatchGetDeploymentGroupsOutput {
226    /// <p>Information about the deployment groups.</p>
227    #[serde(rename = "deploymentGroupsInfo")]
228    #[serde(skip_serializing_if = "Option::is_none")]
229    pub deployment_groups_info: Option<Vec<DeploymentGroupInfo>>,
230    /// <p>Information about errors that might have occurred during the API call.</p>
231    #[serde(rename = "errorMessage")]
232    #[serde(skip_serializing_if = "Option::is_none")]
233    pub error_message: Option<String>,
234}
235
236/// <p> Represents the input of a <code>BatchGetDeploymentInstances</code> operation. </p>
237#[derive(Clone, Debug, Default, PartialEq, Serialize)]
238#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
239pub struct BatchGetDeploymentInstancesInput {
240    /// <p> The unique ID of a deployment. </p>
241    #[serde(rename = "deploymentId")]
242    pub deployment_id: String,
243    /// <p>The unique IDs of instances used in the deployment. The maximum number of instance IDs you can specify is 25.</p>
244    #[serde(rename = "instanceIds")]
245    pub instance_ids: Vec<String>,
246}
247
248/// <p>Represents the output of a <code>BatchGetDeploymentInstances</code> operation.</p>
249#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
250#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
251pub struct BatchGetDeploymentInstancesOutput {
252    /// <p>Information about errors that might have occurred during the API call.</p>
253    #[serde(rename = "errorMessage")]
254    #[serde(skip_serializing_if = "Option::is_none")]
255    pub error_message: Option<String>,
256    /// <p>Information about the instance.</p>
257    #[serde(rename = "instancesSummary")]
258    #[serde(skip_serializing_if = "Option::is_none")]
259    pub instances_summary: Option<Vec<InstanceSummary>>,
260}
261
262#[derive(Clone, Debug, Default, PartialEq, Serialize)]
263#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
264pub struct BatchGetDeploymentTargetsInput {
265    /// <p> The unique ID of a deployment. </p>
266    #[serde(rename = "deploymentId")]
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub deployment_id: Option<String>,
269    /// <p><p> The unique IDs of the deployment targets. The compute platform of the deployment determines the type of the targets and their formats. The maximum number of deployment target IDs you can specify is 25.</p> <ul> <li> <p> For deployments that use the EC2/On-premises compute platform, the target IDs are EC2 or on-premises instances IDs, and their target type is <code>instanceTarget</code>. </p> </li> <li> <p> For deployments that use the AWS Lambda compute platform, the target IDs are the names of Lambda functions, and their target type is <code>instanceTarget</code>. </p> </li> <li> <p> For deployments that use the Amazon ECS compute platform, the target IDs are pairs of Amazon ECS clusters and services specified using the format <code>&lt;clustername&gt;:&lt;servicename&gt;</code>. Their target type is <code>ecsTarget</code>. </p> </li> <li> <p> For deployments that are deployed with AWS CloudFormation, the target IDs are CloudFormation stack IDs. Their target type is <code>cloudFormationTarget</code>. </p> </li> </ul></p>
270    #[serde(rename = "targetIds")]
271    #[serde(skip_serializing_if = "Option::is_none")]
272    pub target_ids: Option<Vec<String>>,
273}
274
275#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
276#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
277pub struct BatchGetDeploymentTargetsOutput {
278    /// <p><p> A list of target objects for a deployment. Each target object contains details about the target, such as its status and lifecycle events. The type of the target objects depends on the deployment&#39; compute platform. </p> <ul> <li> <p> <b>EC2/On-premises</b>: Each target object is an EC2 or on-premises instance. </p> </li> <li> <p> <b>AWS Lambda</b>: The target object is a specific version of an AWS Lambda function. </p> </li> <li> <p> <b>Amazon ECS</b>: The target object is an Amazon ECS service. </p> </li> <li> <p> <b>CloudFormation</b>: The target object is an AWS CloudFormation blue/green deployment. </p> </li> </ul></p>
279    #[serde(rename = "deploymentTargets")]
280    #[serde(skip_serializing_if = "Option::is_none")]
281    pub deployment_targets: Option<Vec<DeploymentTarget>>,
282}
283
284/// <p> Represents the input of a <code>BatchGetDeployments</code> operation. </p>
285#[derive(Clone, Debug, Default, PartialEq, Serialize)]
286#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
287pub struct BatchGetDeploymentsInput {
288    /// <p> A list of deployment IDs, separated by spaces. The maximum number of deployment IDs you can specify is 25.</p>
289    #[serde(rename = "deploymentIds")]
290    pub deployment_ids: Vec<String>,
291}
292
293/// <p> Represents the output of a <code>BatchGetDeployments</code> operation. </p>
294#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
295#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
296pub struct BatchGetDeploymentsOutput {
297    /// <p> Information about the deployments. </p>
298    #[serde(rename = "deploymentsInfo")]
299    #[serde(skip_serializing_if = "Option::is_none")]
300    pub deployments_info: Option<Vec<DeploymentInfo>>,
301}
302
303/// <p>Represents the input of a <code>BatchGetOnPremisesInstances</code> operation.</p>
304#[derive(Clone, Debug, Default, PartialEq, Serialize)]
305#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
306pub struct BatchGetOnPremisesInstancesInput {
307    /// <p>The names of the on-premises instances about which to get information. The maximum number of instance names you can specify is 25.</p>
308    #[serde(rename = "instanceNames")]
309    pub instance_names: Vec<String>,
310}
311
312/// <p>Represents the output of a <code>BatchGetOnPremisesInstances</code> operation.</p>
313#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
314#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
315pub struct BatchGetOnPremisesInstancesOutput {
316    /// <p>Information about the on-premises instances.</p>
317    #[serde(rename = "instanceInfos")]
318    #[serde(skip_serializing_if = "Option::is_none")]
319    pub instance_infos: Option<Vec<InstanceInfo>>,
320}
321
322/// <p>Information about blue/green deployment options for a deployment group.</p>
323#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
324pub struct BlueGreenDeploymentConfiguration {
325    /// <p>Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment.</p>
326    #[serde(rename = "deploymentReadyOption")]
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub deployment_ready_option: Option<DeploymentReadyOption>,
329    /// <p>Information about how instances are provisioned for a replacement environment in a blue/green deployment.</p>
330    #[serde(rename = "greenFleetProvisioningOption")]
331    #[serde(skip_serializing_if = "Option::is_none")]
332    pub green_fleet_provisioning_option: Option<GreenFleetProvisioningOption>,
333    /// <p>Information about whether to terminate instances in the original fleet during a blue/green deployment.</p>
334    #[serde(rename = "terminateBlueInstancesOnDeploymentSuccess")]
335    #[serde(skip_serializing_if = "Option::is_none")]
336    pub terminate_blue_instances_on_deployment_success: Option<BlueInstanceTerminationOption>,
337}
338
339/// <p>Information about whether instances in the original environment are terminated when a blue/green deployment is successful. <code>BlueInstanceTerminationOption</code> does not apply to Lambda deployments. </p>
340#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
341pub struct BlueInstanceTerminationOption {
342    /// <p><p>The action to take on instances in the original environment after a successful blue/green deployment.</p> <ul> <li> <p> <code>TERMINATE</code>: Instances are terminated after a specified wait time.</p> </li> <li> <p> <code>KEEP_ALIVE</code>: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.</p> </li> </ul></p>
343    #[serde(rename = "action")]
344    #[serde(skip_serializing_if = "Option::is_none")]
345    pub action: Option<String>,
346    /// <p>For an Amazon EC2 deployment, the number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment.</p> <p> For an Amazon ECS deployment, the number of minutes before deleting the original (blue) task set. During an Amazon ECS deployment, CodeDeploy shifts traffic from the original (blue) task set to a replacement (green) task set. </p> <p> The maximum setting is 2880 minutes (2 days). </p>
347    #[serde(rename = "terminationWaitTimeInMinutes")]
348    #[serde(skip_serializing_if = "Option::is_none")]
349    pub termination_wait_time_in_minutes: Option<i64>,
350}
351
352/// <p> Information about the target to be updated by an AWS CloudFormation blue/green deployment. This target type is used for all deployments initiated by a CloudFormation stack update.</p>
353#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
354#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
355pub struct CloudFormationTarget {
356    /// <p>The unique ID of an AWS CloudFormation blue/green deployment.</p>
357    #[serde(rename = "deploymentId")]
358    #[serde(skip_serializing_if = "Option::is_none")]
359    pub deployment_id: Option<String>,
360    /// <p> The date and time when the target application was updated by an AWS CloudFormation blue/green deployment. </p>
361    #[serde(rename = "lastUpdatedAt")]
362    #[serde(skip_serializing_if = "Option::is_none")]
363    pub last_updated_at: Option<f64>,
364    /// <p> The lifecycle events of the AWS CloudFormation blue/green deployment to this target application. </p>
365    #[serde(rename = "lifecycleEvents")]
366    #[serde(skip_serializing_if = "Option::is_none")]
367    pub lifecycle_events: Option<Vec<LifecycleEvent>>,
368    /// <p>The resource type for the AWS CloudFormation blue/green deployment.</p>
369    #[serde(rename = "resourceType")]
370    #[serde(skip_serializing_if = "Option::is_none")]
371    pub resource_type: Option<String>,
372    /// <p> The status of an AWS CloudFormation blue/green deployment's target application. </p>
373    #[serde(rename = "status")]
374    #[serde(skip_serializing_if = "Option::is_none")]
375    pub status: Option<String>,
376    /// <p> The unique ID of a deployment target that has a type of <code>CloudFormationTarget</code>. </p>
377    #[serde(rename = "targetId")]
378    #[serde(skip_serializing_if = "Option::is_none")]
379    pub target_id: Option<String>,
380    /// <p>The percentage of production traffic that the target version of an AWS CloudFormation blue/green deployment receives.</p>
381    #[serde(rename = "targetVersionWeight")]
382    #[serde(skip_serializing_if = "Option::is_none")]
383    pub target_version_weight: Option<f64>,
384}
385
386#[derive(Clone, Debug, Default, PartialEq, Serialize)]
387#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
388pub struct ContinueDeploymentInput {
389    /// <p> The unique ID of a blue/green deployment for which you want to start rerouting traffic to the replacement environment. </p>
390    #[serde(rename = "deploymentId")]
391    #[serde(skip_serializing_if = "Option::is_none")]
392    pub deployment_id: Option<String>,
393    /// <p> The status of the deployment's waiting period. <code>READY_WAIT</code> indicates that the deployment is ready to start shifting traffic. <code>TERMINATION_WAIT</code> indicates that the traffic is shifted, but the original target is not terminated. </p>
394    #[serde(rename = "deploymentWaitType")]
395    #[serde(skip_serializing_if = "Option::is_none")]
396    pub deployment_wait_type: Option<String>,
397}
398
399/// <p>Represents the input of a <code>CreateApplication</code> operation.</p>
400#[derive(Clone, Debug, Default, PartialEq, Serialize)]
401#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
402pub struct CreateApplicationInput {
403    /// <p>The name of the application. This name must be unique with the applicable IAM user or AWS account.</p>
404    #[serde(rename = "applicationName")]
405    pub application_name: String,
406    /// <p> The destination platform type for the deployment (<code>Lambda</code>, <code>Server</code>, or <code>ECS</code>).</p>
407    #[serde(rename = "computePlatform")]
408    #[serde(skip_serializing_if = "Option::is_none")]
409    pub compute_platform: Option<String>,
410    /// <p> The metadata that you apply to CodeDeploy applications to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define. </p>
411    #[serde(rename = "tags")]
412    #[serde(skip_serializing_if = "Option::is_none")]
413    pub tags: Option<Vec<Tag>>,
414}
415
416/// <p>Represents the output of a <code>CreateApplication</code> operation.</p>
417#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
418#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
419pub struct CreateApplicationOutput {
420    /// <p>A unique application ID.</p>
421    #[serde(rename = "applicationId")]
422    #[serde(skip_serializing_if = "Option::is_none")]
423    pub application_id: Option<String>,
424}
425
426/// <p>Represents the input of a <code>CreateDeploymentConfig</code> operation.</p>
427#[derive(Clone, Debug, Default, PartialEq, Serialize)]
428#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
429pub struct CreateDeploymentConfigInput {
430    /// <p>The destination platform type for the deployment (<code>Lambda</code>, <code>Server</code>, or <code>ECS</code>).</p>
431    #[serde(rename = "computePlatform")]
432    #[serde(skip_serializing_if = "Option::is_none")]
433    pub compute_platform: Option<String>,
434    /// <p>The name of the deployment configuration to create.</p>
435    #[serde(rename = "deploymentConfigName")]
436    pub deployment_config_name: String,
437    /// <p>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.</p> <p>The type parameter takes either of the following values:</p> <ul> <li> <p>HOST_COUNT: The value parameter represents the minimum number of healthy instances as an absolute value.</p> </li> <li> <p>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, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instances and rounds up fractional instances.</p> </li> </ul> <p>The value parameter takes an integer.</p> <p>For example, to set a minimum of 95% healthy instance, specify a type of FLEET_PERCENT and a value of 95.</p>
438    #[serde(rename = "minimumHealthyHosts")]
439    #[serde(skip_serializing_if = "Option::is_none")]
440    pub minimum_healthy_hosts: Option<MinimumHealthyHosts>,
441    /// <p>The configuration that specifies how the deployment traffic is routed.</p>
442    #[serde(rename = "trafficRoutingConfig")]
443    #[serde(skip_serializing_if = "Option::is_none")]
444    pub traffic_routing_config: Option<TrafficRoutingConfig>,
445}
446
447/// <p>Represents the output of a <code>CreateDeploymentConfig</code> operation.</p>
448#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
449#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
450pub struct CreateDeploymentConfigOutput {
451    /// <p>A unique deployment configuration ID.</p>
452    #[serde(rename = "deploymentConfigId")]
453    #[serde(skip_serializing_if = "Option::is_none")]
454    pub deployment_config_id: Option<String>,
455}
456
457/// <p>Represents the input of a <code>CreateDeploymentGroup</code> operation.</p>
458#[derive(Clone, Debug, Default, PartialEq, Serialize)]
459#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
460pub struct CreateDeploymentGroupInput {
461    /// <p>Information to add about Amazon CloudWatch alarms when the deployment group is created.</p>
462    #[serde(rename = "alarmConfiguration")]
463    #[serde(skip_serializing_if = "Option::is_none")]
464    pub alarm_configuration: Option<AlarmConfiguration>,
465    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
466    #[serde(rename = "applicationName")]
467    pub application_name: String,
468    /// <p>Configuration information for an automatic rollback that is added when a deployment group is created.</p>
469    #[serde(rename = "autoRollbackConfiguration")]
470    #[serde(skip_serializing_if = "Option::is_none")]
471    pub auto_rollback_configuration: Option<AutoRollbackConfiguration>,
472    /// <p>A list of associated Amazon EC2 Auto Scaling groups.</p>
473    #[serde(rename = "autoScalingGroups")]
474    #[serde(skip_serializing_if = "Option::is_none")]
475    pub auto_scaling_groups: Option<Vec<String>>,
476    /// <p>Information about blue/green deployment options for a deployment group.</p>
477    #[serde(rename = "blueGreenDeploymentConfiguration")]
478    #[serde(skip_serializing_if = "Option::is_none")]
479    pub blue_green_deployment_configuration: Option<BlueGreenDeploymentConfiguration>,
480    /// <p>If specified, the deployment configuration name can be either one of the predefined configurations provided with AWS CodeDeploy or a custom deployment configuration that you create by calling the create deployment configuration operation.</p> <p> <code>CodeDeployDefault.OneAtATime</code> is the default deployment configuration. It is used if a configuration isn't specified for the deployment or deployment group.</p> <p>For more information about the predefined deployment configurations in AWS CodeDeploy, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html">Working with Deployment Configurations in CodeDeploy</a> in the <i>AWS CodeDeploy User Guide</i>.</p>
481    #[serde(rename = "deploymentConfigName")]
482    #[serde(skip_serializing_if = "Option::is_none")]
483    pub deployment_config_name: Option<String>,
484    /// <p>The name of a new deployment group for the specified application.</p>
485    #[serde(rename = "deploymentGroupName")]
486    pub deployment_group_name: String,
487    /// <p>Information about the type of deployment, in-place or blue/green, that you want to run and whether to route deployment traffic behind a load balancer.</p>
488    #[serde(rename = "deploymentStyle")]
489    #[serde(skip_serializing_if = "Option::is_none")]
490    pub deployment_style: Option<DeploymentStyle>,
491    /// <p>The Amazon EC2 tags on which to filter. The deployment group includes EC2 instances with any of the specified tags. Cannot be used in the same call as ec2TagSet.</p>
492    #[serde(rename = "ec2TagFilters")]
493    #[serde(skip_serializing_if = "Option::is_none")]
494    pub ec_2_tag_filters: Option<Vec<EC2TagFilter>>,
495    /// <p>Information about groups of tags applied to EC2 instances. The deployment group includes only EC2 instances identified by all the tag groups. Cannot be used in the same call as <code>ec2TagFilters</code>.</p>
496    #[serde(rename = "ec2TagSet")]
497    #[serde(skip_serializing_if = "Option::is_none")]
498    pub ec_2_tag_set: Option<EC2TagSet>,
499    /// <p> The target Amazon ECS services in the deployment group. This applies only to deployment groups that use the Amazon ECS compute platform. A target Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format <code>&lt;clustername&gt;:&lt;servicename&gt;</code>. </p>
500    #[serde(rename = "ecsServices")]
501    #[serde(skip_serializing_if = "Option::is_none")]
502    pub ecs_services: Option<Vec<ECSService>>,
503    /// <p>Information about the load balancer used in a deployment.</p>
504    #[serde(rename = "loadBalancerInfo")]
505    #[serde(skip_serializing_if = "Option::is_none")]
506    pub load_balancer_info: Option<LoadBalancerInfo>,
507    /// <p>The on-premises instance tags on which to filter. The deployment group includes on-premises instances with any of the specified tags. Cannot be used in the same call as <code>OnPremisesTagSet</code>.</p>
508    #[serde(rename = "onPremisesInstanceTagFilters")]
509    #[serde(skip_serializing_if = "Option::is_none")]
510    pub on_premises_instance_tag_filters: Option<Vec<TagFilter>>,
511    /// <p>Information about groups of tags applied to on-premises instances. The deployment group includes only on-premises instances identified by all of the tag groups. Cannot be used in the same call as <code>onPremisesInstanceTagFilters</code>.</p>
512    #[serde(rename = "onPremisesTagSet")]
513    #[serde(skip_serializing_if = "Option::is_none")]
514    pub on_premises_tag_set: Option<OnPremisesTagSet>,
515    /// <p>Indicates what happens when new EC2 instances are launched mid-deployment and do not receive the deployed application revision.</p> <p>If this option is set to <code>UPDATE</code> or is unspecified, CodeDeploy initiates one or more 'auto-update outdated instances' deployments to apply the deployed application revision to the new EC2 instances.</p> <p>If this option is set to <code>IGNORE</code>, CodeDeploy does not initiate a deployment to update the new EC2 instances. This may result in instances having different revisions.</p>
516    #[serde(rename = "outdatedInstancesStrategy")]
517    #[serde(skip_serializing_if = "Option::is_none")]
518    pub outdated_instances_strategy: Option<String>,
519    /// <p>A service role Amazon Resource Name (ARN) that allows AWS CodeDeploy to act on the user's behalf when interacting with AWS services.</p>
520    #[serde(rename = "serviceRoleArn")]
521    pub service_role_arn: String,
522    /// <p> The metadata that you apply to CodeDeploy deployment groups to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define. </p>
523    #[serde(rename = "tags")]
524    #[serde(skip_serializing_if = "Option::is_none")]
525    pub tags: Option<Vec<Tag>>,
526    /// <p>Information about triggers to create when the deployment group is created. For examples, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-notify-sns.html">Create a Trigger for an AWS CodeDeploy Event</a> in the <i>AWS CodeDeploy User Guide</i>.</p>
527    #[serde(rename = "triggerConfigurations")]
528    #[serde(skip_serializing_if = "Option::is_none")]
529    pub trigger_configurations: Option<Vec<TriggerConfig>>,
530}
531
532/// <p>Represents the output of a <code>CreateDeploymentGroup</code> operation.</p>
533#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
534#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
535pub struct CreateDeploymentGroupOutput {
536    /// <p>A unique deployment group ID.</p>
537    #[serde(rename = "deploymentGroupId")]
538    #[serde(skip_serializing_if = "Option::is_none")]
539    pub deployment_group_id: Option<String>,
540}
541
542/// <p>Represents the input of a <code>CreateDeployment</code> operation.</p>
543#[derive(Clone, Debug, Default, PartialEq, Serialize)]
544#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
545pub struct CreateDeploymentInput {
546    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
547    #[serde(rename = "applicationName")]
548    pub application_name: String,
549    /// <p>Configuration information for an automatic rollback that is added when a deployment is created.</p>
550    #[serde(rename = "autoRollbackConfiguration")]
551    #[serde(skip_serializing_if = "Option::is_none")]
552    pub auto_rollback_configuration: Option<AutoRollbackConfiguration>,
553    /// <p>The name of a deployment configuration associated with the IAM user or AWS account.</p> <p>If not specified, the value configured in the deployment group is used as the default. If the deployment group does not have a deployment configuration associated with it, <code>CodeDeployDefault</code>.<code>OneAtATime</code> is used by default.</p>
554    #[serde(rename = "deploymentConfigName")]
555    #[serde(skip_serializing_if = "Option::is_none")]
556    pub deployment_config_name: Option<String>,
557    /// <p>The name of the deployment group.</p>
558    #[serde(rename = "deploymentGroupName")]
559    #[serde(skip_serializing_if = "Option::is_none")]
560    pub deployment_group_name: Option<String>,
561    /// <p>A comment about the deployment.</p>
562    #[serde(rename = "description")]
563    #[serde(skip_serializing_if = "Option::is_none")]
564    pub description: Option<String>,
565    /// <p><p>Information about how AWS CodeDeploy handles files that already exist in a deployment target location but weren&#39;t part of the previous successful deployment.</p> <p>The <code>fileExistsBehavior</code> parameter takes any of the following values:</p> <ul> <li> <p>DISALLOW: The deployment fails. This is also the default behavior if no option is specified.</p> </li> <li> <p>OVERWRITE: The version of the file from the application revision currently being deployed replaces the version already on the instance.</p> </li> <li> <p>RETAIN: The version of the file already on the instance is kept and used as part of the new deployment.</p> </li> </ul></p>
566    #[serde(rename = "fileExistsBehavior")]
567    #[serde(skip_serializing_if = "Option::is_none")]
568    pub file_exists_behavior: Option<String>,
569    /// <p> If true, then if an <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, or <code>AfterBlockTraffic</code> deployment lifecycle event to an instance fails, then the deployment continues to the next deployment lifecycle event. For example, if <code>ApplicationStop</code> fails, the deployment continues with <code>DownloadBundle</code>. If <code>BeforeBlockTraffic</code> fails, the deployment continues with <code>BlockTraffic</code>. If <code>AfterBlockTraffic</code> fails, the deployment continues with <code>ApplicationStop</code>. </p> <p> If false or not specified, then if a lifecycle event fails during a deployment to an instance, that deployment fails. If deployment to that instance is part of an overall deployment and the number of healthy hosts is not less than the minimum number of healthy hosts, then a deployment to the next instance is attempted. </p> <p> During a deployment, the AWS CodeDeploy agent runs the scripts specified for <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, and <code>AfterBlockTraffic</code> in the AppSpec file from the previous successful deployment. (All other scripts are run from the AppSpec file in the current deployment.) If one of these scripts contains an error and does not run successfully, the deployment can fail. </p> <p> If the cause of the failure is a script from the last successful deployment that will never run successfully, create a new deployment and use <code>ignoreApplicationStopFailures</code> to specify that the <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, and <code>AfterBlockTraffic</code> failures should be ignored. </p>
570    #[serde(rename = "ignoreApplicationStopFailures")]
571    #[serde(skip_serializing_if = "Option::is_none")]
572    pub ignore_application_stop_failures: Option<bool>,
573    /// <p> The type and location of the revision to deploy. </p>
574    #[serde(rename = "revision")]
575    #[serde(skip_serializing_if = "Option::is_none")]
576    pub revision: Option<RevisionLocation>,
577    /// <p> Information about the instances that belong to the replacement environment in a blue/green deployment. </p>
578    #[serde(rename = "targetInstances")]
579    #[serde(skip_serializing_if = "Option::is_none")]
580    pub target_instances: Option<TargetInstances>,
581    /// <p> Indicates whether to deploy to all instances or only to instances that are not running the latest application revision. </p>
582    #[serde(rename = "updateOutdatedInstancesOnly")]
583    #[serde(skip_serializing_if = "Option::is_none")]
584    pub update_outdated_instances_only: Option<bool>,
585}
586
587/// <p> Represents the output of a <code>CreateDeployment</code> operation. </p>
588#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
589#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
590pub struct CreateDeploymentOutput {
591    /// <p> The unique ID of a deployment. </p>
592    #[serde(rename = "deploymentId")]
593    #[serde(skip_serializing_if = "Option::is_none")]
594    pub deployment_id: Option<String>,
595}
596
597/// <p>Represents the input of a <code>DeleteApplication</code> operation.</p>
598#[derive(Clone, Debug, Default, PartialEq, Serialize)]
599#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
600pub struct DeleteApplicationInput {
601    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
602    #[serde(rename = "applicationName")]
603    pub application_name: String,
604}
605
606/// <p>Represents the input of a <code>DeleteDeploymentConfig</code> operation.</p>
607#[derive(Clone, Debug, Default, PartialEq, Serialize)]
608#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
609pub struct DeleteDeploymentConfigInput {
610    /// <p>The name of a deployment configuration associated with the IAM user or AWS account.</p>
611    #[serde(rename = "deploymentConfigName")]
612    pub deployment_config_name: String,
613}
614
615/// <p>Represents the input of a <code>DeleteDeploymentGroup</code> operation.</p>
616#[derive(Clone, Debug, Default, PartialEq, Serialize)]
617#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
618pub struct DeleteDeploymentGroupInput {
619    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
620    #[serde(rename = "applicationName")]
621    pub application_name: String,
622    /// <p>The name of a deployment group for the specified application.</p>
623    #[serde(rename = "deploymentGroupName")]
624    pub deployment_group_name: String,
625}
626
627/// <p>Represents the output of a <code>DeleteDeploymentGroup</code> operation.</p>
628#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
629#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
630pub struct DeleteDeploymentGroupOutput {
631    /// <p>If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the Amazon EC2 instances in the Auto Scaling group. If the output contains data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the Amazon EC2 instances in the Auto Scaling group.</p>
632    #[serde(rename = "hooksNotCleanedUp")]
633    #[serde(skip_serializing_if = "Option::is_none")]
634    pub hooks_not_cleaned_up: Option<Vec<AutoScalingGroup>>,
635}
636
637/// <p>Represents the input of a <code>DeleteGitHubAccount</code> operation.</p>
638#[derive(Clone, Debug, Default, PartialEq, Serialize)]
639#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
640pub struct DeleteGitHubAccountTokenInput {
641    /// <p>The name of the GitHub account connection to delete.</p>
642    #[serde(rename = "tokenName")]
643    #[serde(skip_serializing_if = "Option::is_none")]
644    pub token_name: Option<String>,
645}
646
647/// <p>Represents the output of a <code>DeleteGitHubAccountToken</code> operation.</p>
648#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
649#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
650pub struct DeleteGitHubAccountTokenOutput {
651    /// <p>The name of the GitHub account connection that was deleted.</p>
652    #[serde(rename = "tokenName")]
653    #[serde(skip_serializing_if = "Option::is_none")]
654    pub token_name: Option<String>,
655}
656
657#[derive(Clone, Debug, Default, PartialEq, Serialize)]
658#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
659pub struct DeleteResourcesByExternalIdInput {
660    /// <p>The unique ID of an external resource (for example, a CloudFormation stack ID) that is linked to one or more CodeDeploy resources.</p>
661    #[serde(rename = "externalId")]
662    #[serde(skip_serializing_if = "Option::is_none")]
663    pub external_id: Option<String>,
664}
665
666#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
667#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
668pub struct DeleteResourcesByExternalIdOutput {}
669
670/// <p>Information about a deployment configuration.</p>
671#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
672#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
673pub struct DeploymentConfigInfo {
674    /// <p>The destination platform type for the deployment (<code>Lambda</code>, <code>Server</code>, or <code>ECS</code>).</p>
675    #[serde(rename = "computePlatform")]
676    #[serde(skip_serializing_if = "Option::is_none")]
677    pub compute_platform: Option<String>,
678    /// <p>The time at which the deployment configuration was created.</p>
679    #[serde(rename = "createTime")]
680    #[serde(skip_serializing_if = "Option::is_none")]
681    pub create_time: Option<f64>,
682    /// <p>The deployment configuration ID.</p>
683    #[serde(rename = "deploymentConfigId")]
684    #[serde(skip_serializing_if = "Option::is_none")]
685    pub deployment_config_id: Option<String>,
686    /// <p>The deployment configuration name.</p>
687    #[serde(rename = "deploymentConfigName")]
688    #[serde(skip_serializing_if = "Option::is_none")]
689    pub deployment_config_name: Option<String>,
690    /// <p>Information about the number or percentage of minimum healthy instance.</p>
691    #[serde(rename = "minimumHealthyHosts")]
692    #[serde(skip_serializing_if = "Option::is_none")]
693    pub minimum_healthy_hosts: Option<MinimumHealthyHosts>,
694    /// <p>The configuration that specifies how the deployment traffic is routed. Used for deployments with a Lambda or ECS compute platform only.</p>
695    #[serde(rename = "trafficRoutingConfig")]
696    #[serde(skip_serializing_if = "Option::is_none")]
697    pub traffic_routing_config: Option<TrafficRoutingConfig>,
698}
699
700/// <p>Information about a deployment group.</p>
701#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
702#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
703pub struct DeploymentGroupInfo {
704    /// <p>A list of alarms associated with the deployment group.</p>
705    #[serde(rename = "alarmConfiguration")]
706    #[serde(skip_serializing_if = "Option::is_none")]
707    pub alarm_configuration: Option<AlarmConfiguration>,
708    /// <p>The application name.</p>
709    #[serde(rename = "applicationName")]
710    #[serde(skip_serializing_if = "Option::is_none")]
711    pub application_name: Option<String>,
712    /// <p>Information about the automatic rollback configuration associated with the deployment group.</p>
713    #[serde(rename = "autoRollbackConfiguration")]
714    #[serde(skip_serializing_if = "Option::is_none")]
715    pub auto_rollback_configuration: Option<AutoRollbackConfiguration>,
716    /// <p>A list of associated Auto Scaling groups.</p>
717    #[serde(rename = "autoScalingGroups")]
718    #[serde(skip_serializing_if = "Option::is_none")]
719    pub auto_scaling_groups: Option<Vec<AutoScalingGroup>>,
720    /// <p>Information about blue/green deployment options for a deployment group.</p>
721    #[serde(rename = "blueGreenDeploymentConfiguration")]
722    #[serde(skip_serializing_if = "Option::is_none")]
723    pub blue_green_deployment_configuration: Option<BlueGreenDeploymentConfiguration>,
724    /// <p>The destination platform type for the deployment (<code>Lambda</code>, <code>Server</code>, or <code>ECS</code>).</p>
725    #[serde(rename = "computePlatform")]
726    #[serde(skip_serializing_if = "Option::is_none")]
727    pub compute_platform: Option<String>,
728    /// <p>The deployment configuration name.</p>
729    #[serde(rename = "deploymentConfigName")]
730    #[serde(skip_serializing_if = "Option::is_none")]
731    pub deployment_config_name: Option<String>,
732    /// <p>The deployment group ID.</p>
733    #[serde(rename = "deploymentGroupId")]
734    #[serde(skip_serializing_if = "Option::is_none")]
735    pub deployment_group_id: Option<String>,
736    /// <p>The deployment group name.</p>
737    #[serde(rename = "deploymentGroupName")]
738    #[serde(skip_serializing_if = "Option::is_none")]
739    pub deployment_group_name: Option<String>,
740    /// <p>Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer.</p>
741    #[serde(rename = "deploymentStyle")]
742    #[serde(skip_serializing_if = "Option::is_none")]
743    pub deployment_style: Option<DeploymentStyle>,
744    /// <p>The Amazon EC2 tags on which to filter. The deployment group includes EC2 instances with any of the specified tags.</p>
745    #[serde(rename = "ec2TagFilters")]
746    #[serde(skip_serializing_if = "Option::is_none")]
747    pub ec_2_tag_filters: Option<Vec<EC2TagFilter>>,
748    /// <p>Information about groups of tags applied to an EC2 instance. The deployment group includes only EC2 instances identified by all of the tag groups. Cannot be used in the same call as ec2TagFilters.</p>
749    #[serde(rename = "ec2TagSet")]
750    #[serde(skip_serializing_if = "Option::is_none")]
751    pub ec_2_tag_set: Option<EC2TagSet>,
752    /// <p> The target Amazon ECS services in the deployment group. This applies only to deployment groups that use the Amazon ECS compute platform. A target Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format <code>&lt;clustername&gt;:&lt;servicename&gt;</code>. </p>
753    #[serde(rename = "ecsServices")]
754    #[serde(skip_serializing_if = "Option::is_none")]
755    pub ecs_services: Option<Vec<ECSService>>,
756    /// <p>Information about the most recent attempted deployment to the deployment group.</p>
757    #[serde(rename = "lastAttemptedDeployment")]
758    #[serde(skip_serializing_if = "Option::is_none")]
759    pub last_attempted_deployment: Option<LastDeploymentInfo>,
760    /// <p>Information about the most recent successful deployment to the deployment group.</p>
761    #[serde(rename = "lastSuccessfulDeployment")]
762    #[serde(skip_serializing_if = "Option::is_none")]
763    pub last_successful_deployment: Option<LastDeploymentInfo>,
764    /// <p>Information about the load balancer to use in a deployment.</p>
765    #[serde(rename = "loadBalancerInfo")]
766    #[serde(skip_serializing_if = "Option::is_none")]
767    pub load_balancer_info: Option<LoadBalancerInfo>,
768    /// <p>The on-premises instance tags on which to filter. The deployment group includes on-premises instances with any of the specified tags.</p>
769    #[serde(rename = "onPremisesInstanceTagFilters")]
770    #[serde(skip_serializing_if = "Option::is_none")]
771    pub on_premises_instance_tag_filters: Option<Vec<TagFilter>>,
772    /// <p>Information about groups of tags applied to an on-premises instance. The deployment group includes only on-premises instances identified by all the tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters.</p>
773    #[serde(rename = "onPremisesTagSet")]
774    #[serde(skip_serializing_if = "Option::is_none")]
775    pub on_premises_tag_set: Option<OnPremisesTagSet>,
776    /// <p>Indicates what happens when new EC2 instances are launched mid-deployment and do not receive the deployed application revision.</p> <p>If this option is set to <code>UPDATE</code> or is unspecified, CodeDeploy initiates one or more 'auto-update outdated instances' deployments to apply the deployed application revision to the new EC2 instances.</p> <p>If this option is set to <code>IGNORE</code>, CodeDeploy does not initiate a deployment to update the new EC2 instances. This may result in instances having different revisions.</p>
777    #[serde(rename = "outdatedInstancesStrategy")]
778    #[serde(skip_serializing_if = "Option::is_none")]
779    pub outdated_instances_strategy: Option<String>,
780    /// <p>A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to make calls to AWS services on your behalf. For more information, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html">Create a Service Role for AWS CodeDeploy</a> in the <i>AWS CodeDeploy User Guide</i>.</p>
781    #[serde(rename = "serviceRoleArn")]
782    #[serde(skip_serializing_if = "Option::is_none")]
783    pub service_role_arn: Option<String>,
784    /// <p>Information about the deployment group's target revision, including type and location.</p>
785    #[serde(rename = "targetRevision")]
786    #[serde(skip_serializing_if = "Option::is_none")]
787    pub target_revision: Option<RevisionLocation>,
788    /// <p>Information about triggers associated with the deployment group.</p>
789    #[serde(rename = "triggerConfigurations")]
790    #[serde(skip_serializing_if = "Option::is_none")]
791    pub trigger_configurations: Option<Vec<TriggerConfig>>,
792}
793
794/// <p>Information about a deployment.</p>
795#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
796#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
797pub struct DeploymentInfo {
798    /// <p>Provides information about the results of a deployment, such as whether instances in the original environment in a blue/green deployment were not terminated.</p>
799    #[serde(rename = "additionalDeploymentStatusInfo")]
800    #[serde(skip_serializing_if = "Option::is_none")]
801    pub additional_deployment_status_info: Option<String>,
802    /// <p>The application name.</p>
803    #[serde(rename = "applicationName")]
804    #[serde(skip_serializing_if = "Option::is_none")]
805    pub application_name: Option<String>,
806    /// <p>Information about the automatic rollback configuration associated with the deployment.</p>
807    #[serde(rename = "autoRollbackConfiguration")]
808    #[serde(skip_serializing_if = "Option::is_none")]
809    pub auto_rollback_configuration: Option<AutoRollbackConfiguration>,
810    /// <p>Information about blue/green deployment options for this deployment.</p>
811    #[serde(rename = "blueGreenDeploymentConfiguration")]
812    #[serde(skip_serializing_if = "Option::is_none")]
813    pub blue_green_deployment_configuration: Option<BlueGreenDeploymentConfiguration>,
814    /// <p>A timestamp that indicates when the deployment was complete.</p>
815    #[serde(rename = "completeTime")]
816    #[serde(skip_serializing_if = "Option::is_none")]
817    pub complete_time: Option<f64>,
818    /// <p>The destination platform type for the deployment (<code>Lambda</code>, <code>Server</code>, or <code>ECS</code>).</p>
819    #[serde(rename = "computePlatform")]
820    #[serde(skip_serializing_if = "Option::is_none")]
821    pub compute_platform: Option<String>,
822    /// <p>A timestamp that indicates when the deployment was created.</p>
823    #[serde(rename = "createTime")]
824    #[serde(skip_serializing_if = "Option::is_none")]
825    pub create_time: Option<f64>,
826    /// <p><p>The means by which the deployment was created:</p> <ul> <li> <p> <code>user</code>: A user created the deployment.</p> </li> <li> <p> <code>autoscaling</code>: Amazon EC2 Auto Scaling created the deployment.</p> </li> <li> <p> <code>codeDeployRollback</code>: A rollback process created the deployment.</p> </li> <li> <p> <code>CodeDeployAutoUpdate</code>: An auto-update process created the deployment when it detected outdated EC2 instances.</p> </li> </ul></p>
827    #[serde(rename = "creator")]
828    #[serde(skip_serializing_if = "Option::is_none")]
829    pub creator: Option<String>,
830    /// <p> The deployment configuration name. </p>
831    #[serde(rename = "deploymentConfigName")]
832    #[serde(skip_serializing_if = "Option::is_none")]
833    pub deployment_config_name: Option<String>,
834    /// <p> The deployment group name. </p>
835    #[serde(rename = "deploymentGroupName")]
836    #[serde(skip_serializing_if = "Option::is_none")]
837    pub deployment_group_name: Option<String>,
838    /// <p> The unique ID of a deployment. </p>
839    #[serde(rename = "deploymentId")]
840    #[serde(skip_serializing_if = "Option::is_none")]
841    pub deployment_id: Option<String>,
842    /// <p>A summary of the deployment status of the instances in the deployment.</p>
843    #[serde(rename = "deploymentOverview")]
844    #[serde(skip_serializing_if = "Option::is_none")]
845    pub deployment_overview: Option<DeploymentOverview>,
846    /// <p>Messages that contain information about the status of a deployment.</p>
847    #[serde(rename = "deploymentStatusMessages")]
848    #[serde(skip_serializing_if = "Option::is_none")]
849    pub deployment_status_messages: Option<Vec<String>>,
850    /// <p>Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer.</p>
851    #[serde(rename = "deploymentStyle")]
852    #[serde(skip_serializing_if = "Option::is_none")]
853    pub deployment_style: Option<DeploymentStyle>,
854    /// <p>A comment about the deployment.</p>
855    #[serde(rename = "description")]
856    #[serde(skip_serializing_if = "Option::is_none")]
857    pub description: Option<String>,
858    /// <p>Information about any error associated with this deployment.</p>
859    #[serde(rename = "errorInformation")]
860    #[serde(skip_serializing_if = "Option::is_none")]
861    pub error_information: Option<ErrorInformation>,
862    /// <p>The unique ID for an external resource (for example, a CloudFormation stack ID) that is linked to this deployment.</p>
863    #[serde(rename = "externalId")]
864    #[serde(skip_serializing_if = "Option::is_none")]
865    pub external_id: Option<String>,
866    /// <p><p>Information about how AWS CodeDeploy handles files that already exist in a deployment target location but weren&#39;t part of the previous successful deployment.</p> <ul> <li> <p> <code>DISALLOW</code>: The deployment fails. This is also the default behavior if no option is specified.</p> </li> <li> <p> <code>OVERWRITE</code>: The version of the file from the application revision currently being deployed replaces the version already on the instance.</p> </li> <li> <p> <code>RETAIN</code>: The version of the file already on the instance is kept and used as part of the new deployment.</p> </li> </ul></p>
867    #[serde(rename = "fileExistsBehavior")]
868    #[serde(skip_serializing_if = "Option::is_none")]
869    pub file_exists_behavior: Option<String>,
870    /// <p> If true, then if an <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, or <code>AfterBlockTraffic</code> deployment lifecycle event to an instance fails, then the deployment continues to the next deployment lifecycle event. For example, if <code>ApplicationStop</code> fails, the deployment continues with DownloadBundle. If <code>BeforeBlockTraffic</code> fails, the deployment continues with <code>BlockTraffic</code>. If <code>AfterBlockTraffic</code> fails, the deployment continues with <code>ApplicationStop</code>. </p> <p> If false or not specified, then if a lifecycle event fails during a deployment to an instance, that deployment fails. If deployment to that instance is part of an overall deployment and the number of healthy hosts is not less than the minimum number of healthy hosts, then a deployment to the next instance is attempted. </p> <p> During a deployment, the AWS CodeDeploy agent runs the scripts specified for <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, and <code>AfterBlockTraffic</code> in the AppSpec file from the previous successful deployment. (All other scripts are run from the AppSpec file in the current deployment.) If one of these scripts contains an error and does not run successfully, the deployment can fail. </p> <p> If the cause of the failure is a script from the last successful deployment that will never run successfully, create a new deployment and use <code>ignoreApplicationStopFailures</code> to specify that the <code>ApplicationStop</code>, <code>BeforeBlockTraffic</code>, and <code>AfterBlockTraffic</code> failures should be ignored. </p>
871    #[serde(rename = "ignoreApplicationStopFailures")]
872    #[serde(skip_serializing_if = "Option::is_none")]
873    pub ignore_application_stop_failures: Option<bool>,
874    /// <p>Indicates whether the wait period set for the termination of instances in the original environment has started. Status is 'false' if the KEEP_ALIVE option is specified. Otherwise, 'true' as soon as the termination wait period starts.</p>
875    #[serde(rename = "instanceTerminationWaitTimeStarted")]
876    #[serde(skip_serializing_if = "Option::is_none")]
877    pub instance_termination_wait_time_started: Option<bool>,
878    /// <p>Information about the load balancer used in the deployment.</p>
879    #[serde(rename = "loadBalancerInfo")]
880    #[serde(skip_serializing_if = "Option::is_none")]
881    pub load_balancer_info: Option<LoadBalancerInfo>,
882    /// <p>Information about the application revision that was deployed to the deployment group before the most recent successful deployment.</p>
883    #[serde(rename = "previousRevision")]
884    #[serde(skip_serializing_if = "Option::is_none")]
885    pub previous_revision: Option<RevisionLocation>,
886    #[serde(rename = "relatedDeployments")]
887    #[serde(skip_serializing_if = "Option::is_none")]
888    pub related_deployments: Option<RelatedDeployments>,
889    /// <p>Information about the location of stored application artifacts and the service from which to retrieve them.</p>
890    #[serde(rename = "revision")]
891    #[serde(skip_serializing_if = "Option::is_none")]
892    pub revision: Option<RevisionLocation>,
893    /// <p>Information about a deployment rollback.</p>
894    #[serde(rename = "rollbackInfo")]
895    #[serde(skip_serializing_if = "Option::is_none")]
896    pub rollback_info: Option<RollbackInfo>,
897    /// <p>A timestamp that indicates when the deployment was deployed to the deployment group.</p> <p>In some cases, the reported value of the start time might be later than the complete time. This is due to differences in the clock settings of backend servers that participate in the deployment process.</p>
898    #[serde(rename = "startTime")]
899    #[serde(skip_serializing_if = "Option::is_none")]
900    pub start_time: Option<f64>,
901    /// <p>The current state of the deployment as a whole.</p>
902    #[serde(rename = "status")]
903    #[serde(skip_serializing_if = "Option::is_none")]
904    pub status: Option<String>,
905    /// <p>Information about the instances that belong to the replacement environment in a blue/green deployment.</p>
906    #[serde(rename = "targetInstances")]
907    #[serde(skip_serializing_if = "Option::is_none")]
908    pub target_instances: Option<TargetInstances>,
909    /// <p>Indicates whether only instances that are not running the latest application revision are to be deployed to.</p>
910    #[serde(rename = "updateOutdatedInstancesOnly")]
911    #[serde(skip_serializing_if = "Option::is_none")]
912    pub update_outdated_instances_only: Option<bool>,
913}
914
915/// <p>Information about the deployment status of the instances in the deployment.</p>
916#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
917#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
918pub struct DeploymentOverview {
919    /// <p>The number of instances in the deployment in a failed state.</p>
920    #[serde(rename = "Failed")]
921    #[serde(skip_serializing_if = "Option::is_none")]
922    pub failed: Option<i64>,
923    /// <p>The number of instances in which the deployment is in progress.</p>
924    #[serde(rename = "InProgress")]
925    #[serde(skip_serializing_if = "Option::is_none")]
926    pub in_progress: Option<i64>,
927    /// <p>The number of instances in the deployment in a pending state.</p>
928    #[serde(rename = "Pending")]
929    #[serde(skip_serializing_if = "Option::is_none")]
930    pub pending: Option<i64>,
931    /// <p>The number of instances in a replacement environment ready to receive traffic in a blue/green deployment.</p>
932    #[serde(rename = "Ready")]
933    #[serde(skip_serializing_if = "Option::is_none")]
934    pub ready: Option<i64>,
935    /// <p>The number of instances in the deployment in a skipped state.</p>
936    #[serde(rename = "Skipped")]
937    #[serde(skip_serializing_if = "Option::is_none")]
938    pub skipped: Option<i64>,
939    /// <p>The number of instances in the deployment to which revisions have been successfully deployed.</p>
940    #[serde(rename = "Succeeded")]
941    #[serde(skip_serializing_if = "Option::is_none")]
942    pub succeeded: Option<i64>,
943}
944
945/// <p>Information about how traffic is rerouted to instances in a replacement environment in a blue/green deployment.</p>
946#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
947pub struct DeploymentReadyOption {
948    /// <p><p>Information about when to reroute traffic from an original environment to a replacement environment in a blue/green deployment.</p> <ul> <li> <p>CONTINUE<em>DEPLOYMENT: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment.</p> </li> <li> <p>STOP</em>DEPLOYMENT: Do not register new instances with a load balancer unless traffic rerouting is started using <a>ContinueDeployment</a>. If traffic rerouting is not started before the end of the specified wait period, the deployment status is changed to Stopped.</p> </li> </ul></p>
949    #[serde(rename = "actionOnTimeout")]
950    #[serde(skip_serializing_if = "Option::is_none")]
951    pub action_on_timeout: Option<String>,
952    /// <p>The number of minutes to wait before the status of a blue/green deployment is changed to Stopped if rerouting is not started manually. Applies only to the <code>STOP_DEPLOYMENT</code> option for <code>actionOnTimeout</code>.</p>
953    #[serde(rename = "waitTimeInMinutes")]
954    #[serde(skip_serializing_if = "Option::is_none")]
955    pub wait_time_in_minutes: Option<i64>,
956}
957
958/// <p>Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer.</p>
959#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
960pub struct DeploymentStyle {
961    /// <p>Indicates whether to route deployment traffic behind a load balancer.</p>
962    #[serde(rename = "deploymentOption")]
963    #[serde(skip_serializing_if = "Option::is_none")]
964    pub deployment_option: Option<String>,
965    /// <p>Indicates whether to run an in-place deployment or a blue/green deployment.</p>
966    #[serde(rename = "deploymentType")]
967    #[serde(skip_serializing_if = "Option::is_none")]
968    pub deployment_type: Option<String>,
969}
970
971/// <p> Information about the deployment target. </p>
972#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
973#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
974pub struct DeploymentTarget {
975    #[serde(rename = "cloudFormationTarget")]
976    #[serde(skip_serializing_if = "Option::is_none")]
977    pub cloud_formation_target: Option<CloudFormationTarget>,
978    /// <p>The deployment type that is specific to the deployment's compute platform or deployments initiated by a CloudFormation stack update.</p>
979    #[serde(rename = "deploymentTargetType")]
980    #[serde(skip_serializing_if = "Option::is_none")]
981    pub deployment_target_type: Option<String>,
982    /// <p> Information about the target for a deployment that uses the Amazon ECS compute platform. </p>
983    #[serde(rename = "ecsTarget")]
984    #[serde(skip_serializing_if = "Option::is_none")]
985    pub ecs_target: Option<ECSTarget>,
986    /// <p> Information about the target for a deployment that uses the EC2/On-premises compute platform. </p>
987    #[serde(rename = "instanceTarget")]
988    #[serde(skip_serializing_if = "Option::is_none")]
989    pub instance_target: Option<InstanceTarget>,
990    /// <p> Information about the target for a deployment that uses the AWS Lambda compute platform. </p>
991    #[serde(rename = "lambdaTarget")]
992    #[serde(skip_serializing_if = "Option::is_none")]
993    pub lambda_target: Option<LambdaTarget>,
994}
995
996/// <p>Represents the input of a <code>DeregisterOnPremisesInstance</code> operation.</p>
997#[derive(Clone, Debug, Default, PartialEq, Serialize)]
998#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
999pub struct DeregisterOnPremisesInstanceInput {
1000    /// <p>The name of the on-premises instance to deregister.</p>
1001    #[serde(rename = "instanceName")]
1002    pub instance_name: String,
1003}
1004
1005/// <p>Diagnostic information about executable scripts that are part of a deployment.</p>
1006#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1007#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1008pub struct Diagnostics {
1009    /// <p><p>The associated error code:</p> <ul> <li> <p>Success: The specified script ran.</p> </li> <li> <p>ScriptMissing: The specified script was not found in the specified location.</p> </li> <li> <p>ScriptNotExecutable: The specified script is not a recognized executable file type.</p> </li> <li> <p>ScriptTimedOut: The specified script did not finish running in the specified time period.</p> </li> <li> <p>ScriptFailed: The specified script failed to run as expected.</p> </li> <li> <p>UnknownError: The specified script did not run for an unknown reason.</p> </li> </ul></p>
1010    #[serde(rename = "errorCode")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub error_code: Option<String>,
1013    /// <p>The last portion of the diagnostic log.</p> <p>If available, AWS CodeDeploy returns up to the last 4 KB of the diagnostic log.</p>
1014    #[serde(rename = "logTail")]
1015    #[serde(skip_serializing_if = "Option::is_none")]
1016    pub log_tail: Option<String>,
1017    /// <p>The message associated with the error.</p>
1018    #[serde(rename = "message")]
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    pub message: Option<String>,
1021    /// <p>The name of the script.</p>
1022    #[serde(rename = "scriptName")]
1023    #[serde(skip_serializing_if = "Option::is_none")]
1024    pub script_name: Option<String>,
1025}
1026
1027/// <p>Information about an EC2 tag filter.</p>
1028#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1029pub struct EC2TagFilter {
1030    /// <p>The tag filter key.</p>
1031    #[serde(rename = "Key")]
1032    #[serde(skip_serializing_if = "Option::is_none")]
1033    pub key: Option<String>,
1034    /// <p><p>The tag filter type:</p> <ul> <li> <p> <code>KEY<em>ONLY</code>: Key only.</p> </li> <li> <p> <code>VALUE</em>ONLY</code>: Value only.</p> </li> <li> <p> <code>KEY<em>AND</em>VALUE</code>: Key and value.</p> </li> </ul></p>
1035    #[serde(rename = "Type")]
1036    #[serde(skip_serializing_if = "Option::is_none")]
1037    pub type_: Option<String>,
1038    /// <p>The tag filter value.</p>
1039    #[serde(rename = "Value")]
1040    #[serde(skip_serializing_if = "Option::is_none")]
1041    pub value: Option<String>,
1042}
1043
1044/// <p>Information about groups of EC2 instance tags.</p>
1045#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1046pub struct EC2TagSet {
1047    /// <p>A list that contains other lists of EC2 instance tag groups. For an instance to be included in the deployment group, it must be identified by all of the tag groups in the list.</p>
1048    #[serde(rename = "ec2TagSetList")]
1049    #[serde(skip_serializing_if = "Option::is_none")]
1050    pub ec_2_tag_set_list: Option<Vec<Vec<EC2TagFilter>>>,
1051}
1052
1053/// <p> Contains the service and cluster names used to identify an Amazon ECS deployment's target. </p>
1054#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1055pub struct ECSService {
1056    /// <p> The name of the cluster that the Amazon ECS service is associated with. </p>
1057    #[serde(rename = "clusterName")]
1058    #[serde(skip_serializing_if = "Option::is_none")]
1059    pub cluster_name: Option<String>,
1060    /// <p> The name of the target Amazon ECS service. </p>
1061    #[serde(rename = "serviceName")]
1062    #[serde(skip_serializing_if = "Option::is_none")]
1063    pub service_name: Option<String>,
1064}
1065
1066/// <p> Information about the target of an Amazon ECS deployment. </p>
1067#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1068#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1069pub struct ECSTarget {
1070    /// <p> The unique ID of a deployment. </p>
1071    #[serde(rename = "deploymentId")]
1072    #[serde(skip_serializing_if = "Option::is_none")]
1073    pub deployment_id: Option<String>,
1074    /// <p> The date and time when the target Amazon ECS application was updated by a deployment. </p>
1075    #[serde(rename = "lastUpdatedAt")]
1076    #[serde(skip_serializing_if = "Option::is_none")]
1077    pub last_updated_at: Option<f64>,
1078    /// <p> The lifecycle events of the deployment to this target Amazon ECS application. </p>
1079    #[serde(rename = "lifecycleEvents")]
1080    #[serde(skip_serializing_if = "Option::is_none")]
1081    pub lifecycle_events: Option<Vec<LifecycleEvent>>,
1082    /// <p> The status an Amazon ECS deployment's target ECS application. </p>
1083    #[serde(rename = "status")]
1084    #[serde(skip_serializing_if = "Option::is_none")]
1085    pub status: Option<String>,
1086    /// <p> The Amazon Resource Name (ARN) of the target. </p>
1087    #[serde(rename = "targetArn")]
1088    #[serde(skip_serializing_if = "Option::is_none")]
1089    pub target_arn: Option<String>,
1090    /// <p> The unique ID of a deployment target that has a type of <code>ecsTarget</code>. </p>
1091    #[serde(rename = "targetId")]
1092    #[serde(skip_serializing_if = "Option::is_none")]
1093    pub target_id: Option<String>,
1094    /// <p> The <code>ECSTaskSet</code> objects associated with the ECS target. </p>
1095    #[serde(rename = "taskSetsInfo")]
1096    #[serde(skip_serializing_if = "Option::is_none")]
1097    pub task_sets_info: Option<Vec<ECSTaskSet>>,
1098}
1099
1100/// <p> Information about a set of Amazon ECS tasks in an AWS CodeDeploy deployment. An Amazon ECS task set includes details such as the desired number of tasks, how many tasks are running, and whether the task set serves production traffic. An AWS CodeDeploy application that uses the Amazon ECS compute platform deploys a containerized application in an Amazon ECS service as a task set. </p>
1101#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1102#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1103pub struct ECSTaskSet {
1104    /// <p> The number of tasks in a task set. During a deployment that uses the Amazon ECS compute type, CodeDeploy instructs Amazon ECS to create a new task set and uses this value to determine how many tasks to create. After the updated task set is created, CodeDeploy shifts traffic to the new task set. </p>
1105    #[serde(rename = "desiredCount")]
1106    #[serde(skip_serializing_if = "Option::is_none")]
1107    pub desired_count: Option<i64>,
1108    /// <p> A unique ID of an <code>ECSTaskSet</code>. </p>
1109    #[serde(rename = "identifer")]
1110    #[serde(skip_serializing_if = "Option::is_none")]
1111    pub identifer: Option<String>,
1112    /// <p> The number of tasks in the task set that are in the <code>PENDING</code> status during an Amazon ECS deployment. A task in the <code>PENDING</code> state is preparing to enter the <code>RUNNING</code> state. A task set enters the <code>PENDING</code> status when it launches for the first time, or when it is restarted after being in the <code>STOPPED</code> state. </p>
1113    #[serde(rename = "pendingCount")]
1114    #[serde(skip_serializing_if = "Option::is_none")]
1115    pub pending_count: Option<i64>,
1116    /// <p> The number of tasks in the task set that are in the <code>RUNNING</code> status during an Amazon ECS deployment. A task in the <code>RUNNING</code> state is running and ready for use. </p>
1117    #[serde(rename = "runningCount")]
1118    #[serde(skip_serializing_if = "Option::is_none")]
1119    pub running_count: Option<i64>,
1120    /// <p><p> The status of the task set. There are three valid task set statuses: </p> <ul> <li> <p> <code>PRIMARY</code>: Indicates the task set is serving production traffic. </p> </li> <li> <p> <code>ACTIVE</code>: Indicates the task set is not serving production traffic. </p> </li> <li> <p> <code>DRAINING</code>: Indicates the tasks in the task set are being stopped and their corresponding targets are being deregistered from their target group. </p> </li> </ul></p>
1121    #[serde(rename = "status")]
1122    #[serde(skip_serializing_if = "Option::is_none")]
1123    pub status: Option<String>,
1124    /// <p> The target group associated with the task set. The target group is used by AWS CodeDeploy to manage traffic to a task set. </p>
1125    #[serde(rename = "targetGroup")]
1126    #[serde(skip_serializing_if = "Option::is_none")]
1127    pub target_group: Option<TargetGroupInfo>,
1128    /// <p> A label that identifies whether the ECS task set is an original target (<code>BLUE</code>) or a replacement target (<code>GREEN</code>). </p>
1129    #[serde(rename = "taskSetLabel")]
1130    #[serde(skip_serializing_if = "Option::is_none")]
1131    pub task_set_label: Option<String>,
1132    /// <p> The percentage of traffic served by this task set. </p>
1133    #[serde(rename = "trafficWeight")]
1134    #[serde(skip_serializing_if = "Option::is_none")]
1135    pub traffic_weight: Option<f64>,
1136}
1137
1138/// <p>Information about a load balancer in Elastic Load Balancing to use in a deployment. Instances are registered directly with a load balancer, and traffic is routed to the load balancer.</p>
1139#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1140pub struct ELBInfo {
1141    /// <p>For blue/green deployments, the name of the load balancer that is used to route traffic from original instances to replacement instances in a blue/green deployment. For in-place deployments, the name of the load balancer that instances are deregistered from so they are not serving traffic during a deployment, and then re-registered with after the deployment is complete.</p>
1142    #[serde(rename = "name")]
1143    #[serde(skip_serializing_if = "Option::is_none")]
1144    pub name: Option<String>,
1145}
1146
1147/// <p>Information about a deployment error.</p>
1148#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1149#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1150pub struct ErrorInformation {
1151    /// <p><p>For more information, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/error-codes.html">Error Codes for AWS CodeDeploy</a> in the <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide">AWS CodeDeploy User Guide</a>.</p> <p>The error code:</p> <ul> <li> <p>APPLICATION<em>MISSING: The application was missing. This error code is most likely raised if the application is deleted after the deployment is created, but before it is started.</p> </li> <li> <p>DEPLOYMENT</em>GROUP<em>MISSING: The deployment group was missing. This error code is most likely raised if the deployment group is deleted after the deployment is created, but before it is started.</p> </li> <li> <p>HEALTH</em>CONSTRAINTS: The deployment failed on too many instances to be successfully deployed within the instance health constraints specified.</p> </li> <li> <p>HEALTH<em>CONSTRAINTS</em>INVALID: The revision cannot be successfully deployed within the instance health constraints specified.</p> </li> <li> <p>IAM<em>ROLE</em>MISSING: The service role cannot be accessed.</p> </li> <li> <p>IAM<em>ROLE</em>PERMISSIONS: The service role does not have the correct permissions.</p> </li> <li> <p>INTERNAL<em>ERROR: There was an internal error.</p> </li> <li> <p>NO</em>EC2<em>SUBSCRIPTION: The calling account is not subscribed to Amazon EC2.</p> </li> <li> <p>NO</em>INSTANCES: No instances were specified, or no instances can be found.</p> </li> <li> <p>OVER<em>MAX</em>INSTANCES: The maximum number of instances was exceeded.</p> </li> <li> <p>THROTTLED: The operation was throttled because the calling account exceeded the throttling limits of one or more AWS services.</p> </li> <li> <p>TIMEOUT: The deployment has timed out.</p> </li> <li> <p>REVISION_MISSING: The revision ID was missing. This error code is most likely raised if the revision is deleted after the deployment is created, but before it is started.</p> </li> </ul></p>
1152    #[serde(rename = "code")]
1153    #[serde(skip_serializing_if = "Option::is_none")]
1154    pub code: Option<String>,
1155    /// <p>An accompanying error message.</p>
1156    #[serde(rename = "message")]
1157    #[serde(skip_serializing_if = "Option::is_none")]
1158    pub message: Option<String>,
1159}
1160
1161/// <p>Information about an application revision.</p>
1162#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1163#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1164pub struct GenericRevisionInfo {
1165    /// <p>The deployment groups for which this is the current target revision.</p>
1166    #[serde(rename = "deploymentGroups")]
1167    #[serde(skip_serializing_if = "Option::is_none")]
1168    pub deployment_groups: Option<Vec<String>>,
1169    /// <p>A comment about the revision.</p>
1170    #[serde(rename = "description")]
1171    #[serde(skip_serializing_if = "Option::is_none")]
1172    pub description: Option<String>,
1173    /// <p>When the revision was first used by AWS CodeDeploy.</p>
1174    #[serde(rename = "firstUsedTime")]
1175    #[serde(skip_serializing_if = "Option::is_none")]
1176    pub first_used_time: Option<f64>,
1177    /// <p>When the revision was last used by AWS CodeDeploy.</p>
1178    #[serde(rename = "lastUsedTime")]
1179    #[serde(skip_serializing_if = "Option::is_none")]
1180    pub last_used_time: Option<f64>,
1181    /// <p>When the revision was registered with AWS CodeDeploy.</p>
1182    #[serde(rename = "registerTime")]
1183    #[serde(skip_serializing_if = "Option::is_none")]
1184    pub register_time: Option<f64>,
1185}
1186
1187/// <p>Represents the input of a <code>GetApplication</code> operation.</p>
1188#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1189#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1190pub struct GetApplicationInput {
1191    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
1192    #[serde(rename = "applicationName")]
1193    pub application_name: String,
1194}
1195
1196/// <p>Represents the output of a <code>GetApplication</code> operation.</p>
1197#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1198#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1199pub struct GetApplicationOutput {
1200    /// <p>Information about the application.</p>
1201    #[serde(rename = "application")]
1202    #[serde(skip_serializing_if = "Option::is_none")]
1203    pub application: Option<ApplicationInfo>,
1204}
1205
1206/// <p>Represents the input of a <code>GetApplicationRevision</code> operation.</p>
1207#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1208#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1209pub struct GetApplicationRevisionInput {
1210    /// <p>The name of the application that corresponds to the revision.</p>
1211    #[serde(rename = "applicationName")]
1212    pub application_name: String,
1213    /// <p>Information about the application revision to get, including type and location.</p>
1214    #[serde(rename = "revision")]
1215    pub revision: RevisionLocation,
1216}
1217
1218/// <p>Represents the output of a <code>GetApplicationRevision</code> operation.</p>
1219#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1220#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1221pub struct GetApplicationRevisionOutput {
1222    /// <p>The name of the application that corresponds to the revision.</p>
1223    #[serde(rename = "applicationName")]
1224    #[serde(skip_serializing_if = "Option::is_none")]
1225    pub application_name: Option<String>,
1226    /// <p>Additional information about the revision, including type and location.</p>
1227    #[serde(rename = "revision")]
1228    #[serde(skip_serializing_if = "Option::is_none")]
1229    pub revision: Option<RevisionLocation>,
1230    /// <p>General information about the revision.</p>
1231    #[serde(rename = "revisionInfo")]
1232    #[serde(skip_serializing_if = "Option::is_none")]
1233    pub revision_info: Option<GenericRevisionInfo>,
1234}
1235
1236/// <p>Represents the input of a <code>GetDeploymentConfig</code> operation.</p>
1237#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1238#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1239pub struct GetDeploymentConfigInput {
1240    /// <p>The name of a deployment configuration associated with the IAM user or AWS account.</p>
1241    #[serde(rename = "deploymentConfigName")]
1242    pub deployment_config_name: String,
1243}
1244
1245/// <p>Represents the output of a <code>GetDeploymentConfig</code> operation.</p>
1246#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1247#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1248pub struct GetDeploymentConfigOutput {
1249    /// <p>Information about the deployment configuration.</p>
1250    #[serde(rename = "deploymentConfigInfo")]
1251    #[serde(skip_serializing_if = "Option::is_none")]
1252    pub deployment_config_info: Option<DeploymentConfigInfo>,
1253}
1254
1255/// <p>Represents the input of a <code>GetDeploymentGroup</code> operation.</p>
1256#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1257#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1258pub struct GetDeploymentGroupInput {
1259    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
1260    #[serde(rename = "applicationName")]
1261    pub application_name: String,
1262    /// <p>The name of a deployment group for the specified application.</p>
1263    #[serde(rename = "deploymentGroupName")]
1264    pub deployment_group_name: String,
1265}
1266
1267/// <p>Represents the output of a <code>GetDeploymentGroup</code> operation.</p>
1268#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1269#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1270pub struct GetDeploymentGroupOutput {
1271    /// <p>Information about the deployment group.</p>
1272    #[serde(rename = "deploymentGroupInfo")]
1273    #[serde(skip_serializing_if = "Option::is_none")]
1274    pub deployment_group_info: Option<DeploymentGroupInfo>,
1275}
1276
1277/// <p>Represents the input of a <code>GetDeployment</code> operation.</p>
1278#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1279#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1280pub struct GetDeploymentInput {
1281    /// <p> The unique ID of a deployment associated with the IAM user or AWS account. </p>
1282    #[serde(rename = "deploymentId")]
1283    pub deployment_id: String,
1284}
1285
1286/// <p> Represents the input of a <code>GetDeploymentInstance</code> operation. </p>
1287#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1288#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1289pub struct GetDeploymentInstanceInput {
1290    /// <p> The unique ID of a deployment. </p>
1291    #[serde(rename = "deploymentId")]
1292    pub deployment_id: String,
1293    /// <p> The unique ID of an instance in the deployment group. </p>
1294    #[serde(rename = "instanceId")]
1295    pub instance_id: String,
1296}
1297
1298/// <p> Represents the output of a <code>GetDeploymentInstance</code> operation. </p>
1299#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1300#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1301pub struct GetDeploymentInstanceOutput {
1302    /// <p> Information about the instance. </p>
1303    #[serde(rename = "instanceSummary")]
1304    #[serde(skip_serializing_if = "Option::is_none")]
1305    pub instance_summary: Option<InstanceSummary>,
1306}
1307
1308/// <p>Represents the output of a <code>GetDeployment</code> operation.</p>
1309#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1310#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1311pub struct GetDeploymentOutput {
1312    /// <p>Information about the deployment.</p>
1313    #[serde(rename = "deploymentInfo")]
1314    #[serde(skip_serializing_if = "Option::is_none")]
1315    pub deployment_info: Option<DeploymentInfo>,
1316}
1317
1318#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1319#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1320pub struct GetDeploymentTargetInput {
1321    /// <p> The unique ID of a deployment. </p>
1322    #[serde(rename = "deploymentId")]
1323    #[serde(skip_serializing_if = "Option::is_none")]
1324    pub deployment_id: Option<String>,
1325    /// <p> The unique ID of a deployment target. </p>
1326    #[serde(rename = "targetId")]
1327    #[serde(skip_serializing_if = "Option::is_none")]
1328    pub target_id: Option<String>,
1329}
1330
1331#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1332#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1333pub struct GetDeploymentTargetOutput {
1334    /// <p> A deployment target that contains information about a deployment such as its status, lifecycle events, and when it was last updated. It also contains metadata about the deployment target. The deployment target metadata depends on the deployment target's type (<code>instanceTarget</code>, <code>lambdaTarget</code>, or <code>ecsTarget</code>). </p>
1335    #[serde(rename = "deploymentTarget")]
1336    #[serde(skip_serializing_if = "Option::is_none")]
1337    pub deployment_target: Option<DeploymentTarget>,
1338}
1339
1340/// <p> Represents the input of a <code>GetOnPremisesInstance</code> operation. </p>
1341#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1342#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1343pub struct GetOnPremisesInstanceInput {
1344    /// <p> The name of the on-premises instance about which to get information. </p>
1345    #[serde(rename = "instanceName")]
1346    pub instance_name: String,
1347}
1348
1349/// <p> Represents the output of a <code>GetOnPremisesInstance</code> operation. </p>
1350#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1351#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1352pub struct GetOnPremisesInstanceOutput {
1353    /// <p> Information about the on-premises instance. </p>
1354    #[serde(rename = "instanceInfo")]
1355    #[serde(skip_serializing_if = "Option::is_none")]
1356    pub instance_info: Option<InstanceInfo>,
1357}
1358
1359/// <p>Information about the location of application artifacts stored in GitHub.</p>
1360#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1361pub struct GitHubLocation {
1362    /// <p>The SHA1 commit ID of the GitHub commit that represents the bundled artifacts for the application revision.</p>
1363    #[serde(rename = "commitId")]
1364    #[serde(skip_serializing_if = "Option::is_none")]
1365    pub commit_id: Option<String>,
1366    /// <p>The GitHub account and repository pair that stores a reference to the commit that represents the bundled artifacts for the application revision. </p> <p>Specified as account/repository.</p>
1367    #[serde(rename = "repository")]
1368    #[serde(skip_serializing_if = "Option::is_none")]
1369    pub repository: Option<String>,
1370}
1371
1372/// <p>Information about the instances that belong to the replacement environment in a blue/green deployment.</p>
1373#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1374pub struct GreenFleetProvisioningOption {
1375    /// <p><p>The method used to add instances to a replacement environment.</p> <ul> <li> <p> <code>DISCOVER<em>EXISTING</code>: Use instances that already exist or will be created manually.</p> </li> <li> <p> <code>COPY</em>AUTO<em>SCALING</em>GROUP</code>: Use settings from a specified Auto Scaling group to define and create instances in a new Auto Scaling group.</p> </li> </ul></p>
1376    #[serde(rename = "action")]
1377    #[serde(skip_serializing_if = "Option::is_none")]
1378    pub action: Option<String>,
1379}
1380
1381/// <p>Information about an on-premises instance.</p>
1382#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1383#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1384pub struct InstanceInfo {
1385    /// <p>If the on-premises instance was deregistered, the time at which the on-premises instance was deregistered.</p>
1386    #[serde(rename = "deregisterTime")]
1387    #[serde(skip_serializing_if = "Option::is_none")]
1388    pub deregister_time: Option<f64>,
1389    /// <p>The ARN of the IAM session associated with the on-premises instance.</p>
1390    #[serde(rename = "iamSessionArn")]
1391    #[serde(skip_serializing_if = "Option::is_none")]
1392    pub iam_session_arn: Option<String>,
1393    /// <p>The IAM user ARN associated with the on-premises instance.</p>
1394    #[serde(rename = "iamUserArn")]
1395    #[serde(skip_serializing_if = "Option::is_none")]
1396    pub iam_user_arn: Option<String>,
1397    /// <p>The ARN of the on-premises instance.</p>
1398    #[serde(rename = "instanceArn")]
1399    #[serde(skip_serializing_if = "Option::is_none")]
1400    pub instance_arn: Option<String>,
1401    /// <p>The name of the on-premises instance.</p>
1402    #[serde(rename = "instanceName")]
1403    #[serde(skip_serializing_if = "Option::is_none")]
1404    pub instance_name: Option<String>,
1405    /// <p>The time at which the on-premises instance was registered.</p>
1406    #[serde(rename = "registerTime")]
1407    #[serde(skip_serializing_if = "Option::is_none")]
1408    pub register_time: Option<f64>,
1409    /// <p>The tags currently associated with the on-premises instance.</p>
1410    #[serde(rename = "tags")]
1411    #[serde(skip_serializing_if = "Option::is_none")]
1412    pub tags: Option<Vec<Tag>>,
1413}
1414
1415/// <p>Information about an instance in a deployment.</p>
1416#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1417#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1418pub struct InstanceSummary {
1419    /// <p> The unique ID of a deployment. </p>
1420    #[serde(rename = "deploymentId")]
1421    #[serde(skip_serializing_if = "Option::is_none")]
1422    pub deployment_id: Option<String>,
1423    /// <p>The instance ID.</p>
1424    #[serde(rename = "instanceId")]
1425    #[serde(skip_serializing_if = "Option::is_none")]
1426    pub instance_id: Option<String>,
1427    /// <p><p>Information about which environment an instance belongs to in a blue/green deployment.</p> <ul> <li> <p>BLUE: The instance is part of the original environment.</p> </li> <li> <p>GREEN: The instance is part of the replacement environment.</p> </li> </ul></p>
1428    #[serde(rename = "instanceType")]
1429    #[serde(skip_serializing_if = "Option::is_none")]
1430    pub instance_type: Option<String>,
1431    /// <p>A timestamp that indicates when the instance information was last updated.</p>
1432    #[serde(rename = "lastUpdatedAt")]
1433    #[serde(skip_serializing_if = "Option::is_none")]
1434    pub last_updated_at: Option<f64>,
1435    /// <p>A list of lifecycle events for this instance.</p>
1436    #[serde(rename = "lifecycleEvents")]
1437    #[serde(skip_serializing_if = "Option::is_none")]
1438    pub lifecycle_events: Option<Vec<LifecycleEvent>>,
1439    /// <p><p>The deployment status for this instance:</p> <ul> <li> <p> <code>Pending</code>: The deployment is pending for this instance.</p> </li> <li> <p> <code>In Progress</code>: The deployment is in progress for this instance.</p> </li> <li> <p> <code>Succeeded</code>: The deployment has succeeded for this instance.</p> </li> <li> <p> <code>Failed</code>: The deployment has failed for this instance.</p> </li> <li> <p> <code>Skipped</code>: The deployment has been skipped for this instance.</p> </li> <li> <p> <code>Unknown</code>: The deployment status is unknown for this instance.</p> </li> </ul></p>
1440    #[serde(rename = "status")]
1441    #[serde(skip_serializing_if = "Option::is_none")]
1442    pub status: Option<String>,
1443}
1444
1445/// <p> A target Amazon EC2 or on-premises instance during a deployment that uses the EC2/On-premises compute platform. </p>
1446#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1447#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1448pub struct InstanceTarget {
1449    /// <p> The unique ID of a deployment. </p>
1450    #[serde(rename = "deploymentId")]
1451    #[serde(skip_serializing_if = "Option::is_none")]
1452    pub deployment_id: Option<String>,
1453    /// <p> A label that identifies whether the instance is an original target (<code>BLUE</code>) or a replacement target (<code>GREEN</code>). </p>
1454    #[serde(rename = "instanceLabel")]
1455    #[serde(skip_serializing_if = "Option::is_none")]
1456    pub instance_label: Option<String>,
1457    /// <p> The date and time when the target instance was updated by a deployment. </p>
1458    #[serde(rename = "lastUpdatedAt")]
1459    #[serde(skip_serializing_if = "Option::is_none")]
1460    pub last_updated_at: Option<f64>,
1461    /// <p> The lifecycle events of the deployment to this target instance. </p>
1462    #[serde(rename = "lifecycleEvents")]
1463    #[serde(skip_serializing_if = "Option::is_none")]
1464    pub lifecycle_events: Option<Vec<LifecycleEvent>>,
1465    /// <p> The status an EC2/On-premises deployment's target instance. </p>
1466    #[serde(rename = "status")]
1467    #[serde(skip_serializing_if = "Option::is_none")]
1468    pub status: Option<String>,
1469    /// <p> The Amazon Resource Name (ARN) of the target. </p>
1470    #[serde(rename = "targetArn")]
1471    #[serde(skip_serializing_if = "Option::is_none")]
1472    pub target_arn: Option<String>,
1473    /// <p> The unique ID of a deployment target that has a type of <code>instanceTarget</code>. </p>
1474    #[serde(rename = "targetId")]
1475    #[serde(skip_serializing_if = "Option::is_none")]
1476    pub target_id: Option<String>,
1477}
1478
1479/// <p> Information about a Lambda function specified in a deployment. </p>
1480#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1481#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1482pub struct LambdaFunctionInfo {
1483    /// <p> The version of a Lambda function that production traffic points to. </p>
1484    #[serde(rename = "currentVersion")]
1485    #[serde(skip_serializing_if = "Option::is_none")]
1486    pub current_version: Option<String>,
1487    /// <p> The alias of a Lambda function. For more information, see <a href="https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html">AWS Lambda Function Aliases</a> in the <i>AWS Lambda Developer Guide</i>.</p>
1488    #[serde(rename = "functionAlias")]
1489    #[serde(skip_serializing_if = "Option::is_none")]
1490    pub function_alias: Option<String>,
1491    /// <p> The name of a Lambda function. </p>
1492    #[serde(rename = "functionName")]
1493    #[serde(skip_serializing_if = "Option::is_none")]
1494    pub function_name: Option<String>,
1495    /// <p> The version of a Lambda function that production traffic points to after the Lambda function is deployed. </p>
1496    #[serde(rename = "targetVersion")]
1497    #[serde(skip_serializing_if = "Option::is_none")]
1498    pub target_version: Option<String>,
1499    /// <p> The percentage of production traffic that the target version of a Lambda function receives. </p>
1500    #[serde(rename = "targetVersionWeight")]
1501    #[serde(skip_serializing_if = "Option::is_none")]
1502    pub target_version_weight: Option<f64>,
1503}
1504
1505/// <p> Information about the target AWS Lambda function during an AWS Lambda deployment. </p>
1506#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1507#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1508pub struct LambdaTarget {
1509    /// <p> The unique ID of a deployment. </p>
1510    #[serde(rename = "deploymentId")]
1511    #[serde(skip_serializing_if = "Option::is_none")]
1512    pub deployment_id: Option<String>,
1513    /// <p> A <code>LambdaFunctionInfo</code> object that describes a target Lambda function. </p>
1514    #[serde(rename = "lambdaFunctionInfo")]
1515    #[serde(skip_serializing_if = "Option::is_none")]
1516    pub lambda_function_info: Option<LambdaFunctionInfo>,
1517    /// <p> The date and time when the target Lambda function was updated by a deployment. </p>
1518    #[serde(rename = "lastUpdatedAt")]
1519    #[serde(skip_serializing_if = "Option::is_none")]
1520    pub last_updated_at: Option<f64>,
1521    /// <p> The lifecycle events of the deployment to this target Lambda function. </p>
1522    #[serde(rename = "lifecycleEvents")]
1523    #[serde(skip_serializing_if = "Option::is_none")]
1524    pub lifecycle_events: Option<Vec<LifecycleEvent>>,
1525    /// <p> The status an AWS Lambda deployment's target Lambda function. </p>
1526    #[serde(rename = "status")]
1527    #[serde(skip_serializing_if = "Option::is_none")]
1528    pub status: Option<String>,
1529    /// <p> The Amazon Resource Name (ARN) of the target. </p>
1530    #[serde(rename = "targetArn")]
1531    #[serde(skip_serializing_if = "Option::is_none")]
1532    pub target_arn: Option<String>,
1533    /// <p> The unique ID of a deployment target that has a type of <code>lambdaTarget</code>. </p>
1534    #[serde(rename = "targetId")]
1535    #[serde(skip_serializing_if = "Option::is_none")]
1536    pub target_id: Option<String>,
1537}
1538
1539/// <p>Information about the most recent attempted or successful deployment to a deployment group.</p>
1540#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1541#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1542pub struct LastDeploymentInfo {
1543    /// <p>A timestamp that indicates when the most recent deployment to the deployment group started.</p>
1544    #[serde(rename = "createTime")]
1545    #[serde(skip_serializing_if = "Option::is_none")]
1546    pub create_time: Option<f64>,
1547    /// <p> The unique ID of a deployment. </p>
1548    #[serde(rename = "deploymentId")]
1549    #[serde(skip_serializing_if = "Option::is_none")]
1550    pub deployment_id: Option<String>,
1551    /// <p>A timestamp that indicates when the most recent deployment to the deployment group was complete.</p>
1552    #[serde(rename = "endTime")]
1553    #[serde(skip_serializing_if = "Option::is_none")]
1554    pub end_time: Option<f64>,
1555    /// <p>The status of the most recent deployment.</p>
1556    #[serde(rename = "status")]
1557    #[serde(skip_serializing_if = "Option::is_none")]
1558    pub status: Option<String>,
1559}
1560
1561/// <p>Information about a deployment lifecycle event.</p>
1562#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1563#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1564pub struct LifecycleEvent {
1565    /// <p>Diagnostic information about the deployment lifecycle event.</p>
1566    #[serde(rename = "diagnostics")]
1567    #[serde(skip_serializing_if = "Option::is_none")]
1568    pub diagnostics: Option<Diagnostics>,
1569    /// <p>A timestamp that indicates when the deployment lifecycle event ended.</p>
1570    #[serde(rename = "endTime")]
1571    #[serde(skip_serializing_if = "Option::is_none")]
1572    pub end_time: Option<f64>,
1573    /// <p>The deployment lifecycle event name, such as <code>ApplicationStop</code>, <code>BeforeInstall</code>, <code>AfterInstall</code>, <code>ApplicationStart</code>, or <code>ValidateService</code>.</p>
1574    #[serde(rename = "lifecycleEventName")]
1575    #[serde(skip_serializing_if = "Option::is_none")]
1576    pub lifecycle_event_name: Option<String>,
1577    /// <p>A timestamp that indicates when the deployment lifecycle event started.</p>
1578    #[serde(rename = "startTime")]
1579    #[serde(skip_serializing_if = "Option::is_none")]
1580    pub start_time: Option<f64>,
1581    /// <p><p>The deployment lifecycle event status:</p> <ul> <li> <p>Pending: The deployment lifecycle event is pending.</p> </li> <li> <p>InProgress: The deployment lifecycle event is in progress.</p> </li> <li> <p>Succeeded: The deployment lifecycle event ran successfully.</p> </li> <li> <p>Failed: The deployment lifecycle event has failed.</p> </li> <li> <p>Skipped: The deployment lifecycle event has been skipped.</p> </li> <li> <p>Unknown: The deployment lifecycle event is unknown.</p> </li> </ul></p>
1582    #[serde(rename = "status")]
1583    #[serde(skip_serializing_if = "Option::is_none")]
1584    pub status: Option<String>,
1585}
1586
1587/// <p> Represents the input of a <code>ListApplicationRevisions</code> operation. </p>
1588#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1589#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1590pub struct ListApplicationRevisionsInput {
1591    /// <p> The name of an AWS CodeDeploy application associated with the IAM user or AWS account. </p>
1592    #[serde(rename = "applicationName")]
1593    pub application_name: String,
1594    /// <p><p> Whether to list revisions based on whether the revision is the target revision of a deployment group: </p> <ul> <li> <p> <code>include</code>: List revisions that are target revisions of a deployment group.</p> </li> <li> <p> <code>exclude</code>: Do not list revisions that are target revisions of a deployment group.</p> </li> <li> <p> <code>ignore</code>: List all revisions.</p> </li> </ul></p>
1595    #[serde(rename = "deployed")]
1596    #[serde(skip_serializing_if = "Option::is_none")]
1597    pub deployed: Option<String>,
1598    /// <p>An identifier returned from the previous <code>ListApplicationRevisions</code> call. It can be used to return the next set of applications in the list.</p>
1599    #[serde(rename = "nextToken")]
1600    #[serde(skip_serializing_if = "Option::is_none")]
1601    pub next_token: Option<String>,
1602    /// <p> An Amazon S3 bucket name to limit the search for revisions. </p> <p> If set to null, all of the user's buckets are searched. </p>
1603    #[serde(rename = "s3Bucket")]
1604    #[serde(skip_serializing_if = "Option::is_none")]
1605    pub s_3_bucket: Option<String>,
1606    /// <p> A key prefix for the set of Amazon S3 objects to limit the search for revisions. </p>
1607    #[serde(rename = "s3KeyPrefix")]
1608    #[serde(skip_serializing_if = "Option::is_none")]
1609    pub s_3_key_prefix: Option<String>,
1610    /// <p>The column name to use to sort the list results:</p> <ul> <li> <p> <code>registerTime</code>: Sort by the time the revisions were registered with AWS CodeDeploy.</p> </li> <li> <p> <code>firstUsedTime</code>: Sort by the time the revisions were first used in a deployment.</p> </li> <li> <p> <code>lastUsedTime</code>: Sort by the time the revisions were last used in a deployment.</p> </li> </ul> <p> If not specified or set to null, the results are returned in an arbitrary order. </p>
1611    #[serde(rename = "sortBy")]
1612    #[serde(skip_serializing_if = "Option::is_none")]
1613    pub sort_by: Option<String>,
1614    /// <p> The order in which to sort the list results: </p> <ul> <li> <p> <code>ascending</code>: ascending order.</p> </li> <li> <p> <code>descending</code>: descending order.</p> </li> </ul> <p>If not specified, the results are sorted in ascending order.</p> <p>If set to null, the results are sorted in an arbitrary order.</p>
1615    #[serde(rename = "sortOrder")]
1616    #[serde(skip_serializing_if = "Option::is_none")]
1617    pub sort_order: Option<String>,
1618}
1619
1620/// <p>Represents the output of a <code>ListApplicationRevisions</code> operation.</p>
1621#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1622#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1623pub struct ListApplicationRevisionsOutput {
1624    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list application revisions call to return the next set of application revisions in the list.</p>
1625    #[serde(rename = "nextToken")]
1626    #[serde(skip_serializing_if = "Option::is_none")]
1627    pub next_token: Option<String>,
1628    /// <p>A list of locations that contain the matching revisions.</p>
1629    #[serde(rename = "revisions")]
1630    #[serde(skip_serializing_if = "Option::is_none")]
1631    pub revisions: Option<Vec<RevisionLocation>>,
1632}
1633
1634/// <p>Represents the input of a <code>ListApplications</code> operation.</p>
1635#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1636#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1637pub struct ListApplicationsInput {
1638    /// <p>An identifier returned from the previous list applications call. It can be used to return the next set of applications in the list.</p>
1639    #[serde(rename = "nextToken")]
1640    #[serde(skip_serializing_if = "Option::is_none")]
1641    pub next_token: Option<String>,
1642}
1643
1644/// <p>Represents the output of a ListApplications operation.</p>
1645#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1646#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1647pub struct ListApplicationsOutput {
1648    /// <p>A list of application names.</p>
1649    #[serde(rename = "applications")]
1650    #[serde(skip_serializing_if = "Option::is_none")]
1651    pub applications: Option<Vec<String>>,
1652    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list applications call to return the next set of applications in the list.</p>
1653    #[serde(rename = "nextToken")]
1654    #[serde(skip_serializing_if = "Option::is_none")]
1655    pub next_token: Option<String>,
1656}
1657
1658/// <p>Represents the input of a <code>ListDeploymentConfigs</code> operation.</p>
1659#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1660#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1661pub struct ListDeploymentConfigsInput {
1662    /// <p>An identifier returned from the previous <code>ListDeploymentConfigs</code> call. It can be used to return the next set of deployment configurations in the list. </p>
1663    #[serde(rename = "nextToken")]
1664    #[serde(skip_serializing_if = "Option::is_none")]
1665    pub next_token: Option<String>,
1666}
1667
1668/// <p>Represents the output of a <code>ListDeploymentConfigs</code> operation.</p>
1669#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1670#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1671pub struct ListDeploymentConfigsOutput {
1672    /// <p>A list of deployment configurations, including built-in configurations such as <code>CodeDeployDefault.OneAtATime</code>.</p>
1673    #[serde(rename = "deploymentConfigsList")]
1674    #[serde(skip_serializing_if = "Option::is_none")]
1675    pub deployment_configs_list: Option<Vec<String>>,
1676    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment configurations call to return the next set of deployment configurations in the list.</p>
1677    #[serde(rename = "nextToken")]
1678    #[serde(skip_serializing_if = "Option::is_none")]
1679    pub next_token: Option<String>,
1680}
1681
1682/// <p>Represents the input of a <code>ListDeploymentGroups</code> operation.</p>
1683#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1684#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1685pub struct ListDeploymentGroupsInput {
1686    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
1687    #[serde(rename = "applicationName")]
1688    pub application_name: String,
1689    /// <p>An identifier returned from the previous list deployment groups call. It can be used to return the next set of deployment groups in the list.</p>
1690    #[serde(rename = "nextToken")]
1691    #[serde(skip_serializing_if = "Option::is_none")]
1692    pub next_token: Option<String>,
1693}
1694
1695/// <p>Represents the output of a <code>ListDeploymentGroups</code> operation.</p>
1696#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1697#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1698pub struct ListDeploymentGroupsOutput {
1699    /// <p>The application name.</p>
1700    #[serde(rename = "applicationName")]
1701    #[serde(skip_serializing_if = "Option::is_none")]
1702    pub application_name: Option<String>,
1703    /// <p>A list of deployment group names.</p>
1704    #[serde(rename = "deploymentGroups")]
1705    #[serde(skip_serializing_if = "Option::is_none")]
1706    pub deployment_groups: Option<Vec<String>>,
1707    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment groups call to return the next set of deployment groups in the list.</p>
1708    #[serde(rename = "nextToken")]
1709    #[serde(skip_serializing_if = "Option::is_none")]
1710    pub next_token: Option<String>,
1711}
1712
1713/// <p> Represents the input of a <code>ListDeploymentInstances</code> operation. </p>
1714#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1715#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1716pub struct ListDeploymentInstancesInput {
1717    /// <p> The unique ID of a deployment. </p>
1718    #[serde(rename = "deploymentId")]
1719    pub deployment_id: String,
1720    /// <p><p>A subset of instances to list by status:</p> <ul> <li> <p> <code>Pending</code>: Include those instances with pending deployments.</p> </li> <li> <p> <code>InProgress</code>: Include those instances where deployments are still in progress.</p> </li> <li> <p> <code>Succeeded</code>: Include those instances with successful deployments.</p> </li> <li> <p> <code>Failed</code>: Include those instances with failed deployments.</p> </li> <li> <p> <code>Skipped</code>: Include those instances with skipped deployments.</p> </li> <li> <p> <code>Unknown</code>: Include those instances with deployments in an unknown state.</p> </li> </ul></p>
1721    #[serde(rename = "instanceStatusFilter")]
1722    #[serde(skip_serializing_if = "Option::is_none")]
1723    pub instance_status_filter: Option<Vec<String>>,
1724    /// <p>The set of instances in a blue/green deployment, either those in the original environment ("BLUE") or those in the replacement environment ("GREEN"), for which you want to view instance information.</p>
1725    #[serde(rename = "instanceTypeFilter")]
1726    #[serde(skip_serializing_if = "Option::is_none")]
1727    pub instance_type_filter: Option<Vec<String>>,
1728    /// <p>An identifier returned from the previous list deployment instances call. It can be used to return the next set of deployment instances in the list.</p>
1729    #[serde(rename = "nextToken")]
1730    #[serde(skip_serializing_if = "Option::is_none")]
1731    pub next_token: Option<String>,
1732}
1733
1734/// <p>Represents the output of a <code>ListDeploymentInstances</code> operation.</p>
1735#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1736#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1737pub struct ListDeploymentInstancesOutput {
1738    /// <p>A list of instance IDs.</p>
1739    #[serde(rename = "instancesList")]
1740    #[serde(skip_serializing_if = "Option::is_none")]
1741    pub instances_list: Option<Vec<String>>,
1742    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployment instances call to return the next set of deployment instances in the list.</p>
1743    #[serde(rename = "nextToken")]
1744    #[serde(skip_serializing_if = "Option::is_none")]
1745    pub next_token: Option<String>,
1746}
1747
1748#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1749#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1750pub struct ListDeploymentTargetsInput {
1751    /// <p> The unique ID of a deployment. </p>
1752    #[serde(rename = "deploymentId")]
1753    #[serde(skip_serializing_if = "Option::is_none")]
1754    pub deployment_id: Option<String>,
1755    /// <p> A token identifier returned from the previous <code>ListDeploymentTargets</code> call. It can be used to return the next set of deployment targets in the list. </p>
1756    #[serde(rename = "nextToken")]
1757    #[serde(skip_serializing_if = "Option::is_none")]
1758    pub next_token: Option<String>,
1759    /// <p><p> A key used to filter the returned targets. The two valid values are:</p> <ul> <li> <p> <code>TargetStatus</code> - A <code>TargetStatus</code> filter string can be <code>Failed</code>, <code>InProgress</code>, <code>Pending</code>, <code>Ready</code>, <code>Skipped</code>, <code>Succeeded</code>, or <code>Unknown</code>. </p> </li> <li> <p> <code>ServerInstanceLabel</code> - A <code>ServerInstanceLabel</code> filter string can be <code>Blue</code> or <code>Green</code>. </p> </li> </ul></p>
1760    #[serde(rename = "targetFilters")]
1761    #[serde(skip_serializing_if = "Option::is_none")]
1762    pub target_filters: Option<::std::collections::HashMap<String, Vec<String>>>,
1763}
1764
1765#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1766#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1767pub struct ListDeploymentTargetsOutput {
1768    /// <p> If a large amount of information is returned, a token identifier is also returned. It can be used in a subsequent <code>ListDeploymentTargets</code> call to return the next set of deployment targets in the list. </p>
1769    #[serde(rename = "nextToken")]
1770    #[serde(skip_serializing_if = "Option::is_none")]
1771    pub next_token: Option<String>,
1772    /// <p> The unique IDs of deployment targets. </p>
1773    #[serde(rename = "targetIds")]
1774    #[serde(skip_serializing_if = "Option::is_none")]
1775    pub target_ids: Option<Vec<String>>,
1776}
1777
1778/// <p>Represents the input of a <code>ListDeployments</code> operation.</p>
1779#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1780#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1781pub struct ListDeploymentsInput {
1782    /// <p><p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p> <note> <p>If <code>applicationName</code> is specified, then <code>deploymentGroupName</code> must be specified. If it is not specified, then <code>deploymentGroupName</code> must not be specified. </p> </note></p>
1783    #[serde(rename = "applicationName")]
1784    #[serde(skip_serializing_if = "Option::is_none")]
1785    pub application_name: Option<String>,
1786    /// <p>A time range (start and end) for returning a subset of the list of deployments.</p>
1787    #[serde(rename = "createTimeRange")]
1788    #[serde(skip_serializing_if = "Option::is_none")]
1789    pub create_time_range: Option<TimeRange>,
1790    /// <p><p>The name of a deployment group for the specified application.</p> <note> <p>If <code>deploymentGroupName</code> is specified, then <code>applicationName</code> must be specified. If it is not specified, then <code>applicationName</code> must not be specified. </p> </note></p>
1791    #[serde(rename = "deploymentGroupName")]
1792    #[serde(skip_serializing_if = "Option::is_none")]
1793    pub deployment_group_name: Option<String>,
1794    /// <p>The unique ID of an external resource for returning deployments linked to the external resource.</p>
1795    #[serde(rename = "externalId")]
1796    #[serde(skip_serializing_if = "Option::is_none")]
1797    pub external_id: Option<String>,
1798    /// <p><p>A subset of deployments to list by status:</p> <ul> <li> <p> <code>Created</code>: Include created deployments in the resulting list.</p> </li> <li> <p> <code>Queued</code>: Include queued deployments in the resulting list.</p> </li> <li> <p> <code>In Progress</code>: Include in-progress deployments in the resulting list.</p> </li> <li> <p> <code>Succeeded</code>: Include successful deployments in the resulting list.</p> </li> <li> <p> <code>Failed</code>: Include failed deployments in the resulting list.</p> </li> <li> <p> <code>Stopped</code>: Include stopped deployments in the resulting list.</p> </li> </ul></p>
1799    #[serde(rename = "includeOnlyStatuses")]
1800    #[serde(skip_serializing_if = "Option::is_none")]
1801    pub include_only_statuses: Option<Vec<String>>,
1802    /// <p>An identifier returned from the previous list deployments call. It can be used to return the next set of deployments in the list.</p>
1803    #[serde(rename = "nextToken")]
1804    #[serde(skip_serializing_if = "Option::is_none")]
1805    pub next_token: Option<String>,
1806}
1807
1808/// <p>Represents the output of a <code>ListDeployments</code> operation.</p>
1809#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1810#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1811pub struct ListDeploymentsOutput {
1812    /// <p>A list of deployment IDs.</p>
1813    #[serde(rename = "deployments")]
1814    #[serde(skip_serializing_if = "Option::is_none")]
1815    pub deployments: Option<Vec<String>>,
1816    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list deployments call to return the next set of deployments in the list.</p>
1817    #[serde(rename = "nextToken")]
1818    #[serde(skip_serializing_if = "Option::is_none")]
1819    pub next_token: Option<String>,
1820}
1821
1822/// <p>Represents the input of a <code>ListGitHubAccountTokenNames</code> operation.</p>
1823#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1824#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1825pub struct ListGitHubAccountTokenNamesInput {
1826    /// <p>An identifier returned from the previous <code>ListGitHubAccountTokenNames</code> call. It can be used to return the next set of names in the list. </p>
1827    #[serde(rename = "nextToken")]
1828    #[serde(skip_serializing_if = "Option::is_none")]
1829    pub next_token: Option<String>,
1830}
1831
1832/// <p>Represents the output of a <code>ListGitHubAccountTokenNames</code> operation.</p>
1833#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1834#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1835pub struct ListGitHubAccountTokenNamesOutput {
1836    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent <code>ListGitHubAccountTokenNames</code> call to return the next set of names in the list. </p>
1837    #[serde(rename = "nextToken")]
1838    #[serde(skip_serializing_if = "Option::is_none")]
1839    pub next_token: Option<String>,
1840    /// <p>A list of names of connections to GitHub accounts.</p>
1841    #[serde(rename = "tokenNameList")]
1842    #[serde(skip_serializing_if = "Option::is_none")]
1843    pub token_name_list: Option<Vec<String>>,
1844}
1845
1846/// <p>Represents the input of a <code>ListOnPremisesInstances</code> operation.</p>
1847#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1848#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1849pub struct ListOnPremisesInstancesInput {
1850    /// <p>An identifier returned from the previous list on-premises instances call. It can be used to return the next set of on-premises instances in the list.</p>
1851    #[serde(rename = "nextToken")]
1852    #[serde(skip_serializing_if = "Option::is_none")]
1853    pub next_token: Option<String>,
1854    /// <p><p>The registration status of the on-premises instances:</p> <ul> <li> <p> <code>Deregistered</code>: Include deregistered on-premises instances in the resulting list.</p> </li> <li> <p> <code>Registered</code>: Include registered on-premises instances in the resulting list.</p> </li> </ul></p>
1855    #[serde(rename = "registrationStatus")]
1856    #[serde(skip_serializing_if = "Option::is_none")]
1857    pub registration_status: Option<String>,
1858    /// <p>The on-premises instance tags that are used to restrict the on-premises instance names returned.</p>
1859    #[serde(rename = "tagFilters")]
1860    #[serde(skip_serializing_if = "Option::is_none")]
1861    pub tag_filters: Option<Vec<TagFilter>>,
1862}
1863
1864/// <p>Represents the output of the list on-premises instances operation.</p>
1865#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1866#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1867pub struct ListOnPremisesInstancesOutput {
1868    /// <p>The list of matching on-premises instance names.</p>
1869    #[serde(rename = "instanceNames")]
1870    #[serde(skip_serializing_if = "Option::is_none")]
1871    pub instance_names: Option<Vec<String>>,
1872    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list on-premises instances call to return the next set of on-premises instances in the list.</p>
1873    #[serde(rename = "nextToken")]
1874    #[serde(skip_serializing_if = "Option::is_none")]
1875    pub next_token: Option<String>,
1876}
1877
1878#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1879#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1880pub struct ListTagsForResourceInput {
1881    /// <p>An identifier returned from the previous <code>ListTagsForResource</code> call. It can be used to return the next set of applications in the list.</p>
1882    #[serde(rename = "NextToken")]
1883    #[serde(skip_serializing_if = "Option::is_none")]
1884    pub next_token: Option<String>,
1885    /// <p> The ARN of a CodeDeploy resource. <code>ListTagsForResource</code> returns all the tags associated with the resource that is identified by the <code>ResourceArn</code>. </p>
1886    #[serde(rename = "ResourceArn")]
1887    pub resource_arn: String,
1888}
1889
1890#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1891#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1892pub struct ListTagsForResourceOutput {
1893    /// <p>If a large amount of information is returned, an identifier is also returned. It can be used in a subsequent list application revisions call to return the next set of application revisions in the list.</p>
1894    #[serde(rename = "NextToken")]
1895    #[serde(skip_serializing_if = "Option::is_none")]
1896    pub next_token: Option<String>,
1897    /// <p> A list of tags returned by <code>ListTagsForResource</code>. The tags are associated with the resource identified by the input <code>ResourceArn</code> parameter. </p>
1898    #[serde(rename = "Tags")]
1899    #[serde(skip_serializing_if = "Option::is_none")]
1900    pub tags: Option<Vec<Tag>>,
1901}
1902
1903/// <p>Information about the Elastic Load Balancing load balancer or target group used in a deployment.</p>
1904#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1905pub struct LoadBalancerInfo {
1906    /// <p><p>An array that contains information about the load balancer to use for load balancing in a deployment. In Elastic Load Balancing, load balancers are used with Classic Load Balancers.</p> <note> <p> Adding more than one load balancer to the array is not supported. </p> </note></p>
1907    #[serde(rename = "elbInfoList")]
1908    #[serde(skip_serializing_if = "Option::is_none")]
1909    pub elb_info_list: Option<Vec<ELBInfo>>,
1910    /// <p><p>An array that contains information about the target group to use for load balancing in a deployment. In Elastic Load Balancing, target groups are used with Application Load Balancers.</p> <note> <p> Adding more than one target group to the array is not supported. </p> </note></p>
1911    #[serde(rename = "targetGroupInfoList")]
1912    #[serde(skip_serializing_if = "Option::is_none")]
1913    pub target_group_info_list: Option<Vec<TargetGroupInfo>>,
1914    /// <p> The target group pair information. This is an array of <code>TargeGroupPairInfo</code> objects with a maximum size of one. </p>
1915    #[serde(rename = "targetGroupPairInfoList")]
1916    #[serde(skip_serializing_if = "Option::is_none")]
1917    pub target_group_pair_info_list: Option<Vec<TargetGroupPairInfo>>,
1918}
1919
1920/// <p>Information about minimum healthy instance.</p>
1921#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1922pub struct MinimumHealthyHosts {
1923    /// <p>The minimum healthy instance type:</p> <ul> <li> <p> <code>HOST_COUNT</code>: The minimum number of healthy instances as an absolute value.</p> </li> <li> <p> <code>FLEET_PERCENT</code>: The minimum number of healthy instances as a percentage of the total number of instances in the deployment.</p> </li> </ul> <p>In an example of nine instances, if a HOST_COUNT of six is specified, deploy to up to three instances at a time. The deployment is successful if six or more instances are deployed to successfully. Otherwise, the deployment fails. If a FLEET_PERCENT of 40 is specified, deploy to up to five instances at a time. The deployment is successful if four or more instances are deployed to successfully. Otherwise, the deployment fails.</p> <note> <p>In a call to the <code>GetDeploymentConfig</code>, CodeDeployDefault.OneAtATime returns a minimum healthy instance type of MOST_CONCURRENCY and a value of 1. This means a deployment to only one instance at a time. (You cannot set the type to MOST_CONCURRENCY, only to HOST_COUNT or FLEET_PERCENT.) In addition, with CodeDeployDefault.OneAtATime, AWS CodeDeploy attempts to ensure that all instances but one are kept in a healthy state during the deployment. Although this allows one instance at a time to be taken offline for a new deployment, it also means that if the deployment to the last instance fails, the overall deployment is still successful.</p> </note> <p>For more information, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-health.html">AWS CodeDeploy Instance Health</a> in the <i>AWS CodeDeploy User Guide</i>.</p>
1924    #[serde(rename = "type")]
1925    #[serde(skip_serializing_if = "Option::is_none")]
1926    pub type_: Option<String>,
1927    /// <p>The minimum healthy instance value.</p>
1928    #[serde(rename = "value")]
1929    #[serde(skip_serializing_if = "Option::is_none")]
1930    pub value: Option<i64>,
1931}
1932
1933/// <p>Information about groups of on-premises instance tags.</p>
1934#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1935pub struct OnPremisesTagSet {
1936    /// <p>A list that contains other lists of on-premises instance tag groups. For an instance to be included in the deployment group, it must be identified by all of the tag groups in the list.</p>
1937    #[serde(rename = "onPremisesTagSetList")]
1938    #[serde(skip_serializing_if = "Option::is_none")]
1939    pub on_premises_tag_set_list: Option<Vec<Vec<TagFilter>>>,
1940}
1941
1942#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1943#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1944pub struct PutLifecycleEventHookExecutionStatusInput {
1945    /// <p> The unique ID of a deployment. Pass this ID to a Lambda function that validates a deployment lifecycle event. </p>
1946    #[serde(rename = "deploymentId")]
1947    #[serde(skip_serializing_if = "Option::is_none")]
1948    pub deployment_id: Option<String>,
1949    /// <p> The execution ID of a deployment's lifecycle hook. A deployment lifecycle hook is specified in the <code>hooks</code> section of the AppSpec file. </p>
1950    #[serde(rename = "lifecycleEventHookExecutionId")]
1951    #[serde(skip_serializing_if = "Option::is_none")]
1952    pub lifecycle_event_hook_execution_id: Option<String>,
1953    /// <p>The result of a Lambda function that validates a deployment lifecycle event. <code>Succeeded</code> and <code>Failed</code> are the only valid values for <code>status</code>.</p>
1954    #[serde(rename = "status")]
1955    #[serde(skip_serializing_if = "Option::is_none")]
1956    pub status: Option<String>,
1957}
1958
1959#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1960#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1961pub struct PutLifecycleEventHookExecutionStatusOutput {
1962    /// <p>The execution ID of the lifecycle event hook. A hook is specified in the <code>hooks</code> section of the deployment's AppSpec file.</p>
1963    #[serde(rename = "lifecycleEventHookExecutionId")]
1964    #[serde(skip_serializing_if = "Option::is_none")]
1965    pub lifecycle_event_hook_execution_id: Option<String>,
1966}
1967
1968/// <p>A revision for an AWS Lambda deployment that is a YAML-formatted or JSON-formatted string. For AWS Lambda deployments, the revision is the same as the AppSpec file.</p>
1969#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1970pub struct RawString {
1971    /// <p>The YAML-formatted or JSON-formatted revision string. It includes information about which Lambda function to update and optional Lambda functions that validate deployment lifecycle events.</p>
1972    #[serde(rename = "content")]
1973    #[serde(skip_serializing_if = "Option::is_none")]
1974    pub content: Option<String>,
1975    /// <p>The SHA256 hash value of the revision content.</p>
1976    #[serde(rename = "sha256")]
1977    #[serde(skip_serializing_if = "Option::is_none")]
1978    pub sha_256: Option<String>,
1979}
1980
1981/// <p>Represents the input of a RegisterApplicationRevision operation.</p>
1982#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1983#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1984pub struct RegisterApplicationRevisionInput {
1985    /// <p>The name of an AWS CodeDeploy application associated with the IAM user or AWS account.</p>
1986    #[serde(rename = "applicationName")]
1987    pub application_name: String,
1988    /// <p>A comment about the revision.</p>
1989    #[serde(rename = "description")]
1990    #[serde(skip_serializing_if = "Option::is_none")]
1991    pub description: Option<String>,
1992    /// <p>Information about the application revision to register, including type and location.</p>
1993    #[serde(rename = "revision")]
1994    pub revision: RevisionLocation,
1995}
1996
1997/// <p>Represents the input of the register on-premises instance operation.</p>
1998#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1999#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2000pub struct RegisterOnPremisesInstanceInput {
2001    /// <p>The ARN of the IAM session to associate with the on-premises instance.</p>
2002    #[serde(rename = "iamSessionArn")]
2003    #[serde(skip_serializing_if = "Option::is_none")]
2004    pub iam_session_arn: Option<String>,
2005    /// <p>The ARN of the IAM user to associate with the on-premises instance.</p>
2006    #[serde(rename = "iamUserArn")]
2007    #[serde(skip_serializing_if = "Option::is_none")]
2008    pub iam_user_arn: Option<String>,
2009    /// <p>The name of the on-premises instance to register.</p>
2010    #[serde(rename = "instanceName")]
2011    pub instance_name: String,
2012}
2013
2014/// <p>Information about deployments related to the specified deployment.</p>
2015#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2016#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2017pub struct RelatedDeployments {
2018    /// <p>The deployment IDs of 'auto-update outdated instances' deployments triggered by this deployment.</p>
2019    #[serde(rename = "autoUpdateOutdatedInstancesDeploymentIds")]
2020    #[serde(skip_serializing_if = "Option::is_none")]
2021    pub auto_update_outdated_instances_deployment_ids: Option<Vec<String>>,
2022    /// <p>The deployment ID of the root deployment that triggered this deployment.</p>
2023    #[serde(rename = "autoUpdateOutdatedInstancesRootDeploymentId")]
2024    #[serde(skip_serializing_if = "Option::is_none")]
2025    pub auto_update_outdated_instances_root_deployment_id: Option<String>,
2026}
2027
2028/// <p>Represents the input of a <code>RemoveTagsFromOnPremisesInstances</code> operation.</p>
2029#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2030#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2031pub struct RemoveTagsFromOnPremisesInstancesInput {
2032    /// <p>The names of the on-premises instances from which to remove tags.</p>
2033    #[serde(rename = "instanceNames")]
2034    pub instance_names: Vec<String>,
2035    /// <p>The tag key-value pairs to remove from the on-premises instances.</p>
2036    #[serde(rename = "tags")]
2037    pub tags: Vec<Tag>,
2038}
2039
2040/// <p>Information about an application revision.</p>
2041#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2042#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2043pub struct RevisionInfo {
2044    /// <p>Information about an application revision, including usage details and associated deployment groups.</p>
2045    #[serde(rename = "genericRevisionInfo")]
2046    #[serde(skip_serializing_if = "Option::is_none")]
2047    pub generic_revision_info: Option<GenericRevisionInfo>,
2048    /// <p>Information about the location and type of an application revision.</p>
2049    #[serde(rename = "revisionLocation")]
2050    #[serde(skip_serializing_if = "Option::is_none")]
2051    pub revision_location: Option<RevisionLocation>,
2052}
2053
2054/// <p>Information about the location of an application revision.</p>
2055#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2056pub struct RevisionLocation {
2057    /// <p> The content of an AppSpec file for an AWS Lambda or Amazon ECS deployment. The content is formatted as JSON or YAML and stored as a RawString. </p>
2058    #[serde(rename = "appSpecContent")]
2059    #[serde(skip_serializing_if = "Option::is_none")]
2060    pub app_spec_content: Option<AppSpecContent>,
2061    /// <p>Information about the location of application artifacts stored in GitHub.</p>
2062    #[serde(rename = "gitHubLocation")]
2063    #[serde(skip_serializing_if = "Option::is_none")]
2064    pub git_hub_location: Option<GitHubLocation>,
2065    /// <p><p>The type of application revision:</p> <ul> <li> <p>S3: An application revision stored in Amazon S3.</p> </li> <li> <p>GitHub: An application revision stored in GitHub (EC2/On-premises deployments only).</p> </li> <li> <p>String: A YAML-formatted or JSON-formatted string (AWS Lambda deployments only).</p> </li> <li> <p>AppSpecContent: An <code>AppSpecContent</code> object that contains the contents of an AppSpec file for an AWS Lambda or Amazon ECS deployment. The content is formatted as JSON or YAML stored as a RawString.</p> </li> </ul></p>
2066    #[serde(rename = "revisionType")]
2067    #[serde(skip_serializing_if = "Option::is_none")]
2068    pub revision_type: Option<String>,
2069    /// <p>Information about the location of a revision stored in Amazon S3. </p>
2070    #[serde(rename = "s3Location")]
2071    #[serde(skip_serializing_if = "Option::is_none")]
2072    pub s_3_location: Option<S3Location>,
2073    /// <p>Information about the location of an AWS Lambda deployment revision stored as a RawString.</p>
2074    #[serde(rename = "string")]
2075    #[serde(skip_serializing_if = "Option::is_none")]
2076    pub string: Option<RawString>,
2077}
2078
2079/// <p>Information about a deployment rollback.</p>
2080#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2081#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2082pub struct RollbackInfo {
2083    /// <p>The ID of the deployment rollback.</p>
2084    #[serde(rename = "rollbackDeploymentId")]
2085    #[serde(skip_serializing_if = "Option::is_none")]
2086    pub rollback_deployment_id: Option<String>,
2087    /// <p>Information that describes the status of a deployment rollback (for example, whether the deployment can't be rolled back, is in progress, failed, or succeeded). </p>
2088    #[serde(rename = "rollbackMessage")]
2089    #[serde(skip_serializing_if = "Option::is_none")]
2090    pub rollback_message: Option<String>,
2091    /// <p>The deployment ID of the deployment that was underway and triggered a rollback deployment because it failed or was stopped.</p>
2092    #[serde(rename = "rollbackTriggeringDeploymentId")]
2093    #[serde(skip_serializing_if = "Option::is_none")]
2094    pub rollback_triggering_deployment_id: Option<String>,
2095}
2096
2097/// <p>Information about the location of application artifacts stored in Amazon S3.</p>
2098#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2099pub struct S3Location {
2100    /// <p>The name of the Amazon S3 bucket where the application revision is stored.</p>
2101    #[serde(rename = "bucket")]
2102    #[serde(skip_serializing_if = "Option::is_none")]
2103    pub bucket: Option<String>,
2104    /// <p><p>The file type of the application revision. Must be one of the following:</p> <ul> <li> <p> <code>tar</code>: A tar archive file.</p> </li> <li> <p> <code>tgz</code>: A compressed tar archive file.</p> </li> <li> <p> <code>zip</code>: A zip archive file.</p> </li> </ul></p>
2105    #[serde(rename = "bundleType")]
2106    #[serde(skip_serializing_if = "Option::is_none")]
2107    pub bundle_type: Option<String>,
2108    /// <p>The ETag of the Amazon S3 object that represents the bundled artifacts for the application revision.</p> <p>If the ETag is not specified as an input parameter, ETag validation of the object is skipped.</p>
2109    #[serde(rename = "eTag")]
2110    #[serde(skip_serializing_if = "Option::is_none")]
2111    pub e_tag: Option<String>,
2112    /// <p>The name of the Amazon S3 object that represents the bundled artifacts for the application revision.</p>
2113    #[serde(rename = "key")]
2114    #[serde(skip_serializing_if = "Option::is_none")]
2115    pub key: Option<String>,
2116    /// <p>A specific version of the Amazon S3 object that represents the bundled artifacts for the application revision.</p> <p>If the version is not specified, the system uses the most recent version by default.</p>
2117    #[serde(rename = "version")]
2118    #[serde(skip_serializing_if = "Option::is_none")]
2119    pub version: Option<String>,
2120}
2121
2122#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2123#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2124pub struct SkipWaitTimeForInstanceTerminationInput {
2125    /// <p> The unique ID of a blue/green deployment for which you want to skip the instance termination wait time. </p>
2126    #[serde(rename = "deploymentId")]
2127    #[serde(skip_serializing_if = "Option::is_none")]
2128    pub deployment_id: Option<String>,
2129}
2130
2131/// <p> Represents the input of a <code>StopDeployment</code> operation. </p>
2132#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2133#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2134pub struct StopDeploymentInput {
2135    /// <p> Indicates, when a deployment is stopped, whether instances that have been updated should be rolled back to the previous version of the application revision. </p>
2136    #[serde(rename = "autoRollbackEnabled")]
2137    #[serde(skip_serializing_if = "Option::is_none")]
2138    pub auto_rollback_enabled: Option<bool>,
2139    /// <p> The unique ID of a deployment. </p>
2140    #[serde(rename = "deploymentId")]
2141    pub deployment_id: String,
2142}
2143
2144/// <p> Represents the output of a <code>StopDeployment</code> operation. </p>
2145#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2146#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2147pub struct StopDeploymentOutput {
2148    /// <p><p>The status of the stop deployment operation:</p> <ul> <li> <p>Pending: The stop operation is pending.</p> </li> <li> <p>Succeeded: The stop operation was successful.</p> </li> </ul></p>
2149    #[serde(rename = "status")]
2150    #[serde(skip_serializing_if = "Option::is_none")]
2151    pub status: Option<String>,
2152    /// <p>An accompanying status message.</p>
2153    #[serde(rename = "statusMessage")]
2154    #[serde(skip_serializing_if = "Option::is_none")]
2155    pub status_message: Option<String>,
2156}
2157
2158/// <p>Information about a tag.</p>
2159#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2160pub struct Tag {
2161    /// <p>The tag's key.</p>
2162    #[serde(rename = "Key")]
2163    #[serde(skip_serializing_if = "Option::is_none")]
2164    pub key: Option<String>,
2165    /// <p>The tag's value.</p>
2166    #[serde(rename = "Value")]
2167    #[serde(skip_serializing_if = "Option::is_none")]
2168    pub value: Option<String>,
2169}
2170
2171/// <p>Information about an on-premises instance tag filter.</p>
2172#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2173pub struct TagFilter {
2174    /// <p>The on-premises instance tag filter key.</p>
2175    #[serde(rename = "Key")]
2176    #[serde(skip_serializing_if = "Option::is_none")]
2177    pub key: Option<String>,
2178    /// <p><p>The on-premises instance tag filter type:</p> <ul> <li> <p>KEY<em>ONLY: Key only.</p> </li> <li> <p>VALUE</em>ONLY: Value only.</p> </li> <li> <p>KEY<em>AND</em>VALUE: Key and value.</p> </li> </ul></p>
2179    #[serde(rename = "Type")]
2180    #[serde(skip_serializing_if = "Option::is_none")]
2181    pub type_: Option<String>,
2182    /// <p>The on-premises instance tag filter value.</p>
2183    #[serde(rename = "Value")]
2184    #[serde(skip_serializing_if = "Option::is_none")]
2185    pub value: Option<String>,
2186}
2187
2188#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2189#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2190pub struct TagResourceInput {
2191    /// <p> The ARN of a resource, such as a CodeDeploy application or deployment group. </p>
2192    #[serde(rename = "ResourceArn")]
2193    pub resource_arn: String,
2194    /// <p> A list of tags that <code>TagResource</code> associates with a resource. The resource is identified by the <code>ResourceArn</code> input parameter. </p>
2195    #[serde(rename = "Tags")]
2196    pub tags: Vec<Tag>,
2197}
2198
2199#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2200#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2201pub struct TagResourceOutput {}
2202
2203/// <p>Information about a target group in Elastic Load Balancing to use in a deployment. Instances are registered as targets in a target group, and traffic is routed to the target group.</p>
2204#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2205pub struct TargetGroupInfo {
2206    /// <p>For blue/green deployments, the name of the target group that instances in the original environment are deregistered from, and instances in the replacement environment are registered with. For in-place deployments, the name of the target group that instances are deregistered from, so they are not serving traffic during a deployment, and then re-registered with after the deployment is complete. </p>
2207    #[serde(rename = "name")]
2208    #[serde(skip_serializing_if = "Option::is_none")]
2209    pub name: Option<String>,
2210}
2211
2212/// <p> Information about two target groups and how traffic is routed during an Amazon ECS deployment. An optional test traffic route can be specified. </p>
2213#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2214pub struct TargetGroupPairInfo {
2215    /// <p> The path used by a load balancer to route production traffic when an Amazon ECS deployment is complete. </p>
2216    #[serde(rename = "prodTrafficRoute")]
2217    #[serde(skip_serializing_if = "Option::is_none")]
2218    pub prod_traffic_route: Option<TrafficRoute>,
2219    /// <p> One pair of target groups. One is associated with the original task set. The second is associated with the task set that serves traffic after the deployment is complete. </p>
2220    #[serde(rename = "targetGroups")]
2221    #[serde(skip_serializing_if = "Option::is_none")]
2222    pub target_groups: Option<Vec<TargetGroupInfo>>,
2223    /// <p> An optional path used by a load balancer to route test traffic after an Amazon ECS deployment. Validation can occur while test traffic is served during a deployment. </p>
2224    #[serde(rename = "testTrafficRoute")]
2225    #[serde(skip_serializing_if = "Option::is_none")]
2226    pub test_traffic_route: Option<TrafficRoute>,
2227}
2228
2229/// <p>Information about the instances to be used in the replacement environment in a blue/green deployment.</p>
2230#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2231pub struct TargetInstances {
2232    /// <p>The names of one or more Auto Scaling groups to identify a replacement environment for a blue/green deployment.</p>
2233    #[serde(rename = "autoScalingGroups")]
2234    #[serde(skip_serializing_if = "Option::is_none")]
2235    pub auto_scaling_groups: Option<Vec<String>>,
2236    /// <p>Information about the groups of EC2 instance tags that an instance must be identified by in order for it to be included in the replacement environment for a blue/green deployment. Cannot be used in the same call as <code>tagFilters</code>.</p>
2237    #[serde(rename = "ec2TagSet")]
2238    #[serde(skip_serializing_if = "Option::is_none")]
2239    pub ec_2_tag_set: Option<EC2TagSet>,
2240    /// <p>The tag filter key, type, and value used to identify Amazon EC2 instances in a replacement environment for a blue/green deployment. Cannot be used in the same call as <code>ec2TagSet</code>.</p>
2241    #[serde(rename = "tagFilters")]
2242    #[serde(skip_serializing_if = "Option::is_none")]
2243    pub tag_filters: Option<Vec<EC2TagFilter>>,
2244}
2245
2246/// <p>A configuration that shifts traffic from one version of a Lambda function or ECS task set to another in two increments. The original and target Lambda function versions or ECS task sets are specified in the deployment's AppSpec file.</p>
2247#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2248pub struct TimeBasedCanary {
2249    /// <p>The number of minutes between the first and second traffic shifts of a <code>TimeBasedCanary</code> deployment.</p>
2250    #[serde(rename = "canaryInterval")]
2251    #[serde(skip_serializing_if = "Option::is_none")]
2252    pub canary_interval: Option<i64>,
2253    /// <p>The percentage of traffic to shift in the first increment of a <code>TimeBasedCanary</code> deployment.</p>
2254    #[serde(rename = "canaryPercentage")]
2255    #[serde(skip_serializing_if = "Option::is_none")]
2256    pub canary_percentage: Option<i64>,
2257}
2258
2259/// <p>A configuration that shifts traffic from one version of a Lambda function or ECS task set to another in equal increments, with an equal number of minutes between each increment. The original and target Lambda function versions or ECS task sets are specified in the deployment's AppSpec file.</p>
2260#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2261pub struct TimeBasedLinear {
2262    /// <p>The number of minutes between each incremental traffic shift of a <code>TimeBasedLinear</code> deployment.</p>
2263    #[serde(rename = "linearInterval")]
2264    #[serde(skip_serializing_if = "Option::is_none")]
2265    pub linear_interval: Option<i64>,
2266    /// <p>The percentage of traffic that is shifted at the start of each increment of a <code>TimeBasedLinear</code> deployment.</p>
2267    #[serde(rename = "linearPercentage")]
2268    #[serde(skip_serializing_if = "Option::is_none")]
2269    pub linear_percentage: Option<i64>,
2270}
2271
2272/// <p>Information about a time range.</p>
2273#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2274#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2275pub struct TimeRange {
2276    /// <p><p>The end time of the time range.</p> <note> <p>Specify null to leave the end time open-ended.</p> </note></p>
2277    #[serde(rename = "end")]
2278    #[serde(skip_serializing_if = "Option::is_none")]
2279    pub end: Option<f64>,
2280    /// <p><p>The start time of the time range.</p> <note> <p>Specify null to leave the start time open-ended.</p> </note></p>
2281    #[serde(rename = "start")]
2282    #[serde(skip_serializing_if = "Option::is_none")]
2283    pub start: Option<f64>,
2284}
2285
2286/// <p> Information about a listener. The listener contains the path used to route traffic that is received from the load balancer to a target group. </p>
2287#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2288pub struct TrafficRoute {
2289    /// <p> The Amazon Resource Name (ARN) of one listener. The listener identifies the route between a target group and a load balancer. This is an array of strings with a maximum size of one. </p>
2290    #[serde(rename = "listenerArns")]
2291    #[serde(skip_serializing_if = "Option::is_none")]
2292    pub listener_arns: Option<Vec<String>>,
2293}
2294
2295/// <p>The configuration that specifies how traffic is shifted from one version of a Lambda function to another version during an AWS Lambda deployment, or from one Amazon ECS task set to another during an Amazon ECS deployment.</p>
2296#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2297pub struct TrafficRoutingConfig {
2298    /// <p>A configuration that shifts traffic from one version of a Lambda function or ECS task set to another in two increments. The original and target Lambda function versions or ECS task sets are specified in the deployment's AppSpec file.</p>
2299    #[serde(rename = "timeBasedCanary")]
2300    #[serde(skip_serializing_if = "Option::is_none")]
2301    pub time_based_canary: Option<TimeBasedCanary>,
2302    /// <p>A configuration that shifts traffic from one version of a Lambda function or ECS task set to another in equal increments, with an equal number of minutes between each increment. The original and target Lambda function versions or ECS task sets are specified in the deployment's AppSpec file.</p>
2303    #[serde(rename = "timeBasedLinear")]
2304    #[serde(skip_serializing_if = "Option::is_none")]
2305    pub time_based_linear: Option<TimeBasedLinear>,
2306    /// <p>The type of traffic shifting (<code>TimeBasedCanary</code> or <code>TimeBasedLinear</code>) used by a deployment configuration.</p>
2307    #[serde(rename = "type")]
2308    #[serde(skip_serializing_if = "Option::is_none")]
2309    pub type_: Option<String>,
2310}
2311
2312/// <p>Information about notification triggers for the deployment group.</p>
2313#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2314pub struct TriggerConfig {
2315    /// <p>The event type or types for which notifications are triggered.</p>
2316    #[serde(rename = "triggerEvents")]
2317    #[serde(skip_serializing_if = "Option::is_none")]
2318    pub trigger_events: Option<Vec<String>>,
2319    /// <p>The name of the notification trigger.</p>
2320    #[serde(rename = "triggerName")]
2321    #[serde(skip_serializing_if = "Option::is_none")]
2322    pub trigger_name: Option<String>,
2323    /// <p>The Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic through which notifications about deployment or instance events are sent.</p>
2324    #[serde(rename = "triggerTargetArn")]
2325    #[serde(skip_serializing_if = "Option::is_none")]
2326    pub trigger_target_arn: Option<String>,
2327}
2328
2329#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2330#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2331pub struct UntagResourceInput {
2332    /// <p> The Amazon Resource Name (ARN) that specifies from which resource to disassociate the tags with the keys in the <code>TagKeys</code> input parameter. </p>
2333    #[serde(rename = "ResourceArn")]
2334    pub resource_arn: String,
2335    /// <p> A list of keys of <code>Tag</code> objects. The <code>Tag</code> objects identified by the keys are disassociated from the resource specified by the <code>ResourceArn</code> input parameter. </p>
2336    #[serde(rename = "TagKeys")]
2337    pub tag_keys: Vec<String>,
2338}
2339
2340#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2341#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2342pub struct UntagResourceOutput {}
2343
2344/// <p>Represents the input of an <code>UpdateApplication</code> operation.</p>
2345#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2346#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2347pub struct UpdateApplicationInput {
2348    /// <p>The current name of the application you want to change.</p>
2349    #[serde(rename = "applicationName")]
2350    #[serde(skip_serializing_if = "Option::is_none")]
2351    pub application_name: Option<String>,
2352    /// <p>The new name to give the application.</p>
2353    #[serde(rename = "newApplicationName")]
2354    #[serde(skip_serializing_if = "Option::is_none")]
2355    pub new_application_name: Option<String>,
2356}
2357
2358/// <p>Represents the input of an <code>UpdateDeploymentGroup</code> operation.</p>
2359#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2360#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2361pub struct UpdateDeploymentGroupInput {
2362    /// <p>Information to add or change about Amazon CloudWatch alarms when the deployment group is updated.</p>
2363    #[serde(rename = "alarmConfiguration")]
2364    #[serde(skip_serializing_if = "Option::is_none")]
2365    pub alarm_configuration: Option<AlarmConfiguration>,
2366    /// <p>The application name that corresponds to the deployment group to update.</p>
2367    #[serde(rename = "applicationName")]
2368    pub application_name: String,
2369    /// <p>Information for an automatic rollback configuration that is added or changed when a deployment group is updated.</p>
2370    #[serde(rename = "autoRollbackConfiguration")]
2371    #[serde(skip_serializing_if = "Option::is_none")]
2372    pub auto_rollback_configuration: Option<AutoRollbackConfiguration>,
2373    /// <p>The replacement list of Auto Scaling groups to be included in the deployment group, if you want to change them. To keep the Auto Scaling groups, enter their names. To remove Auto Scaling groups, do not enter any Auto Scaling group names.</p>
2374    #[serde(rename = "autoScalingGroups")]
2375    #[serde(skip_serializing_if = "Option::is_none")]
2376    pub auto_scaling_groups: Option<Vec<String>>,
2377    /// <p>Information about blue/green deployment options for a deployment group.</p>
2378    #[serde(rename = "blueGreenDeploymentConfiguration")]
2379    #[serde(skip_serializing_if = "Option::is_none")]
2380    pub blue_green_deployment_configuration: Option<BlueGreenDeploymentConfiguration>,
2381    /// <p>The current name of the deployment group.</p>
2382    #[serde(rename = "currentDeploymentGroupName")]
2383    pub current_deployment_group_name: String,
2384    /// <p>The replacement deployment configuration name to use, if you want to change it.</p>
2385    #[serde(rename = "deploymentConfigName")]
2386    #[serde(skip_serializing_if = "Option::is_none")]
2387    pub deployment_config_name: Option<String>,
2388    /// <p>Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer.</p>
2389    #[serde(rename = "deploymentStyle")]
2390    #[serde(skip_serializing_if = "Option::is_none")]
2391    pub deployment_style: Option<DeploymentStyle>,
2392    /// <p>The replacement set of Amazon EC2 tags on which to filter, if you want to change them. To keep the existing tags, enter their names. To remove tags, do not enter any tag names.</p>
2393    #[serde(rename = "ec2TagFilters")]
2394    #[serde(skip_serializing_if = "Option::is_none")]
2395    pub ec_2_tag_filters: Option<Vec<EC2TagFilter>>,
2396    /// <p>Information about groups of tags applied to on-premises instances. The deployment group includes only EC2 instances identified by all the tag groups.</p>
2397    #[serde(rename = "ec2TagSet")]
2398    #[serde(skip_serializing_if = "Option::is_none")]
2399    pub ec_2_tag_set: Option<EC2TagSet>,
2400    /// <p> The target Amazon ECS services in the deployment group. This applies only to deployment groups that use the Amazon ECS compute platform. A target Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format <code>&lt;clustername&gt;:&lt;servicename&gt;</code>. </p>
2401    #[serde(rename = "ecsServices")]
2402    #[serde(skip_serializing_if = "Option::is_none")]
2403    pub ecs_services: Option<Vec<ECSService>>,
2404    /// <p>Information about the load balancer used in a deployment.</p>
2405    #[serde(rename = "loadBalancerInfo")]
2406    #[serde(skip_serializing_if = "Option::is_none")]
2407    pub load_balancer_info: Option<LoadBalancerInfo>,
2408    /// <p>The new name of the deployment group, if you want to change it.</p>
2409    #[serde(rename = "newDeploymentGroupName")]
2410    #[serde(skip_serializing_if = "Option::is_none")]
2411    pub new_deployment_group_name: Option<String>,
2412    /// <p>The replacement set of on-premises instance tags on which to filter, if you want to change them. To keep the existing tags, enter their names. To remove tags, do not enter any tag names.</p>
2413    #[serde(rename = "onPremisesInstanceTagFilters")]
2414    #[serde(skip_serializing_if = "Option::is_none")]
2415    pub on_premises_instance_tag_filters: Option<Vec<TagFilter>>,
2416    /// <p>Information about an on-premises instance tag set. The deployment group includes only on-premises instances identified by all the tag groups.</p>
2417    #[serde(rename = "onPremisesTagSet")]
2418    #[serde(skip_serializing_if = "Option::is_none")]
2419    pub on_premises_tag_set: Option<OnPremisesTagSet>,
2420    /// <p>Indicates what happens when new EC2 instances are launched mid-deployment and do not receive the deployed application revision.</p> <p>If this option is set to <code>UPDATE</code> or is unspecified, CodeDeploy initiates one or more 'auto-update outdated instances' deployments to apply the deployed application revision to the new EC2 instances.</p> <p>If this option is set to <code>IGNORE</code>, CodeDeploy does not initiate a deployment to update the new EC2 instances. This may result in instances having different revisions.</p>
2421    #[serde(rename = "outdatedInstancesStrategy")]
2422    #[serde(skip_serializing_if = "Option::is_none")]
2423    pub outdated_instances_strategy: Option<String>,
2424    /// <p>A replacement ARN for the service role, if you want to change it.</p>
2425    #[serde(rename = "serviceRoleArn")]
2426    #[serde(skip_serializing_if = "Option::is_none")]
2427    pub service_role_arn: Option<String>,
2428    /// <p>Information about triggers to change when the deployment group is updated. For examples, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-notify-edit.html">Edit a Trigger in a CodeDeploy Deployment Group</a> in the <i>AWS CodeDeploy User Guide</i>.</p>
2429    #[serde(rename = "triggerConfigurations")]
2430    #[serde(skip_serializing_if = "Option::is_none")]
2431    pub trigger_configurations: Option<Vec<TriggerConfig>>,
2432}
2433
2434/// <p>Represents the output of an <code>UpdateDeploymentGroup</code> operation.</p>
2435#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2436#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2437pub struct UpdateDeploymentGroupOutput {
2438    /// <p>If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the AWS account. If the output contains data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the AWS account.</p>
2439    #[serde(rename = "hooksNotCleanedUp")]
2440    #[serde(skip_serializing_if = "Option::is_none")]
2441    pub hooks_not_cleaned_up: Option<Vec<AutoScalingGroup>>,
2442}
2443
2444/// Errors returned by AddTagsToOnPremisesInstances
2445#[derive(Debug, PartialEq)]
2446pub enum AddTagsToOnPremisesInstancesError {
2447    /// <p>The maximum number of allowed on-premises instances in a single call was exceeded.</p>
2448    InstanceLimitExceeded(String),
2449    /// <p>An on-premises instance name was not specified.</p>
2450    InstanceNameRequired(String),
2451    /// <p>The specified on-premises instance is not registered.</p>
2452    InstanceNotRegistered(String),
2453    /// <p>The on-premises instance name was specified in an invalid format.</p>
2454    InvalidInstanceName(String),
2455    /// <p>The tag was specified in an invalid format.</p>
2456    InvalidTag(String),
2457    /// <p>The maximum allowed number of tags was exceeded.</p>
2458    TagLimitExceeded(String),
2459    /// <p>A tag was not specified.</p>
2460    TagRequired(String),
2461}
2462
2463impl AddTagsToOnPremisesInstancesError {
2464    pub fn from_response(
2465        res: BufferedHttpResponse,
2466    ) -> RusotoError<AddTagsToOnPremisesInstancesError> {
2467        if let Some(err) = proto::json::Error::parse(&res) {
2468            match err.typ.as_str() {
2469                "InstanceLimitExceededException" => {
2470                    return RusotoError::Service(
2471                        AddTagsToOnPremisesInstancesError::InstanceLimitExceeded(err.msg),
2472                    )
2473                }
2474                "InstanceNameRequiredException" => {
2475                    return RusotoError::Service(
2476                        AddTagsToOnPremisesInstancesError::InstanceNameRequired(err.msg),
2477                    )
2478                }
2479                "InstanceNotRegisteredException" => {
2480                    return RusotoError::Service(
2481                        AddTagsToOnPremisesInstancesError::InstanceNotRegistered(err.msg),
2482                    )
2483                }
2484                "InvalidInstanceNameException" => {
2485                    return RusotoError::Service(
2486                        AddTagsToOnPremisesInstancesError::InvalidInstanceName(err.msg),
2487                    )
2488                }
2489                "InvalidTagException" => {
2490                    return RusotoError::Service(AddTagsToOnPremisesInstancesError::InvalidTag(
2491                        err.msg,
2492                    ))
2493                }
2494                "TagLimitExceededException" => {
2495                    return RusotoError::Service(
2496                        AddTagsToOnPremisesInstancesError::TagLimitExceeded(err.msg),
2497                    )
2498                }
2499                "TagRequiredException" => {
2500                    return RusotoError::Service(AddTagsToOnPremisesInstancesError::TagRequired(
2501                        err.msg,
2502                    ))
2503                }
2504                "ValidationException" => return RusotoError::Validation(err.msg),
2505                _ => {}
2506            }
2507        }
2508        RusotoError::Unknown(res)
2509    }
2510}
2511impl fmt::Display for AddTagsToOnPremisesInstancesError {
2512    #[allow(unused_variables)]
2513    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2514        match *self {
2515            AddTagsToOnPremisesInstancesError::InstanceLimitExceeded(ref cause) => {
2516                write!(f, "{}", cause)
2517            }
2518            AddTagsToOnPremisesInstancesError::InstanceNameRequired(ref cause) => {
2519                write!(f, "{}", cause)
2520            }
2521            AddTagsToOnPremisesInstancesError::InstanceNotRegistered(ref cause) => {
2522                write!(f, "{}", cause)
2523            }
2524            AddTagsToOnPremisesInstancesError::InvalidInstanceName(ref cause) => {
2525                write!(f, "{}", cause)
2526            }
2527            AddTagsToOnPremisesInstancesError::InvalidTag(ref cause) => write!(f, "{}", cause),
2528            AddTagsToOnPremisesInstancesError::TagLimitExceeded(ref cause) => {
2529                write!(f, "{}", cause)
2530            }
2531            AddTagsToOnPremisesInstancesError::TagRequired(ref cause) => write!(f, "{}", cause),
2532        }
2533    }
2534}
2535impl Error for AddTagsToOnPremisesInstancesError {}
2536/// Errors returned by BatchGetApplicationRevisions
2537#[derive(Debug, PartialEq)]
2538pub enum BatchGetApplicationRevisionsError {
2539    /// <p>The application does not exist with the IAM user or AWS account.</p>
2540    ApplicationDoesNotExist(String),
2541    /// <p>The minimum number of required application names was not specified.</p>
2542    ApplicationNameRequired(String),
2543    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
2544    BatchLimitExceeded(String),
2545    /// <p>The application name was specified in an invalid format.</p>
2546    InvalidApplicationName(String),
2547    /// <p>The revision was specified in an invalid format.</p>
2548    InvalidRevision(String),
2549    /// <p>The revision ID was not specified.</p>
2550    RevisionRequired(String),
2551}
2552
2553impl BatchGetApplicationRevisionsError {
2554    pub fn from_response(
2555        res: BufferedHttpResponse,
2556    ) -> RusotoError<BatchGetApplicationRevisionsError> {
2557        if let Some(err) = proto::json::Error::parse(&res) {
2558            match err.typ.as_str() {
2559                "ApplicationDoesNotExistException" => {
2560                    return RusotoError::Service(
2561                        BatchGetApplicationRevisionsError::ApplicationDoesNotExist(err.msg),
2562                    )
2563                }
2564                "ApplicationNameRequiredException" => {
2565                    return RusotoError::Service(
2566                        BatchGetApplicationRevisionsError::ApplicationNameRequired(err.msg),
2567                    )
2568                }
2569                "BatchLimitExceededException" => {
2570                    return RusotoError::Service(
2571                        BatchGetApplicationRevisionsError::BatchLimitExceeded(err.msg),
2572                    )
2573                }
2574                "InvalidApplicationNameException" => {
2575                    return RusotoError::Service(
2576                        BatchGetApplicationRevisionsError::InvalidApplicationName(err.msg),
2577                    )
2578                }
2579                "InvalidRevisionException" => {
2580                    return RusotoError::Service(
2581                        BatchGetApplicationRevisionsError::InvalidRevision(err.msg),
2582                    )
2583                }
2584                "RevisionRequiredException" => {
2585                    return RusotoError::Service(
2586                        BatchGetApplicationRevisionsError::RevisionRequired(err.msg),
2587                    )
2588                }
2589                "ValidationException" => return RusotoError::Validation(err.msg),
2590                _ => {}
2591            }
2592        }
2593        RusotoError::Unknown(res)
2594    }
2595}
2596impl fmt::Display for BatchGetApplicationRevisionsError {
2597    #[allow(unused_variables)]
2598    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2599        match *self {
2600            BatchGetApplicationRevisionsError::ApplicationDoesNotExist(ref cause) => {
2601                write!(f, "{}", cause)
2602            }
2603            BatchGetApplicationRevisionsError::ApplicationNameRequired(ref cause) => {
2604                write!(f, "{}", cause)
2605            }
2606            BatchGetApplicationRevisionsError::BatchLimitExceeded(ref cause) => {
2607                write!(f, "{}", cause)
2608            }
2609            BatchGetApplicationRevisionsError::InvalidApplicationName(ref cause) => {
2610                write!(f, "{}", cause)
2611            }
2612            BatchGetApplicationRevisionsError::InvalidRevision(ref cause) => write!(f, "{}", cause),
2613            BatchGetApplicationRevisionsError::RevisionRequired(ref cause) => {
2614                write!(f, "{}", cause)
2615            }
2616        }
2617    }
2618}
2619impl Error for BatchGetApplicationRevisionsError {}
2620/// Errors returned by BatchGetApplications
2621#[derive(Debug, PartialEq)]
2622pub enum BatchGetApplicationsError {
2623    /// <p>The application does not exist with the IAM user or AWS account.</p>
2624    ApplicationDoesNotExist(String),
2625    /// <p>The minimum number of required application names was not specified.</p>
2626    ApplicationNameRequired(String),
2627    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
2628    BatchLimitExceeded(String),
2629    /// <p>The application name was specified in an invalid format.</p>
2630    InvalidApplicationName(String),
2631}
2632
2633impl BatchGetApplicationsError {
2634    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<BatchGetApplicationsError> {
2635        if let Some(err) = proto::json::Error::parse(&res) {
2636            match err.typ.as_str() {
2637                "ApplicationDoesNotExistException" => {
2638                    return RusotoError::Service(
2639                        BatchGetApplicationsError::ApplicationDoesNotExist(err.msg),
2640                    )
2641                }
2642                "ApplicationNameRequiredException" => {
2643                    return RusotoError::Service(
2644                        BatchGetApplicationsError::ApplicationNameRequired(err.msg),
2645                    )
2646                }
2647                "BatchLimitExceededException" => {
2648                    return RusotoError::Service(BatchGetApplicationsError::BatchLimitExceeded(
2649                        err.msg,
2650                    ))
2651                }
2652                "InvalidApplicationNameException" => {
2653                    return RusotoError::Service(BatchGetApplicationsError::InvalidApplicationName(
2654                        err.msg,
2655                    ))
2656                }
2657                "ValidationException" => return RusotoError::Validation(err.msg),
2658                _ => {}
2659            }
2660        }
2661        RusotoError::Unknown(res)
2662    }
2663}
2664impl fmt::Display for BatchGetApplicationsError {
2665    #[allow(unused_variables)]
2666    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2667        match *self {
2668            BatchGetApplicationsError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
2669            BatchGetApplicationsError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
2670            BatchGetApplicationsError::BatchLimitExceeded(ref cause) => write!(f, "{}", cause),
2671            BatchGetApplicationsError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
2672        }
2673    }
2674}
2675impl Error for BatchGetApplicationsError {}
2676/// Errors returned by BatchGetDeploymentGroups
2677#[derive(Debug, PartialEq)]
2678pub enum BatchGetDeploymentGroupsError {
2679    /// <p>The application does not exist with the IAM user or AWS account.</p>
2680    ApplicationDoesNotExist(String),
2681    /// <p>The minimum number of required application names was not specified.</p>
2682    ApplicationNameRequired(String),
2683    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
2684    BatchLimitExceeded(String),
2685    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
2686    DeploymentConfigDoesNotExist(String),
2687    /// <p>The deployment group name was not specified.</p>
2688    DeploymentGroupNameRequired(String),
2689    /// <p>The application name was specified in an invalid format.</p>
2690    InvalidApplicationName(String),
2691    /// <p>The deployment group name was specified in an invalid format.</p>
2692    InvalidDeploymentGroupName(String),
2693}
2694
2695impl BatchGetDeploymentGroupsError {
2696    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<BatchGetDeploymentGroupsError> {
2697        if let Some(err) = proto::json::Error::parse(&res) {
2698            match err.typ.as_str() {
2699                "ApplicationDoesNotExistException" => {
2700                    return RusotoError::Service(
2701                        BatchGetDeploymentGroupsError::ApplicationDoesNotExist(err.msg),
2702                    )
2703                }
2704                "ApplicationNameRequiredException" => {
2705                    return RusotoError::Service(
2706                        BatchGetDeploymentGroupsError::ApplicationNameRequired(err.msg),
2707                    )
2708                }
2709                "BatchLimitExceededException" => {
2710                    return RusotoError::Service(BatchGetDeploymentGroupsError::BatchLimitExceeded(
2711                        err.msg,
2712                    ))
2713                }
2714                "DeploymentConfigDoesNotExistException" => {
2715                    return RusotoError::Service(
2716                        BatchGetDeploymentGroupsError::DeploymentConfigDoesNotExist(err.msg),
2717                    )
2718                }
2719                "DeploymentGroupNameRequiredException" => {
2720                    return RusotoError::Service(
2721                        BatchGetDeploymentGroupsError::DeploymentGroupNameRequired(err.msg),
2722                    )
2723                }
2724                "InvalidApplicationNameException" => {
2725                    return RusotoError::Service(
2726                        BatchGetDeploymentGroupsError::InvalidApplicationName(err.msg),
2727                    )
2728                }
2729                "InvalidDeploymentGroupNameException" => {
2730                    return RusotoError::Service(
2731                        BatchGetDeploymentGroupsError::InvalidDeploymentGroupName(err.msg),
2732                    )
2733                }
2734                "ValidationException" => return RusotoError::Validation(err.msg),
2735                _ => {}
2736            }
2737        }
2738        RusotoError::Unknown(res)
2739    }
2740}
2741impl fmt::Display for BatchGetDeploymentGroupsError {
2742    #[allow(unused_variables)]
2743    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2744        match *self {
2745            BatchGetDeploymentGroupsError::ApplicationDoesNotExist(ref cause) => {
2746                write!(f, "{}", cause)
2747            }
2748            BatchGetDeploymentGroupsError::ApplicationNameRequired(ref cause) => {
2749                write!(f, "{}", cause)
2750            }
2751            BatchGetDeploymentGroupsError::BatchLimitExceeded(ref cause) => write!(f, "{}", cause),
2752            BatchGetDeploymentGroupsError::DeploymentConfigDoesNotExist(ref cause) => {
2753                write!(f, "{}", cause)
2754            }
2755            BatchGetDeploymentGroupsError::DeploymentGroupNameRequired(ref cause) => {
2756                write!(f, "{}", cause)
2757            }
2758            BatchGetDeploymentGroupsError::InvalidApplicationName(ref cause) => {
2759                write!(f, "{}", cause)
2760            }
2761            BatchGetDeploymentGroupsError::InvalidDeploymentGroupName(ref cause) => {
2762                write!(f, "{}", cause)
2763            }
2764        }
2765    }
2766}
2767impl Error for BatchGetDeploymentGroupsError {}
2768/// Errors returned by BatchGetDeploymentInstances
2769#[derive(Debug, PartialEq)]
2770pub enum BatchGetDeploymentInstancesError {
2771    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
2772    BatchLimitExceeded(String),
2773    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
2774    DeploymentDoesNotExist(String),
2775    /// <p>At least one deployment ID must be specified.</p>
2776    DeploymentIdRequired(String),
2777    /// <p>The instance ID was not specified.</p>
2778    InstanceIdRequired(String),
2779    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
2780    InvalidComputePlatform(String),
2781    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
2782    InvalidDeploymentId(String),
2783    /// <p>The on-premises instance name was specified in an invalid format.</p>
2784    InvalidInstanceName(String),
2785}
2786
2787impl BatchGetDeploymentInstancesError {
2788    pub fn from_response(
2789        res: BufferedHttpResponse,
2790    ) -> RusotoError<BatchGetDeploymentInstancesError> {
2791        if let Some(err) = proto::json::Error::parse(&res) {
2792            match err.typ.as_str() {
2793                "BatchLimitExceededException" => {
2794                    return RusotoError::Service(
2795                        BatchGetDeploymentInstancesError::BatchLimitExceeded(err.msg),
2796                    )
2797                }
2798                "DeploymentDoesNotExistException" => {
2799                    return RusotoError::Service(
2800                        BatchGetDeploymentInstancesError::DeploymentDoesNotExist(err.msg),
2801                    )
2802                }
2803                "DeploymentIdRequiredException" => {
2804                    return RusotoError::Service(
2805                        BatchGetDeploymentInstancesError::DeploymentIdRequired(err.msg),
2806                    )
2807                }
2808                "InstanceIdRequiredException" => {
2809                    return RusotoError::Service(
2810                        BatchGetDeploymentInstancesError::InstanceIdRequired(err.msg),
2811                    )
2812                }
2813                "InvalidComputePlatformException" => {
2814                    return RusotoError::Service(
2815                        BatchGetDeploymentInstancesError::InvalidComputePlatform(err.msg),
2816                    )
2817                }
2818                "InvalidDeploymentIdException" => {
2819                    return RusotoError::Service(
2820                        BatchGetDeploymentInstancesError::InvalidDeploymentId(err.msg),
2821                    )
2822                }
2823                "InvalidInstanceNameException" => {
2824                    return RusotoError::Service(
2825                        BatchGetDeploymentInstancesError::InvalidInstanceName(err.msg),
2826                    )
2827                }
2828                "ValidationException" => return RusotoError::Validation(err.msg),
2829                _ => {}
2830            }
2831        }
2832        RusotoError::Unknown(res)
2833    }
2834}
2835impl fmt::Display for BatchGetDeploymentInstancesError {
2836    #[allow(unused_variables)]
2837    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2838        match *self {
2839            BatchGetDeploymentInstancesError::BatchLimitExceeded(ref cause) => {
2840                write!(f, "{}", cause)
2841            }
2842            BatchGetDeploymentInstancesError::DeploymentDoesNotExist(ref cause) => {
2843                write!(f, "{}", cause)
2844            }
2845            BatchGetDeploymentInstancesError::DeploymentIdRequired(ref cause) => {
2846                write!(f, "{}", cause)
2847            }
2848            BatchGetDeploymentInstancesError::InstanceIdRequired(ref cause) => {
2849                write!(f, "{}", cause)
2850            }
2851            BatchGetDeploymentInstancesError::InvalidComputePlatform(ref cause) => {
2852                write!(f, "{}", cause)
2853            }
2854            BatchGetDeploymentInstancesError::InvalidDeploymentId(ref cause) => {
2855                write!(f, "{}", cause)
2856            }
2857            BatchGetDeploymentInstancesError::InvalidInstanceName(ref cause) => {
2858                write!(f, "{}", cause)
2859            }
2860        }
2861    }
2862}
2863impl Error for BatchGetDeploymentInstancesError {}
2864/// Errors returned by BatchGetDeploymentTargets
2865#[derive(Debug, PartialEq)]
2866pub enum BatchGetDeploymentTargetsError {
2867    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
2868    DeploymentDoesNotExist(String),
2869    /// <p>At least one deployment ID must be specified.</p>
2870    DeploymentIdRequired(String),
2871    /// <p>The specified deployment has not started.</p>
2872    DeploymentNotStarted(String),
2873    /// <p> The provided target ID does not belong to the attempted deployment. </p>
2874    DeploymentTargetDoesNotExist(String),
2875    /// <p> A deployment target ID was not provided. </p>
2876    DeploymentTargetIdRequired(String),
2877    /// <p> The maximum number of targets that can be associated with an Amazon ECS or AWS Lambda deployment was exceeded. The target list of both types of deployments must have exactly one item. This exception does not apply to EC2/On-premises deployments. </p>
2878    DeploymentTargetListSizeExceeded(String),
2879    /// <p>The specified instance does not exist in the deployment group.</p>
2880    InstanceDoesNotExist(String),
2881    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
2882    InvalidDeploymentId(String),
2883    /// <p> The target ID provided was not valid. </p>
2884    InvalidDeploymentTargetId(String),
2885}
2886
2887impl BatchGetDeploymentTargetsError {
2888    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<BatchGetDeploymentTargetsError> {
2889        if let Some(err) = proto::json::Error::parse(&res) {
2890            match err.typ.as_str() {
2891                "DeploymentDoesNotExistException" => {
2892                    return RusotoError::Service(
2893                        BatchGetDeploymentTargetsError::DeploymentDoesNotExist(err.msg),
2894                    )
2895                }
2896                "DeploymentIdRequiredException" => {
2897                    return RusotoError::Service(
2898                        BatchGetDeploymentTargetsError::DeploymentIdRequired(err.msg),
2899                    )
2900                }
2901                "DeploymentNotStartedException" => {
2902                    return RusotoError::Service(
2903                        BatchGetDeploymentTargetsError::DeploymentNotStarted(err.msg),
2904                    )
2905                }
2906                "DeploymentTargetDoesNotExistException" => {
2907                    return RusotoError::Service(
2908                        BatchGetDeploymentTargetsError::DeploymentTargetDoesNotExist(err.msg),
2909                    )
2910                }
2911                "DeploymentTargetIdRequiredException" => {
2912                    return RusotoError::Service(
2913                        BatchGetDeploymentTargetsError::DeploymentTargetIdRequired(err.msg),
2914                    )
2915                }
2916                "DeploymentTargetListSizeExceededException" => {
2917                    return RusotoError::Service(
2918                        BatchGetDeploymentTargetsError::DeploymentTargetListSizeExceeded(err.msg),
2919                    )
2920                }
2921                "InstanceDoesNotExistException" => {
2922                    return RusotoError::Service(
2923                        BatchGetDeploymentTargetsError::InstanceDoesNotExist(err.msg),
2924                    )
2925                }
2926                "InvalidDeploymentIdException" => {
2927                    return RusotoError::Service(
2928                        BatchGetDeploymentTargetsError::InvalidDeploymentId(err.msg),
2929                    )
2930                }
2931                "InvalidDeploymentTargetIdException" => {
2932                    return RusotoError::Service(
2933                        BatchGetDeploymentTargetsError::InvalidDeploymentTargetId(err.msg),
2934                    )
2935                }
2936                "ValidationException" => return RusotoError::Validation(err.msg),
2937                _ => {}
2938            }
2939        }
2940        RusotoError::Unknown(res)
2941    }
2942}
2943impl fmt::Display for BatchGetDeploymentTargetsError {
2944    #[allow(unused_variables)]
2945    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2946        match *self {
2947            BatchGetDeploymentTargetsError::DeploymentDoesNotExist(ref cause) => {
2948                write!(f, "{}", cause)
2949            }
2950            BatchGetDeploymentTargetsError::DeploymentIdRequired(ref cause) => {
2951                write!(f, "{}", cause)
2952            }
2953            BatchGetDeploymentTargetsError::DeploymentNotStarted(ref cause) => {
2954                write!(f, "{}", cause)
2955            }
2956            BatchGetDeploymentTargetsError::DeploymentTargetDoesNotExist(ref cause) => {
2957                write!(f, "{}", cause)
2958            }
2959            BatchGetDeploymentTargetsError::DeploymentTargetIdRequired(ref cause) => {
2960                write!(f, "{}", cause)
2961            }
2962            BatchGetDeploymentTargetsError::DeploymentTargetListSizeExceeded(ref cause) => {
2963                write!(f, "{}", cause)
2964            }
2965            BatchGetDeploymentTargetsError::InstanceDoesNotExist(ref cause) => {
2966                write!(f, "{}", cause)
2967            }
2968            BatchGetDeploymentTargetsError::InvalidDeploymentId(ref cause) => {
2969                write!(f, "{}", cause)
2970            }
2971            BatchGetDeploymentTargetsError::InvalidDeploymentTargetId(ref cause) => {
2972                write!(f, "{}", cause)
2973            }
2974        }
2975    }
2976}
2977impl Error for BatchGetDeploymentTargetsError {}
2978/// Errors returned by BatchGetDeployments
2979#[derive(Debug, PartialEq)]
2980pub enum BatchGetDeploymentsError {
2981    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
2982    BatchLimitExceeded(String),
2983    /// <p>At least one deployment ID must be specified.</p>
2984    DeploymentIdRequired(String),
2985    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
2986    InvalidDeploymentId(String),
2987}
2988
2989impl BatchGetDeploymentsError {
2990    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<BatchGetDeploymentsError> {
2991        if let Some(err) = proto::json::Error::parse(&res) {
2992            match err.typ.as_str() {
2993                "BatchLimitExceededException" => {
2994                    return RusotoError::Service(BatchGetDeploymentsError::BatchLimitExceeded(
2995                        err.msg,
2996                    ))
2997                }
2998                "DeploymentIdRequiredException" => {
2999                    return RusotoError::Service(BatchGetDeploymentsError::DeploymentIdRequired(
3000                        err.msg,
3001                    ))
3002                }
3003                "InvalidDeploymentIdException" => {
3004                    return RusotoError::Service(BatchGetDeploymentsError::InvalidDeploymentId(
3005                        err.msg,
3006                    ))
3007                }
3008                "ValidationException" => return RusotoError::Validation(err.msg),
3009                _ => {}
3010            }
3011        }
3012        RusotoError::Unknown(res)
3013    }
3014}
3015impl fmt::Display for BatchGetDeploymentsError {
3016    #[allow(unused_variables)]
3017    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3018        match *self {
3019            BatchGetDeploymentsError::BatchLimitExceeded(ref cause) => write!(f, "{}", cause),
3020            BatchGetDeploymentsError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
3021            BatchGetDeploymentsError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
3022        }
3023    }
3024}
3025impl Error for BatchGetDeploymentsError {}
3026/// Errors returned by BatchGetOnPremisesInstances
3027#[derive(Debug, PartialEq)]
3028pub enum BatchGetOnPremisesInstancesError {
3029    /// <p>The maximum number of names or IDs allowed for this request (100) was exceeded.</p>
3030    BatchLimitExceeded(String),
3031    /// <p>An on-premises instance name was not specified.</p>
3032    InstanceNameRequired(String),
3033    /// <p>The on-premises instance name was specified in an invalid format.</p>
3034    InvalidInstanceName(String),
3035}
3036
3037impl BatchGetOnPremisesInstancesError {
3038    pub fn from_response(
3039        res: BufferedHttpResponse,
3040    ) -> RusotoError<BatchGetOnPremisesInstancesError> {
3041        if let Some(err) = proto::json::Error::parse(&res) {
3042            match err.typ.as_str() {
3043                "BatchLimitExceededException" => {
3044                    return RusotoError::Service(
3045                        BatchGetOnPremisesInstancesError::BatchLimitExceeded(err.msg),
3046                    )
3047                }
3048                "InstanceNameRequiredException" => {
3049                    return RusotoError::Service(
3050                        BatchGetOnPremisesInstancesError::InstanceNameRequired(err.msg),
3051                    )
3052                }
3053                "InvalidInstanceNameException" => {
3054                    return RusotoError::Service(
3055                        BatchGetOnPremisesInstancesError::InvalidInstanceName(err.msg),
3056                    )
3057                }
3058                "ValidationException" => return RusotoError::Validation(err.msg),
3059                _ => {}
3060            }
3061        }
3062        RusotoError::Unknown(res)
3063    }
3064}
3065impl fmt::Display for BatchGetOnPremisesInstancesError {
3066    #[allow(unused_variables)]
3067    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3068        match *self {
3069            BatchGetOnPremisesInstancesError::BatchLimitExceeded(ref cause) => {
3070                write!(f, "{}", cause)
3071            }
3072            BatchGetOnPremisesInstancesError::InstanceNameRequired(ref cause) => {
3073                write!(f, "{}", cause)
3074            }
3075            BatchGetOnPremisesInstancesError::InvalidInstanceName(ref cause) => {
3076                write!(f, "{}", cause)
3077            }
3078        }
3079    }
3080}
3081impl Error for BatchGetOnPremisesInstancesError {}
3082/// Errors returned by ContinueDeployment
3083#[derive(Debug, PartialEq)]
3084pub enum ContinueDeploymentError {
3085    /// <p>The deployment is already complete.</p>
3086    DeploymentAlreadyCompleted(String),
3087    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
3088    DeploymentDoesNotExist(String),
3089    /// <p>At least one deployment ID must be specified.</p>
3090    DeploymentIdRequired(String),
3091    /// <p>The deployment does not have a status of Ready and can't continue yet.</p>
3092    DeploymentIsNotInReadyState(String),
3093    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
3094    InvalidDeploymentId(String),
3095    /// <p>The specified deployment status doesn't exist or cannot be determined.</p>
3096    InvalidDeploymentStatus(String),
3097    /// <p> The wait type is invalid. </p>
3098    InvalidDeploymentWaitType(String),
3099    /// <p>A call was submitted that is not supported for the specified deployment type.</p>
3100    UnsupportedActionForDeploymentType(String),
3101}
3102
3103impl ContinueDeploymentError {
3104    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ContinueDeploymentError> {
3105        if let Some(err) = proto::json::Error::parse(&res) {
3106            match err.typ.as_str() {
3107                "DeploymentAlreadyCompletedException" => {
3108                    return RusotoError::Service(
3109                        ContinueDeploymentError::DeploymentAlreadyCompleted(err.msg),
3110                    )
3111                }
3112                "DeploymentDoesNotExistException" => {
3113                    return RusotoError::Service(ContinueDeploymentError::DeploymentDoesNotExist(
3114                        err.msg,
3115                    ))
3116                }
3117                "DeploymentIdRequiredException" => {
3118                    return RusotoError::Service(ContinueDeploymentError::DeploymentIdRequired(
3119                        err.msg,
3120                    ))
3121                }
3122                "DeploymentIsNotInReadyStateException" => {
3123                    return RusotoError::Service(
3124                        ContinueDeploymentError::DeploymentIsNotInReadyState(err.msg),
3125                    )
3126                }
3127                "InvalidDeploymentIdException" => {
3128                    return RusotoError::Service(ContinueDeploymentError::InvalidDeploymentId(
3129                        err.msg,
3130                    ))
3131                }
3132                "InvalidDeploymentStatusException" => {
3133                    return RusotoError::Service(ContinueDeploymentError::InvalidDeploymentStatus(
3134                        err.msg,
3135                    ))
3136                }
3137                "InvalidDeploymentWaitTypeException" => {
3138                    return RusotoError::Service(
3139                        ContinueDeploymentError::InvalidDeploymentWaitType(err.msg),
3140                    )
3141                }
3142                "UnsupportedActionForDeploymentTypeException" => {
3143                    return RusotoError::Service(
3144                        ContinueDeploymentError::UnsupportedActionForDeploymentType(err.msg),
3145                    )
3146                }
3147                "ValidationException" => return RusotoError::Validation(err.msg),
3148                _ => {}
3149            }
3150        }
3151        RusotoError::Unknown(res)
3152    }
3153}
3154impl fmt::Display for ContinueDeploymentError {
3155    #[allow(unused_variables)]
3156    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3157        match *self {
3158            ContinueDeploymentError::DeploymentAlreadyCompleted(ref cause) => {
3159                write!(f, "{}", cause)
3160            }
3161            ContinueDeploymentError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
3162            ContinueDeploymentError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
3163            ContinueDeploymentError::DeploymentIsNotInReadyState(ref cause) => {
3164                write!(f, "{}", cause)
3165            }
3166            ContinueDeploymentError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
3167            ContinueDeploymentError::InvalidDeploymentStatus(ref cause) => write!(f, "{}", cause),
3168            ContinueDeploymentError::InvalidDeploymentWaitType(ref cause) => write!(f, "{}", cause),
3169            ContinueDeploymentError::UnsupportedActionForDeploymentType(ref cause) => {
3170                write!(f, "{}", cause)
3171            }
3172        }
3173    }
3174}
3175impl Error for ContinueDeploymentError {}
3176/// Errors returned by CreateApplication
3177#[derive(Debug, PartialEq)]
3178pub enum CreateApplicationError {
3179    /// <p>An application with the specified name with the IAM user or AWS account already exists.</p>
3180    ApplicationAlreadyExists(String),
3181    /// <p>More applications were attempted to be created than are allowed.</p>
3182    ApplicationLimitExceeded(String),
3183    /// <p>The minimum number of required application names was not specified.</p>
3184    ApplicationNameRequired(String),
3185    /// <p>The application name was specified in an invalid format.</p>
3186    InvalidApplicationName(String),
3187    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
3188    InvalidComputePlatform(String),
3189    /// <p> The specified tags are not valid. </p>
3190    InvalidTagsToAdd(String),
3191}
3192
3193impl CreateApplicationError {
3194    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateApplicationError> {
3195        if let Some(err) = proto::json::Error::parse(&res) {
3196            match err.typ.as_str() {
3197                "ApplicationAlreadyExistsException" => {
3198                    return RusotoError::Service(CreateApplicationError::ApplicationAlreadyExists(
3199                        err.msg,
3200                    ))
3201                }
3202                "ApplicationLimitExceededException" => {
3203                    return RusotoError::Service(CreateApplicationError::ApplicationLimitExceeded(
3204                        err.msg,
3205                    ))
3206                }
3207                "ApplicationNameRequiredException" => {
3208                    return RusotoError::Service(CreateApplicationError::ApplicationNameRequired(
3209                        err.msg,
3210                    ))
3211                }
3212                "InvalidApplicationNameException" => {
3213                    return RusotoError::Service(CreateApplicationError::InvalidApplicationName(
3214                        err.msg,
3215                    ))
3216                }
3217                "InvalidComputePlatformException" => {
3218                    return RusotoError::Service(CreateApplicationError::InvalidComputePlatform(
3219                        err.msg,
3220                    ))
3221                }
3222                "InvalidTagsToAddException" => {
3223                    return RusotoError::Service(CreateApplicationError::InvalidTagsToAdd(err.msg))
3224                }
3225                "ValidationException" => return RusotoError::Validation(err.msg),
3226                _ => {}
3227            }
3228        }
3229        RusotoError::Unknown(res)
3230    }
3231}
3232impl fmt::Display for CreateApplicationError {
3233    #[allow(unused_variables)]
3234    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3235        match *self {
3236            CreateApplicationError::ApplicationAlreadyExists(ref cause) => write!(f, "{}", cause),
3237            CreateApplicationError::ApplicationLimitExceeded(ref cause) => write!(f, "{}", cause),
3238            CreateApplicationError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
3239            CreateApplicationError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
3240            CreateApplicationError::InvalidComputePlatform(ref cause) => write!(f, "{}", cause),
3241            CreateApplicationError::InvalidTagsToAdd(ref cause) => write!(f, "{}", cause),
3242        }
3243    }
3244}
3245impl Error for CreateApplicationError {}
3246/// Errors returned by CreateDeployment
3247#[derive(Debug, PartialEq)]
3248pub enum CreateDeploymentError {
3249    /// <p>The application does not exist with the IAM user or AWS account.</p>
3250    ApplicationDoesNotExist(String),
3251    /// <p>The minimum number of required application names was not specified.</p>
3252    ApplicationNameRequired(String),
3253    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
3254    DeploymentConfigDoesNotExist(String),
3255    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
3256    DeploymentGroupDoesNotExist(String),
3257    /// <p>The deployment group name was not specified.</p>
3258    DeploymentGroupNameRequired(String),
3259    /// <p>The number of allowed deployments was exceeded.</p>
3260    DeploymentLimitExceeded(String),
3261    /// <p>The description is too long.</p>
3262    DescriptionTooLong(String),
3263    /// <p>The application name was specified in an invalid format.</p>
3264    InvalidApplicationName(String),
3265    /// <p>The automatic rollback configuration was specified in an invalid format. For example, automatic rollback is enabled, but an invalid triggering event type or no event types were listed.</p>
3266    InvalidAutoRollbackConfig(String),
3267    /// <p>The Auto Scaling group was specified in an invalid format or does not exist.</p>
3268    InvalidAutoScalingGroup(String),
3269    /// <p>The deployment configuration name was specified in an invalid format.</p>
3270    InvalidDeploymentConfigName(String),
3271    /// <p>The deployment group name was specified in an invalid format.</p>
3272    InvalidDeploymentGroupName(String),
3273    /// <p>An invalid fileExistsBehavior option was specified to determine how AWS CodeDeploy handles files or directories that already exist in a deployment target location, but weren't part of the previous successful deployment. Valid values include "DISALLOW," "OVERWRITE," and "RETAIN."</p>
3274    InvalidFileExistsBehavior(String),
3275    /// <p>The GitHub token is not valid.</p>
3276    InvalidGitHubAccountToken(String),
3277    /// <p>The IgnoreApplicationStopFailures value is invalid. For AWS Lambda deployments, <code>false</code> is expected. For EC2/On-premises deployments, <code>true</code> or <code>false</code> is expected.</p>
3278    InvalidIgnoreApplicationStopFailuresValue(String),
3279    /// <p>An invalid load balancer name, or no load balancer name, was specified.</p>
3280    InvalidLoadBalancerInfo(String),
3281    /// <p>The revision was specified in an invalid format.</p>
3282    InvalidRevision(String),
3283    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
3284    InvalidRole(String),
3285    /// <p><p>The target instance configuration is invalid. Possible causes include:</p> <ul> <li> <p>Configuration data for target instances was entered for an in-place deployment.</p> </li> <li> <p>The limit of 10 tags for a tag type was exceeded.</p> </li> <li> <p>The combined length of the tag names exceeded the limit. </p> </li> <li> <p>A specified tag is not currently applied to any instances.</p> </li> </ul></p>
3286    InvalidTargetInstances(String),
3287    /// <p> The configuration that specifies how traffic is routed during a deployment is invalid.</p>
3288    InvalidTrafficRoutingConfiguration(String),
3289    /// <p>The UpdateOutdatedInstancesOnly value is invalid. For AWS Lambda deployments, <code>false</code> is expected. For EC2/On-premises deployments, <code>true</code> or <code>false</code> is expected.</p>
3290    InvalidUpdateOutdatedInstancesOnlyValue(String),
3291    /// <p>The named revision does not exist with the IAM user or AWS account.</p>
3292    RevisionDoesNotExist(String),
3293    /// <p>The revision ID was not specified.</p>
3294    RevisionRequired(String),
3295    /// <p>An API function was called too frequently.</p>
3296    Throttling(String),
3297}
3298
3299impl CreateDeploymentError {
3300    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDeploymentError> {
3301        if let Some(err) = proto::json::Error::parse(&res) {
3302            match err.typ.as_str() {
3303                "ApplicationDoesNotExistException" => {
3304                    return RusotoError::Service(CreateDeploymentError::ApplicationDoesNotExist(
3305                        err.msg,
3306                    ))
3307                }
3308                "ApplicationNameRequiredException" => {
3309                    return RusotoError::Service(CreateDeploymentError::ApplicationNameRequired(
3310                        err.msg,
3311                    ))
3312                }
3313                "DeploymentConfigDoesNotExistException" => {
3314                    return RusotoError::Service(
3315                        CreateDeploymentError::DeploymentConfigDoesNotExist(err.msg),
3316                    )
3317                }
3318                "DeploymentGroupDoesNotExistException" => {
3319                    return RusotoError::Service(
3320                        CreateDeploymentError::DeploymentGroupDoesNotExist(err.msg),
3321                    )
3322                }
3323                "DeploymentGroupNameRequiredException" => {
3324                    return RusotoError::Service(
3325                        CreateDeploymentError::DeploymentGroupNameRequired(err.msg),
3326                    )
3327                }
3328                "DeploymentLimitExceededException" => {
3329                    return RusotoError::Service(CreateDeploymentError::DeploymentLimitExceeded(
3330                        err.msg,
3331                    ))
3332                }
3333                "DescriptionTooLongException" => {
3334                    return RusotoError::Service(CreateDeploymentError::DescriptionTooLong(err.msg))
3335                }
3336                "InvalidApplicationNameException" => {
3337                    return RusotoError::Service(CreateDeploymentError::InvalidApplicationName(
3338                        err.msg,
3339                    ))
3340                }
3341                "InvalidAutoRollbackConfigException" => {
3342                    return RusotoError::Service(CreateDeploymentError::InvalidAutoRollbackConfig(
3343                        err.msg,
3344                    ))
3345                }
3346                "InvalidAutoScalingGroupException" => {
3347                    return RusotoError::Service(CreateDeploymentError::InvalidAutoScalingGroup(
3348                        err.msg,
3349                    ))
3350                }
3351                "InvalidDeploymentConfigNameException" => {
3352                    return RusotoError::Service(
3353                        CreateDeploymentError::InvalidDeploymentConfigName(err.msg),
3354                    )
3355                }
3356                "InvalidDeploymentGroupNameException" => {
3357                    return RusotoError::Service(CreateDeploymentError::InvalidDeploymentGroupName(
3358                        err.msg,
3359                    ))
3360                }
3361                "InvalidFileExistsBehaviorException" => {
3362                    return RusotoError::Service(CreateDeploymentError::InvalidFileExistsBehavior(
3363                        err.msg,
3364                    ))
3365                }
3366                "InvalidGitHubAccountTokenException" => {
3367                    return RusotoError::Service(CreateDeploymentError::InvalidGitHubAccountToken(
3368                        err.msg,
3369                    ))
3370                }
3371                "InvalidIgnoreApplicationStopFailuresValueException" => {
3372                    return RusotoError::Service(
3373                        CreateDeploymentError::InvalidIgnoreApplicationStopFailuresValue(err.msg),
3374                    )
3375                }
3376                "InvalidLoadBalancerInfoException" => {
3377                    return RusotoError::Service(CreateDeploymentError::InvalidLoadBalancerInfo(
3378                        err.msg,
3379                    ))
3380                }
3381                "InvalidRevisionException" => {
3382                    return RusotoError::Service(CreateDeploymentError::InvalidRevision(err.msg))
3383                }
3384                "InvalidRoleException" => {
3385                    return RusotoError::Service(CreateDeploymentError::InvalidRole(err.msg))
3386                }
3387                "InvalidTargetInstancesException" => {
3388                    return RusotoError::Service(CreateDeploymentError::InvalidTargetInstances(
3389                        err.msg,
3390                    ))
3391                }
3392                "InvalidTrafficRoutingConfigurationException" => {
3393                    return RusotoError::Service(
3394                        CreateDeploymentError::InvalidTrafficRoutingConfiguration(err.msg),
3395                    )
3396                }
3397                "InvalidUpdateOutdatedInstancesOnlyValueException" => {
3398                    return RusotoError::Service(
3399                        CreateDeploymentError::InvalidUpdateOutdatedInstancesOnlyValue(err.msg),
3400                    )
3401                }
3402                "RevisionDoesNotExistException" => {
3403                    return RusotoError::Service(CreateDeploymentError::RevisionDoesNotExist(
3404                        err.msg,
3405                    ))
3406                }
3407                "RevisionRequiredException" => {
3408                    return RusotoError::Service(CreateDeploymentError::RevisionRequired(err.msg))
3409                }
3410                "ThrottlingException" => {
3411                    return RusotoError::Service(CreateDeploymentError::Throttling(err.msg))
3412                }
3413                "ValidationException" => return RusotoError::Validation(err.msg),
3414                _ => {}
3415            }
3416        }
3417        RusotoError::Unknown(res)
3418    }
3419}
3420impl fmt::Display for CreateDeploymentError {
3421    #[allow(unused_variables)]
3422    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3423        match *self {
3424            CreateDeploymentError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
3425            CreateDeploymentError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
3426            CreateDeploymentError::DeploymentConfigDoesNotExist(ref cause) => {
3427                write!(f, "{}", cause)
3428            }
3429            CreateDeploymentError::DeploymentGroupDoesNotExist(ref cause) => write!(f, "{}", cause),
3430            CreateDeploymentError::DeploymentGroupNameRequired(ref cause) => write!(f, "{}", cause),
3431            CreateDeploymentError::DeploymentLimitExceeded(ref cause) => write!(f, "{}", cause),
3432            CreateDeploymentError::DescriptionTooLong(ref cause) => write!(f, "{}", cause),
3433            CreateDeploymentError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
3434            CreateDeploymentError::InvalidAutoRollbackConfig(ref cause) => write!(f, "{}", cause),
3435            CreateDeploymentError::InvalidAutoScalingGroup(ref cause) => write!(f, "{}", cause),
3436            CreateDeploymentError::InvalidDeploymentConfigName(ref cause) => write!(f, "{}", cause),
3437            CreateDeploymentError::InvalidDeploymentGroupName(ref cause) => write!(f, "{}", cause),
3438            CreateDeploymentError::InvalidFileExistsBehavior(ref cause) => write!(f, "{}", cause),
3439            CreateDeploymentError::InvalidGitHubAccountToken(ref cause) => write!(f, "{}", cause),
3440            CreateDeploymentError::InvalidIgnoreApplicationStopFailuresValue(ref cause) => {
3441                write!(f, "{}", cause)
3442            }
3443            CreateDeploymentError::InvalidLoadBalancerInfo(ref cause) => write!(f, "{}", cause),
3444            CreateDeploymentError::InvalidRevision(ref cause) => write!(f, "{}", cause),
3445            CreateDeploymentError::InvalidRole(ref cause) => write!(f, "{}", cause),
3446            CreateDeploymentError::InvalidTargetInstances(ref cause) => write!(f, "{}", cause),
3447            CreateDeploymentError::InvalidTrafficRoutingConfiguration(ref cause) => {
3448                write!(f, "{}", cause)
3449            }
3450            CreateDeploymentError::InvalidUpdateOutdatedInstancesOnlyValue(ref cause) => {
3451                write!(f, "{}", cause)
3452            }
3453            CreateDeploymentError::RevisionDoesNotExist(ref cause) => write!(f, "{}", cause),
3454            CreateDeploymentError::RevisionRequired(ref cause) => write!(f, "{}", cause),
3455            CreateDeploymentError::Throttling(ref cause) => write!(f, "{}", cause),
3456        }
3457    }
3458}
3459impl Error for CreateDeploymentError {}
3460/// Errors returned by CreateDeploymentConfig
3461#[derive(Debug, PartialEq)]
3462pub enum CreateDeploymentConfigError {
3463    /// <p>A deployment configuration with the specified name with the IAM user or AWS account already exists.</p>
3464    DeploymentConfigAlreadyExists(String),
3465    /// <p>The deployment configurations limit was exceeded.</p>
3466    DeploymentConfigLimitExceeded(String),
3467    /// <p>The deployment configuration name was not specified.</p>
3468    DeploymentConfigNameRequired(String),
3469    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
3470    InvalidComputePlatform(String),
3471    /// <p>The deployment configuration name was specified in an invalid format.</p>
3472    InvalidDeploymentConfigName(String),
3473    /// <p>The minimum healthy instance value was specified in an invalid format.</p>
3474    InvalidMinimumHealthyHostValue(String),
3475    /// <p> The configuration that specifies how traffic is routed during a deployment is invalid.</p>
3476    InvalidTrafficRoutingConfiguration(String),
3477}
3478
3479impl CreateDeploymentConfigError {
3480    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDeploymentConfigError> {
3481        if let Some(err) = proto::json::Error::parse(&res) {
3482            match err.typ.as_str() {
3483                "DeploymentConfigAlreadyExistsException" => {
3484                    return RusotoError::Service(
3485                        CreateDeploymentConfigError::DeploymentConfigAlreadyExists(err.msg),
3486                    )
3487                }
3488                "DeploymentConfigLimitExceededException" => {
3489                    return RusotoError::Service(
3490                        CreateDeploymentConfigError::DeploymentConfigLimitExceeded(err.msg),
3491                    )
3492                }
3493                "DeploymentConfigNameRequiredException" => {
3494                    return RusotoError::Service(
3495                        CreateDeploymentConfigError::DeploymentConfigNameRequired(err.msg),
3496                    )
3497                }
3498                "InvalidComputePlatformException" => {
3499                    return RusotoError::Service(
3500                        CreateDeploymentConfigError::InvalidComputePlatform(err.msg),
3501                    )
3502                }
3503                "InvalidDeploymentConfigNameException" => {
3504                    return RusotoError::Service(
3505                        CreateDeploymentConfigError::InvalidDeploymentConfigName(err.msg),
3506                    )
3507                }
3508                "InvalidMinimumHealthyHostValueException" => {
3509                    return RusotoError::Service(
3510                        CreateDeploymentConfigError::InvalidMinimumHealthyHostValue(err.msg),
3511                    )
3512                }
3513                "InvalidTrafficRoutingConfigurationException" => {
3514                    return RusotoError::Service(
3515                        CreateDeploymentConfigError::InvalidTrafficRoutingConfiguration(err.msg),
3516                    )
3517                }
3518                "ValidationException" => return RusotoError::Validation(err.msg),
3519                _ => {}
3520            }
3521        }
3522        RusotoError::Unknown(res)
3523    }
3524}
3525impl fmt::Display for CreateDeploymentConfigError {
3526    #[allow(unused_variables)]
3527    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3528        match *self {
3529            CreateDeploymentConfigError::DeploymentConfigAlreadyExists(ref cause) => {
3530                write!(f, "{}", cause)
3531            }
3532            CreateDeploymentConfigError::DeploymentConfigLimitExceeded(ref cause) => {
3533                write!(f, "{}", cause)
3534            }
3535            CreateDeploymentConfigError::DeploymentConfigNameRequired(ref cause) => {
3536                write!(f, "{}", cause)
3537            }
3538            CreateDeploymentConfigError::InvalidComputePlatform(ref cause) => {
3539                write!(f, "{}", cause)
3540            }
3541            CreateDeploymentConfigError::InvalidDeploymentConfigName(ref cause) => {
3542                write!(f, "{}", cause)
3543            }
3544            CreateDeploymentConfigError::InvalidMinimumHealthyHostValue(ref cause) => {
3545                write!(f, "{}", cause)
3546            }
3547            CreateDeploymentConfigError::InvalidTrafficRoutingConfiguration(ref cause) => {
3548                write!(f, "{}", cause)
3549            }
3550        }
3551    }
3552}
3553impl Error for CreateDeploymentConfigError {}
3554/// Errors returned by CreateDeploymentGroup
3555#[derive(Debug, PartialEq)]
3556pub enum CreateDeploymentGroupError {
3557    /// <p>The maximum number of alarms for a deployment group (10) was exceeded.</p>
3558    AlarmsLimitExceeded(String),
3559    /// <p>The application does not exist with the IAM user or AWS account.</p>
3560    ApplicationDoesNotExist(String),
3561    /// <p>The minimum number of required application names was not specified.</p>
3562    ApplicationNameRequired(String),
3563    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
3564    DeploymentConfigDoesNotExist(String),
3565    /// <p>A deployment group with the specified name with the IAM user or AWS account already exists.</p>
3566    DeploymentGroupAlreadyExists(String),
3567    /// <p> The deployment groups limit was exceeded.</p>
3568    DeploymentGroupLimitExceeded(String),
3569    /// <p>The deployment group name was not specified.</p>
3570    DeploymentGroupNameRequired(String),
3571    /// <p> The Amazon ECS service is associated with more than one deployment groups. An Amazon ECS service can be associated with only one deployment group. </p>
3572    ECSServiceMappingLimitExceeded(String),
3573    /// <p><p>The format of the alarm configuration is invalid. Possible causes include:</p> <ul> <li> <p>The alarm list is null.</p> </li> <li> <p>The alarm object is null.</p> </li> <li> <p>The alarm name is empty or null or exceeds the limit of 255 characters.</p> </li> <li> <p>Two alarms with the same name have been specified.</p> </li> <li> <p>The alarm configuration is enabled, but the alarm list is empty.</p> </li> </ul></p>
3574    InvalidAlarmConfig(String),
3575    /// <p>The application name was specified in an invalid format.</p>
3576    InvalidApplicationName(String),
3577    /// <p>The automatic rollback configuration was specified in an invalid format. For example, automatic rollback is enabled, but an invalid triggering event type or no event types were listed.</p>
3578    InvalidAutoRollbackConfig(String),
3579    /// <p>The Auto Scaling group was specified in an invalid format or does not exist.</p>
3580    InvalidAutoScalingGroup(String),
3581    /// <p>The configuration for the blue/green deployment group was provided in an invalid format. For information about deployment configuration format, see <a>CreateDeploymentConfig</a>.</p>
3582    InvalidBlueGreenDeploymentConfiguration(String),
3583    /// <p>The deployment configuration name was specified in an invalid format.</p>
3584    InvalidDeploymentConfigName(String),
3585    /// <p>The deployment group name was specified in an invalid format.</p>
3586    InvalidDeploymentGroupName(String),
3587    /// <p>An invalid deployment style was specified. Valid deployment types include "IN_PLACE" and "BLUE_GREEN." Valid deployment options include "WITH_TRAFFIC_CONTROL" and "WITHOUT_TRAFFIC_CONTROL."</p>
3588    InvalidDeploymentStyle(String),
3589    /// <p>A call was submitted that specified both Ec2TagFilters and Ec2TagSet, but only one of these data types can be used in a single call.</p>
3590    InvalidEC2TagCombination(String),
3591    /// <p>The tag was specified in an invalid format.</p>
3592    InvalidEC2Tag(String),
3593    /// <p> The Amazon ECS service identifier is not valid. </p>
3594    InvalidECSService(String),
3595    /// <p>The input was specified in an invalid format.</p>
3596    InvalidInput(String),
3597    /// <p>An invalid load balancer name, or no load balancer name, was specified.</p>
3598    InvalidLoadBalancerInfo(String),
3599    /// <p>A call was submitted that specified both OnPremisesTagFilters and OnPremisesTagSet, but only one of these data types can be used in a single call.</p>
3600    InvalidOnPremisesTagCombination(String),
3601    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
3602    InvalidRole(String),
3603    /// <p>The tag was specified in an invalid format.</p>
3604    InvalidTag(String),
3605    /// <p> The specified tags are not valid. </p>
3606    InvalidTagsToAdd(String),
3607    /// <p> A target group pair associated with this deployment is not valid. </p>
3608    InvalidTargetGroupPair(String),
3609    /// <p> The configuration that specifies how traffic is routed during a deployment is invalid.</p>
3610    InvalidTrafficRoutingConfiguration(String),
3611    /// <p>The trigger was specified in an invalid format.</p>
3612    InvalidTriggerConfig(String),
3613    /// <p>The limit for lifecycle hooks was exceeded.</p>
3614    LifecycleHookLimitExceeded(String),
3615    /// <p>The role ID was not specified.</p>
3616    RoleRequired(String),
3617    /// <p>The number of tag groups included in the tag set list exceeded the maximum allowed limit of 3.</p>
3618    TagSetListLimitExceeded(String),
3619    /// <p>An API function was called too frequently.</p>
3620    Throttling(String),
3621    /// <p>The maximum allowed number of triggers was exceeded.</p>
3622    TriggerTargetsLimitExceeded(String),
3623}
3624
3625impl CreateDeploymentGroupError {
3626    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDeploymentGroupError> {
3627        if let Some(err) = proto::json::Error::parse(&res) {
3628            match err.typ.as_str() {
3629                "AlarmsLimitExceededException" => {
3630                    return RusotoError::Service(CreateDeploymentGroupError::AlarmsLimitExceeded(
3631                        err.msg,
3632                    ))
3633                }
3634                "ApplicationDoesNotExistException" => {
3635                    return RusotoError::Service(
3636                        CreateDeploymentGroupError::ApplicationDoesNotExist(err.msg),
3637                    )
3638                }
3639                "ApplicationNameRequiredException" => {
3640                    return RusotoError::Service(
3641                        CreateDeploymentGroupError::ApplicationNameRequired(err.msg),
3642                    )
3643                }
3644                "DeploymentConfigDoesNotExistException" => {
3645                    return RusotoError::Service(
3646                        CreateDeploymentGroupError::DeploymentConfigDoesNotExist(err.msg),
3647                    )
3648                }
3649                "DeploymentGroupAlreadyExistsException" => {
3650                    return RusotoError::Service(
3651                        CreateDeploymentGroupError::DeploymentGroupAlreadyExists(err.msg),
3652                    )
3653                }
3654                "DeploymentGroupLimitExceededException" => {
3655                    return RusotoError::Service(
3656                        CreateDeploymentGroupError::DeploymentGroupLimitExceeded(err.msg),
3657                    )
3658                }
3659                "DeploymentGroupNameRequiredException" => {
3660                    return RusotoError::Service(
3661                        CreateDeploymentGroupError::DeploymentGroupNameRequired(err.msg),
3662                    )
3663                }
3664                "ECSServiceMappingLimitExceededException" => {
3665                    return RusotoError::Service(
3666                        CreateDeploymentGroupError::ECSServiceMappingLimitExceeded(err.msg),
3667                    )
3668                }
3669                "InvalidAlarmConfigException" => {
3670                    return RusotoError::Service(CreateDeploymentGroupError::InvalidAlarmConfig(
3671                        err.msg,
3672                    ))
3673                }
3674                "InvalidApplicationNameException" => {
3675                    return RusotoError::Service(
3676                        CreateDeploymentGroupError::InvalidApplicationName(err.msg),
3677                    )
3678                }
3679                "InvalidAutoRollbackConfigException" => {
3680                    return RusotoError::Service(
3681                        CreateDeploymentGroupError::InvalidAutoRollbackConfig(err.msg),
3682                    )
3683                }
3684                "InvalidAutoScalingGroupException" => {
3685                    return RusotoError::Service(
3686                        CreateDeploymentGroupError::InvalidAutoScalingGroup(err.msg),
3687                    )
3688                }
3689                "InvalidBlueGreenDeploymentConfigurationException" => {
3690                    return RusotoError::Service(
3691                        CreateDeploymentGroupError::InvalidBlueGreenDeploymentConfiguration(
3692                            err.msg,
3693                        ),
3694                    )
3695                }
3696                "InvalidDeploymentConfigNameException" => {
3697                    return RusotoError::Service(
3698                        CreateDeploymentGroupError::InvalidDeploymentConfigName(err.msg),
3699                    )
3700                }
3701                "InvalidDeploymentGroupNameException" => {
3702                    return RusotoError::Service(
3703                        CreateDeploymentGroupError::InvalidDeploymentGroupName(err.msg),
3704                    )
3705                }
3706                "InvalidDeploymentStyleException" => {
3707                    return RusotoError::Service(
3708                        CreateDeploymentGroupError::InvalidDeploymentStyle(err.msg),
3709                    )
3710                }
3711                "InvalidEC2TagCombinationException" => {
3712                    return RusotoError::Service(
3713                        CreateDeploymentGroupError::InvalidEC2TagCombination(err.msg),
3714                    )
3715                }
3716                "InvalidEC2TagException" => {
3717                    return RusotoError::Service(CreateDeploymentGroupError::InvalidEC2Tag(err.msg))
3718                }
3719                "InvalidECSServiceException" => {
3720                    return RusotoError::Service(CreateDeploymentGroupError::InvalidECSService(
3721                        err.msg,
3722                    ))
3723                }
3724                "InvalidInputException" => {
3725                    return RusotoError::Service(CreateDeploymentGroupError::InvalidInput(err.msg))
3726                }
3727                "InvalidLoadBalancerInfoException" => {
3728                    return RusotoError::Service(
3729                        CreateDeploymentGroupError::InvalidLoadBalancerInfo(err.msg),
3730                    )
3731                }
3732                "InvalidOnPremisesTagCombinationException" => {
3733                    return RusotoError::Service(
3734                        CreateDeploymentGroupError::InvalidOnPremisesTagCombination(err.msg),
3735                    )
3736                }
3737                "InvalidRoleException" => {
3738                    return RusotoError::Service(CreateDeploymentGroupError::InvalidRole(err.msg))
3739                }
3740                "InvalidTagException" => {
3741                    return RusotoError::Service(CreateDeploymentGroupError::InvalidTag(err.msg))
3742                }
3743                "InvalidTagsToAddException" => {
3744                    return RusotoError::Service(CreateDeploymentGroupError::InvalidTagsToAdd(
3745                        err.msg,
3746                    ))
3747                }
3748                "InvalidTargetGroupPairException" => {
3749                    return RusotoError::Service(
3750                        CreateDeploymentGroupError::InvalidTargetGroupPair(err.msg),
3751                    )
3752                }
3753                "InvalidTrafficRoutingConfigurationException" => {
3754                    return RusotoError::Service(
3755                        CreateDeploymentGroupError::InvalidTrafficRoutingConfiguration(err.msg),
3756                    )
3757                }
3758                "InvalidTriggerConfigException" => {
3759                    return RusotoError::Service(CreateDeploymentGroupError::InvalidTriggerConfig(
3760                        err.msg,
3761                    ))
3762                }
3763                "LifecycleHookLimitExceededException" => {
3764                    return RusotoError::Service(
3765                        CreateDeploymentGroupError::LifecycleHookLimitExceeded(err.msg),
3766                    )
3767                }
3768                "RoleRequiredException" => {
3769                    return RusotoError::Service(CreateDeploymentGroupError::RoleRequired(err.msg))
3770                }
3771                "TagSetListLimitExceededException" => {
3772                    return RusotoError::Service(
3773                        CreateDeploymentGroupError::TagSetListLimitExceeded(err.msg),
3774                    )
3775                }
3776                "ThrottlingException" => {
3777                    return RusotoError::Service(CreateDeploymentGroupError::Throttling(err.msg))
3778                }
3779                "TriggerTargetsLimitExceededException" => {
3780                    return RusotoError::Service(
3781                        CreateDeploymentGroupError::TriggerTargetsLimitExceeded(err.msg),
3782                    )
3783                }
3784                "ValidationException" => return RusotoError::Validation(err.msg),
3785                _ => {}
3786            }
3787        }
3788        RusotoError::Unknown(res)
3789    }
3790}
3791impl fmt::Display for CreateDeploymentGroupError {
3792    #[allow(unused_variables)]
3793    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3794        match *self {
3795            CreateDeploymentGroupError::AlarmsLimitExceeded(ref cause) => write!(f, "{}", cause),
3796            CreateDeploymentGroupError::ApplicationDoesNotExist(ref cause) => {
3797                write!(f, "{}", cause)
3798            }
3799            CreateDeploymentGroupError::ApplicationNameRequired(ref cause) => {
3800                write!(f, "{}", cause)
3801            }
3802            CreateDeploymentGroupError::DeploymentConfigDoesNotExist(ref cause) => {
3803                write!(f, "{}", cause)
3804            }
3805            CreateDeploymentGroupError::DeploymentGroupAlreadyExists(ref cause) => {
3806                write!(f, "{}", cause)
3807            }
3808            CreateDeploymentGroupError::DeploymentGroupLimitExceeded(ref cause) => {
3809                write!(f, "{}", cause)
3810            }
3811            CreateDeploymentGroupError::DeploymentGroupNameRequired(ref cause) => {
3812                write!(f, "{}", cause)
3813            }
3814            CreateDeploymentGroupError::ECSServiceMappingLimitExceeded(ref cause) => {
3815                write!(f, "{}", cause)
3816            }
3817            CreateDeploymentGroupError::InvalidAlarmConfig(ref cause) => write!(f, "{}", cause),
3818            CreateDeploymentGroupError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
3819            CreateDeploymentGroupError::InvalidAutoRollbackConfig(ref cause) => {
3820                write!(f, "{}", cause)
3821            }
3822            CreateDeploymentGroupError::InvalidAutoScalingGroup(ref cause) => {
3823                write!(f, "{}", cause)
3824            }
3825            CreateDeploymentGroupError::InvalidBlueGreenDeploymentConfiguration(ref cause) => {
3826                write!(f, "{}", cause)
3827            }
3828            CreateDeploymentGroupError::InvalidDeploymentConfigName(ref cause) => {
3829                write!(f, "{}", cause)
3830            }
3831            CreateDeploymentGroupError::InvalidDeploymentGroupName(ref cause) => {
3832                write!(f, "{}", cause)
3833            }
3834            CreateDeploymentGroupError::InvalidDeploymentStyle(ref cause) => write!(f, "{}", cause),
3835            CreateDeploymentGroupError::InvalidEC2TagCombination(ref cause) => {
3836                write!(f, "{}", cause)
3837            }
3838            CreateDeploymentGroupError::InvalidEC2Tag(ref cause) => write!(f, "{}", cause),
3839            CreateDeploymentGroupError::InvalidECSService(ref cause) => write!(f, "{}", cause),
3840            CreateDeploymentGroupError::InvalidInput(ref cause) => write!(f, "{}", cause),
3841            CreateDeploymentGroupError::InvalidLoadBalancerInfo(ref cause) => {
3842                write!(f, "{}", cause)
3843            }
3844            CreateDeploymentGroupError::InvalidOnPremisesTagCombination(ref cause) => {
3845                write!(f, "{}", cause)
3846            }
3847            CreateDeploymentGroupError::InvalidRole(ref cause) => write!(f, "{}", cause),
3848            CreateDeploymentGroupError::InvalidTag(ref cause) => write!(f, "{}", cause),
3849            CreateDeploymentGroupError::InvalidTagsToAdd(ref cause) => write!(f, "{}", cause),
3850            CreateDeploymentGroupError::InvalidTargetGroupPair(ref cause) => write!(f, "{}", cause),
3851            CreateDeploymentGroupError::InvalidTrafficRoutingConfiguration(ref cause) => {
3852                write!(f, "{}", cause)
3853            }
3854            CreateDeploymentGroupError::InvalidTriggerConfig(ref cause) => write!(f, "{}", cause),
3855            CreateDeploymentGroupError::LifecycleHookLimitExceeded(ref cause) => {
3856                write!(f, "{}", cause)
3857            }
3858            CreateDeploymentGroupError::RoleRequired(ref cause) => write!(f, "{}", cause),
3859            CreateDeploymentGroupError::TagSetListLimitExceeded(ref cause) => {
3860                write!(f, "{}", cause)
3861            }
3862            CreateDeploymentGroupError::Throttling(ref cause) => write!(f, "{}", cause),
3863            CreateDeploymentGroupError::TriggerTargetsLimitExceeded(ref cause) => {
3864                write!(f, "{}", cause)
3865            }
3866        }
3867    }
3868}
3869impl Error for CreateDeploymentGroupError {}
3870/// Errors returned by DeleteApplication
3871#[derive(Debug, PartialEq)]
3872pub enum DeleteApplicationError {
3873    /// <p>The minimum number of required application names was not specified.</p>
3874    ApplicationNameRequired(String),
3875    /// <p>The application name was specified in an invalid format.</p>
3876    InvalidApplicationName(String),
3877    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
3878    InvalidRole(String),
3879}
3880
3881impl DeleteApplicationError {
3882    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteApplicationError> {
3883        if let Some(err) = proto::json::Error::parse(&res) {
3884            match err.typ.as_str() {
3885                "ApplicationNameRequiredException" => {
3886                    return RusotoError::Service(DeleteApplicationError::ApplicationNameRequired(
3887                        err.msg,
3888                    ))
3889                }
3890                "InvalidApplicationNameException" => {
3891                    return RusotoError::Service(DeleteApplicationError::InvalidApplicationName(
3892                        err.msg,
3893                    ))
3894                }
3895                "InvalidRoleException" => {
3896                    return RusotoError::Service(DeleteApplicationError::InvalidRole(err.msg))
3897                }
3898                "ValidationException" => return RusotoError::Validation(err.msg),
3899                _ => {}
3900            }
3901        }
3902        RusotoError::Unknown(res)
3903    }
3904}
3905impl fmt::Display for DeleteApplicationError {
3906    #[allow(unused_variables)]
3907    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3908        match *self {
3909            DeleteApplicationError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
3910            DeleteApplicationError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
3911            DeleteApplicationError::InvalidRole(ref cause) => write!(f, "{}", cause),
3912        }
3913    }
3914}
3915impl Error for DeleteApplicationError {}
3916/// Errors returned by DeleteDeploymentConfig
3917#[derive(Debug, PartialEq)]
3918pub enum DeleteDeploymentConfigError {
3919    /// <p>The deployment configuration is still in use.</p>
3920    DeploymentConfigInUse(String),
3921    /// <p>The deployment configuration name was not specified.</p>
3922    DeploymentConfigNameRequired(String),
3923    /// <p>The deployment configuration name was specified in an invalid format.</p>
3924    InvalidDeploymentConfigName(String),
3925    /// <p>An invalid operation was detected.</p>
3926    InvalidOperation(String),
3927}
3928
3929impl DeleteDeploymentConfigError {
3930    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDeploymentConfigError> {
3931        if let Some(err) = proto::json::Error::parse(&res) {
3932            match err.typ.as_str() {
3933                "DeploymentConfigInUseException" => {
3934                    return RusotoError::Service(
3935                        DeleteDeploymentConfigError::DeploymentConfigInUse(err.msg),
3936                    )
3937                }
3938                "DeploymentConfigNameRequiredException" => {
3939                    return RusotoError::Service(
3940                        DeleteDeploymentConfigError::DeploymentConfigNameRequired(err.msg),
3941                    )
3942                }
3943                "InvalidDeploymentConfigNameException" => {
3944                    return RusotoError::Service(
3945                        DeleteDeploymentConfigError::InvalidDeploymentConfigName(err.msg),
3946                    )
3947                }
3948                "InvalidOperationException" => {
3949                    return RusotoError::Service(DeleteDeploymentConfigError::InvalidOperation(
3950                        err.msg,
3951                    ))
3952                }
3953                "ValidationException" => return RusotoError::Validation(err.msg),
3954                _ => {}
3955            }
3956        }
3957        RusotoError::Unknown(res)
3958    }
3959}
3960impl fmt::Display for DeleteDeploymentConfigError {
3961    #[allow(unused_variables)]
3962    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3963        match *self {
3964            DeleteDeploymentConfigError::DeploymentConfigInUse(ref cause) => write!(f, "{}", cause),
3965            DeleteDeploymentConfigError::DeploymentConfigNameRequired(ref cause) => {
3966                write!(f, "{}", cause)
3967            }
3968            DeleteDeploymentConfigError::InvalidDeploymentConfigName(ref cause) => {
3969                write!(f, "{}", cause)
3970            }
3971            DeleteDeploymentConfigError::InvalidOperation(ref cause) => write!(f, "{}", cause),
3972        }
3973    }
3974}
3975impl Error for DeleteDeploymentConfigError {}
3976/// Errors returned by DeleteDeploymentGroup
3977#[derive(Debug, PartialEq)]
3978pub enum DeleteDeploymentGroupError {
3979    /// <p>The minimum number of required application names was not specified.</p>
3980    ApplicationNameRequired(String),
3981    /// <p>The deployment group name was not specified.</p>
3982    DeploymentGroupNameRequired(String),
3983    /// <p>The application name was specified in an invalid format.</p>
3984    InvalidApplicationName(String),
3985    /// <p>The deployment group name was specified in an invalid format.</p>
3986    InvalidDeploymentGroupName(String),
3987    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
3988    InvalidRole(String),
3989}
3990
3991impl DeleteDeploymentGroupError {
3992    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDeploymentGroupError> {
3993        if let Some(err) = proto::json::Error::parse(&res) {
3994            match err.typ.as_str() {
3995                "ApplicationNameRequiredException" => {
3996                    return RusotoError::Service(
3997                        DeleteDeploymentGroupError::ApplicationNameRequired(err.msg),
3998                    )
3999                }
4000                "DeploymentGroupNameRequiredException" => {
4001                    return RusotoError::Service(
4002                        DeleteDeploymentGroupError::DeploymentGroupNameRequired(err.msg),
4003                    )
4004                }
4005                "InvalidApplicationNameException" => {
4006                    return RusotoError::Service(
4007                        DeleteDeploymentGroupError::InvalidApplicationName(err.msg),
4008                    )
4009                }
4010                "InvalidDeploymentGroupNameException" => {
4011                    return RusotoError::Service(
4012                        DeleteDeploymentGroupError::InvalidDeploymentGroupName(err.msg),
4013                    )
4014                }
4015                "InvalidRoleException" => {
4016                    return RusotoError::Service(DeleteDeploymentGroupError::InvalidRole(err.msg))
4017                }
4018                "ValidationException" => return RusotoError::Validation(err.msg),
4019                _ => {}
4020            }
4021        }
4022        RusotoError::Unknown(res)
4023    }
4024}
4025impl fmt::Display for DeleteDeploymentGroupError {
4026    #[allow(unused_variables)]
4027    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4028        match *self {
4029            DeleteDeploymentGroupError::ApplicationNameRequired(ref cause) => {
4030                write!(f, "{}", cause)
4031            }
4032            DeleteDeploymentGroupError::DeploymentGroupNameRequired(ref cause) => {
4033                write!(f, "{}", cause)
4034            }
4035            DeleteDeploymentGroupError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
4036            DeleteDeploymentGroupError::InvalidDeploymentGroupName(ref cause) => {
4037                write!(f, "{}", cause)
4038            }
4039            DeleteDeploymentGroupError::InvalidRole(ref cause) => write!(f, "{}", cause),
4040        }
4041    }
4042}
4043impl Error for DeleteDeploymentGroupError {}
4044/// Errors returned by DeleteGitHubAccountToken
4045#[derive(Debug, PartialEq)]
4046pub enum DeleteGitHubAccountTokenError {
4047    /// <p>No GitHub account connection exists with the named specified in the call.</p>
4048    GitHubAccountTokenDoesNotExist(String),
4049    /// <p>The call is missing a required GitHub account connection name.</p>
4050    GitHubAccountTokenNameRequired(String),
4051    /// <p>The format of the specified GitHub account connection name is invalid.</p>
4052    InvalidGitHubAccountTokenName(String),
4053    /// <p>The API used does not support the deployment.</p>
4054    OperationNotSupported(String),
4055    /// <p>The specified resource could not be validated.</p>
4056    ResourceValidation(String),
4057}
4058
4059impl DeleteGitHubAccountTokenError {
4060    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteGitHubAccountTokenError> {
4061        if let Some(err) = proto::json::Error::parse(&res) {
4062            match err.typ.as_str() {
4063                "GitHubAccountTokenDoesNotExistException" => {
4064                    return RusotoError::Service(
4065                        DeleteGitHubAccountTokenError::GitHubAccountTokenDoesNotExist(err.msg),
4066                    )
4067                }
4068                "GitHubAccountTokenNameRequiredException" => {
4069                    return RusotoError::Service(
4070                        DeleteGitHubAccountTokenError::GitHubAccountTokenNameRequired(err.msg),
4071                    )
4072                }
4073                "InvalidGitHubAccountTokenNameException" => {
4074                    return RusotoError::Service(
4075                        DeleteGitHubAccountTokenError::InvalidGitHubAccountTokenName(err.msg),
4076                    )
4077                }
4078                "OperationNotSupportedException" => {
4079                    return RusotoError::Service(
4080                        DeleteGitHubAccountTokenError::OperationNotSupported(err.msg),
4081                    )
4082                }
4083                "ResourceValidationException" => {
4084                    return RusotoError::Service(DeleteGitHubAccountTokenError::ResourceValidation(
4085                        err.msg,
4086                    ))
4087                }
4088                "ValidationException" => return RusotoError::Validation(err.msg),
4089                _ => {}
4090            }
4091        }
4092        RusotoError::Unknown(res)
4093    }
4094}
4095impl fmt::Display for DeleteGitHubAccountTokenError {
4096    #[allow(unused_variables)]
4097    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4098        match *self {
4099            DeleteGitHubAccountTokenError::GitHubAccountTokenDoesNotExist(ref cause) => {
4100                write!(f, "{}", cause)
4101            }
4102            DeleteGitHubAccountTokenError::GitHubAccountTokenNameRequired(ref cause) => {
4103                write!(f, "{}", cause)
4104            }
4105            DeleteGitHubAccountTokenError::InvalidGitHubAccountTokenName(ref cause) => {
4106                write!(f, "{}", cause)
4107            }
4108            DeleteGitHubAccountTokenError::OperationNotSupported(ref cause) => {
4109                write!(f, "{}", cause)
4110            }
4111            DeleteGitHubAccountTokenError::ResourceValidation(ref cause) => write!(f, "{}", cause),
4112        }
4113    }
4114}
4115impl Error for DeleteGitHubAccountTokenError {}
4116/// Errors returned by DeleteResourcesByExternalId
4117#[derive(Debug, PartialEq)]
4118pub enum DeleteResourcesByExternalIdError {}
4119
4120impl DeleteResourcesByExternalIdError {
4121    pub fn from_response(
4122        res: BufferedHttpResponse,
4123    ) -> RusotoError<DeleteResourcesByExternalIdError> {
4124        if let Some(err) = proto::json::Error::parse(&res) {
4125            match err.typ.as_str() {
4126                "ValidationException" => return RusotoError::Validation(err.msg),
4127                _ => {}
4128            }
4129        }
4130        RusotoError::Unknown(res)
4131    }
4132}
4133impl fmt::Display for DeleteResourcesByExternalIdError {
4134    #[allow(unused_variables)]
4135    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4136        match *self {}
4137    }
4138}
4139impl Error for DeleteResourcesByExternalIdError {}
4140/// Errors returned by DeregisterOnPremisesInstance
4141#[derive(Debug, PartialEq)]
4142pub enum DeregisterOnPremisesInstanceError {
4143    /// <p>An on-premises instance name was not specified.</p>
4144    InstanceNameRequired(String),
4145    /// <p>The on-premises instance name was specified in an invalid format.</p>
4146    InvalidInstanceName(String),
4147}
4148
4149impl DeregisterOnPremisesInstanceError {
4150    pub fn from_response(
4151        res: BufferedHttpResponse,
4152    ) -> RusotoError<DeregisterOnPremisesInstanceError> {
4153        if let Some(err) = proto::json::Error::parse(&res) {
4154            match err.typ.as_str() {
4155                "InstanceNameRequiredException" => {
4156                    return RusotoError::Service(
4157                        DeregisterOnPremisesInstanceError::InstanceNameRequired(err.msg),
4158                    )
4159                }
4160                "InvalidInstanceNameException" => {
4161                    return RusotoError::Service(
4162                        DeregisterOnPremisesInstanceError::InvalidInstanceName(err.msg),
4163                    )
4164                }
4165                "ValidationException" => return RusotoError::Validation(err.msg),
4166                _ => {}
4167            }
4168        }
4169        RusotoError::Unknown(res)
4170    }
4171}
4172impl fmt::Display for DeregisterOnPremisesInstanceError {
4173    #[allow(unused_variables)]
4174    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4175        match *self {
4176            DeregisterOnPremisesInstanceError::InstanceNameRequired(ref cause) => {
4177                write!(f, "{}", cause)
4178            }
4179            DeregisterOnPremisesInstanceError::InvalidInstanceName(ref cause) => {
4180                write!(f, "{}", cause)
4181            }
4182        }
4183    }
4184}
4185impl Error for DeregisterOnPremisesInstanceError {}
4186/// Errors returned by GetApplication
4187#[derive(Debug, PartialEq)]
4188pub enum GetApplicationError {
4189    /// <p>The application does not exist with the IAM user or AWS account.</p>
4190    ApplicationDoesNotExist(String),
4191    /// <p>The minimum number of required application names was not specified.</p>
4192    ApplicationNameRequired(String),
4193    /// <p>The application name was specified in an invalid format.</p>
4194    InvalidApplicationName(String),
4195}
4196
4197impl GetApplicationError {
4198    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetApplicationError> {
4199        if let Some(err) = proto::json::Error::parse(&res) {
4200            match err.typ.as_str() {
4201                "ApplicationDoesNotExistException" => {
4202                    return RusotoError::Service(GetApplicationError::ApplicationDoesNotExist(
4203                        err.msg,
4204                    ))
4205                }
4206                "ApplicationNameRequiredException" => {
4207                    return RusotoError::Service(GetApplicationError::ApplicationNameRequired(
4208                        err.msg,
4209                    ))
4210                }
4211                "InvalidApplicationNameException" => {
4212                    return RusotoError::Service(GetApplicationError::InvalidApplicationName(
4213                        err.msg,
4214                    ))
4215                }
4216                "ValidationException" => return RusotoError::Validation(err.msg),
4217                _ => {}
4218            }
4219        }
4220        RusotoError::Unknown(res)
4221    }
4222}
4223impl fmt::Display for GetApplicationError {
4224    #[allow(unused_variables)]
4225    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4226        match *self {
4227            GetApplicationError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
4228            GetApplicationError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
4229            GetApplicationError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
4230        }
4231    }
4232}
4233impl Error for GetApplicationError {}
4234/// Errors returned by GetApplicationRevision
4235#[derive(Debug, PartialEq)]
4236pub enum GetApplicationRevisionError {
4237    /// <p>The application does not exist with the IAM user or AWS account.</p>
4238    ApplicationDoesNotExist(String),
4239    /// <p>The minimum number of required application names was not specified.</p>
4240    ApplicationNameRequired(String),
4241    /// <p>The application name was specified in an invalid format.</p>
4242    InvalidApplicationName(String),
4243    /// <p>The revision was specified in an invalid format.</p>
4244    InvalidRevision(String),
4245    /// <p>The named revision does not exist with the IAM user or AWS account.</p>
4246    RevisionDoesNotExist(String),
4247    /// <p>The revision ID was not specified.</p>
4248    RevisionRequired(String),
4249}
4250
4251impl GetApplicationRevisionError {
4252    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetApplicationRevisionError> {
4253        if let Some(err) = proto::json::Error::parse(&res) {
4254            match err.typ.as_str() {
4255                "ApplicationDoesNotExistException" => {
4256                    return RusotoError::Service(
4257                        GetApplicationRevisionError::ApplicationDoesNotExist(err.msg),
4258                    )
4259                }
4260                "ApplicationNameRequiredException" => {
4261                    return RusotoError::Service(
4262                        GetApplicationRevisionError::ApplicationNameRequired(err.msg),
4263                    )
4264                }
4265                "InvalidApplicationNameException" => {
4266                    return RusotoError::Service(
4267                        GetApplicationRevisionError::InvalidApplicationName(err.msg),
4268                    )
4269                }
4270                "InvalidRevisionException" => {
4271                    return RusotoError::Service(GetApplicationRevisionError::InvalidRevision(
4272                        err.msg,
4273                    ))
4274                }
4275                "RevisionDoesNotExistException" => {
4276                    return RusotoError::Service(GetApplicationRevisionError::RevisionDoesNotExist(
4277                        err.msg,
4278                    ))
4279                }
4280                "RevisionRequiredException" => {
4281                    return RusotoError::Service(GetApplicationRevisionError::RevisionRequired(
4282                        err.msg,
4283                    ))
4284                }
4285                "ValidationException" => return RusotoError::Validation(err.msg),
4286                _ => {}
4287            }
4288        }
4289        RusotoError::Unknown(res)
4290    }
4291}
4292impl fmt::Display for GetApplicationRevisionError {
4293    #[allow(unused_variables)]
4294    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4295        match *self {
4296            GetApplicationRevisionError::ApplicationDoesNotExist(ref cause) => {
4297                write!(f, "{}", cause)
4298            }
4299            GetApplicationRevisionError::ApplicationNameRequired(ref cause) => {
4300                write!(f, "{}", cause)
4301            }
4302            GetApplicationRevisionError::InvalidApplicationName(ref cause) => {
4303                write!(f, "{}", cause)
4304            }
4305            GetApplicationRevisionError::InvalidRevision(ref cause) => write!(f, "{}", cause),
4306            GetApplicationRevisionError::RevisionDoesNotExist(ref cause) => write!(f, "{}", cause),
4307            GetApplicationRevisionError::RevisionRequired(ref cause) => write!(f, "{}", cause),
4308        }
4309    }
4310}
4311impl Error for GetApplicationRevisionError {}
4312/// Errors returned by GetDeployment
4313#[derive(Debug, PartialEq)]
4314pub enum GetDeploymentError {
4315    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
4316    DeploymentDoesNotExist(String),
4317    /// <p>At least one deployment ID must be specified.</p>
4318    DeploymentIdRequired(String),
4319    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
4320    InvalidDeploymentId(String),
4321}
4322
4323impl GetDeploymentError {
4324    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentError> {
4325        if let Some(err) = proto::json::Error::parse(&res) {
4326            match err.typ.as_str() {
4327                "DeploymentDoesNotExistException" => {
4328                    return RusotoError::Service(GetDeploymentError::DeploymentDoesNotExist(
4329                        err.msg,
4330                    ))
4331                }
4332                "DeploymentIdRequiredException" => {
4333                    return RusotoError::Service(GetDeploymentError::DeploymentIdRequired(err.msg))
4334                }
4335                "InvalidDeploymentIdException" => {
4336                    return RusotoError::Service(GetDeploymentError::InvalidDeploymentId(err.msg))
4337                }
4338                "ValidationException" => return RusotoError::Validation(err.msg),
4339                _ => {}
4340            }
4341        }
4342        RusotoError::Unknown(res)
4343    }
4344}
4345impl fmt::Display for GetDeploymentError {
4346    #[allow(unused_variables)]
4347    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4348        match *self {
4349            GetDeploymentError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
4350            GetDeploymentError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
4351            GetDeploymentError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
4352        }
4353    }
4354}
4355impl Error for GetDeploymentError {}
4356/// Errors returned by GetDeploymentConfig
4357#[derive(Debug, PartialEq)]
4358pub enum GetDeploymentConfigError {
4359    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
4360    DeploymentConfigDoesNotExist(String),
4361    /// <p>The deployment configuration name was not specified.</p>
4362    DeploymentConfigNameRequired(String),
4363    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
4364    InvalidComputePlatform(String),
4365    /// <p>The deployment configuration name was specified in an invalid format.</p>
4366    InvalidDeploymentConfigName(String),
4367}
4368
4369impl GetDeploymentConfigError {
4370    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentConfigError> {
4371        if let Some(err) = proto::json::Error::parse(&res) {
4372            match err.typ.as_str() {
4373                "DeploymentConfigDoesNotExistException" => {
4374                    return RusotoError::Service(
4375                        GetDeploymentConfigError::DeploymentConfigDoesNotExist(err.msg),
4376                    )
4377                }
4378                "DeploymentConfigNameRequiredException" => {
4379                    return RusotoError::Service(
4380                        GetDeploymentConfigError::DeploymentConfigNameRequired(err.msg),
4381                    )
4382                }
4383                "InvalidComputePlatformException" => {
4384                    return RusotoError::Service(GetDeploymentConfigError::InvalidComputePlatform(
4385                        err.msg,
4386                    ))
4387                }
4388                "InvalidDeploymentConfigNameException" => {
4389                    return RusotoError::Service(
4390                        GetDeploymentConfigError::InvalidDeploymentConfigName(err.msg),
4391                    )
4392                }
4393                "ValidationException" => return RusotoError::Validation(err.msg),
4394                _ => {}
4395            }
4396        }
4397        RusotoError::Unknown(res)
4398    }
4399}
4400impl fmt::Display for GetDeploymentConfigError {
4401    #[allow(unused_variables)]
4402    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4403        match *self {
4404            GetDeploymentConfigError::DeploymentConfigDoesNotExist(ref cause) => {
4405                write!(f, "{}", cause)
4406            }
4407            GetDeploymentConfigError::DeploymentConfigNameRequired(ref cause) => {
4408                write!(f, "{}", cause)
4409            }
4410            GetDeploymentConfigError::InvalidComputePlatform(ref cause) => write!(f, "{}", cause),
4411            GetDeploymentConfigError::InvalidDeploymentConfigName(ref cause) => {
4412                write!(f, "{}", cause)
4413            }
4414        }
4415    }
4416}
4417impl Error for GetDeploymentConfigError {}
4418/// Errors returned by GetDeploymentGroup
4419#[derive(Debug, PartialEq)]
4420pub enum GetDeploymentGroupError {
4421    /// <p>The application does not exist with the IAM user or AWS account.</p>
4422    ApplicationDoesNotExist(String),
4423    /// <p>The minimum number of required application names was not specified.</p>
4424    ApplicationNameRequired(String),
4425    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
4426    DeploymentConfigDoesNotExist(String),
4427    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
4428    DeploymentGroupDoesNotExist(String),
4429    /// <p>The deployment group name was not specified.</p>
4430    DeploymentGroupNameRequired(String),
4431    /// <p>The application name was specified in an invalid format.</p>
4432    InvalidApplicationName(String),
4433    /// <p>The deployment group name was specified in an invalid format.</p>
4434    InvalidDeploymentGroupName(String),
4435}
4436
4437impl GetDeploymentGroupError {
4438    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentGroupError> {
4439        if let Some(err) = proto::json::Error::parse(&res) {
4440            match err.typ.as_str() {
4441                "ApplicationDoesNotExistException" => {
4442                    return RusotoError::Service(GetDeploymentGroupError::ApplicationDoesNotExist(
4443                        err.msg,
4444                    ))
4445                }
4446                "ApplicationNameRequiredException" => {
4447                    return RusotoError::Service(GetDeploymentGroupError::ApplicationNameRequired(
4448                        err.msg,
4449                    ))
4450                }
4451                "DeploymentConfigDoesNotExistException" => {
4452                    return RusotoError::Service(
4453                        GetDeploymentGroupError::DeploymentConfigDoesNotExist(err.msg),
4454                    )
4455                }
4456                "DeploymentGroupDoesNotExistException" => {
4457                    return RusotoError::Service(
4458                        GetDeploymentGroupError::DeploymentGroupDoesNotExist(err.msg),
4459                    )
4460                }
4461                "DeploymentGroupNameRequiredException" => {
4462                    return RusotoError::Service(
4463                        GetDeploymentGroupError::DeploymentGroupNameRequired(err.msg),
4464                    )
4465                }
4466                "InvalidApplicationNameException" => {
4467                    return RusotoError::Service(GetDeploymentGroupError::InvalidApplicationName(
4468                        err.msg,
4469                    ))
4470                }
4471                "InvalidDeploymentGroupNameException" => {
4472                    return RusotoError::Service(
4473                        GetDeploymentGroupError::InvalidDeploymentGroupName(err.msg),
4474                    )
4475                }
4476                "ValidationException" => return RusotoError::Validation(err.msg),
4477                _ => {}
4478            }
4479        }
4480        RusotoError::Unknown(res)
4481    }
4482}
4483impl fmt::Display for GetDeploymentGroupError {
4484    #[allow(unused_variables)]
4485    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4486        match *self {
4487            GetDeploymentGroupError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
4488            GetDeploymentGroupError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
4489            GetDeploymentGroupError::DeploymentConfigDoesNotExist(ref cause) => {
4490                write!(f, "{}", cause)
4491            }
4492            GetDeploymentGroupError::DeploymentGroupDoesNotExist(ref cause) => {
4493                write!(f, "{}", cause)
4494            }
4495            GetDeploymentGroupError::DeploymentGroupNameRequired(ref cause) => {
4496                write!(f, "{}", cause)
4497            }
4498            GetDeploymentGroupError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
4499            GetDeploymentGroupError::InvalidDeploymentGroupName(ref cause) => {
4500                write!(f, "{}", cause)
4501            }
4502        }
4503    }
4504}
4505impl Error for GetDeploymentGroupError {}
4506/// Errors returned by GetDeploymentInstance
4507#[derive(Debug, PartialEq)]
4508pub enum GetDeploymentInstanceError {
4509    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
4510    DeploymentDoesNotExist(String),
4511    /// <p>At least one deployment ID must be specified.</p>
4512    DeploymentIdRequired(String),
4513    /// <p>The specified instance does not exist in the deployment group.</p>
4514    InstanceDoesNotExist(String),
4515    /// <p>The instance ID was not specified.</p>
4516    InstanceIdRequired(String),
4517    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
4518    InvalidComputePlatform(String),
4519    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
4520    InvalidDeploymentId(String),
4521    /// <p>The on-premises instance name was specified in an invalid format.</p>
4522    InvalidInstanceName(String),
4523}
4524
4525impl GetDeploymentInstanceError {
4526    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentInstanceError> {
4527        if let Some(err) = proto::json::Error::parse(&res) {
4528            match err.typ.as_str() {
4529                "DeploymentDoesNotExistException" => {
4530                    return RusotoError::Service(
4531                        GetDeploymentInstanceError::DeploymentDoesNotExist(err.msg),
4532                    )
4533                }
4534                "DeploymentIdRequiredException" => {
4535                    return RusotoError::Service(GetDeploymentInstanceError::DeploymentIdRequired(
4536                        err.msg,
4537                    ))
4538                }
4539                "InstanceDoesNotExistException" => {
4540                    return RusotoError::Service(GetDeploymentInstanceError::InstanceDoesNotExist(
4541                        err.msg,
4542                    ))
4543                }
4544                "InstanceIdRequiredException" => {
4545                    return RusotoError::Service(GetDeploymentInstanceError::InstanceIdRequired(
4546                        err.msg,
4547                    ))
4548                }
4549                "InvalidComputePlatformException" => {
4550                    return RusotoError::Service(
4551                        GetDeploymentInstanceError::InvalidComputePlatform(err.msg),
4552                    )
4553                }
4554                "InvalidDeploymentIdException" => {
4555                    return RusotoError::Service(GetDeploymentInstanceError::InvalidDeploymentId(
4556                        err.msg,
4557                    ))
4558                }
4559                "InvalidInstanceNameException" => {
4560                    return RusotoError::Service(GetDeploymentInstanceError::InvalidInstanceName(
4561                        err.msg,
4562                    ))
4563                }
4564                "ValidationException" => return RusotoError::Validation(err.msg),
4565                _ => {}
4566            }
4567        }
4568        RusotoError::Unknown(res)
4569    }
4570}
4571impl fmt::Display for GetDeploymentInstanceError {
4572    #[allow(unused_variables)]
4573    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4574        match *self {
4575            GetDeploymentInstanceError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
4576            GetDeploymentInstanceError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
4577            GetDeploymentInstanceError::InstanceDoesNotExist(ref cause) => write!(f, "{}", cause),
4578            GetDeploymentInstanceError::InstanceIdRequired(ref cause) => write!(f, "{}", cause),
4579            GetDeploymentInstanceError::InvalidComputePlatform(ref cause) => write!(f, "{}", cause),
4580            GetDeploymentInstanceError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
4581            GetDeploymentInstanceError::InvalidInstanceName(ref cause) => write!(f, "{}", cause),
4582        }
4583    }
4584}
4585impl Error for GetDeploymentInstanceError {}
4586/// Errors returned by GetDeploymentTarget
4587#[derive(Debug, PartialEq)]
4588pub enum GetDeploymentTargetError {
4589    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
4590    DeploymentDoesNotExist(String),
4591    /// <p>At least one deployment ID must be specified.</p>
4592    DeploymentIdRequired(String),
4593    /// <p>The specified deployment has not started.</p>
4594    DeploymentNotStarted(String),
4595    /// <p> The provided target ID does not belong to the attempted deployment. </p>
4596    DeploymentTargetDoesNotExist(String),
4597    /// <p> A deployment target ID was not provided. </p>
4598    DeploymentTargetIdRequired(String),
4599    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
4600    InvalidDeploymentId(String),
4601    /// <p> The target ID provided was not valid. </p>
4602    InvalidDeploymentTargetId(String),
4603    /// <p>The on-premises instance name was specified in an invalid format.</p>
4604    InvalidInstanceName(String),
4605}
4606
4607impl GetDeploymentTargetError {
4608    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentTargetError> {
4609        if let Some(err) = proto::json::Error::parse(&res) {
4610            match err.typ.as_str() {
4611                "DeploymentDoesNotExistException" => {
4612                    return RusotoError::Service(GetDeploymentTargetError::DeploymentDoesNotExist(
4613                        err.msg,
4614                    ))
4615                }
4616                "DeploymentIdRequiredException" => {
4617                    return RusotoError::Service(GetDeploymentTargetError::DeploymentIdRequired(
4618                        err.msg,
4619                    ))
4620                }
4621                "DeploymentNotStartedException" => {
4622                    return RusotoError::Service(GetDeploymentTargetError::DeploymentNotStarted(
4623                        err.msg,
4624                    ))
4625                }
4626                "DeploymentTargetDoesNotExistException" => {
4627                    return RusotoError::Service(
4628                        GetDeploymentTargetError::DeploymentTargetDoesNotExist(err.msg),
4629                    )
4630                }
4631                "DeploymentTargetIdRequiredException" => {
4632                    return RusotoError::Service(
4633                        GetDeploymentTargetError::DeploymentTargetIdRequired(err.msg),
4634                    )
4635                }
4636                "InvalidDeploymentIdException" => {
4637                    return RusotoError::Service(GetDeploymentTargetError::InvalidDeploymentId(
4638                        err.msg,
4639                    ))
4640                }
4641                "InvalidDeploymentTargetIdException" => {
4642                    return RusotoError::Service(
4643                        GetDeploymentTargetError::InvalidDeploymentTargetId(err.msg),
4644                    )
4645                }
4646                "InvalidInstanceNameException" => {
4647                    return RusotoError::Service(GetDeploymentTargetError::InvalidInstanceName(
4648                        err.msg,
4649                    ))
4650                }
4651                "ValidationException" => return RusotoError::Validation(err.msg),
4652                _ => {}
4653            }
4654        }
4655        RusotoError::Unknown(res)
4656    }
4657}
4658impl fmt::Display for GetDeploymentTargetError {
4659    #[allow(unused_variables)]
4660    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4661        match *self {
4662            GetDeploymentTargetError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
4663            GetDeploymentTargetError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
4664            GetDeploymentTargetError::DeploymentNotStarted(ref cause) => write!(f, "{}", cause),
4665            GetDeploymentTargetError::DeploymentTargetDoesNotExist(ref cause) => {
4666                write!(f, "{}", cause)
4667            }
4668            GetDeploymentTargetError::DeploymentTargetIdRequired(ref cause) => {
4669                write!(f, "{}", cause)
4670            }
4671            GetDeploymentTargetError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
4672            GetDeploymentTargetError::InvalidDeploymentTargetId(ref cause) => {
4673                write!(f, "{}", cause)
4674            }
4675            GetDeploymentTargetError::InvalidInstanceName(ref cause) => write!(f, "{}", cause),
4676        }
4677    }
4678}
4679impl Error for GetDeploymentTargetError {}
4680/// Errors returned by GetOnPremisesInstance
4681#[derive(Debug, PartialEq)]
4682pub enum GetOnPremisesInstanceError {
4683    /// <p>An on-premises instance name was not specified.</p>
4684    InstanceNameRequired(String),
4685    /// <p>The specified on-premises instance is not registered.</p>
4686    InstanceNotRegistered(String),
4687    /// <p>The on-premises instance name was specified in an invalid format.</p>
4688    InvalidInstanceName(String),
4689}
4690
4691impl GetOnPremisesInstanceError {
4692    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetOnPremisesInstanceError> {
4693        if let Some(err) = proto::json::Error::parse(&res) {
4694            match err.typ.as_str() {
4695                "InstanceNameRequiredException" => {
4696                    return RusotoError::Service(GetOnPremisesInstanceError::InstanceNameRequired(
4697                        err.msg,
4698                    ))
4699                }
4700                "InstanceNotRegisteredException" => {
4701                    return RusotoError::Service(GetOnPremisesInstanceError::InstanceNotRegistered(
4702                        err.msg,
4703                    ))
4704                }
4705                "InvalidInstanceNameException" => {
4706                    return RusotoError::Service(GetOnPremisesInstanceError::InvalidInstanceName(
4707                        err.msg,
4708                    ))
4709                }
4710                "ValidationException" => return RusotoError::Validation(err.msg),
4711                _ => {}
4712            }
4713        }
4714        RusotoError::Unknown(res)
4715    }
4716}
4717impl fmt::Display for GetOnPremisesInstanceError {
4718    #[allow(unused_variables)]
4719    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4720        match *self {
4721            GetOnPremisesInstanceError::InstanceNameRequired(ref cause) => write!(f, "{}", cause),
4722            GetOnPremisesInstanceError::InstanceNotRegistered(ref cause) => write!(f, "{}", cause),
4723            GetOnPremisesInstanceError::InvalidInstanceName(ref cause) => write!(f, "{}", cause),
4724        }
4725    }
4726}
4727impl Error for GetOnPremisesInstanceError {}
4728/// Errors returned by ListApplicationRevisions
4729#[derive(Debug, PartialEq)]
4730pub enum ListApplicationRevisionsError {
4731    /// <p>The application does not exist with the IAM user or AWS account.</p>
4732    ApplicationDoesNotExist(String),
4733    /// <p>The minimum number of required application names was not specified.</p>
4734    ApplicationNameRequired(String),
4735    /// <p>A bucket name is required, but was not provided.</p>
4736    BucketNameFilterRequired(String),
4737    /// <p>The application name was specified in an invalid format.</p>
4738    InvalidApplicationName(String),
4739    /// <p>The bucket name either doesn't exist or was specified in an invalid format.</p>
4740    InvalidBucketNameFilter(String),
4741    /// <p>The deployed state filter was specified in an invalid format.</p>
4742    InvalidDeployedStateFilter(String),
4743    /// <p>The specified key prefix filter was specified in an invalid format.</p>
4744    InvalidKeyPrefixFilter(String),
4745    /// <p>The next token was specified in an invalid format.</p>
4746    InvalidNextToken(String),
4747    /// <p>The column name to sort by is either not present or was specified in an invalid format.</p>
4748    InvalidSortBy(String),
4749    /// <p>The sort order was specified in an invalid format.</p>
4750    InvalidSortOrder(String),
4751}
4752
4753impl ListApplicationRevisionsError {
4754    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListApplicationRevisionsError> {
4755        if let Some(err) = proto::json::Error::parse(&res) {
4756            match err.typ.as_str() {
4757                "ApplicationDoesNotExistException" => {
4758                    return RusotoError::Service(
4759                        ListApplicationRevisionsError::ApplicationDoesNotExist(err.msg),
4760                    )
4761                }
4762                "ApplicationNameRequiredException" => {
4763                    return RusotoError::Service(
4764                        ListApplicationRevisionsError::ApplicationNameRequired(err.msg),
4765                    )
4766                }
4767                "BucketNameFilterRequiredException" => {
4768                    return RusotoError::Service(
4769                        ListApplicationRevisionsError::BucketNameFilterRequired(err.msg),
4770                    )
4771                }
4772                "InvalidApplicationNameException" => {
4773                    return RusotoError::Service(
4774                        ListApplicationRevisionsError::InvalidApplicationName(err.msg),
4775                    )
4776                }
4777                "InvalidBucketNameFilterException" => {
4778                    return RusotoError::Service(
4779                        ListApplicationRevisionsError::InvalidBucketNameFilter(err.msg),
4780                    )
4781                }
4782                "InvalidDeployedStateFilterException" => {
4783                    return RusotoError::Service(
4784                        ListApplicationRevisionsError::InvalidDeployedStateFilter(err.msg),
4785                    )
4786                }
4787                "InvalidKeyPrefixFilterException" => {
4788                    return RusotoError::Service(
4789                        ListApplicationRevisionsError::InvalidKeyPrefixFilter(err.msg),
4790                    )
4791                }
4792                "InvalidNextTokenException" => {
4793                    return RusotoError::Service(ListApplicationRevisionsError::InvalidNextToken(
4794                        err.msg,
4795                    ))
4796                }
4797                "InvalidSortByException" => {
4798                    return RusotoError::Service(ListApplicationRevisionsError::InvalidSortBy(
4799                        err.msg,
4800                    ))
4801                }
4802                "InvalidSortOrderException" => {
4803                    return RusotoError::Service(ListApplicationRevisionsError::InvalidSortOrder(
4804                        err.msg,
4805                    ))
4806                }
4807                "ValidationException" => return RusotoError::Validation(err.msg),
4808                _ => {}
4809            }
4810        }
4811        RusotoError::Unknown(res)
4812    }
4813}
4814impl fmt::Display for ListApplicationRevisionsError {
4815    #[allow(unused_variables)]
4816    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4817        match *self {
4818            ListApplicationRevisionsError::ApplicationDoesNotExist(ref cause) => {
4819                write!(f, "{}", cause)
4820            }
4821            ListApplicationRevisionsError::ApplicationNameRequired(ref cause) => {
4822                write!(f, "{}", cause)
4823            }
4824            ListApplicationRevisionsError::BucketNameFilterRequired(ref cause) => {
4825                write!(f, "{}", cause)
4826            }
4827            ListApplicationRevisionsError::InvalidApplicationName(ref cause) => {
4828                write!(f, "{}", cause)
4829            }
4830            ListApplicationRevisionsError::InvalidBucketNameFilter(ref cause) => {
4831                write!(f, "{}", cause)
4832            }
4833            ListApplicationRevisionsError::InvalidDeployedStateFilter(ref cause) => {
4834                write!(f, "{}", cause)
4835            }
4836            ListApplicationRevisionsError::InvalidKeyPrefixFilter(ref cause) => {
4837                write!(f, "{}", cause)
4838            }
4839            ListApplicationRevisionsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
4840            ListApplicationRevisionsError::InvalidSortBy(ref cause) => write!(f, "{}", cause),
4841            ListApplicationRevisionsError::InvalidSortOrder(ref cause) => write!(f, "{}", cause),
4842        }
4843    }
4844}
4845impl Error for ListApplicationRevisionsError {}
4846/// Errors returned by ListApplications
4847#[derive(Debug, PartialEq)]
4848pub enum ListApplicationsError {
4849    /// <p>The next token was specified in an invalid format.</p>
4850    InvalidNextToken(String),
4851}
4852
4853impl ListApplicationsError {
4854    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListApplicationsError> {
4855        if let Some(err) = proto::json::Error::parse(&res) {
4856            match err.typ.as_str() {
4857                "InvalidNextTokenException" => {
4858                    return RusotoError::Service(ListApplicationsError::InvalidNextToken(err.msg))
4859                }
4860                "ValidationException" => return RusotoError::Validation(err.msg),
4861                _ => {}
4862            }
4863        }
4864        RusotoError::Unknown(res)
4865    }
4866}
4867impl fmt::Display for ListApplicationsError {
4868    #[allow(unused_variables)]
4869    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4870        match *self {
4871            ListApplicationsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
4872        }
4873    }
4874}
4875impl Error for ListApplicationsError {}
4876/// Errors returned by ListDeploymentConfigs
4877#[derive(Debug, PartialEq)]
4878pub enum ListDeploymentConfigsError {
4879    /// <p>The next token was specified in an invalid format.</p>
4880    InvalidNextToken(String),
4881}
4882
4883impl ListDeploymentConfigsError {
4884    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDeploymentConfigsError> {
4885        if let Some(err) = proto::json::Error::parse(&res) {
4886            match err.typ.as_str() {
4887                "InvalidNextTokenException" => {
4888                    return RusotoError::Service(ListDeploymentConfigsError::InvalidNextToken(
4889                        err.msg,
4890                    ))
4891                }
4892                "ValidationException" => return RusotoError::Validation(err.msg),
4893                _ => {}
4894            }
4895        }
4896        RusotoError::Unknown(res)
4897    }
4898}
4899impl fmt::Display for ListDeploymentConfigsError {
4900    #[allow(unused_variables)]
4901    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4902        match *self {
4903            ListDeploymentConfigsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
4904        }
4905    }
4906}
4907impl Error for ListDeploymentConfigsError {}
4908/// Errors returned by ListDeploymentGroups
4909#[derive(Debug, PartialEq)]
4910pub enum ListDeploymentGroupsError {
4911    /// <p>The application does not exist with the IAM user or AWS account.</p>
4912    ApplicationDoesNotExist(String),
4913    /// <p>The minimum number of required application names was not specified.</p>
4914    ApplicationNameRequired(String),
4915    /// <p>The application name was specified in an invalid format.</p>
4916    InvalidApplicationName(String),
4917    /// <p>The next token was specified in an invalid format.</p>
4918    InvalidNextToken(String),
4919}
4920
4921impl ListDeploymentGroupsError {
4922    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDeploymentGroupsError> {
4923        if let Some(err) = proto::json::Error::parse(&res) {
4924            match err.typ.as_str() {
4925                "ApplicationDoesNotExistException" => {
4926                    return RusotoError::Service(
4927                        ListDeploymentGroupsError::ApplicationDoesNotExist(err.msg),
4928                    )
4929                }
4930                "ApplicationNameRequiredException" => {
4931                    return RusotoError::Service(
4932                        ListDeploymentGroupsError::ApplicationNameRequired(err.msg),
4933                    )
4934                }
4935                "InvalidApplicationNameException" => {
4936                    return RusotoError::Service(ListDeploymentGroupsError::InvalidApplicationName(
4937                        err.msg,
4938                    ))
4939                }
4940                "InvalidNextTokenException" => {
4941                    return RusotoError::Service(ListDeploymentGroupsError::InvalidNextToken(
4942                        err.msg,
4943                    ))
4944                }
4945                "ValidationException" => return RusotoError::Validation(err.msg),
4946                _ => {}
4947            }
4948        }
4949        RusotoError::Unknown(res)
4950    }
4951}
4952impl fmt::Display for ListDeploymentGroupsError {
4953    #[allow(unused_variables)]
4954    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4955        match *self {
4956            ListDeploymentGroupsError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
4957            ListDeploymentGroupsError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
4958            ListDeploymentGroupsError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
4959            ListDeploymentGroupsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
4960        }
4961    }
4962}
4963impl Error for ListDeploymentGroupsError {}
4964/// Errors returned by ListDeploymentInstances
4965#[derive(Debug, PartialEq)]
4966pub enum ListDeploymentInstancesError {
4967    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
4968    DeploymentDoesNotExist(String),
4969    /// <p>At least one deployment ID must be specified.</p>
4970    DeploymentIdRequired(String),
4971    /// <p>The specified deployment has not started.</p>
4972    DeploymentNotStarted(String),
4973    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
4974    InvalidComputePlatform(String),
4975    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
4976    InvalidDeploymentId(String),
4977    /// <p>An instance type was specified for an in-place deployment. Instance types are supported for blue/green deployments only.</p>
4978    InvalidDeploymentInstanceType(String),
4979    /// <p>The specified instance status does not exist.</p>
4980    InvalidInstanceStatus(String),
4981    /// <p>An invalid instance type was specified for instances in a blue/green deployment. Valid values include "Blue" for an original environment and "Green" for a replacement environment.</p>
4982    InvalidInstanceType(String),
4983    /// <p>The next token was specified in an invalid format.</p>
4984    InvalidNextToken(String),
4985    /// <p> The target filter name is invalid. </p>
4986    InvalidTargetFilterName(String),
4987}
4988
4989impl ListDeploymentInstancesError {
4990    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDeploymentInstancesError> {
4991        if let Some(err) = proto::json::Error::parse(&res) {
4992            match err.typ.as_str() {
4993                "DeploymentDoesNotExistException" => {
4994                    return RusotoError::Service(
4995                        ListDeploymentInstancesError::DeploymentDoesNotExist(err.msg),
4996                    )
4997                }
4998                "DeploymentIdRequiredException" => {
4999                    return RusotoError::Service(
5000                        ListDeploymentInstancesError::DeploymentIdRequired(err.msg),
5001                    )
5002                }
5003                "DeploymentNotStartedException" => {
5004                    return RusotoError::Service(
5005                        ListDeploymentInstancesError::DeploymentNotStarted(err.msg),
5006                    )
5007                }
5008                "InvalidComputePlatformException" => {
5009                    return RusotoError::Service(
5010                        ListDeploymentInstancesError::InvalidComputePlatform(err.msg),
5011                    )
5012                }
5013                "InvalidDeploymentIdException" => {
5014                    return RusotoError::Service(ListDeploymentInstancesError::InvalidDeploymentId(
5015                        err.msg,
5016                    ))
5017                }
5018                "InvalidDeploymentInstanceTypeException" => {
5019                    return RusotoError::Service(
5020                        ListDeploymentInstancesError::InvalidDeploymentInstanceType(err.msg),
5021                    )
5022                }
5023                "InvalidInstanceStatusException" => {
5024                    return RusotoError::Service(
5025                        ListDeploymentInstancesError::InvalidInstanceStatus(err.msg),
5026                    )
5027                }
5028                "InvalidInstanceTypeException" => {
5029                    return RusotoError::Service(ListDeploymentInstancesError::InvalidInstanceType(
5030                        err.msg,
5031                    ))
5032                }
5033                "InvalidNextTokenException" => {
5034                    return RusotoError::Service(ListDeploymentInstancesError::InvalidNextToken(
5035                        err.msg,
5036                    ))
5037                }
5038                "InvalidTargetFilterNameException" => {
5039                    return RusotoError::Service(
5040                        ListDeploymentInstancesError::InvalidTargetFilterName(err.msg),
5041                    )
5042                }
5043                "ValidationException" => return RusotoError::Validation(err.msg),
5044                _ => {}
5045            }
5046        }
5047        RusotoError::Unknown(res)
5048    }
5049}
5050impl fmt::Display for ListDeploymentInstancesError {
5051    #[allow(unused_variables)]
5052    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5053        match *self {
5054            ListDeploymentInstancesError::DeploymentDoesNotExist(ref cause) => {
5055                write!(f, "{}", cause)
5056            }
5057            ListDeploymentInstancesError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
5058            ListDeploymentInstancesError::DeploymentNotStarted(ref cause) => write!(f, "{}", cause),
5059            ListDeploymentInstancesError::InvalidComputePlatform(ref cause) => {
5060                write!(f, "{}", cause)
5061            }
5062            ListDeploymentInstancesError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
5063            ListDeploymentInstancesError::InvalidDeploymentInstanceType(ref cause) => {
5064                write!(f, "{}", cause)
5065            }
5066            ListDeploymentInstancesError::InvalidInstanceStatus(ref cause) => {
5067                write!(f, "{}", cause)
5068            }
5069            ListDeploymentInstancesError::InvalidInstanceType(ref cause) => write!(f, "{}", cause),
5070            ListDeploymentInstancesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
5071            ListDeploymentInstancesError::InvalidTargetFilterName(ref cause) => {
5072                write!(f, "{}", cause)
5073            }
5074        }
5075    }
5076}
5077impl Error for ListDeploymentInstancesError {}
5078/// Errors returned by ListDeploymentTargets
5079#[derive(Debug, PartialEq)]
5080pub enum ListDeploymentTargetsError {
5081    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
5082    DeploymentDoesNotExist(String),
5083    /// <p>At least one deployment ID must be specified.</p>
5084    DeploymentIdRequired(String),
5085    /// <p>The specified deployment has not started.</p>
5086    DeploymentNotStarted(String),
5087    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
5088    InvalidDeploymentId(String),
5089    /// <p>An instance type was specified for an in-place deployment. Instance types are supported for blue/green deployments only.</p>
5090    InvalidDeploymentInstanceType(String),
5091    /// <p>The specified instance status does not exist.</p>
5092    InvalidInstanceStatus(String),
5093    /// <p>An invalid instance type was specified for instances in a blue/green deployment. Valid values include "Blue" for an original environment and "Green" for a replacement environment.</p>
5094    InvalidInstanceType(String),
5095    /// <p>The next token was specified in an invalid format.</p>
5096    InvalidNextToken(String),
5097}
5098
5099impl ListDeploymentTargetsError {
5100    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDeploymentTargetsError> {
5101        if let Some(err) = proto::json::Error::parse(&res) {
5102            match err.typ.as_str() {
5103                "DeploymentDoesNotExistException" => {
5104                    return RusotoError::Service(
5105                        ListDeploymentTargetsError::DeploymentDoesNotExist(err.msg),
5106                    )
5107                }
5108                "DeploymentIdRequiredException" => {
5109                    return RusotoError::Service(ListDeploymentTargetsError::DeploymentIdRequired(
5110                        err.msg,
5111                    ))
5112                }
5113                "DeploymentNotStartedException" => {
5114                    return RusotoError::Service(ListDeploymentTargetsError::DeploymentNotStarted(
5115                        err.msg,
5116                    ))
5117                }
5118                "InvalidDeploymentIdException" => {
5119                    return RusotoError::Service(ListDeploymentTargetsError::InvalidDeploymentId(
5120                        err.msg,
5121                    ))
5122                }
5123                "InvalidDeploymentInstanceTypeException" => {
5124                    return RusotoError::Service(
5125                        ListDeploymentTargetsError::InvalidDeploymentInstanceType(err.msg),
5126                    )
5127                }
5128                "InvalidInstanceStatusException" => {
5129                    return RusotoError::Service(ListDeploymentTargetsError::InvalidInstanceStatus(
5130                        err.msg,
5131                    ))
5132                }
5133                "InvalidInstanceTypeException" => {
5134                    return RusotoError::Service(ListDeploymentTargetsError::InvalidInstanceType(
5135                        err.msg,
5136                    ))
5137                }
5138                "InvalidNextTokenException" => {
5139                    return RusotoError::Service(ListDeploymentTargetsError::InvalidNextToken(
5140                        err.msg,
5141                    ))
5142                }
5143                "ValidationException" => return RusotoError::Validation(err.msg),
5144                _ => {}
5145            }
5146        }
5147        RusotoError::Unknown(res)
5148    }
5149}
5150impl fmt::Display for ListDeploymentTargetsError {
5151    #[allow(unused_variables)]
5152    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5153        match *self {
5154            ListDeploymentTargetsError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
5155            ListDeploymentTargetsError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
5156            ListDeploymentTargetsError::DeploymentNotStarted(ref cause) => write!(f, "{}", cause),
5157            ListDeploymentTargetsError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
5158            ListDeploymentTargetsError::InvalidDeploymentInstanceType(ref cause) => {
5159                write!(f, "{}", cause)
5160            }
5161            ListDeploymentTargetsError::InvalidInstanceStatus(ref cause) => write!(f, "{}", cause),
5162            ListDeploymentTargetsError::InvalidInstanceType(ref cause) => write!(f, "{}", cause),
5163            ListDeploymentTargetsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
5164        }
5165    }
5166}
5167impl Error for ListDeploymentTargetsError {}
5168/// Errors returned by ListDeployments
5169#[derive(Debug, PartialEq)]
5170pub enum ListDeploymentsError {
5171    /// <p>The application does not exist with the IAM user or AWS account.</p>
5172    ApplicationDoesNotExist(String),
5173    /// <p>The minimum number of required application names was not specified.</p>
5174    ApplicationNameRequired(String),
5175    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
5176    DeploymentGroupDoesNotExist(String),
5177    /// <p>The deployment group name was not specified.</p>
5178    DeploymentGroupNameRequired(String),
5179    /// <p>The application name was specified in an invalid format.</p>
5180    InvalidApplicationName(String),
5181    /// <p>The deployment group name was specified in an invalid format.</p>
5182    InvalidDeploymentGroupName(String),
5183    /// <p>The specified deployment status doesn't exist or cannot be determined.</p>
5184    InvalidDeploymentStatus(String),
5185    /// <p>The external ID was specified in an invalid format.</p>
5186    InvalidExternalId(String),
5187    /// <p>The input was specified in an invalid format.</p>
5188    InvalidInput(String),
5189    /// <p>The next token was specified in an invalid format.</p>
5190    InvalidNextToken(String),
5191    /// <p>The specified time range was specified in an invalid format.</p>
5192    InvalidTimeRange(String),
5193}
5194
5195impl ListDeploymentsError {
5196    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDeploymentsError> {
5197        if let Some(err) = proto::json::Error::parse(&res) {
5198            match err.typ.as_str() {
5199                "ApplicationDoesNotExistException" => {
5200                    return RusotoError::Service(ListDeploymentsError::ApplicationDoesNotExist(
5201                        err.msg,
5202                    ))
5203                }
5204                "ApplicationNameRequiredException" => {
5205                    return RusotoError::Service(ListDeploymentsError::ApplicationNameRequired(
5206                        err.msg,
5207                    ))
5208                }
5209                "DeploymentGroupDoesNotExistException" => {
5210                    return RusotoError::Service(ListDeploymentsError::DeploymentGroupDoesNotExist(
5211                        err.msg,
5212                    ))
5213                }
5214                "DeploymentGroupNameRequiredException" => {
5215                    return RusotoError::Service(ListDeploymentsError::DeploymentGroupNameRequired(
5216                        err.msg,
5217                    ))
5218                }
5219                "InvalidApplicationNameException" => {
5220                    return RusotoError::Service(ListDeploymentsError::InvalidApplicationName(
5221                        err.msg,
5222                    ))
5223                }
5224                "InvalidDeploymentGroupNameException" => {
5225                    return RusotoError::Service(ListDeploymentsError::InvalidDeploymentGroupName(
5226                        err.msg,
5227                    ))
5228                }
5229                "InvalidDeploymentStatusException" => {
5230                    return RusotoError::Service(ListDeploymentsError::InvalidDeploymentStatus(
5231                        err.msg,
5232                    ))
5233                }
5234                "InvalidExternalIdException" => {
5235                    return RusotoError::Service(ListDeploymentsError::InvalidExternalId(err.msg))
5236                }
5237                "InvalidInputException" => {
5238                    return RusotoError::Service(ListDeploymentsError::InvalidInput(err.msg))
5239                }
5240                "InvalidNextTokenException" => {
5241                    return RusotoError::Service(ListDeploymentsError::InvalidNextToken(err.msg))
5242                }
5243                "InvalidTimeRangeException" => {
5244                    return RusotoError::Service(ListDeploymentsError::InvalidTimeRange(err.msg))
5245                }
5246                "ValidationException" => return RusotoError::Validation(err.msg),
5247                _ => {}
5248            }
5249        }
5250        RusotoError::Unknown(res)
5251    }
5252}
5253impl fmt::Display for ListDeploymentsError {
5254    #[allow(unused_variables)]
5255    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5256        match *self {
5257            ListDeploymentsError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
5258            ListDeploymentsError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
5259            ListDeploymentsError::DeploymentGroupDoesNotExist(ref cause) => write!(f, "{}", cause),
5260            ListDeploymentsError::DeploymentGroupNameRequired(ref cause) => write!(f, "{}", cause),
5261            ListDeploymentsError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
5262            ListDeploymentsError::InvalidDeploymentGroupName(ref cause) => write!(f, "{}", cause),
5263            ListDeploymentsError::InvalidDeploymentStatus(ref cause) => write!(f, "{}", cause),
5264            ListDeploymentsError::InvalidExternalId(ref cause) => write!(f, "{}", cause),
5265            ListDeploymentsError::InvalidInput(ref cause) => write!(f, "{}", cause),
5266            ListDeploymentsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
5267            ListDeploymentsError::InvalidTimeRange(ref cause) => write!(f, "{}", cause),
5268        }
5269    }
5270}
5271impl Error for ListDeploymentsError {}
5272/// Errors returned by ListGitHubAccountTokenNames
5273#[derive(Debug, PartialEq)]
5274pub enum ListGitHubAccountTokenNamesError {
5275    /// <p>The next token was specified in an invalid format.</p>
5276    InvalidNextToken(String),
5277    /// <p>The API used does not support the deployment.</p>
5278    OperationNotSupported(String),
5279    /// <p>The specified resource could not be validated.</p>
5280    ResourceValidation(String),
5281}
5282
5283impl ListGitHubAccountTokenNamesError {
5284    pub fn from_response(
5285        res: BufferedHttpResponse,
5286    ) -> RusotoError<ListGitHubAccountTokenNamesError> {
5287        if let Some(err) = proto::json::Error::parse(&res) {
5288            match err.typ.as_str() {
5289                "InvalidNextTokenException" => {
5290                    return RusotoError::Service(
5291                        ListGitHubAccountTokenNamesError::InvalidNextToken(err.msg),
5292                    )
5293                }
5294                "OperationNotSupportedException" => {
5295                    return RusotoError::Service(
5296                        ListGitHubAccountTokenNamesError::OperationNotSupported(err.msg),
5297                    )
5298                }
5299                "ResourceValidationException" => {
5300                    return RusotoError::Service(
5301                        ListGitHubAccountTokenNamesError::ResourceValidation(err.msg),
5302                    )
5303                }
5304                "ValidationException" => return RusotoError::Validation(err.msg),
5305                _ => {}
5306            }
5307        }
5308        RusotoError::Unknown(res)
5309    }
5310}
5311impl fmt::Display for ListGitHubAccountTokenNamesError {
5312    #[allow(unused_variables)]
5313    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5314        match *self {
5315            ListGitHubAccountTokenNamesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
5316            ListGitHubAccountTokenNamesError::OperationNotSupported(ref cause) => {
5317                write!(f, "{}", cause)
5318            }
5319            ListGitHubAccountTokenNamesError::ResourceValidation(ref cause) => {
5320                write!(f, "{}", cause)
5321            }
5322        }
5323    }
5324}
5325impl Error for ListGitHubAccountTokenNamesError {}
5326/// Errors returned by ListOnPremisesInstances
5327#[derive(Debug, PartialEq)]
5328pub enum ListOnPremisesInstancesError {
5329    /// <p>The next token was specified in an invalid format.</p>
5330    InvalidNextToken(String),
5331    /// <p>The registration status was specified in an invalid format.</p>
5332    InvalidRegistrationStatus(String),
5333    /// <p>The tag filter was specified in an invalid format.</p>
5334    InvalidTagFilter(String),
5335}
5336
5337impl ListOnPremisesInstancesError {
5338    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListOnPremisesInstancesError> {
5339        if let Some(err) = proto::json::Error::parse(&res) {
5340            match err.typ.as_str() {
5341                "InvalidNextTokenException" => {
5342                    return RusotoError::Service(ListOnPremisesInstancesError::InvalidNextToken(
5343                        err.msg,
5344                    ))
5345                }
5346                "InvalidRegistrationStatusException" => {
5347                    return RusotoError::Service(
5348                        ListOnPremisesInstancesError::InvalidRegistrationStatus(err.msg),
5349                    )
5350                }
5351                "InvalidTagFilterException" => {
5352                    return RusotoError::Service(ListOnPremisesInstancesError::InvalidTagFilter(
5353                        err.msg,
5354                    ))
5355                }
5356                "ValidationException" => return RusotoError::Validation(err.msg),
5357                _ => {}
5358            }
5359        }
5360        RusotoError::Unknown(res)
5361    }
5362}
5363impl fmt::Display for ListOnPremisesInstancesError {
5364    #[allow(unused_variables)]
5365    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5366        match *self {
5367            ListOnPremisesInstancesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
5368            ListOnPremisesInstancesError::InvalidRegistrationStatus(ref cause) => {
5369                write!(f, "{}", cause)
5370            }
5371            ListOnPremisesInstancesError::InvalidTagFilter(ref cause) => write!(f, "{}", cause),
5372        }
5373    }
5374}
5375impl Error for ListOnPremisesInstancesError {}
5376/// Errors returned by ListTagsForResource
5377#[derive(Debug, PartialEq)]
5378pub enum ListTagsForResourceError {
5379    /// <p> The specified ARN is not supported. For example, it might be an ARN for a resource that is not expected. </p>
5380    ArnNotSupported(String),
5381    /// <p> The specified ARN is not in a valid format. </p>
5382    InvalidArn(String),
5383    /// <p> The ARN of a resource is required, but was not found. </p>
5384    ResourceArnRequired(String),
5385}
5386
5387impl ListTagsForResourceError {
5388    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
5389        if let Some(err) = proto::json::Error::parse(&res) {
5390            match err.typ.as_str() {
5391                "ArnNotSupportedException" => {
5392                    return RusotoError::Service(ListTagsForResourceError::ArnNotSupported(err.msg))
5393                }
5394                "InvalidArnException" => {
5395                    return RusotoError::Service(ListTagsForResourceError::InvalidArn(err.msg))
5396                }
5397                "ResourceArnRequiredException" => {
5398                    return RusotoError::Service(ListTagsForResourceError::ResourceArnRequired(
5399                        err.msg,
5400                    ))
5401                }
5402                "ValidationException" => return RusotoError::Validation(err.msg),
5403                _ => {}
5404            }
5405        }
5406        RusotoError::Unknown(res)
5407    }
5408}
5409impl fmt::Display for ListTagsForResourceError {
5410    #[allow(unused_variables)]
5411    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5412        match *self {
5413            ListTagsForResourceError::ArnNotSupported(ref cause) => write!(f, "{}", cause),
5414            ListTagsForResourceError::InvalidArn(ref cause) => write!(f, "{}", cause),
5415            ListTagsForResourceError::ResourceArnRequired(ref cause) => write!(f, "{}", cause),
5416        }
5417    }
5418}
5419impl Error for ListTagsForResourceError {}
5420/// Errors returned by PutLifecycleEventHookExecutionStatus
5421#[derive(Debug, PartialEq)]
5422pub enum PutLifecycleEventHookExecutionStatusError {
5423    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
5424    DeploymentDoesNotExist(String),
5425    /// <p>At least one deployment ID must be specified.</p>
5426    DeploymentIdRequired(String),
5427    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
5428    InvalidDeploymentId(String),
5429    /// <p>A lifecycle event hook is invalid. Review the <code>hooks</code> section in your AppSpec file to ensure the lifecycle events and <code>hooks</code> functions are valid.</p>
5430    InvalidLifecycleEventHookExecutionId(String),
5431    /// <p>The result of a Lambda validation function that verifies a lifecycle event is invalid. It should return <code>Succeeded</code> or <code>Failed</code>.</p>
5432    InvalidLifecycleEventHookExecutionStatus(String),
5433    /// <p>An attempt to return the status of an already completed lifecycle event occurred.</p>
5434    LifecycleEventAlreadyCompleted(String),
5435    /// <p>A call was submitted that is not supported for the specified deployment type.</p>
5436    UnsupportedActionForDeploymentType(String),
5437}
5438
5439impl PutLifecycleEventHookExecutionStatusError {
5440    pub fn from_response(
5441        res: BufferedHttpResponse,
5442    ) -> RusotoError<PutLifecycleEventHookExecutionStatusError> {
5443        if let Some(err) = proto::json::Error::parse(&res) {
5444            match err.typ.as_str() {
5445                                "DeploymentDoesNotExistException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::DeploymentDoesNotExist(err.msg)),
5446"DeploymentIdRequiredException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::DeploymentIdRequired(err.msg)),
5447"InvalidDeploymentIdException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::InvalidDeploymentId(err.msg)),
5448"InvalidLifecycleEventHookExecutionIdException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::InvalidLifecycleEventHookExecutionId(err.msg)),
5449"InvalidLifecycleEventHookExecutionStatusException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::InvalidLifecycleEventHookExecutionStatus(err.msg)),
5450"LifecycleEventAlreadyCompletedException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::LifecycleEventAlreadyCompleted(err.msg)),
5451"UnsupportedActionForDeploymentTypeException" => return RusotoError::Service(PutLifecycleEventHookExecutionStatusError::UnsupportedActionForDeploymentType(err.msg)),
5452"ValidationException" => return RusotoError::Validation(err.msg),
5453_ => {}
5454                            }
5455        }
5456        RusotoError::Unknown(res)
5457    }
5458}
5459impl fmt::Display for PutLifecycleEventHookExecutionStatusError {
5460    #[allow(unused_variables)]
5461    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5462        match *self {
5463            PutLifecycleEventHookExecutionStatusError::DeploymentDoesNotExist(ref cause) => {
5464                write!(f, "{}", cause)
5465            }
5466            PutLifecycleEventHookExecutionStatusError::DeploymentIdRequired(ref cause) => {
5467                write!(f, "{}", cause)
5468            }
5469            PutLifecycleEventHookExecutionStatusError::InvalidDeploymentId(ref cause) => {
5470                write!(f, "{}", cause)
5471            }
5472            PutLifecycleEventHookExecutionStatusError::InvalidLifecycleEventHookExecutionId(
5473                ref cause,
5474            ) => write!(f, "{}", cause),
5475            PutLifecycleEventHookExecutionStatusError::InvalidLifecycleEventHookExecutionStatus(
5476                ref cause,
5477            ) => write!(f, "{}", cause),
5478            PutLifecycleEventHookExecutionStatusError::LifecycleEventAlreadyCompleted(
5479                ref cause,
5480            ) => write!(f, "{}", cause),
5481            PutLifecycleEventHookExecutionStatusError::UnsupportedActionForDeploymentType(
5482                ref cause,
5483            ) => write!(f, "{}", cause),
5484        }
5485    }
5486}
5487impl Error for PutLifecycleEventHookExecutionStatusError {}
5488/// Errors returned by RegisterApplicationRevision
5489#[derive(Debug, PartialEq)]
5490pub enum RegisterApplicationRevisionError {
5491    /// <p>The application does not exist with the IAM user or AWS account.</p>
5492    ApplicationDoesNotExist(String),
5493    /// <p>The minimum number of required application names was not specified.</p>
5494    ApplicationNameRequired(String),
5495    /// <p>The description is too long.</p>
5496    DescriptionTooLong(String),
5497    /// <p>The application name was specified in an invalid format.</p>
5498    InvalidApplicationName(String),
5499    /// <p>The revision was specified in an invalid format.</p>
5500    InvalidRevision(String),
5501    /// <p>The revision ID was not specified.</p>
5502    RevisionRequired(String),
5503}
5504
5505impl RegisterApplicationRevisionError {
5506    pub fn from_response(
5507        res: BufferedHttpResponse,
5508    ) -> RusotoError<RegisterApplicationRevisionError> {
5509        if let Some(err) = proto::json::Error::parse(&res) {
5510            match err.typ.as_str() {
5511                "ApplicationDoesNotExistException" => {
5512                    return RusotoError::Service(
5513                        RegisterApplicationRevisionError::ApplicationDoesNotExist(err.msg),
5514                    )
5515                }
5516                "ApplicationNameRequiredException" => {
5517                    return RusotoError::Service(
5518                        RegisterApplicationRevisionError::ApplicationNameRequired(err.msg),
5519                    )
5520                }
5521                "DescriptionTooLongException" => {
5522                    return RusotoError::Service(
5523                        RegisterApplicationRevisionError::DescriptionTooLong(err.msg),
5524                    )
5525                }
5526                "InvalidApplicationNameException" => {
5527                    return RusotoError::Service(
5528                        RegisterApplicationRevisionError::InvalidApplicationName(err.msg),
5529                    )
5530                }
5531                "InvalidRevisionException" => {
5532                    return RusotoError::Service(RegisterApplicationRevisionError::InvalidRevision(
5533                        err.msg,
5534                    ))
5535                }
5536                "RevisionRequiredException" => {
5537                    return RusotoError::Service(
5538                        RegisterApplicationRevisionError::RevisionRequired(err.msg),
5539                    )
5540                }
5541                "ValidationException" => return RusotoError::Validation(err.msg),
5542                _ => {}
5543            }
5544        }
5545        RusotoError::Unknown(res)
5546    }
5547}
5548impl fmt::Display for RegisterApplicationRevisionError {
5549    #[allow(unused_variables)]
5550    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5551        match *self {
5552            RegisterApplicationRevisionError::ApplicationDoesNotExist(ref cause) => {
5553                write!(f, "{}", cause)
5554            }
5555            RegisterApplicationRevisionError::ApplicationNameRequired(ref cause) => {
5556                write!(f, "{}", cause)
5557            }
5558            RegisterApplicationRevisionError::DescriptionTooLong(ref cause) => {
5559                write!(f, "{}", cause)
5560            }
5561            RegisterApplicationRevisionError::InvalidApplicationName(ref cause) => {
5562                write!(f, "{}", cause)
5563            }
5564            RegisterApplicationRevisionError::InvalidRevision(ref cause) => write!(f, "{}", cause),
5565            RegisterApplicationRevisionError::RevisionRequired(ref cause) => write!(f, "{}", cause),
5566        }
5567    }
5568}
5569impl Error for RegisterApplicationRevisionError {}
5570/// Errors returned by RegisterOnPremisesInstance
5571#[derive(Debug, PartialEq)]
5572pub enum RegisterOnPremisesInstanceError {
5573    /// <p>No IAM ARN was included in the request. You must use an IAM session ARN or IAM user ARN in the request.</p>
5574    IamArnRequired(String),
5575    /// <p>The request included an IAM session ARN that has already been used to register a different instance.</p>
5576    IamSessionArnAlreadyRegistered(String),
5577    /// <p>The specified IAM user ARN is already registered with an on-premises instance.</p>
5578    IamUserArnAlreadyRegistered(String),
5579    /// <p>An IAM user ARN was not specified.</p>
5580    IamUserArnRequired(String),
5581    /// <p>The specified on-premises instance name is already registered.</p>
5582    InstanceNameAlreadyRegistered(String),
5583    /// <p>An on-premises instance name was not specified.</p>
5584    InstanceNameRequired(String),
5585    /// <p>The IAM session ARN was specified in an invalid format.</p>
5586    InvalidIamSessionArn(String),
5587    /// <p>The IAM user ARN was specified in an invalid format.</p>
5588    InvalidIamUserArn(String),
5589    /// <p>The on-premises instance name was specified in an invalid format.</p>
5590    InvalidInstanceName(String),
5591    /// <p>Both an IAM user ARN and an IAM session ARN were included in the request. Use only one ARN type.</p>
5592    MultipleIamArnsProvided(String),
5593}
5594
5595impl RegisterOnPremisesInstanceError {
5596    pub fn from_response(
5597        res: BufferedHttpResponse,
5598    ) -> RusotoError<RegisterOnPremisesInstanceError> {
5599        if let Some(err) = proto::json::Error::parse(&res) {
5600            match err.typ.as_str() {
5601                "IamArnRequiredException" => {
5602                    return RusotoError::Service(RegisterOnPremisesInstanceError::IamArnRequired(
5603                        err.msg,
5604                    ))
5605                }
5606                "IamSessionArnAlreadyRegisteredException" => {
5607                    return RusotoError::Service(
5608                        RegisterOnPremisesInstanceError::IamSessionArnAlreadyRegistered(err.msg),
5609                    )
5610                }
5611                "IamUserArnAlreadyRegisteredException" => {
5612                    return RusotoError::Service(
5613                        RegisterOnPremisesInstanceError::IamUserArnAlreadyRegistered(err.msg),
5614                    )
5615                }
5616                "IamUserArnRequiredException" => {
5617                    return RusotoError::Service(
5618                        RegisterOnPremisesInstanceError::IamUserArnRequired(err.msg),
5619                    )
5620                }
5621                "InstanceNameAlreadyRegisteredException" => {
5622                    return RusotoError::Service(
5623                        RegisterOnPremisesInstanceError::InstanceNameAlreadyRegistered(err.msg),
5624                    )
5625                }
5626                "InstanceNameRequiredException" => {
5627                    return RusotoError::Service(
5628                        RegisterOnPremisesInstanceError::InstanceNameRequired(err.msg),
5629                    )
5630                }
5631                "InvalidIamSessionArnException" => {
5632                    return RusotoError::Service(
5633                        RegisterOnPremisesInstanceError::InvalidIamSessionArn(err.msg),
5634                    )
5635                }
5636                "InvalidIamUserArnException" => {
5637                    return RusotoError::Service(
5638                        RegisterOnPremisesInstanceError::InvalidIamUserArn(err.msg),
5639                    )
5640                }
5641                "InvalidInstanceNameException" => {
5642                    return RusotoError::Service(
5643                        RegisterOnPremisesInstanceError::InvalidInstanceName(err.msg),
5644                    )
5645                }
5646                "MultipleIamArnsProvidedException" => {
5647                    return RusotoError::Service(
5648                        RegisterOnPremisesInstanceError::MultipleIamArnsProvided(err.msg),
5649                    )
5650                }
5651                "ValidationException" => return RusotoError::Validation(err.msg),
5652                _ => {}
5653            }
5654        }
5655        RusotoError::Unknown(res)
5656    }
5657}
5658impl fmt::Display for RegisterOnPremisesInstanceError {
5659    #[allow(unused_variables)]
5660    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5661        match *self {
5662            RegisterOnPremisesInstanceError::IamArnRequired(ref cause) => write!(f, "{}", cause),
5663            RegisterOnPremisesInstanceError::IamSessionArnAlreadyRegistered(ref cause) => {
5664                write!(f, "{}", cause)
5665            }
5666            RegisterOnPremisesInstanceError::IamUserArnAlreadyRegistered(ref cause) => {
5667                write!(f, "{}", cause)
5668            }
5669            RegisterOnPremisesInstanceError::IamUserArnRequired(ref cause) => {
5670                write!(f, "{}", cause)
5671            }
5672            RegisterOnPremisesInstanceError::InstanceNameAlreadyRegistered(ref cause) => {
5673                write!(f, "{}", cause)
5674            }
5675            RegisterOnPremisesInstanceError::InstanceNameRequired(ref cause) => {
5676                write!(f, "{}", cause)
5677            }
5678            RegisterOnPremisesInstanceError::InvalidIamSessionArn(ref cause) => {
5679                write!(f, "{}", cause)
5680            }
5681            RegisterOnPremisesInstanceError::InvalidIamUserArn(ref cause) => write!(f, "{}", cause),
5682            RegisterOnPremisesInstanceError::InvalidInstanceName(ref cause) => {
5683                write!(f, "{}", cause)
5684            }
5685            RegisterOnPremisesInstanceError::MultipleIamArnsProvided(ref cause) => {
5686                write!(f, "{}", cause)
5687            }
5688        }
5689    }
5690}
5691impl Error for RegisterOnPremisesInstanceError {}
5692/// Errors returned by RemoveTagsFromOnPremisesInstances
5693#[derive(Debug, PartialEq)]
5694pub enum RemoveTagsFromOnPremisesInstancesError {
5695    /// <p>The maximum number of allowed on-premises instances in a single call was exceeded.</p>
5696    InstanceLimitExceeded(String),
5697    /// <p>An on-premises instance name was not specified.</p>
5698    InstanceNameRequired(String),
5699    /// <p>The specified on-premises instance is not registered.</p>
5700    InstanceNotRegistered(String),
5701    /// <p>The on-premises instance name was specified in an invalid format.</p>
5702    InvalidInstanceName(String),
5703    /// <p>The tag was specified in an invalid format.</p>
5704    InvalidTag(String),
5705    /// <p>The maximum allowed number of tags was exceeded.</p>
5706    TagLimitExceeded(String),
5707    /// <p>A tag was not specified.</p>
5708    TagRequired(String),
5709}
5710
5711impl RemoveTagsFromOnPremisesInstancesError {
5712    pub fn from_response(
5713        res: BufferedHttpResponse,
5714    ) -> RusotoError<RemoveTagsFromOnPremisesInstancesError> {
5715        if let Some(err) = proto::json::Error::parse(&res) {
5716            match err.typ.as_str() {
5717                "InstanceLimitExceededException" => {
5718                    return RusotoError::Service(
5719                        RemoveTagsFromOnPremisesInstancesError::InstanceLimitExceeded(err.msg),
5720                    )
5721                }
5722                "InstanceNameRequiredException" => {
5723                    return RusotoError::Service(
5724                        RemoveTagsFromOnPremisesInstancesError::InstanceNameRequired(err.msg),
5725                    )
5726                }
5727                "InstanceNotRegisteredException" => {
5728                    return RusotoError::Service(
5729                        RemoveTagsFromOnPremisesInstancesError::InstanceNotRegistered(err.msg),
5730                    )
5731                }
5732                "InvalidInstanceNameException" => {
5733                    return RusotoError::Service(
5734                        RemoveTagsFromOnPremisesInstancesError::InvalidInstanceName(err.msg),
5735                    )
5736                }
5737                "InvalidTagException" => {
5738                    return RusotoError::Service(
5739                        RemoveTagsFromOnPremisesInstancesError::InvalidTag(err.msg),
5740                    )
5741                }
5742                "TagLimitExceededException" => {
5743                    return RusotoError::Service(
5744                        RemoveTagsFromOnPremisesInstancesError::TagLimitExceeded(err.msg),
5745                    )
5746                }
5747                "TagRequiredException" => {
5748                    return RusotoError::Service(
5749                        RemoveTagsFromOnPremisesInstancesError::TagRequired(err.msg),
5750                    )
5751                }
5752                "ValidationException" => return RusotoError::Validation(err.msg),
5753                _ => {}
5754            }
5755        }
5756        RusotoError::Unknown(res)
5757    }
5758}
5759impl fmt::Display for RemoveTagsFromOnPremisesInstancesError {
5760    #[allow(unused_variables)]
5761    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5762        match *self {
5763            RemoveTagsFromOnPremisesInstancesError::InstanceLimitExceeded(ref cause) => {
5764                write!(f, "{}", cause)
5765            }
5766            RemoveTagsFromOnPremisesInstancesError::InstanceNameRequired(ref cause) => {
5767                write!(f, "{}", cause)
5768            }
5769            RemoveTagsFromOnPremisesInstancesError::InstanceNotRegistered(ref cause) => {
5770                write!(f, "{}", cause)
5771            }
5772            RemoveTagsFromOnPremisesInstancesError::InvalidInstanceName(ref cause) => {
5773                write!(f, "{}", cause)
5774            }
5775            RemoveTagsFromOnPremisesInstancesError::InvalidTag(ref cause) => write!(f, "{}", cause),
5776            RemoveTagsFromOnPremisesInstancesError::TagLimitExceeded(ref cause) => {
5777                write!(f, "{}", cause)
5778            }
5779            RemoveTagsFromOnPremisesInstancesError::TagRequired(ref cause) => {
5780                write!(f, "{}", cause)
5781            }
5782        }
5783    }
5784}
5785impl Error for RemoveTagsFromOnPremisesInstancesError {}
5786/// Errors returned by SkipWaitTimeForInstanceTermination
5787#[derive(Debug, PartialEq)]
5788pub enum SkipWaitTimeForInstanceTerminationError {
5789    /// <p>The deployment is already complete.</p>
5790    DeploymentAlreadyCompleted(String),
5791    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
5792    DeploymentDoesNotExist(String),
5793    /// <p>At least one deployment ID must be specified.</p>
5794    DeploymentIdRequired(String),
5795    /// <p>The specified deployment has not started.</p>
5796    DeploymentNotStarted(String),
5797    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
5798    InvalidDeploymentId(String),
5799    /// <p>A call was submitted that is not supported for the specified deployment type.</p>
5800    UnsupportedActionForDeploymentType(String),
5801}
5802
5803impl SkipWaitTimeForInstanceTerminationError {
5804    pub fn from_response(
5805        res: BufferedHttpResponse,
5806    ) -> RusotoError<SkipWaitTimeForInstanceTerminationError> {
5807        if let Some(err) = proto::json::Error::parse(&res) {
5808            match err.typ.as_str() {
5809                "DeploymentAlreadyCompletedException" => {
5810                    return RusotoError::Service(
5811                        SkipWaitTimeForInstanceTerminationError::DeploymentAlreadyCompleted(
5812                            err.msg,
5813                        ),
5814                    )
5815                }
5816                "DeploymentDoesNotExistException" => {
5817                    return RusotoError::Service(
5818                        SkipWaitTimeForInstanceTerminationError::DeploymentDoesNotExist(err.msg),
5819                    )
5820                }
5821                "DeploymentIdRequiredException" => {
5822                    return RusotoError::Service(
5823                        SkipWaitTimeForInstanceTerminationError::DeploymentIdRequired(err.msg),
5824                    )
5825                }
5826                "DeploymentNotStartedException" => {
5827                    return RusotoError::Service(
5828                        SkipWaitTimeForInstanceTerminationError::DeploymentNotStarted(err.msg),
5829                    )
5830                }
5831                "InvalidDeploymentIdException" => {
5832                    return RusotoError::Service(
5833                        SkipWaitTimeForInstanceTerminationError::InvalidDeploymentId(err.msg),
5834                    )
5835                }
5836                "UnsupportedActionForDeploymentTypeException" => {
5837                    return RusotoError::Service(
5838                        SkipWaitTimeForInstanceTerminationError::UnsupportedActionForDeploymentType(
5839                            err.msg,
5840                        ),
5841                    )
5842                }
5843                "ValidationException" => return RusotoError::Validation(err.msg),
5844                _ => {}
5845            }
5846        }
5847        RusotoError::Unknown(res)
5848    }
5849}
5850impl fmt::Display for SkipWaitTimeForInstanceTerminationError {
5851    #[allow(unused_variables)]
5852    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5853        match *self {
5854            SkipWaitTimeForInstanceTerminationError::DeploymentAlreadyCompleted(ref cause) => {
5855                write!(f, "{}", cause)
5856            }
5857            SkipWaitTimeForInstanceTerminationError::DeploymentDoesNotExist(ref cause) => {
5858                write!(f, "{}", cause)
5859            }
5860            SkipWaitTimeForInstanceTerminationError::DeploymentIdRequired(ref cause) => {
5861                write!(f, "{}", cause)
5862            }
5863            SkipWaitTimeForInstanceTerminationError::DeploymentNotStarted(ref cause) => {
5864                write!(f, "{}", cause)
5865            }
5866            SkipWaitTimeForInstanceTerminationError::InvalidDeploymentId(ref cause) => {
5867                write!(f, "{}", cause)
5868            }
5869            SkipWaitTimeForInstanceTerminationError::UnsupportedActionForDeploymentType(
5870                ref cause,
5871            ) => write!(f, "{}", cause),
5872        }
5873    }
5874}
5875impl Error for SkipWaitTimeForInstanceTerminationError {}
5876/// Errors returned by StopDeployment
5877#[derive(Debug, PartialEq)]
5878pub enum StopDeploymentError {
5879    /// <p>The deployment is already complete.</p>
5880    DeploymentAlreadyCompleted(String),
5881    /// <p>The deployment with the IAM user or AWS account does not exist.</p>
5882    DeploymentDoesNotExist(String),
5883    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
5884    DeploymentGroupDoesNotExist(String),
5885    /// <p>At least one deployment ID must be specified.</p>
5886    DeploymentIdRequired(String),
5887    /// <p>At least one of the deployment IDs was specified in an invalid format.</p>
5888    InvalidDeploymentId(String),
5889    /// <p>A call was submitted that is not supported for the specified deployment type.</p>
5890    UnsupportedActionForDeploymentType(String),
5891}
5892
5893impl StopDeploymentError {
5894    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopDeploymentError> {
5895        if let Some(err) = proto::json::Error::parse(&res) {
5896            match err.typ.as_str() {
5897                "DeploymentAlreadyCompletedException" => {
5898                    return RusotoError::Service(StopDeploymentError::DeploymentAlreadyCompleted(
5899                        err.msg,
5900                    ))
5901                }
5902                "DeploymentDoesNotExistException" => {
5903                    return RusotoError::Service(StopDeploymentError::DeploymentDoesNotExist(
5904                        err.msg,
5905                    ))
5906                }
5907                "DeploymentGroupDoesNotExistException" => {
5908                    return RusotoError::Service(StopDeploymentError::DeploymentGroupDoesNotExist(
5909                        err.msg,
5910                    ))
5911                }
5912                "DeploymentIdRequiredException" => {
5913                    return RusotoError::Service(StopDeploymentError::DeploymentIdRequired(err.msg))
5914                }
5915                "InvalidDeploymentIdException" => {
5916                    return RusotoError::Service(StopDeploymentError::InvalidDeploymentId(err.msg))
5917                }
5918                "UnsupportedActionForDeploymentTypeException" => {
5919                    return RusotoError::Service(
5920                        StopDeploymentError::UnsupportedActionForDeploymentType(err.msg),
5921                    )
5922                }
5923                "ValidationException" => return RusotoError::Validation(err.msg),
5924                _ => {}
5925            }
5926        }
5927        RusotoError::Unknown(res)
5928    }
5929}
5930impl fmt::Display for StopDeploymentError {
5931    #[allow(unused_variables)]
5932    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5933        match *self {
5934            StopDeploymentError::DeploymentAlreadyCompleted(ref cause) => write!(f, "{}", cause),
5935            StopDeploymentError::DeploymentDoesNotExist(ref cause) => write!(f, "{}", cause),
5936            StopDeploymentError::DeploymentGroupDoesNotExist(ref cause) => write!(f, "{}", cause),
5937            StopDeploymentError::DeploymentIdRequired(ref cause) => write!(f, "{}", cause),
5938            StopDeploymentError::InvalidDeploymentId(ref cause) => write!(f, "{}", cause),
5939            StopDeploymentError::UnsupportedActionForDeploymentType(ref cause) => {
5940                write!(f, "{}", cause)
5941            }
5942        }
5943    }
5944}
5945impl Error for StopDeploymentError {}
5946/// Errors returned by TagResource
5947#[derive(Debug, PartialEq)]
5948pub enum TagResourceError {
5949    /// <p>The application does not exist with the IAM user or AWS account.</p>
5950    ApplicationDoesNotExist(String),
5951    /// <p> The specified ARN is not supported. For example, it might be an ARN for a resource that is not expected. </p>
5952    ArnNotSupported(String),
5953    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
5954    DeploymentConfigDoesNotExist(String),
5955    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
5956    DeploymentGroupDoesNotExist(String),
5957    /// <p> The specified ARN is not in a valid format. </p>
5958    InvalidArn(String),
5959    /// <p> The specified tags are not valid. </p>
5960    InvalidTagsToAdd(String),
5961    /// <p> The ARN of a resource is required, but was not found. </p>
5962    ResourceArnRequired(String),
5963    /// <p>A tag was not specified.</p>
5964    TagRequired(String),
5965}
5966
5967impl TagResourceError {
5968    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
5969        if let Some(err) = proto::json::Error::parse(&res) {
5970            match err.typ.as_str() {
5971                "ApplicationDoesNotExistException" => {
5972                    return RusotoError::Service(TagResourceError::ApplicationDoesNotExist(err.msg))
5973                }
5974                "ArnNotSupportedException" => {
5975                    return RusotoError::Service(TagResourceError::ArnNotSupported(err.msg))
5976                }
5977                "DeploymentConfigDoesNotExistException" => {
5978                    return RusotoError::Service(TagResourceError::DeploymentConfigDoesNotExist(
5979                        err.msg,
5980                    ))
5981                }
5982                "DeploymentGroupDoesNotExistException" => {
5983                    return RusotoError::Service(TagResourceError::DeploymentGroupDoesNotExist(
5984                        err.msg,
5985                    ))
5986                }
5987                "InvalidArnException" => {
5988                    return RusotoError::Service(TagResourceError::InvalidArn(err.msg))
5989                }
5990                "InvalidTagsToAddException" => {
5991                    return RusotoError::Service(TagResourceError::InvalidTagsToAdd(err.msg))
5992                }
5993                "ResourceArnRequiredException" => {
5994                    return RusotoError::Service(TagResourceError::ResourceArnRequired(err.msg))
5995                }
5996                "TagRequiredException" => {
5997                    return RusotoError::Service(TagResourceError::TagRequired(err.msg))
5998                }
5999                "ValidationException" => return RusotoError::Validation(err.msg),
6000                _ => {}
6001            }
6002        }
6003        RusotoError::Unknown(res)
6004    }
6005}
6006impl fmt::Display for TagResourceError {
6007    #[allow(unused_variables)]
6008    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6009        match *self {
6010            TagResourceError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
6011            TagResourceError::ArnNotSupported(ref cause) => write!(f, "{}", cause),
6012            TagResourceError::DeploymentConfigDoesNotExist(ref cause) => write!(f, "{}", cause),
6013            TagResourceError::DeploymentGroupDoesNotExist(ref cause) => write!(f, "{}", cause),
6014            TagResourceError::InvalidArn(ref cause) => write!(f, "{}", cause),
6015            TagResourceError::InvalidTagsToAdd(ref cause) => write!(f, "{}", cause),
6016            TagResourceError::ResourceArnRequired(ref cause) => write!(f, "{}", cause),
6017            TagResourceError::TagRequired(ref cause) => write!(f, "{}", cause),
6018        }
6019    }
6020}
6021impl Error for TagResourceError {}
6022/// Errors returned by UntagResource
6023#[derive(Debug, PartialEq)]
6024pub enum UntagResourceError {
6025    /// <p>The application does not exist with the IAM user or AWS account.</p>
6026    ApplicationDoesNotExist(String),
6027    /// <p> The specified ARN is not supported. For example, it might be an ARN for a resource that is not expected. </p>
6028    ArnNotSupported(String),
6029    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
6030    DeploymentConfigDoesNotExist(String),
6031    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
6032    DeploymentGroupDoesNotExist(String),
6033    /// <p> The specified ARN is not in a valid format. </p>
6034    InvalidArn(String),
6035    /// <p> The specified tags are not valid. </p>
6036    InvalidTagsToAdd(String),
6037    /// <p> The ARN of a resource is required, but was not found. </p>
6038    ResourceArnRequired(String),
6039    /// <p>A tag was not specified.</p>
6040    TagRequired(String),
6041}
6042
6043impl UntagResourceError {
6044    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
6045        if let Some(err) = proto::json::Error::parse(&res) {
6046            match err.typ.as_str() {
6047                "ApplicationDoesNotExistException" => {
6048                    return RusotoError::Service(UntagResourceError::ApplicationDoesNotExist(
6049                        err.msg,
6050                    ))
6051                }
6052                "ArnNotSupportedException" => {
6053                    return RusotoError::Service(UntagResourceError::ArnNotSupported(err.msg))
6054                }
6055                "DeploymentConfigDoesNotExistException" => {
6056                    return RusotoError::Service(UntagResourceError::DeploymentConfigDoesNotExist(
6057                        err.msg,
6058                    ))
6059                }
6060                "DeploymentGroupDoesNotExistException" => {
6061                    return RusotoError::Service(UntagResourceError::DeploymentGroupDoesNotExist(
6062                        err.msg,
6063                    ))
6064                }
6065                "InvalidArnException" => {
6066                    return RusotoError::Service(UntagResourceError::InvalidArn(err.msg))
6067                }
6068                "InvalidTagsToAddException" => {
6069                    return RusotoError::Service(UntagResourceError::InvalidTagsToAdd(err.msg))
6070                }
6071                "ResourceArnRequiredException" => {
6072                    return RusotoError::Service(UntagResourceError::ResourceArnRequired(err.msg))
6073                }
6074                "TagRequiredException" => {
6075                    return RusotoError::Service(UntagResourceError::TagRequired(err.msg))
6076                }
6077                "ValidationException" => return RusotoError::Validation(err.msg),
6078                _ => {}
6079            }
6080        }
6081        RusotoError::Unknown(res)
6082    }
6083}
6084impl fmt::Display for UntagResourceError {
6085    #[allow(unused_variables)]
6086    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6087        match *self {
6088            UntagResourceError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
6089            UntagResourceError::ArnNotSupported(ref cause) => write!(f, "{}", cause),
6090            UntagResourceError::DeploymentConfigDoesNotExist(ref cause) => write!(f, "{}", cause),
6091            UntagResourceError::DeploymentGroupDoesNotExist(ref cause) => write!(f, "{}", cause),
6092            UntagResourceError::InvalidArn(ref cause) => write!(f, "{}", cause),
6093            UntagResourceError::InvalidTagsToAdd(ref cause) => write!(f, "{}", cause),
6094            UntagResourceError::ResourceArnRequired(ref cause) => write!(f, "{}", cause),
6095            UntagResourceError::TagRequired(ref cause) => write!(f, "{}", cause),
6096        }
6097    }
6098}
6099impl Error for UntagResourceError {}
6100/// Errors returned by UpdateApplication
6101#[derive(Debug, PartialEq)]
6102pub enum UpdateApplicationError {
6103    /// <p>An application with the specified name with the IAM user or AWS account already exists.</p>
6104    ApplicationAlreadyExists(String),
6105    /// <p>The application does not exist with the IAM user or AWS account.</p>
6106    ApplicationDoesNotExist(String),
6107    /// <p>The minimum number of required application names was not specified.</p>
6108    ApplicationNameRequired(String),
6109    /// <p>The application name was specified in an invalid format.</p>
6110    InvalidApplicationName(String),
6111}
6112
6113impl UpdateApplicationError {
6114    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateApplicationError> {
6115        if let Some(err) = proto::json::Error::parse(&res) {
6116            match err.typ.as_str() {
6117                "ApplicationAlreadyExistsException" => {
6118                    return RusotoError::Service(UpdateApplicationError::ApplicationAlreadyExists(
6119                        err.msg,
6120                    ))
6121                }
6122                "ApplicationDoesNotExistException" => {
6123                    return RusotoError::Service(UpdateApplicationError::ApplicationDoesNotExist(
6124                        err.msg,
6125                    ))
6126                }
6127                "ApplicationNameRequiredException" => {
6128                    return RusotoError::Service(UpdateApplicationError::ApplicationNameRequired(
6129                        err.msg,
6130                    ))
6131                }
6132                "InvalidApplicationNameException" => {
6133                    return RusotoError::Service(UpdateApplicationError::InvalidApplicationName(
6134                        err.msg,
6135                    ))
6136                }
6137                "ValidationException" => return RusotoError::Validation(err.msg),
6138                _ => {}
6139            }
6140        }
6141        RusotoError::Unknown(res)
6142    }
6143}
6144impl fmt::Display for UpdateApplicationError {
6145    #[allow(unused_variables)]
6146    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6147        match *self {
6148            UpdateApplicationError::ApplicationAlreadyExists(ref cause) => write!(f, "{}", cause),
6149            UpdateApplicationError::ApplicationDoesNotExist(ref cause) => write!(f, "{}", cause),
6150            UpdateApplicationError::ApplicationNameRequired(ref cause) => write!(f, "{}", cause),
6151            UpdateApplicationError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
6152        }
6153    }
6154}
6155impl Error for UpdateApplicationError {}
6156/// Errors returned by UpdateDeploymentGroup
6157#[derive(Debug, PartialEq)]
6158pub enum UpdateDeploymentGroupError {
6159    /// <p>The maximum number of alarms for a deployment group (10) was exceeded.</p>
6160    AlarmsLimitExceeded(String),
6161    /// <p>The application does not exist with the IAM user or AWS account.</p>
6162    ApplicationDoesNotExist(String),
6163    /// <p>The minimum number of required application names was not specified.</p>
6164    ApplicationNameRequired(String),
6165    /// <p>The deployment configuration does not exist with the IAM user or AWS account.</p>
6166    DeploymentConfigDoesNotExist(String),
6167    /// <p>A deployment group with the specified name with the IAM user or AWS account already exists.</p>
6168    DeploymentGroupAlreadyExists(String),
6169    /// <p>The named deployment group with the IAM user or AWS account does not exist.</p>
6170    DeploymentGroupDoesNotExist(String),
6171    /// <p>The deployment group name was not specified.</p>
6172    DeploymentGroupNameRequired(String),
6173    /// <p> The Amazon ECS service is associated with more than one deployment groups. An Amazon ECS service can be associated with only one deployment group. </p>
6174    ECSServiceMappingLimitExceeded(String),
6175    /// <p><p>The format of the alarm configuration is invalid. Possible causes include:</p> <ul> <li> <p>The alarm list is null.</p> </li> <li> <p>The alarm object is null.</p> </li> <li> <p>The alarm name is empty or null or exceeds the limit of 255 characters.</p> </li> <li> <p>Two alarms with the same name have been specified.</p> </li> <li> <p>The alarm configuration is enabled, but the alarm list is empty.</p> </li> </ul></p>
6176    InvalidAlarmConfig(String),
6177    /// <p>The application name was specified in an invalid format.</p>
6178    InvalidApplicationName(String),
6179    /// <p>The automatic rollback configuration was specified in an invalid format. For example, automatic rollback is enabled, but an invalid triggering event type or no event types were listed.</p>
6180    InvalidAutoRollbackConfig(String),
6181    /// <p>The Auto Scaling group was specified in an invalid format or does not exist.</p>
6182    InvalidAutoScalingGroup(String),
6183    /// <p>The configuration for the blue/green deployment group was provided in an invalid format. For information about deployment configuration format, see <a>CreateDeploymentConfig</a>.</p>
6184    InvalidBlueGreenDeploymentConfiguration(String),
6185    /// <p>The deployment configuration name was specified in an invalid format.</p>
6186    InvalidDeploymentConfigName(String),
6187    /// <p>The deployment group name was specified in an invalid format.</p>
6188    InvalidDeploymentGroupName(String),
6189    /// <p>An invalid deployment style was specified. Valid deployment types include "IN_PLACE" and "BLUE_GREEN." Valid deployment options include "WITH_TRAFFIC_CONTROL" and "WITHOUT_TRAFFIC_CONTROL."</p>
6190    InvalidDeploymentStyle(String),
6191    /// <p>A call was submitted that specified both Ec2TagFilters and Ec2TagSet, but only one of these data types can be used in a single call.</p>
6192    InvalidEC2TagCombination(String),
6193    /// <p>The tag was specified in an invalid format.</p>
6194    InvalidEC2Tag(String),
6195    /// <p> The Amazon ECS service identifier is not valid. </p>
6196    InvalidECSService(String),
6197    /// <p>The input was specified in an invalid format.</p>
6198    InvalidInput(String),
6199    /// <p>An invalid load balancer name, or no load balancer name, was specified.</p>
6200    InvalidLoadBalancerInfo(String),
6201    /// <p>A call was submitted that specified both OnPremisesTagFilters and OnPremisesTagSet, but only one of these data types can be used in a single call.</p>
6202    InvalidOnPremisesTagCombination(String),
6203    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
6204    InvalidRole(String),
6205    /// <p>The tag was specified in an invalid format.</p>
6206    InvalidTag(String),
6207    /// <p> A target group pair associated with this deployment is not valid. </p>
6208    InvalidTargetGroupPair(String),
6209    /// <p> The configuration that specifies how traffic is routed during a deployment is invalid.</p>
6210    InvalidTrafficRoutingConfiguration(String),
6211    /// <p>The trigger was specified in an invalid format.</p>
6212    InvalidTriggerConfig(String),
6213    /// <p>The limit for lifecycle hooks was exceeded.</p>
6214    LifecycleHookLimitExceeded(String),
6215    /// <p>The number of tag groups included in the tag set list exceeded the maximum allowed limit of 3.</p>
6216    TagSetListLimitExceeded(String),
6217    /// <p>An API function was called too frequently.</p>
6218    Throttling(String),
6219    /// <p>The maximum allowed number of triggers was exceeded.</p>
6220    TriggerTargetsLimitExceeded(String),
6221}
6222
6223impl UpdateDeploymentGroupError {
6224    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDeploymentGroupError> {
6225        if let Some(err) = proto::json::Error::parse(&res) {
6226            match err.typ.as_str() {
6227                "AlarmsLimitExceededException" => {
6228                    return RusotoError::Service(UpdateDeploymentGroupError::AlarmsLimitExceeded(
6229                        err.msg,
6230                    ))
6231                }
6232                "ApplicationDoesNotExistException" => {
6233                    return RusotoError::Service(
6234                        UpdateDeploymentGroupError::ApplicationDoesNotExist(err.msg),
6235                    )
6236                }
6237                "ApplicationNameRequiredException" => {
6238                    return RusotoError::Service(
6239                        UpdateDeploymentGroupError::ApplicationNameRequired(err.msg),
6240                    )
6241                }
6242                "DeploymentConfigDoesNotExistException" => {
6243                    return RusotoError::Service(
6244                        UpdateDeploymentGroupError::DeploymentConfigDoesNotExist(err.msg),
6245                    )
6246                }
6247                "DeploymentGroupAlreadyExistsException" => {
6248                    return RusotoError::Service(
6249                        UpdateDeploymentGroupError::DeploymentGroupAlreadyExists(err.msg),
6250                    )
6251                }
6252                "DeploymentGroupDoesNotExistException" => {
6253                    return RusotoError::Service(
6254                        UpdateDeploymentGroupError::DeploymentGroupDoesNotExist(err.msg),
6255                    )
6256                }
6257                "DeploymentGroupNameRequiredException" => {
6258                    return RusotoError::Service(
6259                        UpdateDeploymentGroupError::DeploymentGroupNameRequired(err.msg),
6260                    )
6261                }
6262                "ECSServiceMappingLimitExceededException" => {
6263                    return RusotoError::Service(
6264                        UpdateDeploymentGroupError::ECSServiceMappingLimitExceeded(err.msg),
6265                    )
6266                }
6267                "InvalidAlarmConfigException" => {
6268                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidAlarmConfig(
6269                        err.msg,
6270                    ))
6271                }
6272                "InvalidApplicationNameException" => {
6273                    return RusotoError::Service(
6274                        UpdateDeploymentGroupError::InvalidApplicationName(err.msg),
6275                    )
6276                }
6277                "InvalidAutoRollbackConfigException" => {
6278                    return RusotoError::Service(
6279                        UpdateDeploymentGroupError::InvalidAutoRollbackConfig(err.msg),
6280                    )
6281                }
6282                "InvalidAutoScalingGroupException" => {
6283                    return RusotoError::Service(
6284                        UpdateDeploymentGroupError::InvalidAutoScalingGroup(err.msg),
6285                    )
6286                }
6287                "InvalidBlueGreenDeploymentConfigurationException" => {
6288                    return RusotoError::Service(
6289                        UpdateDeploymentGroupError::InvalidBlueGreenDeploymentConfiguration(
6290                            err.msg,
6291                        ),
6292                    )
6293                }
6294                "InvalidDeploymentConfigNameException" => {
6295                    return RusotoError::Service(
6296                        UpdateDeploymentGroupError::InvalidDeploymentConfigName(err.msg),
6297                    )
6298                }
6299                "InvalidDeploymentGroupNameException" => {
6300                    return RusotoError::Service(
6301                        UpdateDeploymentGroupError::InvalidDeploymentGroupName(err.msg),
6302                    )
6303                }
6304                "InvalidDeploymentStyleException" => {
6305                    return RusotoError::Service(
6306                        UpdateDeploymentGroupError::InvalidDeploymentStyle(err.msg),
6307                    )
6308                }
6309                "InvalidEC2TagCombinationException" => {
6310                    return RusotoError::Service(
6311                        UpdateDeploymentGroupError::InvalidEC2TagCombination(err.msg),
6312                    )
6313                }
6314                "InvalidEC2TagException" => {
6315                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidEC2Tag(err.msg))
6316                }
6317                "InvalidECSServiceException" => {
6318                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidECSService(
6319                        err.msg,
6320                    ))
6321                }
6322                "InvalidInputException" => {
6323                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidInput(err.msg))
6324                }
6325                "InvalidLoadBalancerInfoException" => {
6326                    return RusotoError::Service(
6327                        UpdateDeploymentGroupError::InvalidLoadBalancerInfo(err.msg),
6328                    )
6329                }
6330                "InvalidOnPremisesTagCombinationException" => {
6331                    return RusotoError::Service(
6332                        UpdateDeploymentGroupError::InvalidOnPremisesTagCombination(err.msg),
6333                    )
6334                }
6335                "InvalidRoleException" => {
6336                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidRole(err.msg))
6337                }
6338                "InvalidTagException" => {
6339                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidTag(err.msg))
6340                }
6341                "InvalidTargetGroupPairException" => {
6342                    return RusotoError::Service(
6343                        UpdateDeploymentGroupError::InvalidTargetGroupPair(err.msg),
6344                    )
6345                }
6346                "InvalidTrafficRoutingConfigurationException" => {
6347                    return RusotoError::Service(
6348                        UpdateDeploymentGroupError::InvalidTrafficRoutingConfiguration(err.msg),
6349                    )
6350                }
6351                "InvalidTriggerConfigException" => {
6352                    return RusotoError::Service(UpdateDeploymentGroupError::InvalidTriggerConfig(
6353                        err.msg,
6354                    ))
6355                }
6356                "LifecycleHookLimitExceededException" => {
6357                    return RusotoError::Service(
6358                        UpdateDeploymentGroupError::LifecycleHookLimitExceeded(err.msg),
6359                    )
6360                }
6361                "TagSetListLimitExceededException" => {
6362                    return RusotoError::Service(
6363                        UpdateDeploymentGroupError::TagSetListLimitExceeded(err.msg),
6364                    )
6365                }
6366                "ThrottlingException" => {
6367                    return RusotoError::Service(UpdateDeploymentGroupError::Throttling(err.msg))
6368                }
6369                "TriggerTargetsLimitExceededException" => {
6370                    return RusotoError::Service(
6371                        UpdateDeploymentGroupError::TriggerTargetsLimitExceeded(err.msg),
6372                    )
6373                }
6374                "ValidationException" => return RusotoError::Validation(err.msg),
6375                _ => {}
6376            }
6377        }
6378        RusotoError::Unknown(res)
6379    }
6380}
6381impl fmt::Display for UpdateDeploymentGroupError {
6382    #[allow(unused_variables)]
6383    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6384        match *self {
6385            UpdateDeploymentGroupError::AlarmsLimitExceeded(ref cause) => write!(f, "{}", cause),
6386            UpdateDeploymentGroupError::ApplicationDoesNotExist(ref cause) => {
6387                write!(f, "{}", cause)
6388            }
6389            UpdateDeploymentGroupError::ApplicationNameRequired(ref cause) => {
6390                write!(f, "{}", cause)
6391            }
6392            UpdateDeploymentGroupError::DeploymentConfigDoesNotExist(ref cause) => {
6393                write!(f, "{}", cause)
6394            }
6395            UpdateDeploymentGroupError::DeploymentGroupAlreadyExists(ref cause) => {
6396                write!(f, "{}", cause)
6397            }
6398            UpdateDeploymentGroupError::DeploymentGroupDoesNotExist(ref cause) => {
6399                write!(f, "{}", cause)
6400            }
6401            UpdateDeploymentGroupError::DeploymentGroupNameRequired(ref cause) => {
6402                write!(f, "{}", cause)
6403            }
6404            UpdateDeploymentGroupError::ECSServiceMappingLimitExceeded(ref cause) => {
6405                write!(f, "{}", cause)
6406            }
6407            UpdateDeploymentGroupError::InvalidAlarmConfig(ref cause) => write!(f, "{}", cause),
6408            UpdateDeploymentGroupError::InvalidApplicationName(ref cause) => write!(f, "{}", cause),
6409            UpdateDeploymentGroupError::InvalidAutoRollbackConfig(ref cause) => {
6410                write!(f, "{}", cause)
6411            }
6412            UpdateDeploymentGroupError::InvalidAutoScalingGroup(ref cause) => {
6413                write!(f, "{}", cause)
6414            }
6415            UpdateDeploymentGroupError::InvalidBlueGreenDeploymentConfiguration(ref cause) => {
6416                write!(f, "{}", cause)
6417            }
6418            UpdateDeploymentGroupError::InvalidDeploymentConfigName(ref cause) => {
6419                write!(f, "{}", cause)
6420            }
6421            UpdateDeploymentGroupError::InvalidDeploymentGroupName(ref cause) => {
6422                write!(f, "{}", cause)
6423            }
6424            UpdateDeploymentGroupError::InvalidDeploymentStyle(ref cause) => write!(f, "{}", cause),
6425            UpdateDeploymentGroupError::InvalidEC2TagCombination(ref cause) => {
6426                write!(f, "{}", cause)
6427            }
6428            UpdateDeploymentGroupError::InvalidEC2Tag(ref cause) => write!(f, "{}", cause),
6429            UpdateDeploymentGroupError::InvalidECSService(ref cause) => write!(f, "{}", cause),
6430            UpdateDeploymentGroupError::InvalidInput(ref cause) => write!(f, "{}", cause),
6431            UpdateDeploymentGroupError::InvalidLoadBalancerInfo(ref cause) => {
6432                write!(f, "{}", cause)
6433            }
6434            UpdateDeploymentGroupError::InvalidOnPremisesTagCombination(ref cause) => {
6435                write!(f, "{}", cause)
6436            }
6437            UpdateDeploymentGroupError::InvalidRole(ref cause) => write!(f, "{}", cause),
6438            UpdateDeploymentGroupError::InvalidTag(ref cause) => write!(f, "{}", cause),
6439            UpdateDeploymentGroupError::InvalidTargetGroupPair(ref cause) => write!(f, "{}", cause),
6440            UpdateDeploymentGroupError::InvalidTrafficRoutingConfiguration(ref cause) => {
6441                write!(f, "{}", cause)
6442            }
6443            UpdateDeploymentGroupError::InvalidTriggerConfig(ref cause) => write!(f, "{}", cause),
6444            UpdateDeploymentGroupError::LifecycleHookLimitExceeded(ref cause) => {
6445                write!(f, "{}", cause)
6446            }
6447            UpdateDeploymentGroupError::TagSetListLimitExceeded(ref cause) => {
6448                write!(f, "{}", cause)
6449            }
6450            UpdateDeploymentGroupError::Throttling(ref cause) => write!(f, "{}", cause),
6451            UpdateDeploymentGroupError::TriggerTargetsLimitExceeded(ref cause) => {
6452                write!(f, "{}", cause)
6453            }
6454        }
6455    }
6456}
6457impl Error for UpdateDeploymentGroupError {}
6458/// Trait representing the capabilities of the CodeDeploy API. CodeDeploy clients implement this trait.
6459#[async_trait]
6460pub trait CodeDeploy {
6461    /// <p>Adds tags to on-premises instances.</p>
6462    async fn add_tags_to_on_premises_instances(
6463        &self,
6464        input: AddTagsToOnPremisesInstancesInput,
6465    ) -> Result<(), RusotoError<AddTagsToOnPremisesInstancesError>>;
6466
6467    /// <p>Gets information about one or more application revisions. The maximum number of application revisions that can be returned is 25.</p>
6468    async fn batch_get_application_revisions(
6469        &self,
6470        input: BatchGetApplicationRevisionsInput,
6471    ) -> Result<BatchGetApplicationRevisionsOutput, RusotoError<BatchGetApplicationRevisionsError>>;
6472
6473    /// <p>Gets information about one or more applications. The maximum number of applications that can be returned is 100.</p>
6474    async fn batch_get_applications(
6475        &self,
6476        input: BatchGetApplicationsInput,
6477    ) -> Result<BatchGetApplicationsOutput, RusotoError<BatchGetApplicationsError>>;
6478
6479    /// <p>Gets information about one or more deployment groups.</p>
6480    async fn batch_get_deployment_groups(
6481        &self,
6482        input: BatchGetDeploymentGroupsInput,
6483    ) -> Result<BatchGetDeploymentGroupsOutput, RusotoError<BatchGetDeploymentGroupsError>>;
6484
6485    /// <p><note> <p> This method works, but is deprecated. Use <code>BatchGetDeploymentTargets</code> instead. </p> </note> <p> Returns an array of one or more instances associated with a deployment. This method works with EC2/On-premises and AWS Lambda compute platforms. The newer <code>BatchGetDeploymentTargets</code> works with all compute platforms. The maximum number of instances that can be returned is 25.</p></p>
6486    async fn batch_get_deployment_instances(
6487        &self,
6488        input: BatchGetDeploymentInstancesInput,
6489    ) -> Result<BatchGetDeploymentInstancesOutput, RusotoError<BatchGetDeploymentInstancesError>>;
6490
6491    /// <p><p> Returns an array of one or more targets associated with a deployment. This method works with all compute types and should be used instead of the deprecated <code>BatchGetDeploymentInstances</code>. The maximum number of targets that can be returned is 25.</p> <p> The type of targets returned depends on the deployment&#39;s compute platform or deployment method: </p> <ul> <li> <p> <b>EC2/On-premises</b>: Information about EC2 instance targets. </p> </li> <li> <p> <b>AWS Lambda</b>: Information about Lambda functions targets. </p> </li> <li> <p> <b>Amazon ECS</b>: Information about Amazon ECS service targets. </p> </li> <li> <p> <b>CloudFormation</b>: Information about targets of blue/green deployments initiated by a CloudFormation stack update.</p> </li> </ul></p>
6492    async fn batch_get_deployment_targets(
6493        &self,
6494        input: BatchGetDeploymentTargetsInput,
6495    ) -> Result<BatchGetDeploymentTargetsOutput, RusotoError<BatchGetDeploymentTargetsError>>;
6496
6497    /// <p>Gets information about one or more deployments. The maximum number of deployments that can be returned is 25.</p>
6498    async fn batch_get_deployments(
6499        &self,
6500        input: BatchGetDeploymentsInput,
6501    ) -> Result<BatchGetDeploymentsOutput, RusotoError<BatchGetDeploymentsError>>;
6502
6503    /// <p>Gets information about one or more on-premises instances. The maximum number of on-premises instances that can be returned is 25.</p>
6504    async fn batch_get_on_premises_instances(
6505        &self,
6506        input: BatchGetOnPremisesInstancesInput,
6507    ) -> Result<BatchGetOnPremisesInstancesOutput, RusotoError<BatchGetOnPremisesInstancesError>>;
6508
6509    /// <p>For a blue/green deployment, starts the process of rerouting traffic from instances in the original environment to instances in the replacement environment without waiting for a specified wait time to elapse. (Traffic rerouting, which is achieved by registering instances in the replacement environment with the load balancer, can start as soon as all instances have a status of Ready.) </p>
6510    async fn continue_deployment(
6511        &self,
6512        input: ContinueDeploymentInput,
6513    ) -> Result<(), RusotoError<ContinueDeploymentError>>;
6514
6515    /// <p>Creates an application.</p>
6516    async fn create_application(
6517        &self,
6518        input: CreateApplicationInput,
6519    ) -> Result<CreateApplicationOutput, RusotoError<CreateApplicationError>>;
6520
6521    /// <p>Deploys an application revision through the specified deployment group.</p>
6522    async fn create_deployment(
6523        &self,
6524        input: CreateDeploymentInput,
6525    ) -> Result<CreateDeploymentOutput, RusotoError<CreateDeploymentError>>;
6526
6527    /// <p> Creates a deployment configuration. </p>
6528    async fn create_deployment_config(
6529        &self,
6530        input: CreateDeploymentConfigInput,
6531    ) -> Result<CreateDeploymentConfigOutput, RusotoError<CreateDeploymentConfigError>>;
6532
6533    /// <p>Creates a deployment group to which application revisions are deployed.</p>
6534    async fn create_deployment_group(
6535        &self,
6536        input: CreateDeploymentGroupInput,
6537    ) -> Result<CreateDeploymentGroupOutput, RusotoError<CreateDeploymentGroupError>>;
6538
6539    /// <p>Deletes an application.</p>
6540    async fn delete_application(
6541        &self,
6542        input: DeleteApplicationInput,
6543    ) -> Result<(), RusotoError<DeleteApplicationError>>;
6544
6545    /// <p><p>Deletes a deployment configuration.</p> <note> <p>A deployment configuration cannot be deleted if it is currently in use. Predefined configurations cannot be deleted.</p> </note></p>
6546    async fn delete_deployment_config(
6547        &self,
6548        input: DeleteDeploymentConfigInput,
6549    ) -> Result<(), RusotoError<DeleteDeploymentConfigError>>;
6550
6551    /// <p>Deletes a deployment group.</p>
6552    async fn delete_deployment_group(
6553        &self,
6554        input: DeleteDeploymentGroupInput,
6555    ) -> Result<DeleteDeploymentGroupOutput, RusotoError<DeleteDeploymentGroupError>>;
6556
6557    /// <p>Deletes a GitHub account connection.</p>
6558    async fn delete_git_hub_account_token(
6559        &self,
6560        input: DeleteGitHubAccountTokenInput,
6561    ) -> Result<DeleteGitHubAccountTokenOutput, RusotoError<DeleteGitHubAccountTokenError>>;
6562
6563    /// <p>Deletes resources linked to an external ID.</p>
6564    async fn delete_resources_by_external_id(
6565        &self,
6566        input: DeleteResourcesByExternalIdInput,
6567    ) -> Result<DeleteResourcesByExternalIdOutput, RusotoError<DeleteResourcesByExternalIdError>>;
6568
6569    /// <p>Deregisters an on-premises instance.</p>
6570    async fn deregister_on_premises_instance(
6571        &self,
6572        input: DeregisterOnPremisesInstanceInput,
6573    ) -> Result<(), RusotoError<DeregisterOnPremisesInstanceError>>;
6574
6575    /// <p>Gets information about an application.</p>
6576    async fn get_application(
6577        &self,
6578        input: GetApplicationInput,
6579    ) -> Result<GetApplicationOutput, RusotoError<GetApplicationError>>;
6580
6581    /// <p>Gets information about an application revision.</p>
6582    async fn get_application_revision(
6583        &self,
6584        input: GetApplicationRevisionInput,
6585    ) -> Result<GetApplicationRevisionOutput, RusotoError<GetApplicationRevisionError>>;
6586
6587    /// <p><p>Gets information about a deployment.</p> <note> <p> The <code>content</code> property of the <code>appSpecContent</code> object in the returned revision is always null. Use <code>GetApplicationRevision</code> and the <code>sha256</code> property of the returned <code>appSpecContent</code> object to get the content of the deployment’s AppSpec file. </p> </note></p>
6588    async fn get_deployment(
6589        &self,
6590        input: GetDeploymentInput,
6591    ) -> Result<GetDeploymentOutput, RusotoError<GetDeploymentError>>;
6592
6593    /// <p>Gets information about a deployment configuration.</p>
6594    async fn get_deployment_config(
6595        &self,
6596        input: GetDeploymentConfigInput,
6597    ) -> Result<GetDeploymentConfigOutput, RusotoError<GetDeploymentConfigError>>;
6598
6599    /// <p>Gets information about a deployment group.</p>
6600    async fn get_deployment_group(
6601        &self,
6602        input: GetDeploymentGroupInput,
6603    ) -> Result<GetDeploymentGroupOutput, RusotoError<GetDeploymentGroupError>>;
6604
6605    /// <p>Gets information about an instance as part of a deployment.</p>
6606    async fn get_deployment_instance(
6607        &self,
6608        input: GetDeploymentInstanceInput,
6609    ) -> Result<GetDeploymentInstanceOutput, RusotoError<GetDeploymentInstanceError>>;
6610
6611    /// <p> Returns information about a deployment target. </p>
6612    async fn get_deployment_target(
6613        &self,
6614        input: GetDeploymentTargetInput,
6615    ) -> Result<GetDeploymentTargetOutput, RusotoError<GetDeploymentTargetError>>;
6616
6617    /// <p> Gets information about an on-premises instance. </p>
6618    async fn get_on_premises_instance(
6619        &self,
6620        input: GetOnPremisesInstanceInput,
6621    ) -> Result<GetOnPremisesInstanceOutput, RusotoError<GetOnPremisesInstanceError>>;
6622
6623    /// <p>Lists information about revisions for an application.</p>
6624    async fn list_application_revisions(
6625        &self,
6626        input: ListApplicationRevisionsInput,
6627    ) -> Result<ListApplicationRevisionsOutput, RusotoError<ListApplicationRevisionsError>>;
6628
6629    /// <p>Lists the applications registered with the IAM user or AWS account.</p>
6630    async fn list_applications(
6631        &self,
6632        input: ListApplicationsInput,
6633    ) -> Result<ListApplicationsOutput, RusotoError<ListApplicationsError>>;
6634
6635    /// <p>Lists the deployment configurations with the IAM user or AWS account.</p>
6636    async fn list_deployment_configs(
6637        &self,
6638        input: ListDeploymentConfigsInput,
6639    ) -> Result<ListDeploymentConfigsOutput, RusotoError<ListDeploymentConfigsError>>;
6640
6641    /// <p>Lists the deployment groups for an application registered with the IAM user or AWS account.</p>
6642    async fn list_deployment_groups(
6643        &self,
6644        input: ListDeploymentGroupsInput,
6645    ) -> Result<ListDeploymentGroupsOutput, RusotoError<ListDeploymentGroupsError>>;
6646
6647    /// <p><note> <p> The newer <code>BatchGetDeploymentTargets</code> should be used instead because it works with all compute types. <code>ListDeploymentInstances</code> throws an exception if it is used with a compute platform other than EC2/On-premises or AWS Lambda. </p> </note> <p> Lists the instance for a deployment associated with the IAM user or AWS account. </p></p>
6648    async fn list_deployment_instances(
6649        &self,
6650        input: ListDeploymentInstancesInput,
6651    ) -> Result<ListDeploymentInstancesOutput, RusotoError<ListDeploymentInstancesError>>;
6652
6653    /// <p> Returns an array of target IDs that are associated a deployment. </p>
6654    async fn list_deployment_targets(
6655        &self,
6656        input: ListDeploymentTargetsInput,
6657    ) -> Result<ListDeploymentTargetsOutput, RusotoError<ListDeploymentTargetsError>>;
6658
6659    /// <p>Lists the deployments in a deployment group for an application registered with the IAM user or AWS account.</p>
6660    async fn list_deployments(
6661        &self,
6662        input: ListDeploymentsInput,
6663    ) -> Result<ListDeploymentsOutput, RusotoError<ListDeploymentsError>>;
6664
6665    /// <p>Lists the names of stored connections to GitHub accounts.</p>
6666    async fn list_git_hub_account_token_names(
6667        &self,
6668        input: ListGitHubAccountTokenNamesInput,
6669    ) -> Result<ListGitHubAccountTokenNamesOutput, RusotoError<ListGitHubAccountTokenNamesError>>;
6670
6671    /// <p>Gets a list of names for one or more on-premises instances.</p> <p>Unless otherwise specified, both registered and deregistered on-premises instance names are listed. To list only registered or deregistered on-premises instance names, use the registration status parameter.</p>
6672    async fn list_on_premises_instances(
6673        &self,
6674        input: ListOnPremisesInstancesInput,
6675    ) -> Result<ListOnPremisesInstancesOutput, RusotoError<ListOnPremisesInstancesError>>;
6676
6677    /// <p> Returns a list of tags for the resource identified by a specified Amazon Resource Name (ARN). Tags are used to organize and categorize your CodeDeploy resources. </p>
6678    async fn list_tags_for_resource(
6679        &self,
6680        input: ListTagsForResourceInput,
6681    ) -> Result<ListTagsForResourceOutput, RusotoError<ListTagsForResourceError>>;
6682
6683    /// <p> Sets the result of a Lambda validation function. The function validates lifecycle hooks during a deployment that uses the AWS Lambda or Amazon ECS compute platform. For AWS Lambda deployments, the available lifecycle hooks are <code>BeforeAllowTraffic</code> and <code>AfterAllowTraffic</code>. For Amazon ECS deployments, the available lifecycle hooks are <code>BeforeInstall</code>, <code>AfterInstall</code>, <code>AfterAllowTestTraffic</code>, <code>BeforeAllowTraffic</code>, and <code>AfterAllowTraffic</code>. Lambda validation functions return <code>Succeeded</code> or <code>Failed</code>. For more information, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-lambda">AppSpec 'hooks' Section for an AWS Lambda Deployment </a> and <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-ecs">AppSpec 'hooks' Section for an Amazon ECS Deployment</a>.</p>
6684    async fn put_lifecycle_event_hook_execution_status(
6685        &self,
6686        input: PutLifecycleEventHookExecutionStatusInput,
6687    ) -> Result<
6688        PutLifecycleEventHookExecutionStatusOutput,
6689        RusotoError<PutLifecycleEventHookExecutionStatusError>,
6690    >;
6691
6692    /// <p>Registers with AWS CodeDeploy a revision for the specified application.</p>
6693    async fn register_application_revision(
6694        &self,
6695        input: RegisterApplicationRevisionInput,
6696    ) -> Result<(), RusotoError<RegisterApplicationRevisionError>>;
6697
6698    /// <p><p>Registers an on-premises instance.</p> <note> <p>Only one IAM ARN (an IAM session ARN or IAM user ARN) is supported in the request. You cannot use both.</p> </note></p>
6699    async fn register_on_premises_instance(
6700        &self,
6701        input: RegisterOnPremisesInstanceInput,
6702    ) -> Result<(), RusotoError<RegisterOnPremisesInstanceError>>;
6703
6704    /// <p>Removes one or more tags from one or more on-premises instances.</p>
6705    async fn remove_tags_from_on_premises_instances(
6706        &self,
6707        input: RemoveTagsFromOnPremisesInstancesInput,
6708    ) -> Result<(), RusotoError<RemoveTagsFromOnPremisesInstancesError>>;
6709
6710    /// <p>In a blue/green deployment, overrides any specified wait time and starts terminating instances immediately after the traffic routing is complete.</p>
6711    async fn skip_wait_time_for_instance_termination(
6712        &self,
6713        input: SkipWaitTimeForInstanceTerminationInput,
6714    ) -> Result<(), RusotoError<SkipWaitTimeForInstanceTerminationError>>;
6715
6716    /// <p>Attempts to stop an ongoing deployment.</p>
6717    async fn stop_deployment(
6718        &self,
6719        input: StopDeploymentInput,
6720    ) -> Result<StopDeploymentOutput, RusotoError<StopDeploymentError>>;
6721
6722    /// <p> Associates the list of tags in the input <code>Tags</code> parameter with the resource identified by the <code>ResourceArn</code> input parameter. </p>
6723    async fn tag_resource(
6724        &self,
6725        input: TagResourceInput,
6726    ) -> Result<TagResourceOutput, RusotoError<TagResourceError>>;
6727
6728    /// <p> Disassociates a resource from a list of tags. The resource is identified by the <code>ResourceArn</code> input parameter. The tags are identified by the list of keys in the <code>TagKeys</code> input parameter. </p>
6729    async fn untag_resource(
6730        &self,
6731        input: UntagResourceInput,
6732    ) -> Result<UntagResourceOutput, RusotoError<UntagResourceError>>;
6733
6734    /// <p>Changes the name of an application.</p>
6735    async fn update_application(
6736        &self,
6737        input: UpdateApplicationInput,
6738    ) -> Result<(), RusotoError<UpdateApplicationError>>;
6739
6740    /// <p>Changes information about a deployment group.</p>
6741    async fn update_deployment_group(
6742        &self,
6743        input: UpdateDeploymentGroupInput,
6744    ) -> Result<UpdateDeploymentGroupOutput, RusotoError<UpdateDeploymentGroupError>>;
6745}
6746/// A client for the CodeDeploy API.
6747#[derive(Clone)]
6748pub struct CodeDeployClient {
6749    client: Client,
6750    region: region::Region,
6751}
6752
6753impl CodeDeployClient {
6754    /// Creates a client backed by the default tokio event loop.
6755    ///
6756    /// The client will use the default credentials provider and tls client.
6757    pub fn new(region: region::Region) -> CodeDeployClient {
6758        CodeDeployClient {
6759            client: Client::shared(),
6760            region,
6761        }
6762    }
6763
6764    pub fn new_with<P, D>(
6765        request_dispatcher: D,
6766        credentials_provider: P,
6767        region: region::Region,
6768    ) -> CodeDeployClient
6769    where
6770        P: ProvideAwsCredentials + Send + Sync + 'static,
6771        D: DispatchSignedRequest + Send + Sync + 'static,
6772    {
6773        CodeDeployClient {
6774            client: Client::new_with(credentials_provider, request_dispatcher),
6775            region,
6776        }
6777    }
6778
6779    pub fn new_with_client(client: Client, region: region::Region) -> CodeDeployClient {
6780        CodeDeployClient { client, region }
6781    }
6782}
6783
6784#[async_trait]
6785impl CodeDeploy for CodeDeployClient {
6786    /// <p>Adds tags to on-premises instances.</p>
6787    async fn add_tags_to_on_premises_instances(
6788        &self,
6789        input: AddTagsToOnPremisesInstancesInput,
6790    ) -> Result<(), RusotoError<AddTagsToOnPremisesInstancesError>> {
6791        let mut request = self.new_signed_request("POST", "/");
6792        request.add_header(
6793            "x-amz-target",
6794            "CodeDeploy_20141006.AddTagsToOnPremisesInstances",
6795        );
6796        let encoded = serde_json::to_string(&input).unwrap();
6797        request.set_payload(Some(encoded));
6798
6799        let response = self
6800            .sign_and_dispatch(request, AddTagsToOnPremisesInstancesError::from_response)
6801            .await?;
6802        std::mem::drop(response);
6803        Ok(())
6804    }
6805
6806    /// <p>Gets information about one or more application revisions. The maximum number of application revisions that can be returned is 25.</p>
6807    async fn batch_get_application_revisions(
6808        &self,
6809        input: BatchGetApplicationRevisionsInput,
6810    ) -> Result<BatchGetApplicationRevisionsOutput, RusotoError<BatchGetApplicationRevisionsError>>
6811    {
6812        let mut request = self.new_signed_request("POST", "/");
6813        request.add_header(
6814            "x-amz-target",
6815            "CodeDeploy_20141006.BatchGetApplicationRevisions",
6816        );
6817        let encoded = serde_json::to_string(&input).unwrap();
6818        request.set_payload(Some(encoded));
6819
6820        let response = self
6821            .sign_and_dispatch(request, BatchGetApplicationRevisionsError::from_response)
6822            .await?;
6823        let mut response = response;
6824        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6825        proto::json::ResponsePayload::new(&response)
6826            .deserialize::<BatchGetApplicationRevisionsOutput, _>()
6827    }
6828
6829    /// <p>Gets information about one or more applications. The maximum number of applications that can be returned is 100.</p>
6830    async fn batch_get_applications(
6831        &self,
6832        input: BatchGetApplicationsInput,
6833    ) -> Result<BatchGetApplicationsOutput, RusotoError<BatchGetApplicationsError>> {
6834        let mut request = self.new_signed_request("POST", "/");
6835        request.add_header("x-amz-target", "CodeDeploy_20141006.BatchGetApplications");
6836        let encoded = serde_json::to_string(&input).unwrap();
6837        request.set_payload(Some(encoded));
6838
6839        let response = self
6840            .sign_and_dispatch(request, BatchGetApplicationsError::from_response)
6841            .await?;
6842        let mut response = response;
6843        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6844        proto::json::ResponsePayload::new(&response).deserialize::<BatchGetApplicationsOutput, _>()
6845    }
6846
6847    /// <p>Gets information about one or more deployment groups.</p>
6848    async fn batch_get_deployment_groups(
6849        &self,
6850        input: BatchGetDeploymentGroupsInput,
6851    ) -> Result<BatchGetDeploymentGroupsOutput, RusotoError<BatchGetDeploymentGroupsError>> {
6852        let mut request = self.new_signed_request("POST", "/");
6853        request.add_header(
6854            "x-amz-target",
6855            "CodeDeploy_20141006.BatchGetDeploymentGroups",
6856        );
6857        let encoded = serde_json::to_string(&input).unwrap();
6858        request.set_payload(Some(encoded));
6859
6860        let response = self
6861            .sign_and_dispatch(request, BatchGetDeploymentGroupsError::from_response)
6862            .await?;
6863        let mut response = response;
6864        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6865        proto::json::ResponsePayload::new(&response)
6866            .deserialize::<BatchGetDeploymentGroupsOutput, _>()
6867    }
6868
6869    /// <p><note> <p> This method works, but is deprecated. Use <code>BatchGetDeploymentTargets</code> instead. </p> </note> <p> Returns an array of one or more instances associated with a deployment. This method works with EC2/On-premises and AWS Lambda compute platforms. The newer <code>BatchGetDeploymentTargets</code> works with all compute platforms. The maximum number of instances that can be returned is 25.</p></p>
6870    async fn batch_get_deployment_instances(
6871        &self,
6872        input: BatchGetDeploymentInstancesInput,
6873    ) -> Result<BatchGetDeploymentInstancesOutput, RusotoError<BatchGetDeploymentInstancesError>>
6874    {
6875        let mut request = self.new_signed_request("POST", "/");
6876        request.add_header(
6877            "x-amz-target",
6878            "CodeDeploy_20141006.BatchGetDeploymentInstances",
6879        );
6880        let encoded = serde_json::to_string(&input).unwrap();
6881        request.set_payload(Some(encoded));
6882
6883        let response = self
6884            .sign_and_dispatch(request, BatchGetDeploymentInstancesError::from_response)
6885            .await?;
6886        let mut response = response;
6887        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6888        proto::json::ResponsePayload::new(&response)
6889            .deserialize::<BatchGetDeploymentInstancesOutput, _>()
6890    }
6891
6892    /// <p><p> Returns an array of one or more targets associated with a deployment. This method works with all compute types and should be used instead of the deprecated <code>BatchGetDeploymentInstances</code>. The maximum number of targets that can be returned is 25.</p> <p> The type of targets returned depends on the deployment&#39;s compute platform or deployment method: </p> <ul> <li> <p> <b>EC2/On-premises</b>: Information about EC2 instance targets. </p> </li> <li> <p> <b>AWS Lambda</b>: Information about Lambda functions targets. </p> </li> <li> <p> <b>Amazon ECS</b>: Information about Amazon ECS service targets. </p> </li> <li> <p> <b>CloudFormation</b>: Information about targets of blue/green deployments initiated by a CloudFormation stack update.</p> </li> </ul></p>
6893    async fn batch_get_deployment_targets(
6894        &self,
6895        input: BatchGetDeploymentTargetsInput,
6896    ) -> Result<BatchGetDeploymentTargetsOutput, RusotoError<BatchGetDeploymentTargetsError>> {
6897        let mut request = self.new_signed_request("POST", "/");
6898        request.add_header(
6899            "x-amz-target",
6900            "CodeDeploy_20141006.BatchGetDeploymentTargets",
6901        );
6902        let encoded = serde_json::to_string(&input).unwrap();
6903        request.set_payload(Some(encoded));
6904
6905        let response = self
6906            .sign_and_dispatch(request, BatchGetDeploymentTargetsError::from_response)
6907            .await?;
6908        let mut response = response;
6909        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6910        proto::json::ResponsePayload::new(&response)
6911            .deserialize::<BatchGetDeploymentTargetsOutput, _>()
6912    }
6913
6914    /// <p>Gets information about one or more deployments. The maximum number of deployments that can be returned is 25.</p>
6915    async fn batch_get_deployments(
6916        &self,
6917        input: BatchGetDeploymentsInput,
6918    ) -> Result<BatchGetDeploymentsOutput, RusotoError<BatchGetDeploymentsError>> {
6919        let mut request = self.new_signed_request("POST", "/");
6920        request.add_header("x-amz-target", "CodeDeploy_20141006.BatchGetDeployments");
6921        let encoded = serde_json::to_string(&input).unwrap();
6922        request.set_payload(Some(encoded));
6923
6924        let response = self
6925            .sign_and_dispatch(request, BatchGetDeploymentsError::from_response)
6926            .await?;
6927        let mut response = response;
6928        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6929        proto::json::ResponsePayload::new(&response).deserialize::<BatchGetDeploymentsOutput, _>()
6930    }
6931
6932    /// <p>Gets information about one or more on-premises instances. The maximum number of on-premises instances that can be returned is 25.</p>
6933    async fn batch_get_on_premises_instances(
6934        &self,
6935        input: BatchGetOnPremisesInstancesInput,
6936    ) -> Result<BatchGetOnPremisesInstancesOutput, RusotoError<BatchGetOnPremisesInstancesError>>
6937    {
6938        let mut request = self.new_signed_request("POST", "/");
6939        request.add_header(
6940            "x-amz-target",
6941            "CodeDeploy_20141006.BatchGetOnPremisesInstances",
6942        );
6943        let encoded = serde_json::to_string(&input).unwrap();
6944        request.set_payload(Some(encoded));
6945
6946        let response = self
6947            .sign_and_dispatch(request, BatchGetOnPremisesInstancesError::from_response)
6948            .await?;
6949        let mut response = response;
6950        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6951        proto::json::ResponsePayload::new(&response)
6952            .deserialize::<BatchGetOnPremisesInstancesOutput, _>()
6953    }
6954
6955    /// <p>For a blue/green deployment, starts the process of rerouting traffic from instances in the original environment to instances in the replacement environment without waiting for a specified wait time to elapse. (Traffic rerouting, which is achieved by registering instances in the replacement environment with the load balancer, can start as soon as all instances have a status of Ready.) </p>
6956    async fn continue_deployment(
6957        &self,
6958        input: ContinueDeploymentInput,
6959    ) -> Result<(), RusotoError<ContinueDeploymentError>> {
6960        let mut request = self.new_signed_request("POST", "/");
6961        request.add_header("x-amz-target", "CodeDeploy_20141006.ContinueDeployment");
6962        let encoded = serde_json::to_string(&input).unwrap();
6963        request.set_payload(Some(encoded));
6964
6965        let response = self
6966            .sign_and_dispatch(request, ContinueDeploymentError::from_response)
6967            .await?;
6968        std::mem::drop(response);
6969        Ok(())
6970    }
6971
6972    /// <p>Creates an application.</p>
6973    async fn create_application(
6974        &self,
6975        input: CreateApplicationInput,
6976    ) -> Result<CreateApplicationOutput, RusotoError<CreateApplicationError>> {
6977        let mut request = self.new_signed_request("POST", "/");
6978        request.add_header("x-amz-target", "CodeDeploy_20141006.CreateApplication");
6979        let encoded = serde_json::to_string(&input).unwrap();
6980        request.set_payload(Some(encoded));
6981
6982        let response = self
6983            .sign_and_dispatch(request, CreateApplicationError::from_response)
6984            .await?;
6985        let mut response = response;
6986        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6987        proto::json::ResponsePayload::new(&response).deserialize::<CreateApplicationOutput, _>()
6988    }
6989
6990    /// <p>Deploys an application revision through the specified deployment group.</p>
6991    async fn create_deployment(
6992        &self,
6993        input: CreateDeploymentInput,
6994    ) -> Result<CreateDeploymentOutput, RusotoError<CreateDeploymentError>> {
6995        let mut request = self.new_signed_request("POST", "/");
6996        request.add_header("x-amz-target", "CodeDeploy_20141006.CreateDeployment");
6997        let encoded = serde_json::to_string(&input).unwrap();
6998        request.set_payload(Some(encoded));
6999
7000        let response = self
7001            .sign_and_dispatch(request, CreateDeploymentError::from_response)
7002            .await?;
7003        let mut response = response;
7004        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7005        proto::json::ResponsePayload::new(&response).deserialize::<CreateDeploymentOutput, _>()
7006    }
7007
7008    /// <p> Creates a deployment configuration. </p>
7009    async fn create_deployment_config(
7010        &self,
7011        input: CreateDeploymentConfigInput,
7012    ) -> Result<CreateDeploymentConfigOutput, RusotoError<CreateDeploymentConfigError>> {
7013        let mut request = self.new_signed_request("POST", "/");
7014        request.add_header("x-amz-target", "CodeDeploy_20141006.CreateDeploymentConfig");
7015        let encoded = serde_json::to_string(&input).unwrap();
7016        request.set_payload(Some(encoded));
7017
7018        let response = self
7019            .sign_and_dispatch(request, CreateDeploymentConfigError::from_response)
7020            .await?;
7021        let mut response = response;
7022        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7023        proto::json::ResponsePayload::new(&response)
7024            .deserialize::<CreateDeploymentConfigOutput, _>()
7025    }
7026
7027    /// <p>Creates a deployment group to which application revisions are deployed.</p>
7028    async fn create_deployment_group(
7029        &self,
7030        input: CreateDeploymentGroupInput,
7031    ) -> Result<CreateDeploymentGroupOutput, RusotoError<CreateDeploymentGroupError>> {
7032        let mut request = self.new_signed_request("POST", "/");
7033        request.add_header("x-amz-target", "CodeDeploy_20141006.CreateDeploymentGroup");
7034        let encoded = serde_json::to_string(&input).unwrap();
7035        request.set_payload(Some(encoded));
7036
7037        let response = self
7038            .sign_and_dispatch(request, CreateDeploymentGroupError::from_response)
7039            .await?;
7040        let mut response = response;
7041        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7042        proto::json::ResponsePayload::new(&response).deserialize::<CreateDeploymentGroupOutput, _>()
7043    }
7044
7045    /// <p>Deletes an application.</p>
7046    async fn delete_application(
7047        &self,
7048        input: DeleteApplicationInput,
7049    ) -> Result<(), RusotoError<DeleteApplicationError>> {
7050        let mut request = self.new_signed_request("POST", "/");
7051        request.add_header("x-amz-target", "CodeDeploy_20141006.DeleteApplication");
7052        let encoded = serde_json::to_string(&input).unwrap();
7053        request.set_payload(Some(encoded));
7054
7055        let response = self
7056            .sign_and_dispatch(request, DeleteApplicationError::from_response)
7057            .await?;
7058        std::mem::drop(response);
7059        Ok(())
7060    }
7061
7062    /// <p><p>Deletes a deployment configuration.</p> <note> <p>A deployment configuration cannot be deleted if it is currently in use. Predefined configurations cannot be deleted.</p> </note></p>
7063    async fn delete_deployment_config(
7064        &self,
7065        input: DeleteDeploymentConfigInput,
7066    ) -> Result<(), RusotoError<DeleteDeploymentConfigError>> {
7067        let mut request = self.new_signed_request("POST", "/");
7068        request.add_header("x-amz-target", "CodeDeploy_20141006.DeleteDeploymentConfig");
7069        let encoded = serde_json::to_string(&input).unwrap();
7070        request.set_payload(Some(encoded));
7071
7072        let response = self
7073            .sign_and_dispatch(request, DeleteDeploymentConfigError::from_response)
7074            .await?;
7075        std::mem::drop(response);
7076        Ok(())
7077    }
7078
7079    /// <p>Deletes a deployment group.</p>
7080    async fn delete_deployment_group(
7081        &self,
7082        input: DeleteDeploymentGroupInput,
7083    ) -> Result<DeleteDeploymentGroupOutput, RusotoError<DeleteDeploymentGroupError>> {
7084        let mut request = self.new_signed_request("POST", "/");
7085        request.add_header("x-amz-target", "CodeDeploy_20141006.DeleteDeploymentGroup");
7086        let encoded = serde_json::to_string(&input).unwrap();
7087        request.set_payload(Some(encoded));
7088
7089        let response = self
7090            .sign_and_dispatch(request, DeleteDeploymentGroupError::from_response)
7091            .await?;
7092        let mut response = response;
7093        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7094        proto::json::ResponsePayload::new(&response).deserialize::<DeleteDeploymentGroupOutput, _>()
7095    }
7096
7097    /// <p>Deletes a GitHub account connection.</p>
7098    async fn delete_git_hub_account_token(
7099        &self,
7100        input: DeleteGitHubAccountTokenInput,
7101    ) -> Result<DeleteGitHubAccountTokenOutput, RusotoError<DeleteGitHubAccountTokenError>> {
7102        let mut request = self.new_signed_request("POST", "/");
7103        request.add_header(
7104            "x-amz-target",
7105            "CodeDeploy_20141006.DeleteGitHubAccountToken",
7106        );
7107        let encoded = serde_json::to_string(&input).unwrap();
7108        request.set_payload(Some(encoded));
7109
7110        let response = self
7111            .sign_and_dispatch(request, DeleteGitHubAccountTokenError::from_response)
7112            .await?;
7113        let mut response = response;
7114        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7115        proto::json::ResponsePayload::new(&response)
7116            .deserialize::<DeleteGitHubAccountTokenOutput, _>()
7117    }
7118
7119    /// <p>Deletes resources linked to an external ID.</p>
7120    async fn delete_resources_by_external_id(
7121        &self,
7122        input: DeleteResourcesByExternalIdInput,
7123    ) -> Result<DeleteResourcesByExternalIdOutput, RusotoError<DeleteResourcesByExternalIdError>>
7124    {
7125        let mut request = self.new_signed_request("POST", "/");
7126        request.add_header(
7127            "x-amz-target",
7128            "CodeDeploy_20141006.DeleteResourcesByExternalId",
7129        );
7130        let encoded = serde_json::to_string(&input).unwrap();
7131        request.set_payload(Some(encoded));
7132
7133        let response = self
7134            .sign_and_dispatch(request, DeleteResourcesByExternalIdError::from_response)
7135            .await?;
7136        let mut response = response;
7137        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7138        proto::json::ResponsePayload::new(&response)
7139            .deserialize::<DeleteResourcesByExternalIdOutput, _>()
7140    }
7141
7142    /// <p>Deregisters an on-premises instance.</p>
7143    async fn deregister_on_premises_instance(
7144        &self,
7145        input: DeregisterOnPremisesInstanceInput,
7146    ) -> Result<(), RusotoError<DeregisterOnPremisesInstanceError>> {
7147        let mut request = self.new_signed_request("POST", "/");
7148        request.add_header(
7149            "x-amz-target",
7150            "CodeDeploy_20141006.DeregisterOnPremisesInstance",
7151        );
7152        let encoded = serde_json::to_string(&input).unwrap();
7153        request.set_payload(Some(encoded));
7154
7155        let response = self
7156            .sign_and_dispatch(request, DeregisterOnPremisesInstanceError::from_response)
7157            .await?;
7158        std::mem::drop(response);
7159        Ok(())
7160    }
7161
7162    /// <p>Gets information about an application.</p>
7163    async fn get_application(
7164        &self,
7165        input: GetApplicationInput,
7166    ) -> Result<GetApplicationOutput, RusotoError<GetApplicationError>> {
7167        let mut request = self.new_signed_request("POST", "/");
7168        request.add_header("x-amz-target", "CodeDeploy_20141006.GetApplication");
7169        let encoded = serde_json::to_string(&input).unwrap();
7170        request.set_payload(Some(encoded));
7171
7172        let response = self
7173            .sign_and_dispatch(request, GetApplicationError::from_response)
7174            .await?;
7175        let mut response = response;
7176        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7177        proto::json::ResponsePayload::new(&response).deserialize::<GetApplicationOutput, _>()
7178    }
7179
7180    /// <p>Gets information about an application revision.</p>
7181    async fn get_application_revision(
7182        &self,
7183        input: GetApplicationRevisionInput,
7184    ) -> Result<GetApplicationRevisionOutput, RusotoError<GetApplicationRevisionError>> {
7185        let mut request = self.new_signed_request("POST", "/");
7186        request.add_header("x-amz-target", "CodeDeploy_20141006.GetApplicationRevision");
7187        let encoded = serde_json::to_string(&input).unwrap();
7188        request.set_payload(Some(encoded));
7189
7190        let response = self
7191            .sign_and_dispatch(request, GetApplicationRevisionError::from_response)
7192            .await?;
7193        let mut response = response;
7194        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7195        proto::json::ResponsePayload::new(&response)
7196            .deserialize::<GetApplicationRevisionOutput, _>()
7197    }
7198
7199    /// <p><p>Gets information about a deployment.</p> <note> <p> The <code>content</code> property of the <code>appSpecContent</code> object in the returned revision is always null. Use <code>GetApplicationRevision</code> and the <code>sha256</code> property of the returned <code>appSpecContent</code> object to get the content of the deployment’s AppSpec file. </p> </note></p>
7200    async fn get_deployment(
7201        &self,
7202        input: GetDeploymentInput,
7203    ) -> Result<GetDeploymentOutput, RusotoError<GetDeploymentError>> {
7204        let mut request = self.new_signed_request("POST", "/");
7205        request.add_header("x-amz-target", "CodeDeploy_20141006.GetDeployment");
7206        let encoded = serde_json::to_string(&input).unwrap();
7207        request.set_payload(Some(encoded));
7208
7209        let response = self
7210            .sign_and_dispatch(request, GetDeploymentError::from_response)
7211            .await?;
7212        let mut response = response;
7213        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7214        proto::json::ResponsePayload::new(&response).deserialize::<GetDeploymentOutput, _>()
7215    }
7216
7217    /// <p>Gets information about a deployment configuration.</p>
7218    async fn get_deployment_config(
7219        &self,
7220        input: GetDeploymentConfigInput,
7221    ) -> Result<GetDeploymentConfigOutput, RusotoError<GetDeploymentConfigError>> {
7222        let mut request = self.new_signed_request("POST", "/");
7223        request.add_header("x-amz-target", "CodeDeploy_20141006.GetDeploymentConfig");
7224        let encoded = serde_json::to_string(&input).unwrap();
7225        request.set_payload(Some(encoded));
7226
7227        let response = self
7228            .sign_and_dispatch(request, GetDeploymentConfigError::from_response)
7229            .await?;
7230        let mut response = response;
7231        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7232        proto::json::ResponsePayload::new(&response).deserialize::<GetDeploymentConfigOutput, _>()
7233    }
7234
7235    /// <p>Gets information about a deployment group.</p>
7236    async fn get_deployment_group(
7237        &self,
7238        input: GetDeploymentGroupInput,
7239    ) -> Result<GetDeploymentGroupOutput, RusotoError<GetDeploymentGroupError>> {
7240        let mut request = self.new_signed_request("POST", "/");
7241        request.add_header("x-amz-target", "CodeDeploy_20141006.GetDeploymentGroup");
7242        let encoded = serde_json::to_string(&input).unwrap();
7243        request.set_payload(Some(encoded));
7244
7245        let response = self
7246            .sign_and_dispatch(request, GetDeploymentGroupError::from_response)
7247            .await?;
7248        let mut response = response;
7249        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7250        proto::json::ResponsePayload::new(&response).deserialize::<GetDeploymentGroupOutput, _>()
7251    }
7252
7253    /// <p>Gets information about an instance as part of a deployment.</p>
7254    async fn get_deployment_instance(
7255        &self,
7256        input: GetDeploymentInstanceInput,
7257    ) -> Result<GetDeploymentInstanceOutput, RusotoError<GetDeploymentInstanceError>> {
7258        let mut request = self.new_signed_request("POST", "/");
7259        request.add_header("x-amz-target", "CodeDeploy_20141006.GetDeploymentInstance");
7260        let encoded = serde_json::to_string(&input).unwrap();
7261        request.set_payload(Some(encoded));
7262
7263        let response = self
7264            .sign_and_dispatch(request, GetDeploymentInstanceError::from_response)
7265            .await?;
7266        let mut response = response;
7267        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7268        proto::json::ResponsePayload::new(&response).deserialize::<GetDeploymentInstanceOutput, _>()
7269    }
7270
7271    /// <p> Returns information about a deployment target. </p>
7272    async fn get_deployment_target(
7273        &self,
7274        input: GetDeploymentTargetInput,
7275    ) -> Result<GetDeploymentTargetOutput, RusotoError<GetDeploymentTargetError>> {
7276        let mut request = self.new_signed_request("POST", "/");
7277        request.add_header("x-amz-target", "CodeDeploy_20141006.GetDeploymentTarget");
7278        let encoded = serde_json::to_string(&input).unwrap();
7279        request.set_payload(Some(encoded));
7280
7281        let response = self
7282            .sign_and_dispatch(request, GetDeploymentTargetError::from_response)
7283            .await?;
7284        let mut response = response;
7285        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7286        proto::json::ResponsePayload::new(&response).deserialize::<GetDeploymentTargetOutput, _>()
7287    }
7288
7289    /// <p> Gets information about an on-premises instance. </p>
7290    async fn get_on_premises_instance(
7291        &self,
7292        input: GetOnPremisesInstanceInput,
7293    ) -> Result<GetOnPremisesInstanceOutput, RusotoError<GetOnPremisesInstanceError>> {
7294        let mut request = self.new_signed_request("POST", "/");
7295        request.add_header("x-amz-target", "CodeDeploy_20141006.GetOnPremisesInstance");
7296        let encoded = serde_json::to_string(&input).unwrap();
7297        request.set_payload(Some(encoded));
7298
7299        let response = self
7300            .sign_and_dispatch(request, GetOnPremisesInstanceError::from_response)
7301            .await?;
7302        let mut response = response;
7303        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7304        proto::json::ResponsePayload::new(&response).deserialize::<GetOnPremisesInstanceOutput, _>()
7305    }
7306
7307    /// <p>Lists information about revisions for an application.</p>
7308    async fn list_application_revisions(
7309        &self,
7310        input: ListApplicationRevisionsInput,
7311    ) -> Result<ListApplicationRevisionsOutput, RusotoError<ListApplicationRevisionsError>> {
7312        let mut request = self.new_signed_request("POST", "/");
7313        request.add_header(
7314            "x-amz-target",
7315            "CodeDeploy_20141006.ListApplicationRevisions",
7316        );
7317        let encoded = serde_json::to_string(&input).unwrap();
7318        request.set_payload(Some(encoded));
7319
7320        let response = self
7321            .sign_and_dispatch(request, ListApplicationRevisionsError::from_response)
7322            .await?;
7323        let mut response = response;
7324        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7325        proto::json::ResponsePayload::new(&response)
7326            .deserialize::<ListApplicationRevisionsOutput, _>()
7327    }
7328
7329    /// <p>Lists the applications registered with the IAM user or AWS account.</p>
7330    async fn list_applications(
7331        &self,
7332        input: ListApplicationsInput,
7333    ) -> Result<ListApplicationsOutput, RusotoError<ListApplicationsError>> {
7334        let mut request = self.new_signed_request("POST", "/");
7335        request.add_header("x-amz-target", "CodeDeploy_20141006.ListApplications");
7336        let encoded = serde_json::to_string(&input).unwrap();
7337        request.set_payload(Some(encoded));
7338
7339        let response = self
7340            .sign_and_dispatch(request, ListApplicationsError::from_response)
7341            .await?;
7342        let mut response = response;
7343        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7344        proto::json::ResponsePayload::new(&response).deserialize::<ListApplicationsOutput, _>()
7345    }
7346
7347    /// <p>Lists the deployment configurations with the IAM user or AWS account.</p>
7348    async fn list_deployment_configs(
7349        &self,
7350        input: ListDeploymentConfigsInput,
7351    ) -> Result<ListDeploymentConfigsOutput, RusotoError<ListDeploymentConfigsError>> {
7352        let mut request = self.new_signed_request("POST", "/");
7353        request.add_header("x-amz-target", "CodeDeploy_20141006.ListDeploymentConfigs");
7354        let encoded = serde_json::to_string(&input).unwrap();
7355        request.set_payload(Some(encoded));
7356
7357        let response = self
7358            .sign_and_dispatch(request, ListDeploymentConfigsError::from_response)
7359            .await?;
7360        let mut response = response;
7361        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7362        proto::json::ResponsePayload::new(&response).deserialize::<ListDeploymentConfigsOutput, _>()
7363    }
7364
7365    /// <p>Lists the deployment groups for an application registered with the IAM user or AWS account.</p>
7366    async fn list_deployment_groups(
7367        &self,
7368        input: ListDeploymentGroupsInput,
7369    ) -> Result<ListDeploymentGroupsOutput, RusotoError<ListDeploymentGroupsError>> {
7370        let mut request = self.new_signed_request("POST", "/");
7371        request.add_header("x-amz-target", "CodeDeploy_20141006.ListDeploymentGroups");
7372        let encoded = serde_json::to_string(&input).unwrap();
7373        request.set_payload(Some(encoded));
7374
7375        let response = self
7376            .sign_and_dispatch(request, ListDeploymentGroupsError::from_response)
7377            .await?;
7378        let mut response = response;
7379        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7380        proto::json::ResponsePayload::new(&response).deserialize::<ListDeploymentGroupsOutput, _>()
7381    }
7382
7383    /// <p><note> <p> The newer <code>BatchGetDeploymentTargets</code> should be used instead because it works with all compute types. <code>ListDeploymentInstances</code> throws an exception if it is used with a compute platform other than EC2/On-premises or AWS Lambda. </p> </note> <p> Lists the instance for a deployment associated with the IAM user or AWS account. </p></p>
7384    async fn list_deployment_instances(
7385        &self,
7386        input: ListDeploymentInstancesInput,
7387    ) -> Result<ListDeploymentInstancesOutput, RusotoError<ListDeploymentInstancesError>> {
7388        let mut request = self.new_signed_request("POST", "/");
7389        request.add_header(
7390            "x-amz-target",
7391            "CodeDeploy_20141006.ListDeploymentInstances",
7392        );
7393        let encoded = serde_json::to_string(&input).unwrap();
7394        request.set_payload(Some(encoded));
7395
7396        let response = self
7397            .sign_and_dispatch(request, ListDeploymentInstancesError::from_response)
7398            .await?;
7399        let mut response = response;
7400        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7401        proto::json::ResponsePayload::new(&response)
7402            .deserialize::<ListDeploymentInstancesOutput, _>()
7403    }
7404
7405    /// <p> Returns an array of target IDs that are associated a deployment. </p>
7406    async fn list_deployment_targets(
7407        &self,
7408        input: ListDeploymentTargetsInput,
7409    ) -> Result<ListDeploymentTargetsOutput, RusotoError<ListDeploymentTargetsError>> {
7410        let mut request = self.new_signed_request("POST", "/");
7411        request.add_header("x-amz-target", "CodeDeploy_20141006.ListDeploymentTargets");
7412        let encoded = serde_json::to_string(&input).unwrap();
7413        request.set_payload(Some(encoded));
7414
7415        let response = self
7416            .sign_and_dispatch(request, ListDeploymentTargetsError::from_response)
7417            .await?;
7418        let mut response = response;
7419        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7420        proto::json::ResponsePayload::new(&response).deserialize::<ListDeploymentTargetsOutput, _>()
7421    }
7422
7423    /// <p>Lists the deployments in a deployment group for an application registered with the IAM user or AWS account.</p>
7424    async fn list_deployments(
7425        &self,
7426        input: ListDeploymentsInput,
7427    ) -> Result<ListDeploymentsOutput, RusotoError<ListDeploymentsError>> {
7428        let mut request = self.new_signed_request("POST", "/");
7429        request.add_header("x-amz-target", "CodeDeploy_20141006.ListDeployments");
7430        let encoded = serde_json::to_string(&input).unwrap();
7431        request.set_payload(Some(encoded));
7432
7433        let response = self
7434            .sign_and_dispatch(request, ListDeploymentsError::from_response)
7435            .await?;
7436        let mut response = response;
7437        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7438        proto::json::ResponsePayload::new(&response).deserialize::<ListDeploymentsOutput, _>()
7439    }
7440
7441    /// <p>Lists the names of stored connections to GitHub accounts.</p>
7442    async fn list_git_hub_account_token_names(
7443        &self,
7444        input: ListGitHubAccountTokenNamesInput,
7445    ) -> Result<ListGitHubAccountTokenNamesOutput, RusotoError<ListGitHubAccountTokenNamesError>>
7446    {
7447        let mut request = self.new_signed_request("POST", "/");
7448        request.add_header(
7449            "x-amz-target",
7450            "CodeDeploy_20141006.ListGitHubAccountTokenNames",
7451        );
7452        let encoded = serde_json::to_string(&input).unwrap();
7453        request.set_payload(Some(encoded));
7454
7455        let response = self
7456            .sign_and_dispatch(request, ListGitHubAccountTokenNamesError::from_response)
7457            .await?;
7458        let mut response = response;
7459        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7460        proto::json::ResponsePayload::new(&response)
7461            .deserialize::<ListGitHubAccountTokenNamesOutput, _>()
7462    }
7463
7464    /// <p>Gets a list of names for one or more on-premises instances.</p> <p>Unless otherwise specified, both registered and deregistered on-premises instance names are listed. To list only registered or deregistered on-premises instance names, use the registration status parameter.</p>
7465    async fn list_on_premises_instances(
7466        &self,
7467        input: ListOnPremisesInstancesInput,
7468    ) -> Result<ListOnPremisesInstancesOutput, RusotoError<ListOnPremisesInstancesError>> {
7469        let mut request = self.new_signed_request("POST", "/");
7470        request.add_header(
7471            "x-amz-target",
7472            "CodeDeploy_20141006.ListOnPremisesInstances",
7473        );
7474        let encoded = serde_json::to_string(&input).unwrap();
7475        request.set_payload(Some(encoded));
7476
7477        let response = self
7478            .sign_and_dispatch(request, ListOnPremisesInstancesError::from_response)
7479            .await?;
7480        let mut response = response;
7481        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7482        proto::json::ResponsePayload::new(&response)
7483            .deserialize::<ListOnPremisesInstancesOutput, _>()
7484    }
7485
7486    /// <p> Returns a list of tags for the resource identified by a specified Amazon Resource Name (ARN). Tags are used to organize and categorize your CodeDeploy resources. </p>
7487    async fn list_tags_for_resource(
7488        &self,
7489        input: ListTagsForResourceInput,
7490    ) -> Result<ListTagsForResourceOutput, RusotoError<ListTagsForResourceError>> {
7491        let mut request = self.new_signed_request("POST", "/");
7492        request.add_header("x-amz-target", "CodeDeploy_20141006.ListTagsForResource");
7493        let encoded = serde_json::to_string(&input).unwrap();
7494        request.set_payload(Some(encoded));
7495
7496        let response = self
7497            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
7498            .await?;
7499        let mut response = response;
7500        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7501        proto::json::ResponsePayload::new(&response).deserialize::<ListTagsForResourceOutput, _>()
7502    }
7503
7504    /// <p> Sets the result of a Lambda validation function. The function validates lifecycle hooks during a deployment that uses the AWS Lambda or Amazon ECS compute platform. For AWS Lambda deployments, the available lifecycle hooks are <code>BeforeAllowTraffic</code> and <code>AfterAllowTraffic</code>. For Amazon ECS deployments, the available lifecycle hooks are <code>BeforeInstall</code>, <code>AfterInstall</code>, <code>AfterAllowTestTraffic</code>, <code>BeforeAllowTraffic</code>, and <code>AfterAllowTraffic</code>. Lambda validation functions return <code>Succeeded</code> or <code>Failed</code>. For more information, see <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-lambda">AppSpec 'hooks' Section for an AWS Lambda Deployment </a> and <a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-ecs">AppSpec 'hooks' Section for an Amazon ECS Deployment</a>.</p>
7505    async fn put_lifecycle_event_hook_execution_status(
7506        &self,
7507        input: PutLifecycleEventHookExecutionStatusInput,
7508    ) -> Result<
7509        PutLifecycleEventHookExecutionStatusOutput,
7510        RusotoError<PutLifecycleEventHookExecutionStatusError>,
7511    > {
7512        let mut request = self.new_signed_request("POST", "/");
7513        request.add_header(
7514            "x-amz-target",
7515            "CodeDeploy_20141006.PutLifecycleEventHookExecutionStatus",
7516        );
7517        let encoded = serde_json::to_string(&input).unwrap();
7518        request.set_payload(Some(encoded));
7519
7520        let response = self
7521            .sign_and_dispatch(
7522                request,
7523                PutLifecycleEventHookExecutionStatusError::from_response,
7524            )
7525            .await?;
7526        let mut response = response;
7527        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7528        proto::json::ResponsePayload::new(&response)
7529            .deserialize::<PutLifecycleEventHookExecutionStatusOutput, _>()
7530    }
7531
7532    /// <p>Registers with AWS CodeDeploy a revision for the specified application.</p>
7533    async fn register_application_revision(
7534        &self,
7535        input: RegisterApplicationRevisionInput,
7536    ) -> Result<(), RusotoError<RegisterApplicationRevisionError>> {
7537        let mut request = self.new_signed_request("POST", "/");
7538        request.add_header(
7539            "x-amz-target",
7540            "CodeDeploy_20141006.RegisterApplicationRevision",
7541        );
7542        let encoded = serde_json::to_string(&input).unwrap();
7543        request.set_payload(Some(encoded));
7544
7545        let response = self
7546            .sign_and_dispatch(request, RegisterApplicationRevisionError::from_response)
7547            .await?;
7548        std::mem::drop(response);
7549        Ok(())
7550    }
7551
7552    /// <p><p>Registers an on-premises instance.</p> <note> <p>Only one IAM ARN (an IAM session ARN or IAM user ARN) is supported in the request. You cannot use both.</p> </note></p>
7553    async fn register_on_premises_instance(
7554        &self,
7555        input: RegisterOnPremisesInstanceInput,
7556    ) -> Result<(), RusotoError<RegisterOnPremisesInstanceError>> {
7557        let mut request = self.new_signed_request("POST", "/");
7558        request.add_header(
7559            "x-amz-target",
7560            "CodeDeploy_20141006.RegisterOnPremisesInstance",
7561        );
7562        let encoded = serde_json::to_string(&input).unwrap();
7563        request.set_payload(Some(encoded));
7564
7565        let response = self
7566            .sign_and_dispatch(request, RegisterOnPremisesInstanceError::from_response)
7567            .await?;
7568        std::mem::drop(response);
7569        Ok(())
7570    }
7571
7572    /// <p>Removes one or more tags from one or more on-premises instances.</p>
7573    async fn remove_tags_from_on_premises_instances(
7574        &self,
7575        input: RemoveTagsFromOnPremisesInstancesInput,
7576    ) -> Result<(), RusotoError<RemoveTagsFromOnPremisesInstancesError>> {
7577        let mut request = self.new_signed_request("POST", "/");
7578        request.add_header(
7579            "x-amz-target",
7580            "CodeDeploy_20141006.RemoveTagsFromOnPremisesInstances",
7581        );
7582        let encoded = serde_json::to_string(&input).unwrap();
7583        request.set_payload(Some(encoded));
7584
7585        let response = self
7586            .sign_and_dispatch(
7587                request,
7588                RemoveTagsFromOnPremisesInstancesError::from_response,
7589            )
7590            .await?;
7591        std::mem::drop(response);
7592        Ok(())
7593    }
7594
7595    /// <p>In a blue/green deployment, overrides any specified wait time and starts terminating instances immediately after the traffic routing is complete.</p>
7596    async fn skip_wait_time_for_instance_termination(
7597        &self,
7598        input: SkipWaitTimeForInstanceTerminationInput,
7599    ) -> Result<(), RusotoError<SkipWaitTimeForInstanceTerminationError>> {
7600        let mut request = self.new_signed_request("POST", "/");
7601        request.add_header(
7602            "x-amz-target",
7603            "CodeDeploy_20141006.SkipWaitTimeForInstanceTermination",
7604        );
7605        let encoded = serde_json::to_string(&input).unwrap();
7606        request.set_payload(Some(encoded));
7607
7608        let response = self
7609            .sign_and_dispatch(
7610                request,
7611                SkipWaitTimeForInstanceTerminationError::from_response,
7612            )
7613            .await?;
7614        std::mem::drop(response);
7615        Ok(())
7616    }
7617
7618    /// <p>Attempts to stop an ongoing deployment.</p>
7619    async fn stop_deployment(
7620        &self,
7621        input: StopDeploymentInput,
7622    ) -> Result<StopDeploymentOutput, RusotoError<StopDeploymentError>> {
7623        let mut request = self.new_signed_request("POST", "/");
7624        request.add_header("x-amz-target", "CodeDeploy_20141006.StopDeployment");
7625        let encoded = serde_json::to_string(&input).unwrap();
7626        request.set_payload(Some(encoded));
7627
7628        let response = self
7629            .sign_and_dispatch(request, StopDeploymentError::from_response)
7630            .await?;
7631        let mut response = response;
7632        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7633        proto::json::ResponsePayload::new(&response).deserialize::<StopDeploymentOutput, _>()
7634    }
7635
7636    /// <p> Associates the list of tags in the input <code>Tags</code> parameter with the resource identified by the <code>ResourceArn</code> input parameter. </p>
7637    async fn tag_resource(
7638        &self,
7639        input: TagResourceInput,
7640    ) -> Result<TagResourceOutput, RusotoError<TagResourceError>> {
7641        let mut request = self.new_signed_request("POST", "/");
7642        request.add_header("x-amz-target", "CodeDeploy_20141006.TagResource");
7643        let encoded = serde_json::to_string(&input).unwrap();
7644        request.set_payload(Some(encoded));
7645
7646        let response = self
7647            .sign_and_dispatch(request, TagResourceError::from_response)
7648            .await?;
7649        let mut response = response;
7650        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7651        proto::json::ResponsePayload::new(&response).deserialize::<TagResourceOutput, _>()
7652    }
7653
7654    /// <p> Disassociates a resource from a list of tags. The resource is identified by the <code>ResourceArn</code> input parameter. The tags are identified by the list of keys in the <code>TagKeys</code> input parameter. </p>
7655    async fn untag_resource(
7656        &self,
7657        input: UntagResourceInput,
7658    ) -> Result<UntagResourceOutput, RusotoError<UntagResourceError>> {
7659        let mut request = self.new_signed_request("POST", "/");
7660        request.add_header("x-amz-target", "CodeDeploy_20141006.UntagResource");
7661        let encoded = serde_json::to_string(&input).unwrap();
7662        request.set_payload(Some(encoded));
7663
7664        let response = self
7665            .sign_and_dispatch(request, UntagResourceError::from_response)
7666            .await?;
7667        let mut response = response;
7668        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7669        proto::json::ResponsePayload::new(&response).deserialize::<UntagResourceOutput, _>()
7670    }
7671
7672    /// <p>Changes the name of an application.</p>
7673    async fn update_application(
7674        &self,
7675        input: UpdateApplicationInput,
7676    ) -> Result<(), RusotoError<UpdateApplicationError>> {
7677        let mut request = self.new_signed_request("POST", "/");
7678        request.add_header("x-amz-target", "CodeDeploy_20141006.UpdateApplication");
7679        let encoded = serde_json::to_string(&input).unwrap();
7680        request.set_payload(Some(encoded));
7681
7682        let response = self
7683            .sign_and_dispatch(request, UpdateApplicationError::from_response)
7684            .await?;
7685        std::mem::drop(response);
7686        Ok(())
7687    }
7688
7689    /// <p>Changes information about a deployment group.</p>
7690    async fn update_deployment_group(
7691        &self,
7692        input: UpdateDeploymentGroupInput,
7693    ) -> Result<UpdateDeploymentGroupOutput, RusotoError<UpdateDeploymentGroupError>> {
7694        let mut request = self.new_signed_request("POST", "/");
7695        request.add_header("x-amz-target", "CodeDeploy_20141006.UpdateDeploymentGroup");
7696        let encoded = serde_json::to_string(&input).unwrap();
7697        request.set_payload(Some(encoded));
7698
7699        let response = self
7700            .sign_and_dispatch(request, UpdateDeploymentGroupError::from_response)
7701            .await?;
7702        let mut response = response;
7703        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
7704        proto::json::ResponsePayload::new(&response).deserialize::<UpdateDeploymentGroupOutput, _>()
7705    }
7706}