Exemplo n.º 1
0
def map_volume(name, assume_v0=False, v0_size=-1, readonly=False, **kwargs):
    if not loaded_module("blktap"):
        raise Error("blktap module not loaded")

    if not is_valid_name(name):
        raise Error("Invalid volume name")

    device = is_mapped(name)
    if device is not None:
        raise Error("Volume %s already mapped on device %s%s" % (name,
                    '/dev/xen/blktap-2/tapdev', device))

    try:
        device = VlmcTapdisk.create(name, vport=peers['vlmcd'].portno_start,
                                    mport=peers['mapperd'].portno_start,
                                    assume_v0=assume_v0, v0_size=v0_size,
                                    readonly=readonly)
        if device:
            sys.stderr.write(device + '\n')
            return device.split(DEVICE_PREFIX)[1]
        raise Error("Cannot map volume '%s'.\n" % name)
    except Exception, reason:
        raise Error(name + ': ' + str(reason))