summaryrefslogtreecommitdiff
path: root/morphlib/exts
diff options
context:
space:
mode:
authorTiago Gomes <tiago.gomes@codethink.co.uk>2013-05-10 08:20:32 +0000
committerTiago Gomes <tiago.gomes@codethink.co.uk>2013-05-10 08:20:32 +0000
commit6cbc4e0a701ac6f2a14b48a0dd13ecc716822734 (patch)
tree8e12d386f01bb0b22b5a5ec939acac594dabed48 /morphlib/exts
parentf6b904bbbc98cbf430beabc2359af9d6607c369d (diff)
parentcf06b44be82ae862b89fe789d018264b9d99ef3e (diff)
downloadmorph-6cbc4e0a701ac6f2a14b48a0dd13ecc716822734.tar.gz
Merge git://git.baserock.org/baserock/baserock/morph into baserock/tiagogomes/drop-config
Diffstat (limited to 'morphlib/exts')
-rwxr-xr-xmorphlib/exts/kvm.write19
-rwxr-xr-xmorphlib/exts/virtualbox-ssh.write9
2 files changed, 17 insertions, 11 deletions
diff --git a/morphlib/exts/kvm.write b/morphlib/exts/kvm.write
index 630f6ae7..e2f7435c 100755
--- a/morphlib/exts/kvm.write
+++ b/morphlib/exts/kvm.write
@@ -56,6 +56,7 @@ class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
temp_root, location = args
ssh_host, vm_name, vm_path = self.parse_location(location)
+ autostart = self.parse_autostart()
fd, raw_disk = tempfile.mkstemp()
os.close(fd)
@@ -63,7 +64,7 @@ class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
try:
self.transfer(raw_disk, ssh_host, vm_path)
- self.create_libvirt_guest(ssh_host, vm_name, vm_path)
+ self.create_libvirt_guest(ssh_host, vm_name, vm_path, autostart)
except BaseException:
sys.stderr.write('Error deploying to libvirt')
os.remove(raw_disk)
@@ -95,7 +96,7 @@ class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
with open(raw_disk, 'rb') as f:
cliapp.runcmd(['rsync', '-zS', raw_disk, target])
- def create_libvirt_guest(self, ssh_host, vm_name, vm_path):
+ def create_libvirt_guest(self, ssh_host, vm_name, vm_path, autostart):
'''Create the libvirt virtual machine.'''
self.status(msg='Creating libvirt/kvm virtual machine')
@@ -107,13 +108,13 @@ class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
ram_mebibytes = str(self.get_ram_size() / (1024**2))
- cliapp.runcmd(
- ['ssh', ssh_host,
- 'virt-install', '--connect qemu:///system', '--import',
- '--name', vm_name, '--vnc', '--noreboot',
- '--ram=%s' % ram_mebibytes,
- '--disk path=%s,bus=ide' % vm_path] +
- attach_opts)
+ cmdline = ['ssh', ssh_host,
+ 'virt-install', '--connect qemu:///system', '--import',
+ '--name', vm_name, '--vnc', '--ram=%s' % ram_mebibytes,
+ '--disk path=%s,bus=ide' % vm_path] + attach_opts
+ if not autostart:
+ cmdline += '--noreboot'
+ cliapp.runcmd(cmdline)
KvmPlusSshWriteExtension().run()
diff --git a/morphlib/exts/virtualbox-ssh.write b/morphlib/exts/virtualbox-ssh.write
index 37f56524..cb17b69b 100755
--- a/morphlib/exts/virtualbox-ssh.write
+++ b/morphlib/exts/virtualbox-ssh.write
@@ -62,6 +62,7 @@ class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
temp_root, location = args
ssh_host, vm_name, vdi_path = self.parse_location(location)
+ autostart = self.parse_autostart()
fd, raw_disk = tempfile.mkstemp()
os.close(fd)
@@ -70,7 +71,8 @@ class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
try:
self.transfer_and_convert_to_vdi(
raw_disk, ssh_host, vdi_path)
- self.create_virtualbox_guest(ssh_host, vm_name, vdi_path)
+ self.create_virtualbox_guest(ssh_host, vm_name, vdi_path,
+ autostart)
except BaseException:
sys.stderr.write('Error deploying to VirtualBox')
os.remove(raw_disk)
@@ -105,7 +107,7 @@ class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
str(os.path.getsize(raw_disk))],
stdin=f)
- def create_virtualbox_guest(self, ssh_host, vm_name, vdi_path):
+ def create_virtualbox_guest(self, ssh_host, vm_name, vdi_path, autostart):
'''Create the VirtualBox virtual machine.'''
self.status(msg='Create VirtualBox virtual machine')
@@ -134,6 +136,9 @@ class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension):
'--medium', disk]
commands.append(cmd)
+ if autostart:
+ commands.append(['startvm', vm_name])
+
for command in commands:
argv = ['ssh', ssh_host, 'VBoxManage'] + command
cliapp.runcmd(argv)