diff options
author | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-06 00:09:55 +0200 |
---|---|---|
committer | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-06 00:09:55 +0200 |
commit | 2fcab49b25f4eac97b836fda8380465047c6d5e3 (patch) | |
tree | 511ee2049db8497ab3782e54ee2d672d01ddef34 | |
parent | 1fc7609dd72655c42017d0b8e3846d392ddd18ed (diff) | |
download | terraform-provider-libvirt-2fcab49b25f4eac97b836fda8380465047c6d5e3.tar terraform-provider-libvirt-2fcab49b25f4eac97b836fda8380465047c6d5e3.tar.gz |
use different names for each disk. closes #14
-rw-r--r-- | libvirt/disk_def.go | 2 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain.go | 1 | ||||
-rw-r--r-- | libvirt/utils.go | 21 | ||||
-rw-r--r-- | libvirt/utils_test.go | 18 |
4 files changed, 40 insertions, 2 deletions
diff --git a/libvirt/disk_def.go b/libvirt/disk_def.go index 41e8d5f2..88a9f76a 100644 --- a/libvirt/disk_def.go +++ b/libvirt/disk_def.go @@ -37,8 +37,6 @@ func newDefDisk() defDisk { disk.Type = "volume" disk.Device = "disk" disk.Format.Type = "qcow2" - - disk.Target.Dev = "sda" disk.Target.Bus = "virtio" return disk diff --git a/libvirt/resource_libvirt_domain.go b/libvirt/resource_libvirt_domain.go index 8752a574..7d26e1b9 100644 --- a/libvirt/resource_libvirt_domain.go +++ b/libvirt/resource_libvirt_domain.go @@ -65,6 +65,7 @@ func resourceLibvirtDomainCreate(d *schema.ResourceData, meta interface{}) error for i := 0; i < disksCount; i++ { prefix := fmt.Sprintf("disk.%d", i) disk := newDefDisk() + disk.Target.Dev = fmt.Sprintf("sd%s", DiskLetterForIndex(i)) volumeKey := d.Get(prefix + ".volume_id").(string) diskVolume, err := virConn.LookupStorageVolByKey(volumeKey) diff --git a/libvirt/utils.go b/libvirt/utils.go new file mode 100644 index 00000000..335003a9 --- /dev/null +++ b/libvirt/utils.go @@ -0,0 +1,21 @@ +package libvirt + +import ( + "fmt" +) + +var diskLetters []rune = []rune("abcdefghijklmnopqrstuvwxyz") + +func DiskLetterForIndex(i int) string { + + q := i / len(diskLetters) + r := i % len(diskLetters) + letter := diskLetters[r] + + if q == 0 { + return fmt.Sprintf("%c", letter) + } + + return fmt.Sprintf("%s%c", DiskLetterForIndex(q - 1), letter) +} + diff --git a/libvirt/utils_test.go b/libvirt/utils_test.go new file mode 100644 index 00000000..6e945fac --- /dev/null +++ b/libvirt/utils_test.go @@ -0,0 +1,18 @@ +package libvirt + +import ( + "testing" +) + +func TestDiskLetterForIndex(t *testing.T) { + + diskNumbers := []int{0, 1, 2, 3, 4, 16, 24, 25, 26, 30, 300} + names := []string{"a", "b", "c", "d", "e", "q", "y", "z", "aa", "ae", "ko"} + + for i, diskNumber := range(diskNumbers) { + ret := DiskLetterForIndex(diskNumber) + if ret != names[i] { + t.Errorf("Expected %s, got %s for disk %d", names[i], ret, diskNumber) + } + } +} |