{
  "description": "VirtualMachineRestore defines the operation of restoring a VM",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "VirtualMachineRestoreSpec is the spec for a VirtualMachineRestore resource",
      "properties": {
        "patches": {
          "description": "If the target for the restore does not exist, it will be created. Patches holds JSON patches that would be\napplied to the target manifest before it's created. Patches should fit the target's Kind.\n\nExample for a patch: {\"op\": \"replace\", \"path\": \"/metadata/name\", \"value\": \"new-vm-name\"}",
          "items": {
            "type": "string"
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "target": {
          "description": "initially only VirtualMachine type supported",
          "properties": {
            "apiGroup": {
              "description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.",
              "type": "string"
            },
            "kind": {
              "description": "Kind is the type of resource being referenced",
              "type": "string"
            },
            "name": {
              "description": "Name is the name of resource being referenced",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "name"
          ],
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "targetReadinessPolicy": {
          "description": "TargetReadinessPolicy defines how to handle the restore in case\nthe target is not ready",
          "type": "string"
        },
        "virtualMachineSnapshotName": {
          "type": "string"
        },
        "volumeRestoreOverrides": {
          "description": "VolumeRestoreOverrides gives the option to change properties of each restored volume\nFor example, specifying the name of the restored volume, or adding labels/annotations to it",
          "items": {
            "description": "VolumeRestoreOverride specifies how a volume should be restored from a VirtualMachineSnapshot",
            "properties": {
              "annotations": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "labels": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "restoreName": {
                "type": "string"
              },
              "volumeName": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "volumeRestorePolicy": {
          "description": "VolumeRestorePolicy defines how to handle the restore of snapshotted volumes",
          "type": "string"
        }
      },
      "required": [
        "target",
        "virtualMachineSnapshotName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "VirtualMachineRestoreStatus is the status for a VirtualMachineRestore resource",
      "properties": {
        "complete": {
          "type": "boolean"
        },
        "conditions": {
          "items": {
            "description": "Condition defines conditions",
            "properties": {
              "lastProbeTime": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "lastTransitionTime": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "description": "ConditionType is the const type for Conditions",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "deletedDataVolumes": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "x-kubernetes-list-type": "set"
        },
        "restoreTime": {
          "format": "date-time",
          "type": "string"
        },
        "restores": {
          "items": {
            "description": "VolumeRestore contains the data needed to restore a PVC",
            "properties": {
              "dataVolumeName": {
                "type": "string"
              },
              "persistentVolumeClaim": {
                "type": "string"
              },
              "volumeName": {
                "type": "string"
              },
              "volumeSnapshotName": {
                "type": "string"
              }
            },
            "required": [
              "persistentVolumeClaim",
              "volumeName",
              "volumeSnapshotName"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
