# Copyright (c) 2012-2024, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, integer
from .validators.fsx import (
storage_type,
validate_lustreconfiguration,
validate_lustreconfiguration_deploymenttype,
validate_lustreconfiguration_perunitstoragethroughput,
)
[docs]class AutoExportPolicy(AWSProperty):
"""
`AutoExportPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-datarepositoryassociation-autoexportpolicy.html>`__
"""
props: PropsDictType = {
"Events": ([str], True),
}
[docs]class AutoImportPolicy(AWSProperty):
"""
`AutoImportPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-datarepositoryassociation-autoimportpolicy.html>`__
"""
props: PropsDictType = {
"Events": ([str], True),
}
[docs]class S3(AWSProperty):
"""
`S3 <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-datarepositoryassociation-s3.html>`__
"""
props: PropsDictType = {
"AutoExportPolicy": (AutoExportPolicy, False),
"AutoImportPolicy": (AutoImportPolicy, False),
}
[docs]class DataRepositoryAssociation(AWSObject):
"""
`DataRepositoryAssociation <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-datarepositoryassociation.html>`__
"""
resource_type = "AWS::FSx::DataRepositoryAssociation"
props: PropsDictType = {
"BatchImportMetaDataOnCreate": (boolean, False),
"DataRepositoryPath": (str, True),
"FileSystemId": (str, True),
"FileSystemPath": (str, True),
"ImportedFileChunkSize": (integer, False),
"S3": (S3, False),
"Tags": (Tags, False),
}
[docs]class LustreConfiguration(AWSProperty):
"""
`LustreConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html>`__
"""
props: PropsDictType = {
"AutoImportPolicy": (str, False),
"AutomaticBackupRetentionDays": (integer, False),
"CopyTagsToBackups": (boolean, False),
"DailyAutomaticBackupStartTime": (str, False),
"DataCompressionType": (str, False),
"DeploymentType": (validate_lustreconfiguration_deploymenttype, False),
"DriveCacheType": (str, False),
"ExportPath": (str, False),
"ImportPath": (str, False),
"ImportedFileChunkSize": (integer, False),
"PerUnitStorageThroughput": (
validate_lustreconfiguration_perunitstoragethroughput,
False,
),
"WeeklyMaintenanceStartTime": (str, False),
}
[docs] def validate(self):
validate_lustreconfiguration(self)
[docs]class DiskIopsConfiguration(AWSProperty):
"""
`DiskIopsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-diskiopsconfiguration.html>`__
"""
props: PropsDictType = {
"Iops": (integer, False),
"Mode": (str, False),
}
[docs]class OntapConfiguration(AWSProperty):
"""
`OntapConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-ontapconfiguration.html>`__
"""
props: PropsDictType = {
"AutomaticBackupRetentionDays": (integer, False),
"DailyAutomaticBackupStartTime": (str, False),
"DeploymentType": (str, True),
"DiskIopsConfiguration": (DiskIopsConfiguration, False),
"EndpointIpAddressRange": (str, False),
"FsxAdminPassword": (str, False),
"HAPairs": (integer, False),
"PreferredSubnetId": (str, False),
"RouteTableIds": ([str], False),
"ThroughputCapacity": (integer, False),
"ThroughputCapacityPerHAPair": (integer, False),
"WeeklyMaintenanceStartTime": (str, False),
}
[docs]class ClientConfigurations(AWSProperty):
"""
`ClientConfigurations <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-nfsexports-clientconfigurations.html>`__
"""
props: PropsDictType = {
"Clients": (str, True),
"Options": ([str], True),
}
[docs]class NfsExports(AWSProperty):
"""
`NfsExports <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-nfsexports.html>`__
"""
props: PropsDictType = {
"ClientConfigurations": ([ClientConfigurations], True),
}
[docs]class UserAndGroupQuotas(AWSProperty):
"""
`UserAndGroupQuotas <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-userandgroupquotas.html>`__
"""
props: PropsDictType = {
"Id": (integer, True),
"StorageCapacityQuotaGiB": (integer, True),
"Type": (str, True),
}
[docs]class RootVolumeConfiguration(AWSProperty):
"""
`RootVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-rootvolumeconfiguration.html>`__
"""
props: PropsDictType = {
"CopyTagsToSnapshots": (boolean, False),
"DataCompressionType": (str, False),
"NfsExports": ([NfsExports], False),
"ReadOnly": (boolean, False),
"RecordSizeKiB": (integer, False),
"UserAndGroupQuotas": ([UserAndGroupQuotas], False),
}
[docs]class OpenZFSConfiguration(AWSProperty):
"""
`OpenZFSConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration.html>`__
"""
props: PropsDictType = {
"AutomaticBackupRetentionDays": (integer, False),
"CopyTagsToBackups": (boolean, False),
"CopyTagsToVolumes": (boolean, False),
"DailyAutomaticBackupStartTime": (str, False),
"DeploymentType": (str, True),
"DiskIopsConfiguration": (DiskIopsConfiguration, False),
"EndpointIpAddressRange": (str, False),
"Options": ([str], False),
"PreferredSubnetId": (str, False),
"RootVolumeConfiguration": (RootVolumeConfiguration, False),
"RouteTableIds": ([str], False),
"ThroughputCapacity": (integer, False),
"WeeklyMaintenanceStartTime": (str, False),
}
[docs]class AuditLogConfiguration(AWSProperty):
"""
`AuditLogConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration-auditlogconfiguration.html>`__
"""
props: PropsDictType = {
"AuditLogDestination": (str, False),
"FileAccessAuditLogLevel": (str, True),
"FileShareAccessAuditLogLevel": (str, True),
}
[docs]class SelfManagedActiveDirectoryConfiguration(AWSProperty):
"""
`SelfManagedActiveDirectoryConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-storagevirtualmachine-activedirectoryconfiguration-selfmanagedactivedirectoryconfiguration.html>`__
"""
props: PropsDictType = {
"DnsIps": ([str], False),
"DomainName": (str, False),
"FileSystemAdministratorsGroup": (str, False),
"OrganizationalUnitDistinguishedName": (str, False),
"Password": (str, False),
"UserName": (str, False),
}
[docs]class WindowsConfiguration(AWSProperty):
"""
`WindowsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration.html>`__
"""
props: PropsDictType = {
"ActiveDirectoryId": (str, False),
"Aliases": ([str], False),
"AuditLogConfiguration": (AuditLogConfiguration, False),
"AutomaticBackupRetentionDays": (integer, False),
"CopyTagsToBackups": (boolean, False),
"DailyAutomaticBackupStartTime": (str, False),
"DeploymentType": (str, False),
"DiskIopsConfiguration": (DiskIopsConfiguration, False),
"PreferredSubnetId": (str, False),
"SelfManagedActiveDirectoryConfiguration": (
SelfManagedActiveDirectoryConfiguration,
False,
),
"ThroughputCapacity": (integer, True),
"WeeklyMaintenanceStartTime": (str, False),
}
[docs]class FileSystem(AWSObject):
"""
`FileSystem <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html>`__
"""
resource_type = "AWS::FSx::FileSystem"
props: PropsDictType = {
"BackupId": (str, False),
"FileSystemType": (str, True),
"FileSystemTypeVersion": (str, False),
"KmsKeyId": (str, False),
"LustreConfiguration": (LustreConfiguration, False),
"OntapConfiguration": (OntapConfiguration, False),
"OpenZFSConfiguration": (OpenZFSConfiguration, False),
"SecurityGroupIds": ([str], False),
"StorageCapacity": (integer, False),
"StorageType": (storage_type, False),
"SubnetIds": ([str], True),
"Tags": (Tags, False),
"WindowsConfiguration": (WindowsConfiguration, False),
}
[docs]class Snapshot(AWSObject):
"""
`Snapshot <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-snapshot.html>`__
"""
resource_type = "AWS::FSx::Snapshot"
props: PropsDictType = {
"Name": (str, True),
"Tags": (Tags, False),
"VolumeId": (str, True),
}
[docs]class ActiveDirectoryConfiguration(AWSProperty):
"""
`ActiveDirectoryConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-storagevirtualmachine-activedirectoryconfiguration.html>`__
"""
props: PropsDictType = {
"NetBiosName": (str, False),
"SelfManagedActiveDirectoryConfiguration": (
SelfManagedActiveDirectoryConfiguration,
False,
),
}
[docs]class StorageVirtualMachine(AWSObject):
"""
`StorageVirtualMachine <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-storagevirtualmachine.html>`__
"""
resource_type = "AWS::FSx::StorageVirtualMachine"
props: PropsDictType = {
"ActiveDirectoryConfiguration": (ActiveDirectoryConfiguration, False),
"FileSystemId": (str, True),
"Name": (str, True),
"RootVolumeSecurityStyle": (str, False),
"SvmAdminPassword": (str, False),
"Tags": (Tags, False),
}
[docs]class AggregateConfiguration(AWSProperty):
"""
`AggregateConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration-aggregateconfiguration.html>`__
"""
props: PropsDictType = {
"Aggregates": ([str], False),
"ConstituentsPerAggregate": (integer, False),
}
[docs]class AutocommitPeriod(AWSProperty):
"""
`AutocommitPeriod <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration-snaplockconfiguration-autocommitperiod.html>`__
"""
props: PropsDictType = {
"Type": (str, True),
"Value": (integer, False),
}
[docs]class RetentionPeriod(AWSProperty):
"""
`RetentionPeriod <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-retentionperiod.html>`__
"""
props: PropsDictType = {
"Type": (str, True),
"Value": (integer, False),
}
[docs]class SnaplockRetentionPeriod(AWSProperty):
"""
`SnaplockRetentionPeriod <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-snaplockretentionperiod.html>`__
"""
props: PropsDictType = {
"DefaultRetention": (RetentionPeriod, True),
"MaximumRetention": (RetentionPeriod, True),
"MinimumRetention": (RetentionPeriod, True),
}
[docs]class SnaplockConfiguration(AWSProperty):
"""
`SnaplockConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration-snaplockconfiguration.html>`__
"""
props: PropsDictType = {
"AuditLogVolume": (str, False),
"AutocommitPeriod": (AutocommitPeriod, False),
"PrivilegedDelete": (str, False),
"RetentionPeriod": (SnaplockRetentionPeriod, False),
"SnaplockType": (str, True),
"VolumeAppendModeEnabled": (str, False),
}
[docs]class TieringPolicy(AWSProperty):
"""
`TieringPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration-tieringpolicy.html>`__
"""
props: PropsDictType = {
"CoolingPeriod": (integer, False),
"Name": (str, False),
}
[docs]class VolumeOntapConfiguration(AWSProperty):
"""
`VolumeOntapConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration.html>`__
"""
props: PropsDictType = {
"AggregateConfiguration": (AggregateConfiguration, False),
"CopyTagsToBackups": (str, False),
"JunctionPath": (str, False),
"OntapVolumeType": (str, False),
"SecurityStyle": (str, False),
"SizeInBytes": (str, False),
"SizeInMegabytes": (str, False),
"SnaplockConfiguration": (SnaplockConfiguration, False),
"SnapshotPolicy": (str, False),
"StorageEfficiencyEnabled": (str, False),
"StorageVirtualMachineId": (str, True),
"TieringPolicy": (TieringPolicy, False),
"VolumeStyle": (str, False),
}
[docs]class OriginSnapshot(AWSProperty):
"""
`OriginSnapshot <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-originsnapshot.html>`__
"""
props: PropsDictType = {
"CopyStrategy": (str, True),
"SnapshotARN": (str, True),
}
[docs]class VolumeOpenZFSConfiguration(AWSProperty):
"""
`VolumeOpenZFSConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration.html>`__
"""
props: PropsDictType = {
"CopyTagsToSnapshots": (boolean, False),
"DataCompressionType": (str, False),
"NfsExports": ([NfsExports], False),
"Options": ([str], False),
"OriginSnapshot": (OriginSnapshot, False),
"ParentVolumeId": (str, True),
"ReadOnly": (boolean, False),
"RecordSizeKiB": (integer, False),
"StorageCapacityQuotaGiB": (integer, False),
"StorageCapacityReservationGiB": (integer, False),
"UserAndGroupQuotas": ([UserAndGroupQuotas], False),
}
[docs]class Volume(AWSObject):
"""
`Volume <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-volume.html>`__
"""
resource_type = "AWS::FSx::Volume"
props: PropsDictType = {
"BackupId": (str, False),
"Name": (str, True),
"OntapConfiguration": (VolumeOntapConfiguration, False),
"OpenZFSConfiguration": (VolumeOpenZFSConfiguration, False),
"Tags": (Tags, False),
"VolumeType": (str, False),
}