{
  "name": "esxi-native",
  "displayName": "ESXi Native",
  "version": "1.0.0",
  "description": "VMWare ESXi provider to provision VMs directly on an ESXi hypervisor without a need for vCenter or vSphere.",
  "keywords": [
    "pulumi",
    "esxi",
    "esxi-native",
    "category/infrastructure",
    "kind/native"
  ],
  "homepage": "https://github.com/pulumiverse/pulumi-esxi-native",
  "license": "Apache-2.0",
  "attribution": "This Pulumi package is based on the Terraform Provider [terraform-provider-esxi](https://github.com/josenk/terraform-provider-esxi/tree/master).",
  "repository": "https://github.com/pulumiverse/pulumi-esxi-native",
  "logoUrl": "https://raw.githubusercontent.com/pulumiverse/pulumi-esxi-native/main/docs/esxi-logo.png",
  "pluginDownloadURL": "github://api.github.com/pulumiverse/pulumi-esxi-native",
  "publisher": "pulumiverse",
  "meta": {
    "moduleFormat": "(.*)"
  },
  "language": {
    "csharp": {
      "rootNamespace": "Pulumiverse",
      "packageReferences": {
        "Pulumi": "3.*"
      },
      "namespaces": {
        "EsxiNative": "ESXiNative"
      }
    },
    "go": {
      "generateExtraInputTypes": true,
      "generateResourceContainerTypes": true,
      "importBasePath": "github.com/pulumiverse/pulumi-esxi-native/sdk/go/esxi"
    },
    "nodejs": {
      "packageName": "@pulumiverse/esxi-native",
      "packageDescription": "A Pulumi package for creating and managing ESXi resources",
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0"
      }
    },
    "python": {
      "packageName": "pulumiverse_esxi_native",
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0"
      }
    }
  },
  "config": {
    "variables": {
      "host": {
        "type": "string",
        "description": "ESXi Host Name config"
      },
      "password": {
        "type": "string",
        "description": "ESXi Password config",
        "secret": true
      },
      "sshPort": {
        "type": "string",
        "description": "ESXi Host SSH Port config"
      },
      "sslPort": {
        "type": "string",
        "description": "ESXi Host SSL Port config"
      },
      "username": {
        "type": "string",
        "description": "ESXi Username config"
      }
    }
  },
  "types": {
    "esxi-native:index:BootFirmwareType": {
      "type": "string",
      "enum": [
        {
          "name": "BIOS",
          "value": "bios"
        },
        {
          "name": "EFI",
          "value": "efi"
        }
      ]
    },
    "esxi-native:index:DiskType": {
      "type": "string",
      "enum": [
        {
          "name": "Thin",
          "value": "thin"
        },
        {
          "name": "ZeroedThick",
          "value": "zeroedthick"
        },
        {
          "name": "EagerZeroedThick",
          "value": "eagerzeroedthick"
        }
      ]
    },
    "esxi-native:index:KeyValuePair": {
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "esxi-native:index:NetworkInterface": {
      "properties": {
        "macAddress": {
          "type": "string"
        },
        "nicType": {
          "type": "string"
        },
        "virtualNetwork": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "virtualNetwork"
      ]
    },
    "esxi-native:index:Uplink": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Uplink name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "esxi-native:index:VMVirtualDisk": {
      "properties": {
        "slot": {
          "type": "string",
          "description": "SCSI_Ctrl:SCSI_id. Range '0:1' to '0:15'. SCSI_id 7 is not allowed."
        },
        "virtualDiskId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "virtualDiskId"
      ]
    }
  },
  "provider": {
    "description": "The provider type for the ESXi native package. By default, resources use package-wide configuration settings, however an explicit `Provider` instance may be created and passed during resource construction to achieve fine-grained programmatic control over provider settings. See the [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.",
    "properties": {
      "host": {
        "type": "string",
        "description": "ESXi Host Name config"
      },
      "password": {
        "type": "string",
        "description": "ESXi Password config"
      },
      "sshPort": {
        "type": "string",
        "description": "ESXi Host SSH Port config"
      },
      "sslPort": {
        "type": "string",
        "description": "ESXi Host SSL Port config"
      },
      "username": {
        "type": "string",
        "description": "ESXi Username config",
        "default": "root"
      }
    },
    "type": "object",
    "required": [
      "host",
      "password"
    ],
    "inputProperties": {
      "host": {
        "type": "string",
        "description": "ESXi Host Name config"
      },
      "password": {
        "type": "string",
        "description": "ESXi Password config"
      },
      "sshPort": {
        "type": "string",
        "description": "ESXi Host SSH Port config",
        "default": "22"
      },
      "sslPort": {
        "type": "string",
        "description": "ESXi Host SSL Port config",
        "default": "443"
      },
      "username": {
        "type": "string",
        "description": "ESXi Username config",
        "default": "root"
      }
    },
    "requiredInputs": [
      "host",
      "password"
    ]
  },
  "resources": {
    "esxi-native:index:PortGroup": {
      "properties": {
        "forgedTransmits": {
          "type": "boolean",
          "description": "Forged transmits (true=Accept/false=Reject)."
        },
        "macChanges": {
          "type": "boolean",
          "description": "MAC address changes (true=Accept/false=Reject)."
        },
        "name": {
          "type": "string",
          "description": "Port Group name."
        },
        "promiscuousMode": {
          "type": "boolean",
          "description": "Promiscuous mode (true=Accept/false=Reject)."
        },
        "vSwitch": {
          "type": "string",
          "description": "Virtual Switch Name."
        },
        "vlan": {
          "type": "integer",
          "description": "Port Group vlan id"
        }
      },
      "type": "object",
      "required": [
        "name",
        "vSwitch",
        "vlan"
      ],
      "inputProperties": {
        "forgedTransmits": {
          "type": "boolean",
          "description": "Forged transmits (true=Accept/false=Reject)."
        },
        "macChanges": {
          "type": "boolean",
          "description": "MAC address changes (true=Accept/false=Reject)."
        },
        "name": {
          "type": "string",
          "description": "Virtual Switch name.",
          "willReplaceOnChanges": true
        },
        "promiscuousMode": {
          "type": "boolean",
          "description": "Promiscuous mode (true=Accept/false=Reject)."
        },
        "vSwitch": {
          "type": "string",
          "description": "Virtual Switch Name.",
          "willReplaceOnChanges": true
        },
        "vlan": {
          "type": "integer",
          "description": "Port Group vlan id"
        }
      },
      "requiredInputs": [
        "vSwitch"
      ]
    },
    "esxi-native:index:ResourcePool": {
      "properties": {
        "cpuMax": {
          "type": "integer",
          "description": "CPU maximum (in MHz)."
        },
        "cpuMin": {
          "type": "integer",
          "description": "CPU minimum (in MHz).",
          "default": 100
        },
        "cpuMinExpandable": {
          "type": "string",
          "description": "Can pool borrow CPU resources from parent?",
          "default": "true"
        },
        "cpuShares": {
          "type": "string",
          "description": "CPU shares (low/normal/high/<custom>).",
          "default": "normal"
        },
        "memMax": {
          "type": "integer",
          "description": "Memory maximum (in MB)."
        },
        "memMin": {
          "type": "integer",
          "description": "Memory minimum (in MB).",
          "default": 200
        },
        "memMinExpandable": {
          "type": "string",
          "description": "Can pool borrow memory resources from parent?",
          "default": "true"
        },
        "memShares": {
          "type": "string",
          "description": "Memory shares (low/normal/high/<custom>).",
          "default": "normal"
        },
        "name": {
          "type": "string",
          "description": "Resource Pool Name"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "cpuMax": {
          "type": "integer",
          "description": "CPU maximum (in MHz)."
        },
        "cpuMin": {
          "type": "integer",
          "description": "CPU minimum (in MHz).",
          "default": 100
        },
        "cpuMinExpandable": {
          "type": "string",
          "description": "Can pool borrow CPU resources from parent?",
          "default": "true"
        },
        "cpuShares": {
          "type": "string",
          "description": "CPU shares (low/normal/high/<custom>).",
          "default": "normal"
        },
        "memMax": {
          "type": "integer",
          "description": "Memory maximum (in MB)."
        },
        "memMin": {
          "type": "integer",
          "description": "Memory minimum (in MB).",
          "default": 200
        },
        "memMinExpandable": {
          "type": "string",
          "description": "Can pool borrow memory resources from parent?",
          "default": "true"
        },
        "memShares": {
          "type": "string",
          "description": "Memory shares (low/normal/high/<custom>).",
          "default": "normal"
        },
        "name": {
          "type": "string",
          "description": "Resource Pool Name",
          "willReplaceOnChanges": true
        }
      }
    },
    "esxi-native:index:VirtualDisk": {
      "properties": {
        "directory": {
          "type": "string",
          "description": "Disk directory."
        },
        "diskStore": {
          "type": "string",
          "description": "Disk Store."
        },
        "diskType": {
          "$ref": "#/types/esxi-native:index:DiskType",
          "description": "Virtual Disk type. (thin, zeroedthick or eagerzeroedthick)"
        },
        "name": {
          "type": "string",
          "description": "Virtual Disk Name."
        },
        "size": {
          "type": "integer",
          "description": "Virtual Disk size in GB."
        }
      },
      "type": "object",
      "required": [
        "directory",
        "diskStore",
        "diskType",
        "name"
      ],
      "inputProperties": {
        "directory": {
          "type": "string",
          "description": "Disk directory.",
          "willReplaceOnChanges": true
        },
        "diskStore": {
          "type": "string",
          "description": "Disk Store.",
          "willReplaceOnChanges": true
        },
        "diskType": {
          "$ref": "#/types/esxi-native:index:DiskType",
          "description": "Virtual Disk type. (thin, zeroedthick or eagerzeroedthick)",
          "default": "thin",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Virtual Disk Name.",
          "willReplaceOnChanges": true
        },
        "size": {
          "type": "integer",
          "description": "Virtual Disk size in GB.",
          "default": 1
        }
      },
      "requiredInputs": [
        "directory",
        "diskStore",
        "diskType"
      ]
    },
    "esxi-native:index:VirtualMachine": {
      "properties": {
        "bootDiskSize": {
          "type": "integer",
          "description": "VM boot disk size. Will expand boot disk to this size."
        },
        "bootDiskType": {
          "$ref": "#/types/esxi-native:index:DiskType",
          "description": "VM boot disk type. thin, zeroedthick, eagerzeroedthick"
        },
        "bootFirmware": {
          "$ref": "#/types/esxi-native:index:BootFirmwareType",
          "description": "Boot type('efi' is boot uefi mode)"
        },
        "diskStore": {
          "type": "string",
          "description": "esxi diskstore for boot disk."
        },
        "info": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:KeyValuePair"
          },
          "description": "pass data to VM"
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address reported by VMWare tools."
        },
        "memSize": {
          "type": "integer",
          "description": "VM memory size."
        },
        "name": {
          "type": "string",
          "description": "esxi vm name."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:NetworkInterface"
          },
          "description": "VM network interfaces."
        },
        "notes": {
          "type": "string",
          "description": "VM memory size."
        },
        "numVCpus": {
          "type": "integer",
          "description": "VM number of virtual cpus."
        },
        "os": {
          "type": "string",
          "description": "VM OS type."
        },
        "power": {
          "type": "string",
          "description": "VM power state."
        },
        "resourcePoolName": {
          "type": "string",
          "description": "Resource pool name to place vm."
        },
        "shutdownTimeout": {
          "type": "integer",
          "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
          "default": 600
        },
        "startupTimeout": {
          "type": "integer",
          "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
          "default": 600
        },
        "virtualDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:VMVirtualDisk"
          },
          "description": "VM virtual disks."
        },
        "virtualHWVer": {
          "type": "integer",
          "description": "VM Virtual HW version."
        }
      },
      "type": "object",
      "required": [
        "diskStore",
        "memSize",
        "name",
        "numVCpus",
        "os",
        "resourcePoolName"
      ],
      "inputProperties": {
        "bootDiskSize": {
          "type": "integer",
          "description": "VM boot disk size. Will expand boot disk to this size.",
          "default": 16
        },
        "bootDiskType": {
          "$ref": "#/types/esxi-native:index:DiskType",
          "description": "VM boot disk type. thin, zeroedthick, eagerzeroedthick",
          "default": "thin"
        },
        "bootFirmware": {
          "$ref": "#/types/esxi-native:index:BootFirmwareType",
          "description": "Boot type('efi' is boot uefi mode)",
          "default": "bios"
        },
        "cloneFromVirtualMachine": {
          "type": "string",
          "description": "Source vm path on esxi host to clone.",
          "willReplaceOnChanges": true
        },
        "diskStore": {
          "type": "string",
          "description": "esxi diskstore for boot disk.",
          "willReplaceOnChanges": true
        },
        "info": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:KeyValuePair"
          },
          "description": "pass data to VM",
          "willReplaceOnChanges": true
        },
        "memSize": {
          "type": "integer",
          "description": "VM memory size.",
          "default": 512
        },
        "name": {
          "type": "string",
          "description": "esxi vm name.",
          "willReplaceOnChanges": true
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:NetworkInterface"
          },
          "description": "VM network interfaces."
        },
        "notes": {
          "type": "string",
          "description": "VM memory size."
        },
        "numVCpus": {
          "type": "integer",
          "description": "VM number of virtual cpus.",
          "default": 1
        },
        "os": {
          "type": "string",
          "description": "VM OS type.",
          "default": "centos"
        },
        "ovfProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:KeyValuePair"
          },
          "description": "VM OVF properties."
        },
        "ovfPropertiesTimer": {
          "type": "integer",
          "description": "The amount of time, in seconds, to wait for the guest to boot and run ovfProperties. (0-6000)",
          "default": 6000
        },
        "ovfSource": {
          "type": "string",
          "description": "Path or URL of ovf file source.",
          "willReplaceOnChanges": true
        },
        "power": {
          "type": "string",
          "description": "VM power state."
        },
        "resourcePoolName": {
          "type": "string",
          "description": "Resource pool name to place vm.",
          "default": "/",
          "willReplaceOnChanges": true
        },
        "shutdownTimeout": {
          "type": "integer",
          "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine. (0-600)",
          "default": 600
        },
        "startupTimeout": {
          "type": "integer",
          "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine. (0-600)",
          "default": 600
        },
        "virtualDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:VMVirtualDisk"
          },
          "description": "VM virtual disks."
        },
        "virtualHWVer": {
          "type": "integer",
          "description": "VM Virtual HW version.",
          "default": 13
        }
      },
      "requiredInputs": [
        "diskStore"
      ]
    },
    "esxi-native:index:VirtualSwitch": {
      "properties": {
        "forgedTransmits": {
          "type": "boolean",
          "description": "Forged transmits (true=Accept/false=Reject)."
        },
        "linkDiscoveryMode": {
          "type": "string",
          "description": "Virtual Switch Link Discovery Mode."
        },
        "macChanges": {
          "type": "boolean",
          "description": "MAC address changes (true=Accept/false=Reject)."
        },
        "mtu": {
          "type": "integer",
          "description": "Virtual Switch mtu. (1280-9000)"
        },
        "name": {
          "type": "string",
          "description": "Virtual Switch name."
        },
        "ports": {
          "type": "integer",
          "description": "Virtual Switch number of ports. (1-4096)"
        },
        "promiscuousMode": {
          "type": "boolean",
          "description": "Promiscuous mode (true=Accept/false=Reject)."
        },
        "uplinks": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:Uplink"
          },
          "description": "Uplink configuration."
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "forgedTransmits": {
          "type": "boolean",
          "description": "Forged transmits (true=Accept/false=Reject)."
        },
        "linkDiscoveryMode": {
          "type": "string",
          "description": "Virtual Switch Link Discovery Mode."
        },
        "macChanges": {
          "type": "boolean",
          "description": "MAC address changes (true=Accept/false=Reject)."
        },
        "mtu": {
          "type": "integer",
          "description": "Virtual Switch mtu. (1280-9000)"
        },
        "name": {
          "type": "string",
          "description": "Virtual Switch name.",
          "willReplaceOnChanges": true
        },
        "ports": {
          "type": "integer",
          "description": "Virtual Switch number of ports. (1-4096)"
        },
        "promiscuousMode": {
          "type": "boolean",
          "description": "Promiscuous mode (true=Accept/false=Reject)."
        },
        "uplinks": {
          "type": "array",
          "items": {
            "$ref": "#/types/esxi-native:index:Uplink"
          },
          "description": "Uplink configuration."
        }
      }
    }
  },
  "functions": {
    "esxi-native:index:getVirtualMachine": {
      "inputs": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Virtual Machine Name to get details of"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "properties": {
          "bootDiskSize": {
            "description": "VM boot disk size. Will expand boot disk to this size.",
            "type": "integer"
          },
          "bootDiskType": {
            "$ref": "#/types/esxi-native:index:DiskType",
            "description": "VM boot disk type. thin, zeroedthick, eagerzeroedthick"
          },
          "bootFirmware": {
            "$ref": "#/types/esxi-native:index:BootFirmwareType",
            "description": "Boot type('efi' is boot uefi mode)"
          },
          "diskStore": {
            "description": "esxi diskstore for boot disk.",
            "type": "string"
          },
          "id": {
            "description": "esxi vm id.",
            "type": "string"
          },
          "info": {
            "description": "pass data to VM",
            "items": {
              "$ref": "#/types/esxi-native:index:KeyValuePair"
            },
            "type": "array"
          },
          "ipAddress": {
            "description": "The IP address reported by VMWare tools.",
            "type": "string"
          },
          "memSize": {
            "description": "VM memory size.",
            "type": "integer"
          },
          "name": {
            "description": "esxi vm name.",
            "type": "string"
          },
          "networkInterfaces": {
            "description": "VM network interfaces.",
            "items": {
              "$ref": "#/types/esxi-native:index:NetworkInterface"
            },
            "type": "array"
          },
          "notes": {
            "description": "VM memory size.",
            "type": "string"
          },
          "numVCpus": {
            "description": "VM number of virtual cpus.",
            "type": "integer"
          },
          "os": {
            "description": "VM OS type.",
            "type": "string"
          },
          "power": {
            "description": "VM power state.",
            "type": "string"
          },
          "resourcePoolName": {
            "description": "Resource pool name to place vm.",
            "type": "string"
          },
          "shutdownTimeout": {
            "default": 600,
            "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
            "type": "integer"
          },
          "startupTimeout": {
            "default": 600,
            "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
            "type": "integer"
          },
          "virtualDisks": {
            "description": "VM virtual disks.",
            "items": {
              "$ref": "#/types/esxi-native:index:VMVirtualDisk"
            },
            "type": "array"
          },
          "virtualHWVer": {
            "description": "VM Virtual HW version.",
            "type": "integer"
          }
        },
        "type": "object"
      }
    },
    "esxi-native:index:getVirtualMachineById": {
      "inputs": {
        "properties": {
          "id": {
            "type": "string",
            "description": "Virtual Machine Id to get details of"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "properties": {
          "bootDiskSize": {
            "description": "VM boot disk size. Will expand boot disk to this size.",
            "type": "integer"
          },
          "bootDiskType": {
            "$ref": "#/types/esxi-native:index:DiskType",
            "description": "VM boot disk type. thin, zeroedthick, eagerzeroedthick"
          },
          "bootFirmware": {
            "$ref": "#/types/esxi-native:index:BootFirmwareType",
            "description": "Boot type('efi' is boot uefi mode)"
          },
          "diskStore": {
            "description": "esxi diskstore for boot disk.",
            "type": "string"
          },
          "id": {
            "description": "esxi vm id.",
            "type": "string"
          },
          "info": {
            "description": "pass data to VM",
            "items": {
              "$ref": "#/types/esxi-native:index:KeyValuePair"
            },
            "type": "array"
          },
          "ipAddress": {
            "description": "The IP address reported by VMWare tools.",
            "type": "string"
          },
          "memSize": {
            "description": "VM memory size.",
            "type": "integer"
          },
          "name": {
            "description": "esxi vm name.",
            "type": "string"
          },
          "networkInterfaces": {
            "description": "VM network interfaces.",
            "items": {
              "$ref": "#/types/esxi-native:index:NetworkInterface"
            },
            "type": "array"
          },
          "notes": {
            "description": "VM memory size.",
            "type": "string"
          },
          "numVCpus": {
            "description": "VM number of virtual cpus.",
            "type": "integer"
          },
          "os": {
            "description": "VM OS type.",
            "type": "string"
          },
          "power": {
            "description": "VM power state.",
            "type": "string"
          },
          "resourcePoolName": {
            "description": "Resource pool name to place vm.",
            "type": "string"
          },
          "shutdownTimeout": {
            "default": 600,
            "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
            "type": "integer"
          },
          "startupTimeout": {
            "default": 600,
            "description": "The amount of vm uptime, in seconds, to wait for an available IP address on this virtual machine.",
            "type": "integer"
          },
          "virtualDisks": {
            "description": "VM virtual disks.",
            "items": {
              "$ref": "#/types/esxi-native:index:VMVirtualDisk"
            },
            "type": "array"
          },
          "virtualHWVer": {
            "description": "VM Virtual HW version.",
            "type": "integer"
          }
        },
        "type": "object"
      }
    }
  }
}
