summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2013-03-20 10:13:37 +0000
committerJonathan Maw <jonathan.maw@codethink.co.uk>2013-03-20 10:13:37 +0000
commitbb756677ed0bc538199cd55911df7212e3cb76fd (patch)
treef6a06576f77aa97792ce7ececfe40b61e18a8d35
parent9bbb0a24f58260f4ce2aefbc0fe2c8c804e33c3e (diff)
parent849519e5626e9179c9b5c23f8303f92ea6212cb9 (diff)
downloadmorph-bb756677ed0bc538199cd55911df7212e3cb76fd.tar.gz
Merge branch 'liw/attach_disks'
Reviewed-by: Jonathan Maw <jonathan.maw@codethink.co.uk>
-rwxr-xr-xmorphlib/exts/kvm.write9
-rwxr-xr-xmorphlib/exts/virtualbox-ssh.write12
-rwxr-xr-xmorphlib/writeexts.py8
3 files changed, 27 insertions, 2 deletions
diff --git a/morphlib/exts/kvm.write b/morphlib/exts/kvm.write
index 1579dc1f..c491f206 100755
--- a/morphlib/exts/kvm.write
+++ b/morphlib/exts/kvm.write
@@ -99,11 +99,18 @@ class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
'''Create the libvirt virtual machine.'''
self.status(msg='Creating libvirt/kvm virtual machine')
+
+ attach_disks = self.parse_attach_disks()
+ attach_opts = []
+ for disk in attach_disks:
+ attach_opts.extend(['--disk', 'path=%s' % disk])
+
cliapp.runcmd(
['ssh', ssh_host,
'virt-install', '--connect qemu:///system', '--import',
'--name', vm_name, '--ram', '1024', '--vnc', '--noreboot',
- '--disk path=%s,bus=ide' % vm_path])
+ '--disk path=%s,bus=ide' % vm_path] +
+ attach_opts)
KvmPlusSshWriteExtension().run()
diff --git a/morphlib/exts/virtualbox-ssh.write b/morphlib/exts/virtualbox-ssh.write
index 9b99c7a1..862d4f02 100755
--- a/morphlib/exts/virtualbox-ssh.write
+++ b/morphlib/exts/virtualbox-ssh.write
@@ -121,7 +121,17 @@ class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
'--port', '0', '--device', '0', '--type', 'hdd', '--medium',
vdi_path],
]
-
+
+ attach_disks = self.parse_attach_disks()
+ for device_no, disk in enumerate(attach_disks, 1):
+ cmd = ['storageattach', vm_name,
+ '--storagectl', '"SATA Controller"',
+ '--port', str(device_no),
+ '--device', '0',
+ '--type', 'hdd',
+ '--medium', disk]
+ commands.append(cmd)
+
for command in commands:
argv = ['ssh', ssh_host, 'VBoxManage'] + command
cliapp.runcmd(argv)
diff --git a/morphlib/writeexts.py b/morphlib/writeexts.py
index a479f3cb..469b8557 100755
--- a/morphlib/writeexts.py
+++ b/morphlib/writeexts.py
@@ -184,3 +184,11 @@ class WriteExtension(cliapp.Application):
cliapp.runcmd(['sync'])
time.sleep(2)
+ def parse_attach_disks(self):
+ '''Parse $ATTACH_DISKS into list of disks to attach.'''
+
+ if 'ATTACH_DISKS' in os.environ:
+ s = os.environ['ATTACH_DISKS']
+ return s.split(':')
+ else:
+ return []