Exemplo n.º 1
0
def addHostOnlyInterface():
    def parseResult(r):
        match = re.match("^Interface '(.+?)' was successfully created", r)
        if match:
            return OK(match.group(1))
        else:
            return Fail(VirtualBoxError("Failed to create a new Host Only Interface"))
    return vboxManager("hostonlyif", "create").bind(parseResult)
Exemplo n.º 2
0
def importOVF(importParams, name, ovfFile):
    '''
    Import the OVF file as a virtual box vm.
    '''
    ovfFile = Shell.normalizePath(ovfFile)
    importParams.insert(0, '"' + ovfFile + '"')
    return vboxManager("import", " ".join(importParams)) \
        .then(defer(readMachineID, name))
Exemplo n.º 3
0
def addPortForwards(ports, uuid):
    args = []
    for port in ports:
        args.append(port.getCreateArg())

    if len(args) > 0:
        return vboxManager("modifyvm", "\"%s\" %s" % (uuid, " ".join(args)))
    else:
        return OK(None)
Exemplo n.º 4
0
def configureHostOnlyInterface(name, ip, netmask):
    net = _netFrom(ip + "/" + netmask)
    if net.isFail():
        return net

    net = net.getOK()
    # if net.version == 6:
    #  return vboxManager("hostonlyif", "ipconfig \"%s\" --ipv6 \"%s\" --netmasklengthv6 \"%s\"" % (name, net.ip, net.prefixlen))

    return vboxManager("hostonlyif", "ipconfig \"%s\" --ip \"%s\" --netmask \"%s\"" % (name, net.ip, net.netmask))
Exemplo n.º 5
0
def readMachineID(name):
    '''
    Retrieve the driver specific machine ID for a machine name.
    '''
    def findMachineID(machs):
        revmach = dict(zip(machs.values(), machs.keys()))
        return OK(revmach[name]) if name in revmach else Fail(MachineDoesNotExist("No Machine ID found for \"%s\"" % name))

    return vboxManager("list", "vms") \
        .bind(parseMachinesList) \
        >> findMachineID
Exemplo n.º 6
0
def inspectOVF(ovfFile):
    '''
    Inspect an OVF file to extract it's examined output
    '''
    return vboxManager("import", '-n "%s"' % Shell.normalizePath(ovfFile))
Exemplo n.º 7
0
def removeSharedFolder(folder, uuid):
    return vboxManager("sharedfolder", "remove \"%s\" --name \"%s\"" % (uuid, folder.name))
Exemplo n.º 8
0
def enableSharedFolderSymlinks(folder, uuid):
    symlinksKey = "VBoxInternal2/SharedFoldersEnableSymlinksCreate/%s" % folder.name
    return vboxManager("setextradata", "\"%s\" \"%s\" \"%s\"" % (uuid, symlinksKey, 1))
Exemplo n.º 9
0
def readWaitGuestProperty(uuid, pattern, timeout=1000):
    logger.debug("Read wait(%ss) on pattern %s on %s" %
                 (timeout, pattern, uuid))
    return vboxManager("guestproperty", "wait %s %s --timeout %s" % (uuid, pattern, timeout))
Exemplo n.º 10
0
def readMachineInfo(uuid):
    return vboxManager("showvminfo", "--machinereadable \"%s\"" % uuid) \
        .bind(parseMachineInfo)
Exemplo n.º 11
0
def disableDHCP(hoif_name):
    arg = "--ifname \"%s\" --disable" % hoif_name
    return vboxManager("dhcpserver", "modify %s" % arg)
Exemplo n.º 12
0
def readMachineExists(uuid):
    return vboxManager("list", "vms").bind(defer(parseMachinesForID, uuid=uuid))
Exemplo n.º 13
0
def pause(uuid):
    return vboxManager("controlvm", "\"%s\" pause" % uuid) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 14
0
def suspend(uuid):
    return vboxManager("controlvm", "\"%s\" savestate" % uuid) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 15
0
def halt(uuid):
    return vboxManager("controlvm", "\"%s\" poweroff soft" % uuid) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 16
0
def start(uuid):
    return vboxManager("startvm", "--type headless \"%s\"" % (uuid)) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 17
0
def configureProfile(uuid, cpus, memory):
    return vboxManager("modifyvm", "\"%s\" --cpus %s --memory %s" % (uuid, cpus, memory))
Exemplo n.º 18
0
def configureAdapter(uuid, adapterId, adapterSettings):
    return vboxManager("modifyvm", "\"%s\" %s" % (uuid, adapterSettings.getAsArg(adapterId)))
Exemplo n.º 19
0
def readGuestProperty(uuid, prop):
    logger.debug("Read guest property %s on %s" % (prop, uuid))
    return vboxManager("guestproperty", "get %s %s" % (uuid, prop)) \
        .bind(parseGuestProperty)
Exemplo n.º 20
0
def readDHCPs():
    return vboxManager("list", "dhcpservers") \
        .bind(defer(_mapAsBlocks, func=parseDHCPBlock))
Exemplo n.º 21
0
def readHostOnlyInterfaces():
    return vboxManager("list", "hostonlyifs") \
        .bind(defer(_mapAsBlocks, func=parseHostOnlyInterfaceBlock))
Exemplo n.º 22
0
def resume(uuid):
    return vboxManager("controlvm", "\"%s\" resume" % uuid) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 23
0
def addDHCP(hoif_name, gateway, netmask, lowerIP, upperIP):
    arg = "--ifname \"%s\" --ip \"%s\" --netmask \"%s\" --lowerip \"%s\" --upperip \"%s\" --enable" % (
        hoif_name, gateway, netmask, lowerIP, upperIP)
    return vboxManager("dhcpserver", "add %s" % arg) \
        .then(defer(enableDHCP, hoif_name=hoif_name))
Exemplo n.º 24
0
def readPortForwards(uuid):
    return vboxManager("showvminfo", "--machinereadable \"%s\"" % uuid) >> parsePortForwards
Exemplo n.º 25
0
def removeDHCP(hoif_name):
    return vboxManager("dhcpserver", "remove --ifname \"%s\"" % hoif_name)
Exemplo n.º 26
0
def addSharedFolder(folder, uuid):
    return vboxManager("sharedfolder", "add \"%s\" --name \"%s\" --hostpath \"%s\"" % (uuid, folder.name, folder.hostPath)) \
        .then(defer(enableSharedFolderSymlinks, folder=folder, uuid=uuid))
Exemplo n.º 27
0
def terminate(uuid):
    return vboxManager("controlvm", "\"%s\" poweroff" % uuid) \
        .bind(lambda x: OK(uuid))
Exemplo n.º 28
0
def readMachineState(uuid):
    return vboxManager("showvminfo", "--machinereadable \"%s\"" % uuid) \
        .catch(lambda err: OK("inexistent") if err.code == "VBOX_E_OBJECT_NOT_FOUND" else Fail(err)) \
        .bind(parseMachineState)
Exemplo n.º 29
0
def readPortForward(uuid, name=None):
    return vboxManager("showvminfo", "--machinereadable \"%s\"" % uuid) \
        >> parsePortForwards \
        >> defer(filterPortForwards, name=name)
Exemplo n.º 30
0
def delete(uuid):
    return vboxManager("unregistervm", "--delete \"%s\"" % (uuid)) \
        .bind(lambda x: OK(uuid))