charmhelpers.contrib.storage.linux package

charmhelpers.contrib.storage.linux.ceph module

class charmhelpers.contrib.storage.linux.ceph.CephBrokerRq(api_version=1)

Bases: object

Ceph broker request.

Multiple operations can be added to a request and sent to the Ceph broker to be executed.

Request is json-encoded for sending over the wire.

The API is versioned and defaults to version 1.

add_op_create_pool(name, replica_count=3)
request
class charmhelpers.contrib.storage.linux.ceph.CephBrokerRsp(encoded_rsp)

Bases: object

Ceph broker response.

Response is json-decoded and contents provided as methods/properties.

The API is versioned and defaults to version 1.

exit_code
exit_msg
charmhelpers.contrib.storage.linux.ceph.ceph_version()

Retrieve the local version of ceph.

charmhelpers.contrib.storage.linux.ceph.configure(service, key, auth, use_syslog)

Perform basic configuration of Ceph.

charmhelpers.contrib.storage.linux.ceph.copy_files(src, dst, symlinks=False, ignore=None)

Copy files from src to dst.

charmhelpers.contrib.storage.linux.ceph.create_key_file(service, key)

Create a file containing key.

charmhelpers.contrib.storage.linux.ceph.create_keyring(service, key)

Create a new Ceph keyring containing key.

charmhelpers.contrib.storage.linux.ceph.create_pool(service, name, replicas=3)

Create a new RADOS pool.

charmhelpers.contrib.storage.linux.ceph.create_rbd_image(service, pool, image, sizemb)

Create a new RADOS block device.

charmhelpers.contrib.storage.linux.ceph.delete_keyring(service)

Delete an existing Ceph keyring.

charmhelpers.contrib.storage.linux.ceph.delete_pool(service, name)

Delete a RADOS pool from ceph.

charmhelpers.contrib.storage.linux.ceph.ensure_ceph_keyring(service, user=None, group=None)

Ensures a ceph keyring is created for a named service and optionally ensures user and group ownership.

Returns False if no ceph key is available in relation state.

charmhelpers.contrib.storage.linux.ceph.ensure_ceph_storage(service, pool, rbd_img, sizemb, mount_point, blk_device, fstype, system_services=[], replicas=3)

NOTE: This function must only be called from a single service unit for the same rbd_img otherwise data loss will occur.

Ensures given pool and RBD image exists, is mapped to a block device, and the device is formatted and mounted at the given mount_point.

If formatting a device for the first time, data existing at mount_point will be migrated to the RBD device before being re-mounted.

All services listed in system_services will be stopped prior to data migration and restarted when complete.

charmhelpers.contrib.storage.linux.ceph.filesystem_mounted(fs)

Determine whether a filesytems is already mounted.

charmhelpers.contrib.storage.linux.ceph.get_ceph_nodes()

Query named relation ‘ceph’ to determine current nodes.

charmhelpers.contrib.storage.linux.ceph.get_osds(service)

Return a list of all Ceph Object Storage Daemons currently in the cluster.

charmhelpers.contrib.storage.linux.ceph.image_mapped(name)

Determine whether a RADOS block device is mapped locally.

charmhelpers.contrib.storage.linux.ceph.install()

Basic Ceph client installation.

charmhelpers.contrib.storage.linux.ceph.make_filesystem(blk_device, fstype='ext4', timeout=10)

Make a new filesystem on the specified block device.

charmhelpers.contrib.storage.linux.ceph.map_block_storage(service, pool, image)

Map a RADOS block device for local use.

charmhelpers.contrib.storage.linux.ceph.modprobe(module)

Load a kernel module and configure for auto-load on reboot.

charmhelpers.contrib.storage.linux.ceph.place_data_on_block_device(blk_device, data_src_dst)

Migrate data in data_src_dst to blk_device and then remount.

charmhelpers.contrib.storage.linux.ceph.pool_exists(service, name)

Check to see if a RADOS pool already exists.

charmhelpers.contrib.storage.linux.ceph.rbd_exists(service, pool, rbd_img)

Check to see if a RADOS block device exists.

charmhelpers.contrib.storage.linux.loopback module

charmhelpers.contrib.storage.linux.loopback.create_loopback(file_path)

Create a loopback device for a given backing file.

Returns:str: Full path to new loopback device (eg, /dev/loop0)
charmhelpers.contrib.storage.linux.loopback.ensure_loopback_device(path, size)

Ensure a loopback device exists for a given backing file path and size. If it a loopback device is not mapped to file, a new one will be created.

TODO: Confirm size of found loopback device.

Returns:str: Full path to the ensured loopback device (eg, /dev/loop0)
charmhelpers.contrib.storage.linux.loopback.loopback_devices()

Parse through ‘losetup -a’ output to determine currently mapped loopback devices. Output is expected to look like:

/dev/loop0: [0807]:961814 (/tmp/my.img)
Returns:dict: a dict mapping {loopback_dev: backing_file}

charmhelpers.contrib.storage.linux.lvm module

charmhelpers.contrib.storage.linux.lvm.create_lvm_physical_volume(block_device)

Initialize a block device as an LVM physical volume.

Parameters:block_device – str: Full path of block device to initialize.
charmhelpers.contrib.storage.linux.lvm.create_lvm_volume_group(volume_group, block_device)

Create an LVM volume group backed by a given block device.

Assumes block device has already been initialized as an LVM PV.

Parameters:volume_group – str: Name of volume group to create.
Block_device:str: Full path of PV-initialized block device.
charmhelpers.contrib.storage.linux.lvm.deactivate_lvm_volume_group(block_device)

Deactivate any volume gruop associated with an LVM physical volume.

Parameters:block_device – str: Full path to LVM physical volume
charmhelpers.contrib.storage.linux.lvm.is_lvm_physical_volume(block_device)

Determine whether a block device is initialized as an LVM PV.

Parameters:block_device – str: Full path of block device to inspect.
Returns:boolean: True if block device is a PV, False if not.
charmhelpers.contrib.storage.linux.lvm.list_lvm_volume_group(block_device)

List LVM volume group associated with a given block device.

Assumes block device is a valid LVM PV.

Parameters:block_device – str: Full path of block device to inspect.
Returns:str: Name of volume group associated with block device or None
charmhelpers.contrib.storage.linux.lvm.remove_lvm_physical_volume(block_device)

Remove LVM PV signatures from a given block device.

Parameters:block_device – str: Full path of block device to scrub.

charmhelpers.contrib.storage.linux.utils module

charmhelpers.contrib.storage.linux.utils.is_block_device(path)

Confirm device at path is a valid block device node.

Returns:boolean: True if path is a block device, False if not.
charmhelpers.contrib.storage.linux.utils.is_device_mounted(device)

Given a device path, return True if that device is mounted, and False if it isn’t.

Parameters:device – str: Full path of the device to check.
Returns:boolean: True if the path represents a mounted device, False if it doesn’t.
charmhelpers.contrib.storage.linux.utils.zap_disk(block_device)

Clear a block device of partition table. Relies on sgdisk, which is installed as pat of the ‘gdisk’ package in Ubuntu.

Parameters:block_device – str: Full path of block device to clean.