{
  "typeName" : "AWS::FSx::FileSystem",
  "description" : "Resource Type definition for AWS::FSx::FileSystem",
  "additionalProperties" : false,
  "properties" : {
    "StorageType" : {
      "type" : "string"
    },
    "KmsKeyId" : {
      "type" : "string"
    },
    "StorageCapacity" : {
      "type" : "integer"
    },
    "RootVolumeId" : {
      "type" : "string"
    },
    "LustreConfiguration" : {
      "$ref" : "#/definitions/LustreConfiguration"
    },
    "BackupId" : {
      "type" : "string"
    },
    "OntapConfiguration" : {
      "$ref" : "#/definitions/OntapConfiguration"
    },
    "DNSName" : {
      "type" : "string"
    },
    "SubnetIds" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "type" : "string"
      }
    },
    "SecurityGroupIds" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "type" : "string"
      }
    },
    "WindowsConfiguration" : {
      "$ref" : "#/definitions/WindowsConfiguration"
    },
    "FileSystemTypeVersion" : {
      "type" : "string"
    },
    "OpenZFSConfiguration" : {
      "$ref" : "#/definitions/OpenZFSConfiguration"
    },
    "ResourceARN" : {
      "type" : "string"
    },
    "NetworkType" : {
      "type" : "string"
    },
    "FileSystemType" : {
      "type" : "string"
    },
    "Id" : {
      "type" : "string"
    },
    "LustreMountName" : {
      "type" : "string"
    },
    "Tags" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    }
  },
  "definitions" : {
    "SelfManagedActiveDirectoryConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FileSystemAdministratorsGroup" : {
          "type" : "string"
        },
        "UserName" : {
          "type" : "string"
        },
        "DomainName" : {
          "type" : "string"
        },
        "OrganizationalUnitDistinguishedName" : {
          "type" : "string"
        },
        "DomainJoinServiceAccountSecret" : {
          "type" : "string"
        },
        "DnsIps" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "Password" : {
          "type" : "string"
        }
      }
    },
    "AuditLogConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FileAccessAuditLogLevel" : {
          "type" : "string"
        },
        "FileShareAccessAuditLogLevel" : {
          "type" : "string"
        },
        "AuditLogDestination" : {
          "type" : "string"
        }
      },
      "required" : [ "FileAccessAuditLogLevel", "FileShareAccessAuditLogLevel" ]
    },
    "LustreConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "DriveCacheType" : {
          "type" : "string"
        },
        "AutoImportPolicy" : {
          "type" : "string"
        },
        "EfaEnabled" : {
          "type" : "boolean"
        },
        "ImportedFileChunkSize" : {
          "type" : "integer"
        },
        "DeploymentType" : {
          "type" : "string"
        },
        "ThroughputCapacity" : {
          "type" : "integer"
        },
        "DataCompressionType" : {
          "type" : "string"
        },
        "DataReadCacheConfiguration" : {
          "$ref" : "#/definitions/DataReadCacheConfiguration"
        },
        "ImportPath" : {
          "type" : "string"
        },
        "WeeklyMaintenanceStartTime" : {
          "type" : "string"
        },
        "MetadataConfiguration" : {
          "$ref" : "#/definitions/MetadataConfiguration"
        },
        "DailyAutomaticBackupStartTime" : {
          "type" : "string"
        },
        "CopyTagsToBackups" : {
          "type" : "boolean"
        },
        "ExportPath" : {
          "type" : "string"
        },
        "PerUnitStorageThroughput" : {
          "type" : "integer"
        },
        "AutomaticBackupRetentionDays" : {
          "type" : "integer"
        }
      }
    },
    "OntapConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "HAPairs" : {
          "type" : "integer"
        },
        "FsxAdminPassword" : {
          "type" : "string"
        },
        "ThroughputCapacityPerHAPair" : {
          "type" : "integer"
        },
        "DeploymentType" : {
          "type" : "string"
        },
        "ThroughputCapacity" : {
          "type" : "integer"
        },
        "EndpointIpAddressRange" : {
          "type" : "string"
        },
        "RouteTableIds" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "WeeklyMaintenanceStartTime" : {
          "type" : "string"
        },
        "DiskIopsConfiguration" : {
          "$ref" : "#/definitions/DiskIopsConfiguration"
        },
        "DailyAutomaticBackupStartTime" : {
          "type" : "string"
        },
        "AutomaticBackupRetentionDays" : {
          "type" : "integer"
        },
        "EndpointIpv6AddressRange" : {
          "type" : "string"
        },
        "PreferredSubnetId" : {
          "type" : "string"
        }
      },
      "required" : [ "DeploymentType" ]
    },
    "RootVolumeConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ReadOnly" : {
          "type" : "boolean"
        },
        "DataCompressionType" : {
          "type" : "string"
        },
        "NfsExports" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/NfsExports"
          }
        },
        "CopyTagsToSnapshots" : {
          "type" : "boolean"
        },
        "RecordSizeKiB" : {
          "type" : "integer"
        },
        "UserAndGroupQuotas" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/UserAndGroupQuotas"
          }
        }
      }
    },
    "WindowsConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SelfManagedActiveDirectoryConfiguration" : {
          "$ref" : "#/definitions/SelfManagedActiveDirectoryConfiguration"
        },
        "AuditLogConfiguration" : {
          "$ref" : "#/definitions/AuditLogConfiguration"
        },
        "ActiveDirectoryId" : {
          "type" : "string"
        },
        "DeploymentType" : {
          "type" : "string"
        },
        "Aliases" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "ThroughputCapacity" : {
          "type" : "integer"
        },
        "WeeklyMaintenanceStartTime" : {
          "type" : "string"
        },
        "DiskIopsConfiguration" : {
          "$ref" : "#/definitions/DiskIopsConfiguration"
        },
        "CopyTagsToBackups" : {
          "type" : "boolean"
        },
        "DailyAutomaticBackupStartTime" : {
          "type" : "string"
        },
        "AutomaticBackupRetentionDays" : {
          "type" : "integer"
        },
        "FsrmConfiguration" : {
          "$ref" : "#/definitions/FsrmConfiguration"
        },
        "PreferredSubnetId" : {
          "type" : "string"
        }
      },
      "required" : [ "ThroughputCapacity" ]
    },
    "OpenZFSConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Options" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "CopyTagsToVolumes" : {
          "type" : "boolean"
        },
        "DeploymentType" : {
          "type" : "string"
        },
        "ThroughputCapacity" : {
          "type" : "integer"
        },
        "RootVolumeConfiguration" : {
          "$ref" : "#/definitions/RootVolumeConfiguration"
        },
        "EndpointIpAddressRange" : {
          "type" : "string"
        },
        "ReadCacheConfiguration" : {
          "$ref" : "#/definitions/ReadCacheConfiguration"
        },
        "RouteTableIds" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "WeeklyMaintenanceStartTime" : {
          "type" : "string"
        },
        "DiskIopsConfiguration" : {
          "$ref" : "#/definitions/DiskIopsConfiguration"
        },
        "DailyAutomaticBackupStartTime" : {
          "type" : "string"
        },
        "CopyTagsToBackups" : {
          "type" : "boolean"
        },
        "AutomaticBackupRetentionDays" : {
          "type" : "integer"
        },
        "EndpointIpv6AddressRange" : {
          "type" : "string"
        },
        "PreferredSubnetId" : {
          "type" : "string"
        }
      },
      "required" : [ "DeploymentType" ]
    },
    "ReadCacheConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SizingMode" : {
          "type" : "string"
        },
        "SizeGiB" : {
          "type" : "integer"
        }
      }
    },
    "DataReadCacheConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SizingMode" : {
          "type" : "string"
        },
        "SizeGiB" : {
          "type" : "integer"
        }
      }
    },
    "DiskIopsConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Mode" : {
          "type" : "string"
        },
        "Iops" : {
          "type" : "integer"
        }
      }
    },
    "MetadataConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Mode" : {
          "type" : "string"
        },
        "Iops" : {
          "type" : "integer"
        }
      }
    },
    "NfsExports" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ClientConfigurations" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/ClientConfigurations"
          }
        }
      }
    },
    "ClientConfigurations" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Clients" : {
          "type" : "string"
        },
        "Options" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string"
        },
        "Key" : {
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "FsrmConfiguration" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FsrmServiceEnabled" : {
          "type" : "boolean"
        },
        "EventLogDestination" : {
          "type" : "string"
        }
      },
      "required" : [ "FsrmServiceEnabled" ]
    },
    "UserAndGroupQuotas" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Type" : {
          "type" : "string"
        },
        "Id" : {
          "type" : "integer"
        },
        "StorageCapacityQuotaGiB" : {
          "type" : "integer"
        }
      }
    }
  },
  "required" : [ "FileSystemType", "SubnetIds" ],
  "createOnlyProperties" : [ "/properties/KmsKeyId", "/properties/SecurityGroupIds", "/properties/FileSystemType", "/properties/SubnetIds", "/properties/BackupId" ],
  "primaryIdentifier" : [ "/properties/Id" ],
  "readOnlyProperties" : [ "/properties/ResourceARN", "/properties/Id", "/properties/LustreMountName", "/properties/RootVolumeId", "/properties/DNSName" ]
}