diff --git a/docs/resources/virtual_environment_vm.md b/docs/resources/virtual_environment_vm.md index 44b0fb4c..aba96266 100644 --- a/docs/resources/virtual_environment_vm.md +++ b/docs/resources/virtual_environment_vm.md @@ -243,7 +243,7 @@ output "ubuntu_vm_public_key" { - `path_in_datastore` - (Optional) The in-datastore path to the disk image. ***Experimental.***Use to attach another VM's disks, or (as root only) host's filesystem paths (`datastore_id` empty string). - See "*Example: Attached disks*". + See "*Example: Attached disks*". - `discard` - (Optional) Whether to pass discard/trim requests to the underlying storage. Supported values are `on`/`ignore` (defaults to `ignore`). @@ -454,6 +454,8 @@ output "ubuntu_vm_public_key" { - `template` - (Optional) Whether to create a template (defaults to `false`). - `timeout_clone` - (Optional) Timeout for cloning a VM in seconds (defaults to 1800). +- `timeout_create` - (Optional) Timeout for creating a VM in seconds (defaults to + 1800). - `timeout_move_disk` - (Optional) Timeout for moving the disk of a VM in seconds (defaults to 1800). - `timeout_migrate` - (Optional) Timeout for migrating the VM (defaults to @@ -536,7 +538,6 @@ attaching one disk to multiple VM will cause errors or even data corruption. Do *not* move or resize `data_vm` disks. (Resource `data_user_vm` should reject attempts to move or resize non-owned disks.) - ```terraform resource "proxmox_virtual_environment_vm" "data_vm" { node_name = "first-node" diff --git a/proxmoxtf/resource/vm.go b/proxmoxtf/resource/vm.go index 0d981239..4caf6d9b 100644 --- a/proxmoxtf/resource/vm.go +++ b/proxmoxtf/resource/vm.go @@ -124,6 +124,7 @@ const ( dvResourceVirtualEnvironmentVMTabletDevice = true dvResourceVirtualEnvironmentVMTemplate = false dvResourceVirtualEnvironmentVMTimeoutClone = 1800 + dvResourceVirtualEnvironmentVMTimeoutCreate = 1800 dvResourceVirtualEnvironmentVMTimeoutMoveDisk = 1800 dvResourceVirtualEnvironmentVMTimeoutMigrate = 1800 dvResourceVirtualEnvironmentVMTimeoutReboot = 1800 @@ -272,6 +273,7 @@ const ( mkResourceVirtualEnvironmentVMTags = "tags" mkResourceVirtualEnvironmentVMTemplate = "template" mkResourceVirtualEnvironmentVMTimeoutClone = "timeout_clone" + mkResourceVirtualEnvironmentVMTimeoutCreate = "timeout_create" mkResourceVirtualEnvironmentVMTimeoutMoveDisk = "timeout_move_disk" mkResourceVirtualEnvironmentVMTimeoutMigrate = "timeout_migrate" mkResourceVirtualEnvironmentVMTimeoutReboot = "timeout_reboot" @@ -284,8 +286,6 @@ const ( mkResourceVirtualEnvironmentVMVGAType = "type" mkResourceVirtualEnvironmentVMVMID = "vm_id" mkResourceVirtualEnvironmentVMSCSIHardware = "scsi_hardware" - - vmCreateTimeoutSeconds = 10 ) // VM returns a resource that manages VMs. @@ -1398,6 +1398,12 @@ func VM() *schema.Resource { Optional: true, Default: dvResourceVirtualEnvironmentVMTimeoutClone, }, + mkResourceVirtualEnvironmentVMTimeoutCreate: { + Type: schema.TypeInt, + Description: "Create VM timeout", + Optional: true, + Default: dvResourceVirtualEnvironmentVMTimeoutCreate, + }, mkResourceVirtualEnvironmentVMTimeoutMoveDisk: { Type: schema.TypeInt, Description: "MoveDisk timeout", @@ -2607,7 +2613,9 @@ func vmCreateCustom(ctx context.Context, d *schema.ResourceData, m interface{}) createBody.PoolID = &poolID } - err = api.Node(nodeName).VM(0).CreateVM(ctx, createBody, vmCreateTimeoutSeconds) + createTimeout := d.Get(mkResourceVirtualEnvironmentVMTimeoutClone).(int) + + err = api.Node(nodeName).VM(0).CreateVM(ctx, createBody, createTimeout) if err != nil { return diag.FromErr(err) }