Skip to content
Snippets Groups Projects
Commit a2758e83 authored by Aurélien Dunand's avatar Aurélien Dunand
Browse files

Add VM install mode support

parent f7dbb53f
No related branches found
No related tags found
No related merge requests found
......@@ -113,6 +113,10 @@ class NodeConfigParser(object):
self.define_script = config.get('node', 'define_script', default_define_script)
default_rescue_script = 'hkvm-rescue'
self.rescue_script = config.get('node', 'rescue_script', default_rescue_script)
default_install_script = 'hkvm-install'
self.install_script = config.get('node', 'install_script', default_install_script)
default_mode_script = 'hkvm-mode'
self.mode_script = config.get('node', 'mode_script', default_mode_script)
default_vlan_script = 'hkvm-vlan'
self.vlan_script = config.get('node', 'vlan_script', default_vlan_script)
default_attach_script = 'hkvm-attach'
......
......@@ -258,6 +258,30 @@ class Handler(HostHandler):
logger.error(msg)
raise UndefinedDomain(msg)
@libvirt_handler
def vm_install(self, name):
logger.debug('VM install %s', name)
if name in self.hypervisor.domains:
rcode, output = execute(self.main, [self.main.config.install_script, '-i', name])
if rcode != 0:
raise RuntimeError(output.strip().split('\n')[-1].strip())
else:
msg = 'Cannot install VM %s because it is not defined' % name
logger.error(msg)
raise UndefinedDomain(msg)
@libvirt_handler
def vm_uninstall(self, name):
logger.debug('VM uninstall %s', name)
if name in self.hypervisor.domains:
rcode, output = execute(self.main, [self.main.config.install_script, '-u', name])
if rcode != 0:
raise RuntimeError(output.strip().split('\n')[-1].strip())
else:
msg = 'Cannot uninstall VM %s because it is not defined' % name
logger.error(msg)
raise UndefinedDomain(msg)
@libvirt_handler
def vm_set_vlans(self, name, vlan_update_format, mac_address=None):
logger.debug('VM set vlan %s', name)
......
......@@ -60,14 +60,18 @@ def uuid(dom):
@background(max_concurrent=3)
def rescue(dom):
"""Is rescue mode enabled or not"""
rescue_path = dom.hypervisor.handler.main.config.rescue_script
rcode, output = execute(dom.hypervisor.handler.main, [rescue_path, '-s', dom.name])
def mode(dom):
"""Retrieve VM mode"""
mode_path = dom.hypervisor.handler.main.config.mode_script
rcode, output = execute(dom.hypervisor.handler.main, [mode_path, '-m', dom.name])
if rcode == 0:
return output.strip()
try:
res = output.rsplit(':', 1)[-1].strip()
except IndexError:
res = 'error'
else:
return 'error'
res= 'error'
return res
def status(dom):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment