/*
* 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 fsx-2018-03-01.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.FSx.Model
{
///
/// Container for the parameters to the CreateFileSystem operation.
/// Creates a new, empty Amazon FSx file system. You can create the following supported
/// Amazon FSx file systems using the CreateFileSystem
API operation:
///
/// -
///
/// Amazon FSx for Lustre
///
///
-
///
/// Amazon FSx for NetApp ONTAP
///
///
-
///
/// Amazon FSx for OpenZFS
///
///
-
///
/// Amazon FSx for Windows File Server
///
///
///
/// This operation requires a client request token in the request that Amazon FSx uses
/// to ensure idempotent creation. This means that calling the operation multiple times
/// with the same client request token has no effect. By using the idempotent operation,
/// you can retry a CreateFileSystem
operation without the risk of creating
/// an extra file system. This approach can be useful when an initial call fails in a
/// way that makes it unclear whether a file system was created. Examples are if a transport
/// level timeout occurred, or your connection was reset. If you use the same client request
/// token and the initial call created a file system, the client receives success as long
/// as the parameters are the same.
///
///
///
/// If a file system with the specified client request token exists and the parameters
/// match, CreateFileSystem
returns the description of the existing file
/// system. If a file system with the specified client request token exists and the parameters
/// don't match, this call returns IncompatibleParameterError
. If a file
/// system with the specified client request token doesn't exist, CreateFileSystem
/// does the following:
///
/// -
///
/// Creates a new, empty Amazon FSx file system with an assigned ID, and an initial lifecycle
/// state of
CREATING
.
///
/// -
///
/// Returns the description of the file system in JSON format.
///
///
///
/// The CreateFileSystem
call returns while the file system's lifecycle state
/// is still CREATING
. You can check the file-system creation status by calling
/// the DescribeFileSystems
/// operation, which returns the file system state along with other information.
///
///
///
public partial class CreateFileSystemRequest : AmazonFSxRequest
{
private string _clientRequestToken;
private FileSystemType _fileSystemType;
private string _fileSystemTypeVersion;
private string _kmsKeyId;
private CreateFileSystemLustreConfiguration _lustreConfiguration;
private CreateFileSystemOntapConfiguration _ontapConfiguration;
private CreateFileSystemOpenZFSConfiguration _openZFSConfiguration;
private List _securityGroupIds = new List();
private int? _storageCapacity;
private StorageType _storageType;
private List _subnetIds = new List();
private List _tags = new List();
private CreateFileSystemWindowsConfiguration _windowsConfiguration;
///
/// Gets and sets the property ClientRequestToken.
///
/// A string of up to 63 ASCII characters that Amazon FSx uses to ensure idempotent creation.
/// This string is automatically filled on your behalf when you use the Command Line Interface
/// (CLI) or an Amazon Web Services SDK.
///
///
[AWSProperty(Min=1, Max=63)]
public string ClientRequestToken
{
get { return this._clientRequestToken; }
set { this._clientRequestToken = value; }
}
// Check to see if ClientRequestToken property is set
internal bool IsSetClientRequestToken()
{
return this._clientRequestToken != null;
}
///
/// Gets and sets the property FileSystemType.
///
/// The type of Amazon FSx file system to create. Valid values are WINDOWS
,
/// LUSTRE
, ONTAP
, and OPENZFS
.
///
///
[AWSProperty(Required=true)]
public FileSystemType FileSystemType
{
get { return this._fileSystemType; }
set { this._fileSystemType = value; }
}
// Check to see if FileSystemType property is set
internal bool IsSetFileSystemType()
{
return this._fileSystemType != null;
}
///
/// Gets and sets the property FileSystemTypeVersion.
///
/// (Optional) For FSx for Lustre file systems, sets the Lustre version for the file system
/// that you're creating. Valid values are 2.10
and 2.12
:
///
/// -
///
/// 2.10 is supported by the Scratch and Persistent_1 Lustre deployment types.
///
///
-
///
/// 2.12 is supported by all Lustre deployment types.
2.12
is required when
/// setting FSx for Lustre DeploymentType
to PERSISTENT_2
.
///
///
///
/// Default value = 2.10
, except when DeploymentType
is set
/// to PERSISTENT_2
, then the default is 2.12
.
///
///
///
/// If you set FileSystemTypeVersion
to 2.10
for a PERSISTENT_2
/// Lustre deployment type, the CreateFileSystem
operation fails.
///
///
///
[AWSProperty(Min=1, Max=20)]
public string FileSystemTypeVersion
{
get { return this._fileSystemTypeVersion; }
set { this._fileSystemTypeVersion = value; }
}
// Check to see if FileSystemTypeVersion property is set
internal bool IsSetFileSystemTypeVersion()
{
return this._fileSystemTypeVersion != null;
}
///
/// Gets and sets the property KmsKeyId.
///
[AWSProperty(Min=1, Max=2048)]
public string KmsKeyId
{
get { return this._kmsKeyId; }
set { this._kmsKeyId = value; }
}
// Check to see if KmsKeyId property is set
internal bool IsSetKmsKeyId()
{
return this._kmsKeyId != null;
}
///
/// Gets and sets the property LustreConfiguration.
///
public CreateFileSystemLustreConfiguration LustreConfiguration
{
get { return this._lustreConfiguration; }
set { this._lustreConfiguration = value; }
}
// Check to see if LustreConfiguration property is set
internal bool IsSetLustreConfiguration()
{
return this._lustreConfiguration != null;
}
///
/// Gets and sets the property OntapConfiguration.
///
public CreateFileSystemOntapConfiguration OntapConfiguration
{
get { return this._ontapConfiguration; }
set { this._ontapConfiguration = value; }
}
// Check to see if OntapConfiguration property is set
internal bool IsSetOntapConfiguration()
{
return this._ontapConfiguration != null;
}
///
/// Gets and sets the property OpenZFSConfiguration.
///
/// The OpenZFS configuration for the file system that's being created.
///
///
public CreateFileSystemOpenZFSConfiguration OpenZFSConfiguration
{
get { return this._openZFSConfiguration; }
set { this._openZFSConfiguration = value; }
}
// Check to see if OpenZFSConfiguration property is set
internal bool IsSetOpenZFSConfiguration()
{
return this._openZFSConfiguration != null;
}
///
/// Gets and sets the property SecurityGroupIds.
///
/// A list of IDs specifying the security groups to apply to all network interfaces created
/// for file system access. This list isn't returned in later requests to describe the
/// file system.
///
///
[AWSProperty(Max=50)]
public List SecurityGroupIds
{
get { return this._securityGroupIds; }
set { this._securityGroupIds = value; }
}
// Check to see if SecurityGroupIds property is set
internal bool IsSetSecurityGroupIds()
{
return this._securityGroupIds != null && this._securityGroupIds.Count > 0;
}
///
/// Gets and sets the property StorageCapacity.
///
/// Sets the storage capacity of the file system that you're creating, in gibibytes (GiB).
///
///
///
/// FSx for Lustre file systems - The amount of storage capacity that you can
/// configure depends on the value that you set for StorageType
and the Lustre
/// DeploymentType
, as follows:
///
/// -
///
/// For
SCRATCH_2
, PERSISTENT_2
and PERSISTENT_1
/// deployment types using SSD storage type, the valid values are 1200 GiB, 2400 GiB,
/// and increments of 2400 GiB.
///
/// -
///
/// For
PERSISTENT_1
HDD file systems, valid values are increments of 6000
/// GiB for 12 MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
///
/// -
///
/// For
SCRATCH_1
deployment type, valid values are 1200 GiB, 2400 GiB, and
/// increments of 3600 GiB.
///
///
///
/// FSx for ONTAP file systems - The amount of storage capacity that you can configure
/// is from 1024 GiB up to 196,608 GiB (192 TiB).
///
///
///
/// FSx for OpenZFS file systems - The amount of storage capacity that you can
/// configure is from 64 GiB up to 524,288 GiB (512 TiB).
///
///
///
/// FSx for Windows File Server file systems - The amount of storage capacity
/// that you can configure depends on the value that you set for StorageType
/// as follows:
///
/// -
///
/// For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
///
///
-
///
/// For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
///
///
///
[AWSProperty(Required=true, Min=0, Max=2147483647)]
public int StorageCapacity
{
get { return this._storageCapacity.GetValueOrDefault(); }
set { this._storageCapacity = value; }
}
// Check to see if StorageCapacity property is set
internal bool IsSetStorageCapacity()
{
return this._storageCapacity.HasValue;
}
///
/// Gets and sets the property StorageType.
///
/// Sets the storage type for the file system that you're creating. Valid values are SSD
/// and HDD
.
///
/// -
///
/// Set to
SSD
to use solid state drive storage. SSD is supported on all
/// Windows, Lustre, ONTAP, and OpenZFS deployment types.
///
/// -
///
/// Set to
HDD
to use hard disk drive storage. HDD is supported on SINGLE_AZ_2
/// and MULTI_AZ_1
Windows file system deployment types, and on PERSISTENT_1
/// Lustre file system deployment types.
///
///
///
/// Default value is SSD
. For more information, see
/// Storage type options in the FSx for Windows File Server User Guide and
/// Multiple
/// storage options in the FSx for Lustre User Guide.
///
///
public StorageType StorageType
{
get { return this._storageType; }
set { this._storageType = value; }
}
// Check to see if StorageType property is set
internal bool IsSetStorageType()
{
return this._storageType != null;
}
///
/// Gets and sets the property SubnetIds.
///
/// Specifies the IDs of the subnets that the file system will be accessible from. For
/// Windows and ONTAP MULTI_AZ_1
deployment types,provide exactly two subnet
/// IDs, one for the preferred file server and one for the standby file server. You specify
/// one of these subnets as the preferred subnet using the WindowsConfiguration
/// > PreferredSubnetID
or OntapConfiguration > PreferredSubnetID
/// properties. For more information about Multi-AZ file system configuration, see
/// Availability and durability: Single-AZ and Multi-AZ file systems in the Amazon
/// FSx for Windows User Guide and
/// Availability and durability in the Amazon FSx for ONTAP User Guide.
///
///
///
/// For Windows SINGLE_AZ_1
and SINGLE_AZ_2
and all Lustre deployment
/// types, provide exactly one subnet ID. The file server is launched in that subnet's
/// Availability Zone.
///
///
[AWSProperty(Required=true, Max=50)]
public List SubnetIds
{
get { return this._subnetIds; }
set { this._subnetIds = value; }
}
// Check to see if SubnetIds property is set
internal bool IsSetSubnetIds()
{
return this._subnetIds != null && this._subnetIds.Count > 0;
}
///
/// Gets and sets the property Tags.
///
/// The tags to apply to the file system that's being created. The key value of the Name
/// tag appears in the console as the file system name.
///
///
[AWSProperty(Min=1, Max=50)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property WindowsConfiguration.
///
/// The Microsoft Windows configuration for the file system that's being created.
///
///
public CreateFileSystemWindowsConfiguration WindowsConfiguration
{
get { return this._windowsConfiguration; }
set { this._windowsConfiguration = value; }
}
// Check to see if WindowsConfiguration property is set
internal bool IsSetWindowsConfiguration()
{
return this._windowsConfiguration != null;
}
}
}