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