{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-datasync-locationhdfs.json",
  "title": "AWSDataSyncLocationHDFSProperties",
  "description": "Resource schema for AWS::DataSync::LocationHDFS.. Source:- <https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-datasync-locationhdfs.json",
    "sourceSha256": "31feed24dd4f9e2371d7519899b466d57d8775bc6fc9c8419a318e5cc67a2563"
  },
  "type": "object",
  "properties": {
    "NameNodes": {
      "description": "An array of Name Node(s) of the HDFS location.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/NameNode"
      },
      "minItems": 1,
      "insertionOrder": false
    },
    "BlockSize": {
      "description": "Size of chunks (blocks) in bytes that the data is divided into when stored in the HDFS cluster.",
      "type": "integer",
      "format": "int64",
      "minimum": 1048576,
      "maximum": 1073741824
    },
    "ReplicationFactor": {
      "description": "Number of copies of each block that exists inside the HDFS cluster.",
      "type": "integer",
      "format": "int64",
      "default": 3,
      "minimum": 1,
      "maximum": 512
    },
    "KmsKeyProviderUri": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "pattern": "^kms:\\/\\/http[s]?@(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])(;(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9]))*:[0-9]{1,5}\\/kms$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The identifier for the Key Management Server where the encryption keys that encrypt data inside HDFS clusters are stored."
    },
    "QopConfiguration": {
      "$ref": "#/$defs/QopConfiguration"
    },
    "AuthenticationType": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "SIMPLE",
            "KERBEROS"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The authentication mode used to determine identity of user."
    },
    "SimpleUser": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^[_.A-Za-z0-9][-_.A-Za-z0-9]*$",
          "minLength": 1,
          "maxLength": 256
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The user name that has read and write permissions on the specified HDFS cluster."
    },
    "KerberosPrincipal": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^.+$",
          "minLength": 1,
          "maxLength": 256
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The unique identity, or principal, to which Kerberos can assign tickets."
    },
    "KerberosKeytab": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 87384
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Base64 string representation of the Keytab file."
    },
    "KerberosKrb5Conf": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 174764
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The string representation of the Krb5Conf file, or the presigned URL to access the Krb5.conf file within an S3 bucket."
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "type": "array",
      "maxItems": 50,
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "AgentArns": {
      "description": "ARN(s) of the agent(s) to use for an HDFS location.",
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$",
        "maxLength": 128
      },
      "minItems": 1,
      "maxItems": 4,
      "insertionOrder": false
    },
    "Subdirectory": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 4096,
          "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The subdirectory in HDFS that is used to read data from the HDFS source location or write data to the HDFS destination."
    }
  },
  "typeName": "AWS::DataSync::LocationHDFS",
  "writeOnlyProperties": [
    "/properties/Subdirectory",
    "/properties/KerberosKeytab",
    "/properties/KerberosKrb5Conf"
  ],
  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git",
  "additionalProperties": false,
  "primaryIdentifier": [
    "/properties/LocationArn"
  ],
  "tagging": {
    "taggable": true,
    "tagOnCreate": true,
    "tagUpdatable": true,
    "cloudFormationSystemTags": true,
    "tagProperty": "/properties/Tags"
  },
  "$defs": {
    "NameNode": {
      "title": "AWSDataSyncLocationHDFSNameNodeDefinition",
      "description": "HDFS Name Node IP and port information.",
      "type": "object",
      "properties": {
        "Hostname": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$",
              "maxLength": 255
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The DNS name or IP address of the Name Node in the customer's on premises HDFS cluster."
        },
        "Port": {
          "description": "The port on which the Name Node is listening on for client requests.",
          "type": "integer",
          "minimum": 1,
          "maximum": 65536
        }
      },
      "required": [
        "Hostname",
        "Port"
      ],
      "additionalProperties": false
    },
    "Tag": {
      "title": "AWSDataSyncLocationHDFSTagDefinition",
      "description": "A key-value pair to associate with a resource.",
      "type": "object",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -."
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 256
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -."
        }
      },
      "required": [
        "Key",
        "Value"
      ],
      "additionalProperties": false
    },
    "QopConfiguration": {
      "title": "AWSDataSyncLocationHDFSQopConfigurationDefinition",
      "description": "Configuration information for RPC Protection and Data Transfer Protection. These parameters can be set to AUTHENTICATION, INTEGRITY, or PRIVACY. The default value is PRIVACY.",
      "type": "object",
      "properties": {
        "RpcProtection": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AUTHENTICATION",
                "INTEGRITY",
                "PRIVACY",
                "DISABLED"
              ],
              "default": "PRIVACY"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Configuration for RPC Protection."
        },
        "DataTransferProtection": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AUTHENTICATION",
                "INTEGRITY",
                "PRIVACY",
                "DISABLED"
              ],
              "default": "PRIVACY"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "Configuration for Data Transfer Protection."
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "NameNodes",
    "AuthenticationType",
    "AgentArns"
  ],
  "readOnlyProperties": [
    "/properties/LocationArn",
    "/properties/LocationUri"
  ]
}
