diff options
author | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2013-03-20 10:13:37 +0000 |
---|---|---|
committer | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2013-03-20 10:13:37 +0000 |
commit | bb756677ed0bc538199cd55911df7212e3cb76fd (patch) | |
tree | f6a06576f77aa97792ce7ececfe40b61e18a8d35 | |
parent | 9bbb0a24f58260f4ce2aefbc0fe2c8c804e33c3e (diff) | |
parent | 849519e5626e9179c9b5c23f8303f92ea6212cb9 (diff) | |
download | morph-bb756677ed0bc538199cd55911df7212e3cb76fd.tar.gz |
Merge branch 'liw/attach_disks'
Reviewed-by: Jonathan Maw <jonathan.maw@codethink.co.uk>
-rwxr-xr-x | morphlib/exts/kvm.write | 9 | ||||
-rwxr-xr-x | morphlib/exts/virtualbox-ssh.write | 12 | ||||
-rwxr-xr-x | morphlib/writeexts.py | 8 |
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 [] |