/*
* 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
{
///
/// The configuration of a data repository association that links an Amazon FSx for Lustre
/// file system to an Amazon S3 bucket or an Amazon File Cache resource to an Amazon S3
/// bucket or an NFS file system. The data repository association configuration object
/// is returned in the response of the following operations:
///
/// -
///
///
CreateDataRepositoryAssociation
///
/// -
///
///
UpdateDataRepositoryAssociation
///
/// -
///
///
DescribeDataRepositoryAssociations
///
///
///
/// Data repository associations are supported on Amazon File Cache resources and all
/// FSx for Lustre 2.12 and newer file systems, excluding scratch_1
deployment
/// type.
///
///
public partial class DataRepositoryAssociation
{
private string _associationId;
private bool? _batchImportMetaDataOnCreate;
private DateTime? _creationTime;
private string _dataRepositoryPath;
private List _dataRepositorySubdirectories = new List();
private DataRepositoryFailureDetails _failureDetails;
private string _fileCacheId;
private string _fileCachePath;
private string _fileSystemId;
private string _fileSystemPath;
private int? _importedFileChunkSize;
private DataRepositoryLifecycle _lifecycle;
private NFSDataRepositoryConfiguration _nfs;
private string _resourceARN;
private S3DataRepositoryConfiguration _s3;
private List _tags = new List();
///
/// Gets and sets the property AssociationId.
///
/// The system-generated, unique ID of the data repository association.
///
///
[AWSProperty(Min=13, Max=23)]
public string AssociationId
{
get { return this._associationId; }
set { this._associationId = value; }
}
// Check to see if AssociationId property is set
internal bool IsSetAssociationId()
{
return this._associationId != null;
}
///
/// Gets and sets the property BatchImportMetaDataOnCreate.
///
/// A boolean flag indicating whether an import data repository task to import metadata
/// should run after the data repository association is created. The task runs if this
/// flag is set to true
.
///
///
///
/// BatchImportMetaDataOnCreate
is not supported for data repositories linked
/// to an Amazon File Cache resource.
///
///
///
public bool BatchImportMetaDataOnCreate
{
get { return this._batchImportMetaDataOnCreate.GetValueOrDefault(); }
set { this._batchImportMetaDataOnCreate = value; }
}
// Check to see if BatchImportMetaDataOnCreate property is set
internal bool IsSetBatchImportMetaDataOnCreate()
{
return this._batchImportMetaDataOnCreate.HasValue;
}
///
/// Gets and sets the property CreationTime.
///
public DateTime CreationTime
{
get { return this._creationTime.GetValueOrDefault(); }
set { this._creationTime = value; }
}
// Check to see if CreationTime property is set
internal bool IsSetCreationTime()
{
return this._creationTime.HasValue;
}
///
/// Gets and sets the property DataRepositoryPath.
///
/// The path to the data repository that will be linked to the cache or file system.
///
/// -
///
/// For Amazon File Cache, the path can be an NFS data repository that will be linked
/// to the cache. The path can be in one of two formats:
///
///
-
///
/// If you are not using the
DataRepositorySubdirectories
parameter, the
/// path is to an NFS Export directory (or one of its subdirectories) in the format nsf://nfs-domain-name/exportpath
.
/// You can therefore link a single NFS Export to a single data repository association.
///
/// -
///
/// If you are using the
DataRepositorySubdirectories
parameter, the path
/// is the domain name of the NFS file system in the format nfs://filer-domain-name
,
/// which indicates the root of the subdirectories specified with the DataRepositorySubdirectories
/// parameter.
///
///
-
///
/// For Amazon File Cache, the path can be an S3 bucket or prefix in the format
s3://myBucket/myPrefix/
.
///
/// -
///
/// For Amazon FSx for Lustre, the path can be an S3 bucket or prefix in the format
s3://myBucket/myPrefix/
.
///
///
///
[AWSProperty(Min=3, Max=4357)]
public string DataRepositoryPath
{
get { return this._dataRepositoryPath; }
set { this._dataRepositoryPath = value; }
}
// Check to see if DataRepositoryPath property is set
internal bool IsSetDataRepositoryPath()
{
return this._dataRepositoryPath != null;
}
///
/// Gets and sets the property DataRepositorySubdirectories.
///
/// For Amazon File Cache, a list of NFS Exports that will be linked with an NFS data
/// repository association. All the subdirectories must be on a single NFS file system.
/// The Export paths are in the format /exportpath1
. To use this parameter,
/// you must configure DataRepositoryPath
as the domain name of the NFS file
/// system. The NFS file system domain name in effect is the root of the subdirectories.
/// Note that DataRepositorySubdirectories
is not supported for S3 data repositories.
///
///
[AWSProperty(Max=500)]
public List DataRepositorySubdirectories
{
get { return this._dataRepositorySubdirectories; }
set { this._dataRepositorySubdirectories = value; }
}
// Check to see if DataRepositorySubdirectories property is set
internal bool IsSetDataRepositorySubdirectories()
{
return this._dataRepositorySubdirectories != null && this._dataRepositorySubdirectories.Count > 0;
}
///
/// Gets and sets the property FailureDetails.
///
public DataRepositoryFailureDetails FailureDetails
{
get { return this._failureDetails; }
set { this._failureDetails = value; }
}
// Check to see if FailureDetails property is set
internal bool IsSetFailureDetails()
{
return this._failureDetails != null;
}
///
/// Gets and sets the property FileCacheId.
///
/// The globally unique ID of the Amazon File Cache resource.
///
///
[AWSProperty(Min=11, Max=21)]
public string FileCacheId
{
get { return this._fileCacheId; }
set { this._fileCacheId = value; }
}
// Check to see if FileCacheId property is set
internal bool IsSetFileCacheId()
{
return this._fileCacheId != null;
}
///
/// Gets and sets the property FileCachePath.
///
/// A path on the Amazon File Cache that points to a high-level directory (such as /ns1/
)
/// or subdirectory (such as /ns1/subdir/
) that will be mapped 1-1 with DataRepositoryPath
.
/// The leading forward slash in the path is required. Two data repository associations
/// cannot have overlapping cache paths. For example, if a data repository is associated
/// with cache path /ns1/
, then you cannot link another data repository with
/// cache path /ns1/ns2
.
///
///
///
/// This path specifies the directory in your cache where files will be exported from.
/// This cache directory can be linked to only one data repository (S3 or NFS) and no
/// other data repository can be linked to the directory.
///
///
///
/// The cache path can only be set to root (/) on an NFS DRA when DataRepositorySubdirectories
/// is specified. If you specify root (/) as the cache path, you can create only one DRA
/// on the cache.
///
///
///
/// The cache path cannot be set to root (/) for an S3 DRA.
///
///
///
[AWSProperty(Min=1, Max=4096)]
public string FileCachePath
{
get { return this._fileCachePath; }
set { this._fileCachePath = value; }
}
// Check to see if FileCachePath property is set
internal bool IsSetFileCachePath()
{
return this._fileCachePath != null;
}
///
/// Gets and sets the property FileSystemId.
///
[AWSProperty(Min=11, Max=21)]
public string FileSystemId
{
get { return this._fileSystemId; }
set { this._fileSystemId = value; }
}
// Check to see if FileSystemId property is set
internal bool IsSetFileSystemId()
{
return this._fileSystemId != null;
}
///
/// Gets and sets the property FileSystemPath.
///
/// A path on the Amazon FSx for Lustre file system that points to a high-level directory
/// (such as /ns1/
) or subdirectory (such as /ns1/subdir/
) that
/// will be mapped 1-1 with DataRepositoryPath
. The leading forward slash
/// in the name is required. Two data repository associations cannot have overlapping
/// file system paths. For example, if a data repository is associated with file system
/// path /ns1/
, then you cannot link another data repository with file system
/// path /ns1/ns2
.
///
///
///
/// This path specifies where in your file system files will be exported from or imported
/// to. This file system directory can be linked to only one Amazon S3 bucket, and no
/// other S3 bucket can be linked to the directory.
///
///
///
/// If you specify only a forward slash (/
) as the file system path, you
/// can link only one data repository to the file system. You can only specify "/" as
/// the file system path for the first data repository associated with a file system.
///
///
///
[AWSProperty(Min=1, Max=4096)]
public string FileSystemPath
{
get { return this._fileSystemPath; }
set { this._fileSystemPath = value; }
}
// Check to see if FileSystemPath property is set
internal bool IsSetFileSystemPath()
{
return this._fileSystemPath != null;
}
///
/// Gets and sets the property ImportedFileChunkSize.
///
/// For files imported from a data repository, this value determines the stripe count
/// and maximum amount of data per file (in MiB) stored on a single physical disk. The
/// maximum number of disks that a single file can be striped across is limited by the
/// total number of disks that make up the file system or cache.
///
///
///
/// The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500
/// GiB). Amazon S3 objects have a maximum size of 5 TB.
///
///
[AWSProperty(Min=1, Max=512000)]
public int ImportedFileChunkSize
{
get { return this._importedFileChunkSize.GetValueOrDefault(); }
set { this._importedFileChunkSize = value; }
}
// Check to see if ImportedFileChunkSize property is set
internal bool IsSetImportedFileChunkSize()
{
return this._importedFileChunkSize.HasValue;
}
///
/// Gets and sets the property Lifecycle.
///
/// Describes the state of a data repository association. The lifecycle can have the following
/// values:
///
/// -
///
///
CREATING
- The data repository association between the file system or
/// cache and the data repository is being created. The data repository is unavailable.
///
/// -
///
///
AVAILABLE
- The data repository association is available for use.
///
/// -
///
///
MISCONFIGURED
- The data repository association is misconfigured. Until
/// the configuration is corrected, automatic import and automatic export will not work
/// (only for Amazon FSx for Lustre).
///
/// -
///
///
UPDATING
- The data repository association is undergoing a customer
/// initiated update that might affect its availability.
///
/// -
///
///
DELETING
- The data repository association is undergoing a customer
/// initiated deletion.
///
/// -
///
///
FAILED
- The data repository association is in a terminal state that
/// cannot be recovered.
///
///
///
public DataRepositoryLifecycle Lifecycle
{
get { return this._lifecycle; }
set { this._lifecycle = value; }
}
// Check to see if Lifecycle property is set
internal bool IsSetLifecycle()
{
return this._lifecycle != null;
}
///
/// Gets and sets the property NFS.
///
/// The configuration for an NFS data repository linked to an Amazon File Cache resource
/// with a data repository association.
///
///
public NFSDataRepositoryConfiguration NFS
{
get { return this._nfs; }
set { this._nfs = value; }
}
// Check to see if NFS property is set
internal bool IsSetNFS()
{
return this._nfs != null;
}
///
/// Gets and sets the property ResourceARN.
///
[AWSProperty(Min=8, Max=512)]
public string ResourceARN
{
get { return this._resourceARN; }
set { this._resourceARN = value; }
}
// Check to see if ResourceARN property is set
internal bool IsSetResourceARN()
{
return this._resourceARN != null;
}
///
/// Gets and sets the property S3.
///
/// The configuration for an Amazon S3 data repository linked to an Amazon FSx for Lustre
/// file system with a data repository association.
///
///
public S3DataRepositoryConfiguration S3
{
get { return this._s3; }
set { this._s3 = value; }
}
// Check to see if S3 property is set
internal bool IsSetS3()
{
return this._s3 != null;
}
///
/// Gets and sets the property Tags.
///
[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;
}
}
}