0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 10:33:46 +00:00

feat(vm): add configurable timeout for VM create operation (#648)

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
Pavel Boldyrev 2023-10-24 22:13:15 -04:00 committed by GitHub
parent 1d428da8c1
commit a30f96c348
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View File

@ -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"

View File

@ -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)
}