mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-05 21:43:59 +00:00
fix(vm): remove qcow2
as the default for disk.file_format
(#1862)
No more need to explicitly set `file_format = "raw"` when defining new disks! Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
03f2079902
commit
af46a9c71a
@ -36,7 +36,6 @@ resource "proxmox_virtual_environment_vm" "ubuntu_template" {
|
|||||||
|
|
||||||
efi_disk {
|
efi_disk {
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
file_format = "raw"
|
|
||||||
type = "4m"
|
type = "4m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,11 +273,11 @@ output "ubuntu_vm_public_key" {
|
|||||||
- `discard` - (Optional) Whether to pass discard/trim requests to the
|
- `discard` - (Optional) Whether to pass discard/trim requests to the
|
||||||
underlying storage. Supported values are `on`/`ignore` (defaults
|
underlying storage. Supported values are `on`/`ignore` (defaults
|
||||||
to `ignore`).
|
to `ignore`).
|
||||||
- `file_format` - (Optional) The file format (defaults to `qcow2`).
|
- `file_format` - (Optional) The file format.
|
||||||
- `qcow2` - QEMU Disk Image v2.
|
- `qcow2` - QEMU Disk Image v2.
|
||||||
- `raw` - Raw Disk Image.
|
- `raw` - Raw Disk Image.
|
||||||
- `vmdk` - VMware Disk Image.
|
- `vmdk` - VMware Disk Image.
|
||||||
- `file_id` - (Optional) The file ID for a disk image. The ID format is
|
- `file_id` - (Optional) The file ID for a disk image when importing a disk into VM. The ID format is
|
||||||
`<datastore_id>:<content_type>/<file_name>`, for example `local:iso/centos8.img`. Can be also taken from
|
`<datastore_id>:<content_type>/<file_name>`, for example `local:iso/centos8.img`. Can be also taken from
|
||||||
`proxmox_virtual_environment_download_file` resource.
|
`proxmox_virtual_environment_download_file` resource.
|
||||||
- `interface` - (Required) The disk interface for Proxmox, currently `scsi`,
|
- `interface` - (Required) The disk interface for Proxmox, currently `scsi`,
|
||||||
@ -685,14 +685,12 @@ resource "proxmox_virtual_environment_vm" "data_vm" {
|
|||||||
|
|
||||||
disk {
|
disk {
|
||||||
datastore_id = "local-zfs"
|
datastore_id = "local-zfs"
|
||||||
file_format = "raw"
|
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 1
|
size = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
datastore_id = "local-zfs"
|
datastore_id = "local-zfs"
|
||||||
file_format = "raw"
|
|
||||||
interface = "scsi1"
|
interface = "scsi1"
|
||||||
size = 4
|
size = 4
|
||||||
}
|
}
|
||||||
@ -702,7 +700,6 @@ resource "proxmox_virtual_environment_vm" "data_user_vm" {
|
|||||||
# boot disk
|
# boot disk
|
||||||
disk {
|
disk {
|
||||||
datastore_id = "local-zfs"
|
datastore_id = "local-zfs"
|
||||||
file_format = "raw"
|
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,6 @@ resource "proxmox_virtual_environment_vm" "example_template" {
|
|||||||
|
|
||||||
efi_disk {
|
efi_disk {
|
||||||
datastore_id = local.datastore_id
|
datastore_id = local.datastore_id
|
||||||
file_format = "raw"
|
|
||||||
type = "4m"
|
type = "4m"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +41,6 @@ resource "proxmox_virtual_environment_vm" "example_template" {
|
|||||||
|
|
||||||
disk {
|
disk {
|
||||||
datastore_id = local.datastore_id
|
datastore_id = local.datastore_id
|
||||||
file_format = "raw"
|
|
||||||
interface = "ide0"
|
interface = "ide0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
@ -61,7 +59,6 @@ resource "proxmox_virtual_environment_vm" "example_template" {
|
|||||||
# datastore_id = "nfs"
|
# datastore_id = "nfs"
|
||||||
# interface = "scsi1"
|
# interface = "scsi1"
|
||||||
# discard = "ignore"
|
# discard = "ignore"
|
||||||
# file_format = "raw"
|
|
||||||
# }
|
# }
|
||||||
|
|
||||||
initialization {
|
initialization {
|
||||||
@ -166,7 +163,6 @@ resource "proxmox_virtual_environment_vm" "example" {
|
|||||||
|
|
||||||
efi_disk {
|
efi_disk {
|
||||||
datastore_id = local.datastore_id
|
datastore_id = local.datastore_id
|
||||||
file_format = "raw"
|
|
||||||
type = "4m"
|
type = "4m"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,13 +230,11 @@ resource "proxmox_virtual_environment_vm" "data_vm" {
|
|||||||
|
|
||||||
disk {
|
disk {
|
||||||
datastore_id = local.datastore_id
|
datastore_id = local.datastore_id
|
||||||
file_format = "raw"
|
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 1
|
size = 1
|
||||||
}
|
}
|
||||||
disk {
|
disk {
|
||||||
datastore_id = local.datastore_id
|
datastore_id = local.datastore_id
|
||||||
file_format = "raw"
|
|
||||||
interface = "scsi1"
|
interface = "scsi1"
|
||||||
size = 4
|
size = 4
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@ resource "proxmox_virtual_environment_vm" "ubuntu_template" {
|
|||||||
|
|
||||||
efi_disk {
|
efi_disk {
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
file_format = "raw"
|
|
||||||
type = "4m"
|
type = "4m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,8 +34,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
// note: default qcow2 is not supported by lvm (?)
|
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -67,8 +65,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
// note: default qcow2 is not supported by lvm (?)
|
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
serial = "-dead_beef-"
|
serial = "-dead_beef-"
|
||||||
@ -155,7 +151,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
template = "true"
|
template = "true"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -190,13 +185,11 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
template = "true"
|
template = "true"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -222,7 +215,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -241,14 +233,12 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi1"
|
interface = "scsi1"
|
||||||
size = 8
|
size = 8
|
||||||
@ -279,14 +269,12 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi1"
|
interface = "scsi1"
|
||||||
size = 8
|
size = 8
|
||||||
@ -307,7 +295,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disk"
|
name = "test-disk"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -349,7 +336,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disks-ide"
|
name = "test-disks-ide"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "ide0"
|
interface = "ide0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -368,13 +354,11 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
name = "test-disks-ide"
|
name = "test-disks-ide"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "ide0"
|
interface = "ide0"
|
||||||
size = 8
|
size = 8
|
||||||
}
|
}
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "ide1"
|
interface = "ide1"
|
||||||
size = 8
|
size = 8
|
||||||
@ -402,7 +386,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
template = "true"
|
template = "true"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -451,7 +434,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
template = "true"
|
template = "true"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -498,7 +480,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
template = "true"
|
template = "true"
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
size = 8
|
size = 8
|
||||||
@ -514,7 +495,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
file_format = "raw"
|
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "scsi0"
|
interface = "scsi0"
|
||||||
size = 10
|
size = 10
|
||||||
@ -543,7 +523,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
disk {
|
disk {
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
file_format = "raw"
|
|
||||||
size = 20
|
size = 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -591,7 +570,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
disk {
|
disk {
|
||||||
datastore_id = "local-lvm"
|
datastore_id = "local-lvm"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
file_format = "raw"
|
|
||||||
size = 20
|
size = 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -604,7 +582,6 @@ func TestAccResourceVMDisks(t *testing.T) {
|
|||||||
disk {
|
disk {
|
||||||
datastore_id = "tank"
|
datastore_id = "tank"
|
||||||
interface = "virtio0"
|
interface = "virtio0"
|
||||||
file_format = "raw"
|
|
||||||
size = 20
|
size = 20
|
||||||
}
|
}
|
||||||
}`),
|
}`),
|
||||||
|
@ -39,8 +39,8 @@ func GetInfo(resp *vms.GetResponseData, d *schema.ResourceData) vms.CustomStorag
|
|||||||
|
|
||||||
for k, v := range storageDevices {
|
for k, v := range storageDevices {
|
||||||
if v != nil && diskMap[k] != nil {
|
if v != nil && diskMap[k] != nil {
|
||||||
if d, ok := diskMap[k].(map[string]interface{}); ok {
|
if disk, ok := diskMap[k].(map[string]interface{}); ok {
|
||||||
if fileID, ok := d[mkDiskFileID].(string); ok && fileID != "" {
|
if fileID, ok := disk[mkDiskFileID].(string); ok && fileID != "" {
|
||||||
v.FileID = &fileID
|
v.FileID = &fileID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,15 +195,11 @@ func GetDiskDeviceObjects(
|
|||||||
return diskDeviceObjects, fmt.Errorf("error getting disk speed block: %w", err)
|
return diskDeviceObjects, fmt.Errorf("error getting disk speed block: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if fileFormat == "" {
|
|
||||||
fileFormat = dvDiskFileFormat
|
|
||||||
}
|
|
||||||
|
|
||||||
if pathInDatastore != "" {
|
if pathInDatastore != "" {
|
||||||
if datastoreID != "" {
|
if datastoreID != "" {
|
||||||
diskDevice.FileVolume = fmt.Sprintf("%s:%s", datastoreID, pathInDatastore)
|
diskDevice.FileVolume = fmt.Sprintf("%s:%s", datastoreID, pathInDatastore)
|
||||||
} else {
|
} else {
|
||||||
// FileVolume is absolute path in the host filesystem
|
// FileVolume is the absolute path in the host filesystem
|
||||||
diskDevice.FileVolume = pathInDatastore
|
diskDevice.FileVolume = pathInDatastore
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -216,11 +212,14 @@ func GetDiskDeviceObjects(
|
|||||||
diskDevice.DatastoreID = &datastoreID
|
diskDevice.DatastoreID = &datastoreID
|
||||||
diskDevice.Discard = &discard
|
diskDevice.Discard = &discard
|
||||||
diskDevice.FileID = &fileID
|
diskDevice.FileID = &fileID
|
||||||
diskDevice.Format = &fileFormat
|
|
||||||
diskDevice.Replicate = &replicate
|
diskDevice.Replicate = &replicate
|
||||||
diskDevice.Serial = &serial
|
diskDevice.Serial = &serial
|
||||||
diskDevice.Size = types.DiskSizeFromGigabytes(int64(size))
|
diskDevice.Size = types.DiskSizeFromGigabytes(int64(size))
|
||||||
|
|
||||||
|
if fileFormat != "" {
|
||||||
|
diskDevice.Format = &fileFormat
|
||||||
|
}
|
||||||
|
|
||||||
if !strings.HasPrefix(diskInterface, "virtio") {
|
if !strings.HasPrefix(diskInterface, "virtio") {
|
||||||
diskDevice.SSD = &ssd
|
diskDevice.SSD = &ssd
|
||||||
}
|
}
|
||||||
@ -316,7 +315,8 @@ func createCustomDisk(
|
|||||||
iface string,
|
iface string,
|
||||||
disk vms.CustomStorageDevice,
|
disk vms.CustomStorageDevice,
|
||||||
) error {
|
) error {
|
||||||
fileFormat := dvDiskFileFormat
|
// use "old default" specifically here.
|
||||||
|
fileFormat := "qcow2"
|
||||||
if disk.Format != nil && *disk.Format != "" {
|
if disk.Format != nil && *disk.Format != "" {
|
||||||
fileFormat = *disk.Format
|
fileFormat = *disk.Format
|
||||||
}
|
}
|
||||||
@ -332,7 +332,7 @@ func createCustomDisk(
|
|||||||
fmt.Sprintf(`disk_options="%s"`, disk.EncodeOptions()),
|
fmt.Sprintf(`disk_options="%s"`, disk.EncodeOptions()),
|
||||||
fmt.Sprintf(`disk_interface="%s"`, iface),
|
fmt.Sprintf(`disk_interface="%s"`, iface),
|
||||||
`source_image=$(try_sudo "pvesm path $file_id")`,
|
`source_image=$(try_sudo "pvesm path $file_id")`,
|
||||||
`imported_disk="$(try_sudo "qm importdisk $vm_id $source_image $datastore_id_target -format $file_format" | grep "unused0" | cut -d ":" -f 3 | cut -d "'" -f 1)"`,
|
`imported_disk="$(try_sudo "qm disk import $vm_id $source_image $datastore_id_target -format $file_format" | grep "unused0" | cut -d ":" -f 3 | cut -d "'" -f 1)"`,
|
||||||
`disk_id="${datastore_id_target}:$imported_disk,${disk_options}"`,
|
`disk_id="${datastore_id_target}:$imported_disk,${disk_options}"`,
|
||||||
`try_sudo "qm set $vm_id -${disk_interface} $disk_id"`,
|
`try_sudo "qm set $vm_id -${disk_interface} $disk_id"`,
|
||||||
}
|
}
|
||||||
@ -399,8 +399,6 @@ func Read(
|
|||||||
disk[mkDiskPathInDatastore] = pathInDatastore
|
disk[mkDiskPathInDatastore] = pathInDatastore
|
||||||
|
|
||||||
if dd.Format == nil {
|
if dd.Format == nil {
|
||||||
disk[mkDiskFileFormat] = dvDiskFileFormat
|
|
||||||
|
|
||||||
if datastoreID != "" {
|
if datastoreID != "" {
|
||||||
// disk format may not be returned by config API if it is default for the storage, and that may be different
|
// disk format may not be returned by config API if it is default for the storage, and that may be different
|
||||||
// from the default qcow2, so we need to read it from the storage API to make sure we have the correct value
|
// from the default qcow2, so we need to read it from the storage API to make sure we have the correct value
|
||||||
|
@ -17,7 +17,6 @@ import (
|
|||||||
const (
|
const (
|
||||||
dvDiskInterface = "scsi0"
|
dvDiskInterface = "scsi0"
|
||||||
dvDiskDatastoreID = "local-lvm"
|
dvDiskDatastoreID = "local-lvm"
|
||||||
dvDiskFileFormat = "qcow2"
|
|
||||||
dvDiskSize = 8
|
dvDiskSize = 8
|
||||||
dvDiskAIO = "io_uring"
|
dvDiskAIO = "io_uring"
|
||||||
dvDiskDiscard = "ignore"
|
dvDiskDiscard = "ignore"
|
||||||
|
Loading…
Reference in New Issue
Block a user