{
    "description": "NutanixMachineProviderConfig is the Schema for the nutanixmachineproviderconfigs API Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
    "properties": {
        "apiVersion": {
            "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
            "type": "string"
        },
        "cluster": {
            "description": "cluster is to identify the cluster (the Prism Element under management of the Prism Central), in which the Machine's VM will be created. The cluster identifier (uuid or name) can be obtained from the Prism Central console or using the prism_central API.",
            "properties": {
                "name": {
                    "description": "name is the resource name in the PC",
                    "type": "string"
                },
                "type": {
                    "description": "Type is the identifier type to use for this resource.",
                    "enum": [
                        "uuid",
                        "name"
                    ],
                    "type": "string"
                },
                "uuid": {
                    "description": "uuid is the UUID of the resource in the PC.",
                    "type": "string"
                }
            },
            "required": [
                "type"
            ],
            "type": "object",
            "additionalProperties": false
        },
        "credentialsSecret": {
            "description": "credentialsSecret is a local reference to a secret that contains the credentials data to access Nutanix PC client",
            "properties": {
                "name": {
                    "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                    "type": "string"
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "image": {
            "description": "image is to identify the rhcos image uploaded to the Prism Central (PC) The image identifier (uuid or name) can be obtained from the Prism Central console or using the prism_central API.",
            "properties": {
                "name": {
                    "description": "name is the resource name in the PC",
                    "type": "string"
                },
                "type": {
                    "description": "Type is the identifier type to use for this resource.",
                    "enum": [
                        "uuid",
                        "name"
                    ],
                    "type": "string"
                },
                "uuid": {
                    "description": "uuid is the UUID of the resource in the PC.",
                    "type": "string"
                }
            },
            "required": [
                "type"
            ],
            "type": "object",
            "additionalProperties": false
        },
        "kind": {
            "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
            "type": "string"
        },
        "memorySize": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "string"
                }
            ],
            "description": "memorySize is the memory size (in Quantity format) of the VM The minimum memorySize is 2Gi bytes",
            "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
            "x-kubernetes-int-or-string": true
        },
        "metadata": {
            "type": "object"
        },
        "subnets": {
            "description": "subnets holds a list of identifiers (one or more) of the cluster's network subnets for the Machine's VM to connect to. The subnet identifiers (uuid or name) can be obtained from the Prism Central console or using the prism_central API.",
            "items": {
                "description": "NutanixResourceIdentifier holds the identity of a Nutanix PC resource (cluster, image, subnet, etc.)",
                "properties": {
                    "name": {
                        "description": "name is the resource name in the PC",
                        "type": "string"
                    },
                    "type": {
                        "description": "Type is the identifier type to use for this resource.",
                        "enum": [
                            "uuid",
                            "name"
                        ],
                        "type": "string"
                    },
                    "uuid": {
                        "description": "uuid is the UUID of the resource in the PC.",
                        "type": "string"
                    }
                },
                "required": [
                    "type"
                ],
                "type": "object",
                "additionalProperties": false
            },
            "minItems": 1,
            "type": "array"
        },
        "systemDiskSize": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "string"
                }
            ],
            "description": "systemDiskSize is size (in Quantity format) of the system disk of the VM The minimum systemDiskSize is 20Gi bytes",
            "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
            "x-kubernetes-int-or-string": true
        },
        "userDataSecret": {
            "description": "userDataSecret is a local reference to a secret that contains the UserData to apply to the VM",
            "properties": {
                "name": {
                    "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                    "type": "string"
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "vcpuSockets": {
            "description": "vcpuSockets is the number of vCPU sockets of the VM",
            "format": "int32",
            "minimum": 1,
            "type": "integer",
            "maximum": 2147483647
        },
        "vcpusPerSocket": {
            "description": "vcpusPerSocket is the number of vCPUs per socket of the VM",
            "format": "int32",
            "minimum": 1,
            "type": "integer",
            "maximum": 2147483647
        }
    },
    "required": [
        "cluster",
        "credentialsSecret",
        "image",
        "memorySize",
        "subnets",
        "systemDiskSize",
        "vcpuSockets",
        "vcpusPerSocket"
    ],
    "type": "object",
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-04/schema#"
}
