Commit a2758e83 authored by Aurélien Dunand's avatar Aurélien Dunand
Browse files

Add VM install mode support

parent f7dbb53f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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'
+24 −0
Original line number Diff line number Diff line
@@ -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)
+10 −6
Original line number Diff line number Diff line
@@ -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):