¡@

Home 

OpenStack Study: dmcrypt.py

OpenStack Index

**** CubicPower OpenStack Study ****

def volume_name(base):

    """Returns the suffixed dmcrypt volume name.

    This is to avoid collisions with similarly named device mapper names for

    LVM volumes

    """

    return base + _dmcrypt_suffix

**** CubicPower OpenStack Study ****

def create_volume(target, device, cipher, key_size, key):

    """Sets up a dmcrypt mapping

    :param target: device mapper logical device name

    :param device: underlying block device

    :param cipher: encryption cipher string digestible by cryptsetup

    :param cipher: encryption key size

    :param key: encryption key as an array of unsigned bytes

    """

    cmd = ('cryptsetup',

           'create',

           target,

           device,

           '--cipher=' + cipher,

           '--key-size=' + str(key_size),

           '--key-file=-')

    key = ''.join(map(lambda byte: "%02x" % byte, key))

    utils.execute(*cmd, process_input=key, run_as_root=True)

**** CubicPower OpenStack Study ****

def delete_volume(target):

    """Deletes a dmcrypt mapping

    :param target: name of the mapped logical device

    """

    utils.execute('cryptsetup', 'remove', target, run_as_root=True)

**** CubicPower OpenStack Study ****

def list_volumes():

    """Function enumerates encrypted volumes."""

    return [dmdev for dmdev in os.listdir('/dev/mapper')

            if dmdev.endswith('-dmcrypt')]