/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the opsworks-2013-02-18.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.OpsWorks.Model
{
///
/// Container for the parameters to the CloneStack operation.
/// Creates a clone of a specified stack. For more information, see Clone
/// a Stack. By default, all parameters are set to the values used by the parent stack.
///
///
///
/// Required Permissions: To use this action, an IAM user must have an attached
/// policy that explicitly grants permissions. For more information about user permissions,
/// see Managing
/// User Permissions.
///
///
public partial class CloneStackRequest : AmazonOpsWorksRequest
{
private string _agentVersion;
private Dictionary _attributes = new Dictionary();
private ChefConfiguration _chefConfiguration;
private List _cloneAppIds = new List();
private bool? _clonePermissions;
private StackConfigurationManager _configurationManager;
private Source _customCookbooksSource;
private string _customJson;
private string _defaultAvailabilityZone;
private string _defaultInstanceProfileArn;
private string _defaultOs;
private RootDeviceType _defaultRootDeviceType;
private string _defaultSshKeyName;
private string _defaultSubnetId;
private string _hostnameTheme;
private string _name;
private string _region;
private string _serviceRoleArn;
private string _sourceStackId;
private bool? _useCustomCookbooks;
private bool? _useOpsworksSecurityGroups;
private string _vpcId;
///
/// Gets and sets the property AgentVersion.
///
/// The default AWS OpsWorks Stacks agent version. You have the following options:
///
/// -
///
/// Auto-update - Set this parameter to
LATEST
. AWS OpsWorks Stacks automatically
/// installs new agent versions on the stack's instances as soon as they are available.
///
/// -
///
/// Fixed version - Set this parameter to your preferred agent version. To update the
/// agent version, you must edit the stack configuration and specify a new version. AWS
/// OpsWorks Stacks then automatically installs that version on the stack's instances.
///
///
///
/// The default setting is LATEST
. To specify an agent version, you must
/// use the complete version number, not the abbreviated number shown on the console.
/// For a list of available agent version numbers, call DescribeAgentVersions.
/// AgentVersion cannot be set to Chef 12.2.
///
///
///
/// You can also specify an agent version when you create or update an instance, which
/// overrides the stack's default setting.
///
///
///
public string AgentVersion
{
get { return this._agentVersion; }
set { this._agentVersion = value; }
}
// Check to see if AgentVersion property is set
internal bool IsSetAgentVersion()
{
return this._agentVersion != null;
}
///
/// Gets and sets the property Attributes.
///
/// A list of stack attributes and values as key/value pairs to be added to the cloned
/// stack.
///
///
public Dictionary Attributes
{
get { return this._attributes; }
set { this._attributes = value; }
}
// Check to see if Attributes property is set
internal bool IsSetAttributes()
{
return this._attributes != null && this._attributes.Count > 0;
}
///
/// Gets and sets the property ChefConfiguration.
///
/// A ChefConfiguration
object that specifies whether to enable Berkshelf
/// and the Berkshelf version on Chef 11.10 stacks. For more information, see Create
/// a New Stack.
///
///
public ChefConfiguration ChefConfiguration
{
get { return this._chefConfiguration; }
set { this._chefConfiguration = value; }
}
// Check to see if ChefConfiguration property is set
internal bool IsSetChefConfiguration()
{
return this._chefConfiguration != null;
}
///
/// Gets and sets the property CloneAppIds.
///
/// A list of source stack app IDs to be included in the cloned stack.
///
///
public List CloneAppIds
{
get { return this._cloneAppIds; }
set { this._cloneAppIds = value; }
}
// Check to see if CloneAppIds property is set
internal bool IsSetCloneAppIds()
{
return this._cloneAppIds != null && this._cloneAppIds.Count > 0;
}
///
/// Gets and sets the property ClonePermissions.
///
/// Whether to clone the source stack's permissions.
///
///
public bool ClonePermissions
{
get { return this._clonePermissions.GetValueOrDefault(); }
set { this._clonePermissions = value; }
}
// Check to see if ClonePermissions property is set
internal bool IsSetClonePermissions()
{
return this._clonePermissions.HasValue;
}
///
/// Gets and sets the property ConfigurationManager.
///
/// The configuration manager. When you clone a stack we recommend that you use the configuration
/// manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2
/// for Windows stacks. The default value for Linux stacks is currently 12.
///
///
public StackConfigurationManager ConfigurationManager
{
get { return this._configurationManager; }
set { this._configurationManager = value; }
}
// Check to see if ConfigurationManager property is set
internal bool IsSetConfigurationManager()
{
return this._configurationManager != null;
}
///
/// Gets and sets the property CustomCookbooksSource.
///
/// Contains the information required to retrieve an app or cookbook from a repository.
/// For more information, see Adding
/// Apps or Cookbooks
/// and Recipes.
///
///
public Source CustomCookbooksSource
{
get { return this._customCookbooksSource; }
set { this._customCookbooksSource = value; }
}
// Check to see if CustomCookbooksSource property is set
internal bool IsSetCustomCookbooksSource()
{
return this._customCookbooksSource != null;
}
///
/// Gets and sets the property CustomJson.
///
/// A string that contains user-defined, custom JSON. It is used to override the corresponding
/// default stack configuration JSON values. The string should be in the following format:
///
///
///
/// "{\"key1\": \"value1\", \"key2\": \"value2\",...}"
///
///
///
/// For more information about custom JSON, see Use
/// Custom JSON to Modify the Stack Configuration Attributes
///
///
public string CustomJson
{
get { return this._customJson; }
set { this._customJson = value; }
}
// Check to see if CustomJson property is set
internal bool IsSetCustomJson()
{
return this._customJson != null;
}
///
/// Gets and sets the property DefaultAvailabilityZone.
///
/// The cloned stack's default Availability Zone, which must be in the specified region.
/// For more information, see Regions
/// and Endpoints. If you also specify a value for DefaultSubnetId
, the
/// subnet must be in the same zone. For more information, see the VpcId
/// parameter description.
///
///
public string DefaultAvailabilityZone
{
get { return this._defaultAvailabilityZone; }
set { this._defaultAvailabilityZone = value; }
}
// Check to see if DefaultAvailabilityZone property is set
internal bool IsSetDefaultAvailabilityZone()
{
return this._defaultAvailabilityZone != null;
}
///
/// Gets and sets the property DefaultInstanceProfileArn.
///
/// The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all
/// of the stack's EC2 instances. For more information about IAM ARNs, see Using
/// Identifiers.
///
///
public string DefaultInstanceProfileArn
{
get { return this._defaultInstanceProfileArn; }
set { this._defaultInstanceProfileArn = value; }
}
// Check to see if DefaultInstanceProfileArn property is set
internal bool IsSetDefaultInstanceProfileArn()
{
return this._defaultInstanceProfileArn != null;
}
///
/// Gets and sets the property DefaultOs.
///
/// The stack's operating system, which must be set to one of the following.
///
/// -
///
/// A supported Linux operating system: An Amazon Linux version, such as
Amazon
/// Linux 2018.03
, Amazon Linux 2017.09
, Amazon Linux 2017.03
,
/// Amazon Linux 2016.09
, Amazon Linux 2016.03
, Amazon
/// Linux 2015.09
, or Amazon Linux 2015.03
.
///
/// -
///
/// A supported Ubuntu operating system, such as
Ubuntu 16.04 LTS
, Ubuntu
/// 14.04 LTS
, or Ubuntu 12.04 LTS
.
///
/// -
///
///
CentOS Linux 7
///
/// -
///
///
Red Hat Enterprise Linux 7
///
/// -
///
///
Microsoft Windows Server 2012 R2 Base
, Microsoft Windows Server
/// 2012 R2 with SQL Server Express
, Microsoft Windows Server 2012 R2 with
/// SQL Server Standard
, or Microsoft Windows Server 2012 R2 with SQL Server
/// Web
.
///
/// -
///
/// A custom AMI:
Custom
. You specify the custom AMI you want to use when
/// you create instances. For more information about how to use custom AMIs with OpsWorks,
/// see Using
/// Custom AMIs.
///
///
///
/// The default option is the parent stack's operating system. For more information about
/// supported operating systems, see AWS
/// OpsWorks Stacks Operating Systems.
///
///
///
/// You can specify a different Linux operating system for the cloned stack, but you cannot
/// change from Linux to Windows or Windows to Linux.
///
///
///
public string DefaultOs
{
get { return this._defaultOs; }
set { this._defaultOs = value; }
}
// Check to see if DefaultOs property is set
internal bool IsSetDefaultOs()
{
return this._defaultOs != null;
}
///
/// Gets and sets the property DefaultRootDeviceType.
///
/// The default root device type. This value is used by default for all instances in the
/// cloned stack, but you can override it when you create an instance. For more information,
/// see Storage
/// for the Root Device.
///
///
public RootDeviceType DefaultRootDeviceType
{
get { return this._defaultRootDeviceType; }
set { this._defaultRootDeviceType = value; }
}
// Check to see if DefaultRootDeviceType property is set
internal bool IsSetDefaultRootDeviceType()
{
return this._defaultRootDeviceType != null;
}
///
/// Gets and sets the property DefaultSshKeyName.
///
/// A default Amazon EC2 key pair name. The default value is none. If you specify a key
/// pair name, AWS OpsWorks installs the public key on the instance and you can use the
/// private key with an SSH client to log in to the instance. For more information, see
///
/// Using SSH to Communicate with an Instance and
/// Managing SSH Access. You can override this setting by specifying a different key
/// pair, or no key pair, when you
/// create an instance.
///
///
public string DefaultSshKeyName
{
get { return this._defaultSshKeyName; }
set { this._defaultSshKeyName = value; }
}
// Check to see if DefaultSshKeyName property is set
internal bool IsSetDefaultSshKeyName()
{
return this._defaultSshKeyName != null;
}
///
/// Gets and sets the property DefaultSubnetId.
///
/// The stack's default VPC subnet ID. This parameter is required if you specify a value
/// for the VpcId
parameter. All instances are launched into this subnet
/// unless you specify otherwise when you create the instance. If you also specify a value
/// for DefaultAvailabilityZone
, the subnet must be in that zone. For information
/// on default values and when this parameter is required, see the VpcId
/// parameter description.
///
///
public string DefaultSubnetId
{
get { return this._defaultSubnetId; }
set { this._defaultSubnetId = value; }
}
// Check to see if DefaultSubnetId property is set
internal bool IsSetDefaultSubnetId()
{
return this._defaultSubnetId != null;
}
///
/// Gets and sets the property HostnameTheme.
///
/// The stack's host name theme, with spaces are replaced by underscores. The theme is
/// used to generate host names for the stack's instances. By default, HostnameTheme
/// is set to Layer_Dependent
, which creates host names by appending integers
/// to the layer's short name. The other themes are:
///
/// -
///
///
Baked_Goods
///
/// -
///
///
Clouds
///
/// -
///
///
Europe_Cities
///
/// -
///
///
Fruits
///
/// -
///
///
Greek_Deities_and_Titans
///
/// -
///
///
Legendary_creatures_from_Japan
///
/// -
///
///
Planets_and_Moons
///
/// -
///
///
Roman_Deities
///
/// -
///
///
Scottish_Islands
///
/// -
///
///
US_Cities
///
/// -
///
///
Wild_Cats
///
///
///
/// To obtain a generated host name, call GetHostNameSuggestion
, which returns
/// a host name based on the current theme.
///
///
public string HostnameTheme
{
get { return this._hostnameTheme; }
set { this._hostnameTheme = value; }
}
// Check to see if HostnameTheme property is set
internal bool IsSetHostnameTheme()
{
return this._hostnameTheme != null;
}
///
/// Gets and sets the property Name.
///
/// The cloned stack name.
///
///
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property Region.
///
/// The cloned stack AWS region, such as "ap-northeast-2". For more information about
/// AWS regions, see Regions
/// and Endpoints.
///
///
public string Region
{
get { return this._region; }
set { this._region = value; }
}
// Check to see if Region property is set
internal bool IsSetRegion()
{
return this._region != null;
}
///
/// Gets and sets the property ServiceRoleArn.
///
/// The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks
/// Stacks to work with AWS resources on your behalf. You must set this parameter to the
/// Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using
/// the AWS OpsWorks Stacks console, it creates the role for you. You can obtain an existing
/// stack's IAM ARN programmatically by calling DescribePermissions. For more information
/// about IAM ARNs, see Using
/// Identifiers.
///
///
///
/// You must set this parameter to a valid service role ARN or the action will fail; there
/// is no default value. You can specify the source stack's service role ARN, if you prefer,
/// but you must do so explicitly.
///
///
///
[AWSProperty(Required=true)]
public string ServiceRoleArn
{
get { return this._serviceRoleArn; }
set { this._serviceRoleArn = value; }
}
// Check to see if ServiceRoleArn property is set
internal bool IsSetServiceRoleArn()
{
return this._serviceRoleArn != null;
}
///
/// Gets and sets the property SourceStackId.
///
/// The source stack ID.
///
///
[AWSProperty(Required=true)]
public string SourceStackId
{
get { return this._sourceStackId; }
set { this._sourceStackId = value; }
}
// Check to see if SourceStackId property is set
internal bool IsSetSourceStackId()
{
return this._sourceStackId != null;
}
///
/// Gets and sets the property UseCustomCookbooks.
///
/// Whether to use custom cookbooks.
///
///
public bool UseCustomCookbooks
{
get { return this._useCustomCookbooks.GetValueOrDefault(); }
set { this._useCustomCookbooks = value; }
}
// Check to see if UseCustomCookbooks property is set
internal bool IsSetUseCustomCookbooks()
{
return this._useCustomCookbooks.HasValue;
}
///
/// Gets and sets the property UseOpsworksSecurityGroups.
///
/// Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's
/// layers.
///
///
///
/// AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each
/// layer, which are associated with layers by default. With UseOpsworksSecurityGroups
/// you can instead provide your own custom security groups. UseOpsworksSecurityGroups
/// has the following settings:
///
/// -
///
/// True - AWS OpsWorks Stacks automatically associates the appropriate built-in security
/// group with each layer (default setting). You can associate additional security groups
/// with a layer after you create it but you cannot delete the built-in security group.
///
///
-
///
/// False - AWS OpsWorks Stacks does not associate built-in security groups with layers.
/// You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups
/// and associate a security group with each layer that you create. However, you can still
/// manually associate a built-in security group with a layer on creation; custom security
/// groups are required only for those layers that need custom settings.
///
///
///
/// For more information, see Create
/// a New Stack.
///
///
public bool UseOpsworksSecurityGroups
{
get { return this._useOpsworksSecurityGroups.GetValueOrDefault(); }
set { this._useOpsworksSecurityGroups = value; }
}
// Check to see if UseOpsworksSecurityGroups property is set
internal bool IsSetUseOpsworksSecurityGroups()
{
return this._useOpsworksSecurityGroups.HasValue;
}
///
/// Gets and sets the property VpcId.
///
/// The ID of the VPC that the cloned stack is to be launched into. It must be in the
/// specified region. All instances are launched into this VPC, and you cannot change
/// the ID later.
///
/// -
///
/// If your account supports EC2 Classic, the default value is no VPC.
///
///
-
///
/// If your account does not support EC2 Classic, the default value is the default VPC
/// for the specified region.
///
///
///
/// If the VPC ID corresponds to a default VPC and you have specified either the DefaultAvailabilityZone
/// or the DefaultSubnetId
parameter only, AWS OpsWorks Stacks infers the
/// value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks
/// sets these parameters to the first valid Availability Zone for the specified region
/// and the corresponding default VPC subnet ID, respectively.
///
///
///
/// If you specify a nondefault VPC ID, note the following:
///
/// -
///
/// It must belong to a VPC in your account that is in the specified region.
///
///
-
///
/// You must specify a value for
DefaultSubnetId
.
///
///
///
/// For more information about how to use AWS OpsWorks Stacks with a VPC, see Running
/// a Stack in a VPC. For more information about default VPC and EC2 Classic, see
/// Supported
/// Platforms.
///
///
public string VpcId
{
get { return this._vpcId; }
set { this._vpcId = value; }
}
// Check to see if VpcId property is set
internal bool IsSetVpcId()
{
return this._vpcId != null;
}
}
}