The diskimage_builder.block_device.blockdevice Module

class diskimage_builder.block_device.blockdevice.BlockDevice(params)

Bases: object

Handles block devices.

This class handles the complete setup and deletion of all aspects of the block device level.

A typical call sequence:

cmd_init: initialize the block device level config. After this
call it is possible to e.g. query information from the (partially automatic generated) internal state like root-label.
cmd_getval: retrieve information about the (internal) block device
state like the block image device (for bootloader) or the root-label (for writing fstab).
cmd_create: creates all the different aspects of the block
device. When this call is successful, the complete block level device is set up, filesystems are created and are mounted at the correct position. After this call it is possible to copy / install all the needed files into the appropriate directories.

cmd_writefstab: creates the (complete) fstab for the system.

cmd_umount: unmount and detaches all directories and used many
resources. After this call the used (e.g.) images are still available for further handling, e.g. converting from raw in some other format.
cmd_cleanup: removes everything that was created with the
‘cmd_create’ call, i.e. all images files themselves and internal temporary configuration.
cmd_delete: unmounts and removes everything that was created
during the ‘cmd_create’ all. This call should be used in error conditions when there is the need to remove all allocated resources immediately and as good as possible. From the functional point of view this is mostly the same as a call to ‘cmd_umount’ and ‘cmd_cleanup’ - but is typically more error tolerance.

In a script this should be called in the following way:

dib-block-device init … # From that point the database can be queried, like ROOT_LABEL=$(dib-block-device getval root-label)

Please note that currently the dib-block-device executable can only be used outside the chroot.

dib-block-device create … trap “dib-block-device delete …” EXIT # copy / install files dib-block-device umount … # convert image(s) dib-block-device cleanup … trap - EXIT

cmd_cleanup()

Cleanup all remaining relicts - in good case

cmd_create()

Creates the block device

cmd_delete()

Cleanup all remaining relicts - in case of an error

cmd_getval(symbol)

Retrieve value from block device level

The value of SYMBOL is printed to stdout. This is intended to be captured into bash-variables for backward compatibility (non python) access to internal configuration.

Arguments: :param symbol: the symbol to get

cmd_init()

Initialize block device setup

This initializes the block device setup layer. One major task is to parse and check the configuration, write it down for later examiniation and execution.

cmd_umount()

Unmounts the blockdevice and cleanup resources

cmd_writefstab()

Creates the fstab

class diskimage_builder.block_device.blockdevice.BlockDeviceState(filename=None)

Bases: _abcoll.MutableMapping

The global state singleton

An reference to an instance of this object is saved into nodes as a global repository. It wraps a single dictionary “state” and provides a few helper functions.

The state ends up used in two contexts:

  • The node list (including this state) is pickled and dumped between cmd_create() and later cmd_* calls that need to call the nodes.
  • Some other cmd_* calls, such as cmd_writefstab, only need access to values inside the state and not the whole node list, and load it from the json dump created after cmd_create()
debug_dump()

Log state to debug

save_state(filename)

Persist the state to disk

Parameters:filename – The file to persist state to