/*******************************************************************************
* Copyright 2012-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use
* this file except in compliance with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file.
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
* *****************************************************************************
*
* AWS Tools for Windows (TM) PowerShell (TM)
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
using System.Text;
using Amazon.PowerShell.Common;
using Amazon.Runtime;
using Amazon.GreengrassV2;
using Amazon.GreengrassV2.Model;
namespace Amazon.PowerShell.Cmdlets.GGV2
{
///
/// Creates a continuous deployment for a target, which is a Greengrass core device or
/// group of core devices. When you add a new core device to a group of core devices that
/// has a deployment, IoT Greengrass deploys that group's deployment to the new device.
///
///
///
/// You can define one deployment for each target. When you create a new deployment for
/// a target that has an existing deployment, you replace the previous deployment. IoT
/// Greengrass applies the new deployment to the target devices.
///
/// Every deployment has a revision number that indicates how many deployment revisions
/// you define for a target. Use this operation to create a new revision of an existing
/// deployment.
///
/// For more information, see the Create
/// deployments in the IoT Greengrass V2 Developer Guide.
///
///
[Cmdlet("New", "GGV2Deployment", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)]
[OutputType("Amazon.GreengrassV2.Model.CreateDeploymentResponse")]
[AWSCmdlet("Calls the AWS GreengrassV2 CreateDeployment API operation.", Operation = new[] {"CreateDeployment"}, SelectReturnType = typeof(Amazon.GreengrassV2.Model.CreateDeploymentResponse))]
[AWSCmdletOutput("Amazon.GreengrassV2.Model.CreateDeploymentResponse",
"This cmdlet returns an Amazon.GreengrassV2.Model.CreateDeploymentResponse object containing multiple properties. The object can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack."
)]
public partial class NewGGV2DeploymentCmdlet : AmazonGreengrassV2ClientCmdlet, IExecutor
{
#region Parameter ComponentUpdatePolicy_Action
///
///
/// Whether or not to notify components and wait for components to become safe to update.
/// Choose from the following options:NOTIFY_COMPONENTS
– The deployment notifies each component before it
/// stops and updates that component. Components can use the SubscribeToComponentUpdates
/// IPC operation to receive these notifications. Then, components can respond with the
/// DeferComponentUpdate
/// IPC operation. For more information, see Create
/// deployments in the IoT Greengrass V2 Developer Guide.SKIP_NOTIFY_COMPONENTS
– The deployment doesn't notify components or
/// wait for them to be safe to update.
Default: NOTIFY_COMPONENTS
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("DeploymentPolicies_ComponentUpdatePolicy_Action")]
[AWSConstantClassSource("Amazon.GreengrassV2.DeploymentComponentUpdatePolicyAction")]
public Amazon.GreengrassV2.DeploymentComponentUpdatePolicyAction ComponentUpdatePolicy_Action { get; set; }
#endregion
#region Parameter ExponentialRate_BaseRatePerMinute
///
///
/// The minimum number of devices that receive a pending job notification, per minute,
/// when the job starts. This parameter defines the initial rollout rate of the job.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_BaseRatePerMinute")]
public System.Int32? ExponentialRate_BaseRatePerMinute { get; set; }
#endregion
#region Parameter Component
///
///
/// The components to deploy. This is a dictionary, where each key is the name of a component,
/// and each key's value is the version and configuration to deploy for that component.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("Components")]
public System.Collections.Hashtable Component { get; set; }
#endregion
#region Parameter AbortConfig_CriteriaList
///
///
/// The list of criteria that define when and how to cancel the configuration deployment.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_AbortConfig_CriteriaList")]
public Amazon.GreengrassV2.Model.IoTJobAbortCriteria[] AbortConfig_CriteriaList { get; set; }
#endregion
#region Parameter DeploymentName
///
///
/// The name of the deployment.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String DeploymentName { get; set; }
#endregion
#region Parameter DeploymentPolicies_FailureHandlingPolicy
///
///
/// The failure handling policy for the configuration deployment. This policy defines
/// what to do if the deployment fails.Default: ROLLBACK
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.GreengrassV2.DeploymentFailureHandlingPolicy")]
public Amazon.GreengrassV2.DeploymentFailureHandlingPolicy DeploymentPolicies_FailureHandlingPolicy { get; set; }
#endregion
#region Parameter ExponentialRate_IncrementFactor
///
///
/// The exponential factor to increase the rollout rate for the job.This parameter supports up to one digit after the decimal (for example, you can specify
/// 1.5
, but not 1.55
).
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_IncrementFactor")]
public System.Double? ExponentialRate_IncrementFactor { get; set; }
#endregion
#region Parameter TimeoutConfig_InProgressTimeoutInMinute
///
///
/// The amount of time, in minutes, that devices have to complete the job. The timer starts
/// when the job status is set to IN_PROGRESS
. If the job status doesn't
/// change to a terminal state before the time expires, then the job status is set to
/// TIMED_OUT
.The timeout interval must be between 1 minute and 7 days (10080 minutes).
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_TimeoutConfig_InProgressTimeoutInMinutes")]
public System.Int64? TimeoutConfig_InProgressTimeoutInMinute { get; set; }
#endregion
#region Parameter JobExecutionsRolloutConfig_MaximumPerMinute
///
///
/// The maximum number of devices that receive a pending job notification, per minute.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_JobExecutionsRolloutConfig_MaximumPerMinute")]
public System.Int32? JobExecutionsRolloutConfig_MaximumPerMinute { get; set; }
#endregion
#region Parameter RateIncreaseCriteria_NumberOfNotifiedThing
///
///
/// The number of devices to receive the job notification before the rollout rate increases.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_NumberOfNotifiedThings")]
public System.Int32? RateIncreaseCriteria_NumberOfNotifiedThing { get; set; }
#endregion
#region Parameter RateIncreaseCriteria_NumberOfSucceededThing
///
///
/// The number of devices to successfully run the configuration job before the rollout
/// rate increases.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("IotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_NumberOfSucceededThings")]
public System.Int32? RateIncreaseCriteria_NumberOfSucceededThing { get; set; }
#endregion
#region Parameter ParentTargetArn
///
///
/// The parent deployment's target ARN
/// within a subdeployment.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String ParentTargetArn { get; set; }
#endregion
#region Parameter Tag
///
///
/// A list of key-value pairs that contain metadata for the resource. For more information,
/// see Tag
/// your resources in the IoT Greengrass V2 Developer Guide.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("Tags")]
public System.Collections.Hashtable Tag { get; set; }
#endregion
#region Parameter TargetArn
///
///
/// The ARN
/// of the target IoT thing or thing group. When creating a subdeployment, the targetARN
/// can only be a thing group.
///
///
#if !MODULAR
[System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)]
#else
[System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true, Mandatory = true)]
[System.Management.Automation.AllowEmptyString]
[System.Management.Automation.AllowNull]
#endif
[Amazon.PowerShell.Common.AWSRequiredParameter]
public System.String TargetArn { get; set; }
#endregion
#region Parameter ComponentUpdatePolicy_TimeoutInSecond
///
///
/// The amount of time in seconds that each component on a device has to report that it's
/// safe to update. If the component waits for longer than this timeout, then the deployment
/// proceeds on the device.Default: 60
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("DeploymentPolicies_ComponentUpdatePolicy_TimeoutInSeconds")]
public System.Int32? ComponentUpdatePolicy_TimeoutInSecond { get; set; }
#endregion
#region Parameter ConfigurationValidationPolicy_TimeoutInSecond
///
///
/// The amount of time in seconds that a component can validate its configuration updates.
/// If the validation time exceeds this timeout, then the deployment proceeds for the
/// device.Default: 30
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("DeploymentPolicies_ConfigurationValidationPolicy_TimeoutInSeconds")]
public System.Int32? ConfigurationValidationPolicy_TimeoutInSecond { get; set; }
#endregion
#region Parameter ClientToken
///
///
/// A unique, case-sensitive identifier that you can provide to ensure that the request
/// is idempotent. Idempotency means that the request is successfully processed only once,
/// even if you send the request multiple times. When a request succeeds, and you specify
/// the same client token for subsequent successful requests, the IoT Greengrass V2 service
/// returns the successful response that it caches from the previous request. IoT Greengrass
/// V2 caches successful responses for idempotent requests for up to 8 hours.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String ClientToken { get; set; }
#endregion
#region Parameter Select
///
/// Use the -Select parameter to control the cmdlet output. The default value is '*'.
/// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.GreengrassV2.Model.CreateDeploymentResponse).
/// Specifying the name of a property of type Amazon.GreengrassV2.Model.CreateDeploymentResponse will result in that property being returned.
/// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public string Select { get; set; } = "*";
#endregion
#region Parameter PassThru
///
/// Changes the cmdlet behavior to return the value passed to the TargetArn parameter.
/// The -PassThru parameter is deprecated, use -Select '^TargetArn' instead. This parameter will be removed in a future version.
///
[System.Obsolete("The -PassThru parameter is deprecated, use -Select '^TargetArn' instead. This parameter will be removed in a future version.")]
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter PassThru { get; set; }
#endregion
#region Parameter Force
///
/// This parameter overrides confirmation prompts to force
/// the cmdlet to continue its operation. This parameter should always
/// be used with caution.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter Force { get; set; }
#endregion
protected override void ProcessRecord()
{
this._AWSSignerType = "v4";
base.ProcessRecord();
var resourceIdentifiersText = FormatParameterValuesForConfirmationMsg(nameof(this.TargetArn), MyInvocation.BoundParameters);
if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "New-GGV2Deployment (CreateDeployment)"))
{
return;
}
var context = new CmdletContext();
// allow for manipulation of parameters prior to loading into context
PreExecutionContextLoad(context);
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
if (ParameterWasBound(nameof(this.Select)))
{
context.Select = CreateSelectDelegate(Select) ??
throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select));
if (this.PassThru.IsPresent)
{
throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select));
}
}
else if (this.PassThru.IsPresent)
{
context.Select = (response, cmdlet) => this.TargetArn;
}
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
context.ClientToken = this.ClientToken;
if (this.Component != null)
{
context.Component = new Dictionary(StringComparer.Ordinal);
foreach (var hashKey in this.Component.Keys)
{
context.Component.Add((String)hashKey, (ComponentDeploymentSpecification)(this.Component[hashKey]));
}
}
context.DeploymentName = this.DeploymentName;
context.ComponentUpdatePolicy_Action = this.ComponentUpdatePolicy_Action;
context.ComponentUpdatePolicy_TimeoutInSecond = this.ComponentUpdatePolicy_TimeoutInSecond;
context.ConfigurationValidationPolicy_TimeoutInSecond = this.ConfigurationValidationPolicy_TimeoutInSecond;
context.DeploymentPolicies_FailureHandlingPolicy = this.DeploymentPolicies_FailureHandlingPolicy;
if (this.AbortConfig_CriteriaList != null)
{
context.AbortConfig_CriteriaList = new List(this.AbortConfig_CriteriaList);
}
context.ExponentialRate_BaseRatePerMinute = this.ExponentialRate_BaseRatePerMinute;
context.ExponentialRate_IncrementFactor = this.ExponentialRate_IncrementFactor;
context.RateIncreaseCriteria_NumberOfNotifiedThing = this.RateIncreaseCriteria_NumberOfNotifiedThing;
context.RateIncreaseCriteria_NumberOfSucceededThing = this.RateIncreaseCriteria_NumberOfSucceededThing;
context.JobExecutionsRolloutConfig_MaximumPerMinute = this.JobExecutionsRolloutConfig_MaximumPerMinute;
context.TimeoutConfig_InProgressTimeoutInMinute = this.TimeoutConfig_InProgressTimeoutInMinute;
context.ParentTargetArn = this.ParentTargetArn;
if (this.Tag != null)
{
context.Tag = new Dictionary(StringComparer.Ordinal);
foreach (var hashKey in this.Tag.Keys)
{
context.Tag.Add((String)hashKey, (String)(this.Tag[hashKey]));
}
}
context.TargetArn = this.TargetArn;
#if MODULAR
if (this.TargetArn == null && ParameterWasBound(nameof(this.TargetArn)))
{
WriteWarning("You are passing $null as a value for parameter TargetArn which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues.");
}
#endif
// allow further manipulation of loaded context prior to processing
PostExecutionContextLoad(context);
var output = Execute(context) as CmdletOutput;
ProcessOutput(output);
}
#region IExecutor Members
public object Execute(ExecutorContext context)
{
var cmdletContext = context as CmdletContext;
// create request
var request = new Amazon.GreengrassV2.Model.CreateDeploymentRequest();
if (cmdletContext.ClientToken != null)
{
request.ClientToken = cmdletContext.ClientToken;
}
if (cmdletContext.Component != null)
{
request.Components = cmdletContext.Component;
}
if (cmdletContext.DeploymentName != null)
{
request.DeploymentName = cmdletContext.DeploymentName;
}
// populate DeploymentPolicies
var requestDeploymentPoliciesIsNull = true;
request.DeploymentPolicies = new Amazon.GreengrassV2.Model.DeploymentPolicies();
Amazon.GreengrassV2.DeploymentFailureHandlingPolicy requestDeploymentPolicies_deploymentPolicies_FailureHandlingPolicy = null;
if (cmdletContext.DeploymentPolicies_FailureHandlingPolicy != null)
{
requestDeploymentPolicies_deploymentPolicies_FailureHandlingPolicy = cmdletContext.DeploymentPolicies_FailureHandlingPolicy;
}
if (requestDeploymentPolicies_deploymentPolicies_FailureHandlingPolicy != null)
{
request.DeploymentPolicies.FailureHandlingPolicy = requestDeploymentPolicies_deploymentPolicies_FailureHandlingPolicy;
requestDeploymentPoliciesIsNull = false;
}
Amazon.GreengrassV2.Model.DeploymentConfigurationValidationPolicy requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy = null;
// populate ConfigurationValidationPolicy
var requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicyIsNull = true;
requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy = new Amazon.GreengrassV2.Model.DeploymentConfigurationValidationPolicy();
System.Int32? requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy_configurationValidationPolicy_TimeoutInSecond = null;
if (cmdletContext.ConfigurationValidationPolicy_TimeoutInSecond != null)
{
requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy_configurationValidationPolicy_TimeoutInSecond = cmdletContext.ConfigurationValidationPolicy_TimeoutInSecond.Value;
}
if (requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy_configurationValidationPolicy_TimeoutInSecond != null)
{
requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy.TimeoutInSeconds = requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy_configurationValidationPolicy_TimeoutInSecond.Value;
requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicyIsNull = false;
}
// determine if requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy should be set to null
if (requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicyIsNull)
{
requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy = null;
}
if (requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy != null)
{
request.DeploymentPolicies.ConfigurationValidationPolicy = requestDeploymentPolicies_deploymentPolicies_ConfigurationValidationPolicy;
requestDeploymentPoliciesIsNull = false;
}
Amazon.GreengrassV2.Model.DeploymentComponentUpdatePolicy requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy = null;
// populate ComponentUpdatePolicy
var requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicyIsNull = true;
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy = new Amazon.GreengrassV2.Model.DeploymentComponentUpdatePolicy();
Amazon.GreengrassV2.DeploymentComponentUpdatePolicyAction requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_Action = null;
if (cmdletContext.ComponentUpdatePolicy_Action != null)
{
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_Action = cmdletContext.ComponentUpdatePolicy_Action;
}
if (requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_Action != null)
{
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy.Action = requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_Action;
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicyIsNull = false;
}
System.Int32? requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_TimeoutInSecond = null;
if (cmdletContext.ComponentUpdatePolicy_TimeoutInSecond != null)
{
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_TimeoutInSecond = cmdletContext.ComponentUpdatePolicy_TimeoutInSecond.Value;
}
if (requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_TimeoutInSecond != null)
{
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy.TimeoutInSeconds = requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy_componentUpdatePolicy_TimeoutInSecond.Value;
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicyIsNull = false;
}
// determine if requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy should be set to null
if (requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicyIsNull)
{
requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy = null;
}
if (requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy != null)
{
request.DeploymentPolicies.ComponentUpdatePolicy = requestDeploymentPolicies_deploymentPolicies_ComponentUpdatePolicy;
requestDeploymentPoliciesIsNull = false;
}
// determine if request.DeploymentPolicies should be set to null
if (requestDeploymentPoliciesIsNull)
{
request.DeploymentPolicies = null;
}
// populate IotJobConfiguration
var requestIotJobConfigurationIsNull = true;
request.IotJobConfiguration = new Amazon.GreengrassV2.Model.DeploymentIoTJobConfiguration();
Amazon.GreengrassV2.Model.IoTJobAbortConfig requestIotJobConfiguration_iotJobConfiguration_AbortConfig = null;
// populate AbortConfig
var requestIotJobConfiguration_iotJobConfiguration_AbortConfigIsNull = true;
requestIotJobConfiguration_iotJobConfiguration_AbortConfig = new Amazon.GreengrassV2.Model.IoTJobAbortConfig();
List requestIotJobConfiguration_iotJobConfiguration_AbortConfig_abortConfig_CriteriaList = null;
if (cmdletContext.AbortConfig_CriteriaList != null)
{
requestIotJobConfiguration_iotJobConfiguration_AbortConfig_abortConfig_CriteriaList = cmdletContext.AbortConfig_CriteriaList;
}
if (requestIotJobConfiguration_iotJobConfiguration_AbortConfig_abortConfig_CriteriaList != null)
{
requestIotJobConfiguration_iotJobConfiguration_AbortConfig.CriteriaList = requestIotJobConfiguration_iotJobConfiguration_AbortConfig_abortConfig_CriteriaList;
requestIotJobConfiguration_iotJobConfiguration_AbortConfigIsNull = false;
}
// determine if requestIotJobConfiguration_iotJobConfiguration_AbortConfig should be set to null
if (requestIotJobConfiguration_iotJobConfiguration_AbortConfigIsNull)
{
requestIotJobConfiguration_iotJobConfiguration_AbortConfig = null;
}
if (requestIotJobConfiguration_iotJobConfiguration_AbortConfig != null)
{
request.IotJobConfiguration.AbortConfig = requestIotJobConfiguration_iotJobConfiguration_AbortConfig;
requestIotJobConfigurationIsNull = false;
}
Amazon.GreengrassV2.Model.IoTJobTimeoutConfig requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig = null;
// populate TimeoutConfig
var requestIotJobConfiguration_iotJobConfiguration_TimeoutConfigIsNull = true;
requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig = new Amazon.GreengrassV2.Model.IoTJobTimeoutConfig();
System.Int64? requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig_timeoutConfig_InProgressTimeoutInMinute = null;
if (cmdletContext.TimeoutConfig_InProgressTimeoutInMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig_timeoutConfig_InProgressTimeoutInMinute = cmdletContext.TimeoutConfig_InProgressTimeoutInMinute.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig_timeoutConfig_InProgressTimeoutInMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig.InProgressTimeoutInMinutes = requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig_timeoutConfig_InProgressTimeoutInMinute.Value;
requestIotJobConfiguration_iotJobConfiguration_TimeoutConfigIsNull = false;
}
// determine if requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig should be set to null
if (requestIotJobConfiguration_iotJobConfiguration_TimeoutConfigIsNull)
{
requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig = null;
}
if (requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig != null)
{
request.IotJobConfiguration.TimeoutConfig = requestIotJobConfiguration_iotJobConfiguration_TimeoutConfig;
requestIotJobConfigurationIsNull = false;
}
Amazon.GreengrassV2.Model.IoTJobExecutionsRolloutConfig requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig = null;
// populate JobExecutionsRolloutConfig
var requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfigIsNull = true;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig = new Amazon.GreengrassV2.Model.IoTJobExecutionsRolloutConfig();
System.Int32? requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_jobExecutionsRolloutConfig_MaximumPerMinute = null;
if (cmdletContext.JobExecutionsRolloutConfig_MaximumPerMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_jobExecutionsRolloutConfig_MaximumPerMinute = cmdletContext.JobExecutionsRolloutConfig_MaximumPerMinute.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_jobExecutionsRolloutConfig_MaximumPerMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig.MaximumPerMinute = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_jobExecutionsRolloutConfig_MaximumPerMinute.Value;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfigIsNull = false;
}
Amazon.GreengrassV2.Model.IoTJobExponentialRolloutRate requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate = null;
// populate ExponentialRate
var requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRateIsNull = true;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate = new Amazon.GreengrassV2.Model.IoTJobExponentialRolloutRate();
System.Int32? requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_BaseRatePerMinute = null;
if (cmdletContext.ExponentialRate_BaseRatePerMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_BaseRatePerMinute = cmdletContext.ExponentialRate_BaseRatePerMinute.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_BaseRatePerMinute != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate.BaseRatePerMinute = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_BaseRatePerMinute.Value;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRateIsNull = false;
}
System.Double? requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_IncrementFactor = null;
if (cmdletContext.ExponentialRate_IncrementFactor != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_IncrementFactor = cmdletContext.ExponentialRate_IncrementFactor.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_IncrementFactor != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate.IncrementFactor = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_exponentialRate_IncrementFactor.Value;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRateIsNull = false;
}
Amazon.GreengrassV2.Model.IoTJobRateIncreaseCriteria requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria = null;
// populate RateIncreaseCriteria
var requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteriaIsNull = true;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria = new Amazon.GreengrassV2.Model.IoTJobRateIncreaseCriteria();
System.Int32? requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfNotifiedThing = null;
if (cmdletContext.RateIncreaseCriteria_NumberOfNotifiedThing != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfNotifiedThing = cmdletContext.RateIncreaseCriteria_NumberOfNotifiedThing.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfNotifiedThing != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria.NumberOfNotifiedThings = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfNotifiedThing.Value;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteriaIsNull = false;
}
System.Int32? requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfSucceededThing = null;
if (cmdletContext.RateIncreaseCriteria_NumberOfSucceededThing != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfSucceededThing = cmdletContext.RateIncreaseCriteria_NumberOfSucceededThing.Value;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfSucceededThing != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria.NumberOfSucceededThings = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria_rateIncreaseCriteria_NumberOfSucceededThing.Value;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteriaIsNull = false;
}
// determine if requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria should be set to null
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteriaIsNull)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria = null;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate.RateIncreaseCriteria = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate_RateIncreaseCriteria;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRateIsNull = false;
}
// determine if requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate should be set to null
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRateIsNull)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate = null;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate != null)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig.ExponentialRate = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig_iotJobConfiguration_JobExecutionsRolloutConfig_ExponentialRate;
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfigIsNull = false;
}
// determine if requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig should be set to null
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfigIsNull)
{
requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig = null;
}
if (requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig != null)
{
request.IotJobConfiguration.JobExecutionsRolloutConfig = requestIotJobConfiguration_iotJobConfiguration_JobExecutionsRolloutConfig;
requestIotJobConfigurationIsNull = false;
}
// determine if request.IotJobConfiguration should be set to null
if (requestIotJobConfigurationIsNull)
{
request.IotJobConfiguration = null;
}
if (cmdletContext.ParentTargetArn != null)
{
request.ParentTargetArn = cmdletContext.ParentTargetArn;
}
if (cmdletContext.Tag != null)
{
request.Tags = cmdletContext.Tag;
}
if (cmdletContext.TargetArn != null)
{
request.TargetArn = cmdletContext.TargetArn;
}
CmdletOutput output;
// issue call
var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
try
{
var response = CallAWSServiceOperation(client, request);
object pipelineOutput = null;
pipelineOutput = cmdletContext.Select(response, this);
output = new CmdletOutput
{
PipelineOutput = pipelineOutput,
ServiceResponse = response
};
}
catch (Exception e)
{
output = new CmdletOutput { ErrorResponse = e };
}
return output;
}
public ExecutorContext CreateContext()
{
return new CmdletContext();
}
#endregion
#region AWS Service Operation Call
private Amazon.GreengrassV2.Model.CreateDeploymentResponse CallAWSServiceOperation(IAmazonGreengrassV2 client, Amazon.GreengrassV2.Model.CreateDeploymentRequest request)
{
Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "AWS GreengrassV2", "CreateDeployment");
try
{
#if DESKTOP
return client.CreateDeployment(request);
#elif CORECLR
return client.CreateDeploymentAsync(request).GetAwaiter().GetResult();
#else
#error "Unknown build edition"
#endif
}
catch (AmazonServiceException exc)
{
var webException = exc.InnerException as System.Net.WebException;
if (webException != null)
{
throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
}
throw;
}
}
#endregion
internal partial class CmdletContext : ExecutorContext
{
public System.String ClientToken { get; set; }
public Dictionary Component { get; set; }
public System.String DeploymentName { get; set; }
public Amazon.GreengrassV2.DeploymentComponentUpdatePolicyAction ComponentUpdatePolicy_Action { get; set; }
public System.Int32? ComponentUpdatePolicy_TimeoutInSecond { get; set; }
public System.Int32? ConfigurationValidationPolicy_TimeoutInSecond { get; set; }
public Amazon.GreengrassV2.DeploymentFailureHandlingPolicy DeploymentPolicies_FailureHandlingPolicy { get; set; }
public List AbortConfig_CriteriaList { get; set; }
public System.Int32? ExponentialRate_BaseRatePerMinute { get; set; }
public System.Double? ExponentialRate_IncrementFactor { get; set; }
public System.Int32? RateIncreaseCriteria_NumberOfNotifiedThing { get; set; }
public System.Int32? RateIncreaseCriteria_NumberOfSucceededThing { get; set; }
public System.Int32? JobExecutionsRolloutConfig_MaximumPerMinute { get; set; }
public System.Int64? TimeoutConfig_InProgressTimeoutInMinute { get; set; }
public System.String ParentTargetArn { get; set; }
public Dictionary Tag { get; set; }
public System.String TargetArn { get; set; }
public System.Func Select { get; set; } =
(response, cmdlet) => response;
}
}
}