Skip to content

Commit

Permalink
Merge pull request #294 from Tinyblargon/BugFix-CloudInit
Browse files Browse the repository at this point in the history
fix: cloudinit `Format` empty
  • Loading branch information
mleone87 authored Jan 9, 2024
2 parents 06f2d36 + 1f4b2a3 commit cd419d1
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 10 deletions.
17 changes: 12 additions & 5 deletions proxmox/config_qemu_disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ type qemuCdRom struct {
}

func (qemuCdRom) mapToStruct(diskData string, settings map[string]interface{}) *qemuCdRom {
var isCdRom bool
if setting, isSet := settings["media"]; isSet {
isCdRom = setting.(string) == "cdrom"
}
if !isCdRom {
if setting.(string) != "cdrom" {
return nil
}
} else {
return nil
}
if _, isSet := settings["none"]; isSet {
Expand All @@ -111,7 +111,14 @@ func (qemuCdRom) mapToStruct(diskData string, settings map[string]interface{}) *
tmpStorage := strings.Split(diskData, ":")
if len(tmpStorage) > 1 {
tmpFile := strings.Split(diskData, "/")
if len(tmpFile) == 2 {
switch len(tmpFile) {
case 1:
return &qemuCdRom{
Storage: tmpStorage[0],
File: tmpStorage[1],
Format: QemuDiskFormat_Raw,
}
case 2:
tmpFileType := strings.Split(tmpFile[1], ".")
if len(tmpFileType) > 1 {
fileType := QemuDiskFormat(tmpFileType[len(tmpFileType)-1])
Expand Down
38 changes: 33 additions & 5 deletions proxmox/config_qemu_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2993,13 +2993,20 @@ func Test_ConfigQemu_mapToStruct(t *testing.T) {
}}}}}},
},
// Disks Ide CloudInit
{name: "Disks Ide CloudInit",
{name: "Disks Ide CloudInit file",
input: map[string]interface{}{"ide0": "Test:100/vm-100-cloudinit.raw,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
{name: "Disks Ide CloudInit lvm",
input: map[string]interface{}{"ide3": "Test:vm-100-cloudinit,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
// Disks Ide Disk
{name: "Disks Ide Disk",
input: map[string]interface{}{"ide0": "test2:100/vm-100-disk-53.qcow2"},
Expand Down Expand Up @@ -3532,8 +3539,15 @@ func Test_ConfigQemu_mapToStruct(t *testing.T) {
}}}}}},
},
// Disks Sata CloudInit
{name: "Disks Sata CloudInit",
input: map[string]interface{}{"sata0": "Test:100/vm-100-cloudinit.raw,media=cdrom"},
{name: "Disks Sata CloudInit file",
input: map[string]interface{}{"sata4": "Test:100/vm-100-cloudinit.raw,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
{name: "Disks Sata CloudInit lvm",
input: map[string]interface{}{"sata0": "Test:vm-100-cloudinit,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
Expand Down Expand Up @@ -4075,13 +4089,20 @@ func Test_ConfigQemu_mapToStruct(t *testing.T) {
}}}}}},
},
// Disks Scsi CloudInit
{name: "Disks Scsi CloudInit",
{name: "Disks Scsi CloudInit file",
input: map[string]interface{}{"scsi0": "Test:100/vm-100-cloudinit.raw,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
{name: "Disks Scsi CloudInit lvm",
input: map[string]interface{}{"scsi23": "Test:vm-100-cloudinit,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_23: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
// Disks Scsi Disk
{name: "Disks Scsi Disk",
input: map[string]interface{}{"scsi0": "test:100/vm-100-disk-2.qcow2"},
Expand Down Expand Up @@ -4660,13 +4681,20 @@ func Test_ConfigQemu_mapToStruct(t *testing.T) {
}}}}}},
},
// Disks VirtIO CloudInit
{name: "Disks VirtIO CloudInit",
{name: "Disks VirtIO CloudInit file",
input: map[string]interface{}{"virtio0": "Test:100/vm-100-cloudinit.raw,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
{name: "Disks VirtIO CloudInit lvm",
input: map[string]interface{}{"virtio7": "Test:vm-100-cloudinit,media=cdrom"},
output: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{
Format: QemuDiskFormat_Raw,
Storage: "Test",
}}}}},
},
// Disks VirtIO Disk
{name: "Disks VirtIO Disk",
input: map[string]interface{}{"virtio0": "test2:100/vm-100-disk-31.qcow2"},
Expand Down

0 comments on commit cd419d1

Please sign in to comment.