sbuild
1.6.10
|
A chroot stored on an LVM logical volume (LV). More...
#include <sbuild-chroot-lvm-snapshot.h>
Public Member Functions | |
virtual | ~chroot_lvm_snapshot () |
The destructor. | |
virtual chroot::ptr | clone () const |
Copy the chroot. More... | |
virtual chroot::ptr | clone_session (std::string const &session_id, std::string const &alias, std::string const &user, bool root) const |
Create a session chroot. More... | |
virtual chroot::ptr | clone_source () const |
Create a source chroot. More... | |
std::string const & | get_snapshot_device () const |
Get the logical volume snapshot device name. More... | |
void | set_snapshot_device (std::string const &snapshot_device) |
Set the logical volume snapshot device name. More... | |
std::string const & | get_snapshot_options () const |
Get the logical volume snapshot options. More... | |
void | set_snapshot_options (std::string const &snapshot_options) |
Set the logical volume snapshot options. More... | |
virtual std::string const & | get_chroot_type () const |
Get the type of the chroot. More... | |
virtual void | setup_env (chroot const &chroot, environment &env) const |
Set environment. More... | |
virtual session_flags | get_session_flags (chroot const &chroot) const |
Get the session flags of the chroot. More... | |
![]() | |
virtual | ~chroot_block_device_base () |
The destructor. | |
std::string const & | get_device () const |
Get the block device of the chroot. More... | |
void | set_device (std::string const &device) |
Set the block device of the chroot. More... | |
virtual std::string | get_path () const |
Get the path to the chroot. More... | |
![]() | |
virtual | ~chroot () |
The destructor. | |
std::string const & | get_name () const |
Get the name of the chroot. More... | |
void | set_name (std::string const &name) |
Set the name of the chroot. More... | |
std::string const & | get_description () const |
Get the description of the chroot. More... | |
void | set_description (std::string const &description) |
Set the description of the chroot. More... | |
std::string const & | get_mount_location () const |
Get the mount location of the chroot. More... | |
void | set_mount_location (std::string const &location) |
Set the mount location of the chroot. More... | |
string_list const & | get_users () const |
Get the users allowed to access the chroot. More... | |
void | set_users (string_list const &users) |
Set the users allowed to access the chroot. More... | |
string_list const & | get_groups () const |
Get the groups allowed to access the chroot. More... | |
void | set_groups (string_list const &groups) |
Set the users allowed to access the chroot. More... | |
string_list const & | get_root_users () const |
Get the users allowed to access the chroot as root. More... | |
void | set_root_users (string_list const &users) |
Set the users allowed to access the chroot as root. More... | |
string_list const & | get_root_groups () const |
Get the groups allowed to access the chroot as root. More... | |
void | set_root_groups (string_list const &groups) |
Set the groups allowed to access the chroot as root. More... | |
string_list const & | get_aliases () const |
Get the aliases of the chroot. More... | |
void | set_aliases (string_list const &aliases) |
Set the aliases of the chroot. More... | |
bool | get_preserve_environment () const |
Check if the environment should be preserved in the chroot. More... | |
void | set_preserve_environment (bool preserve_environment) |
Set if the environment should be preserved in the chroot. More... | |
std::string const & | get_default_shell () const |
Get default shell. More... | |
void | set_default_shell (std::string const &default_shell) |
Set the default shell. More... | |
regex const & | get_environment_filter () const |
Get the environment filter of the chroot. More... | |
void | set_environment_filter (regex const &environment_filter) |
Set the environment filter of the chroot. More... | |
bool | get_active () const |
Get the activity status of the chroot. More... | |
bool | get_original () const |
Get the originality of the chroot. More... | |
void | set_original (bool original) |
Set the originality of the chroot. More... | |
bool | get_run_setup_scripts () const |
Check if chroot setup scripts will be run. More... | |
std::string const & | get_script_config () const |
Get the script configuration file for the chroot. More... | |
void | set_script_config (std::string const &script_config) |
Set the script configuration file for the chroot. More... | |
std::string const & | get_profile () const |
Get the configuration profile for the chroot. More... | |
void | set_profile (std::string const &profile) |
Set configuration profile for the chroot. More... | |
string_list const & | get_command_prefix () const |
Get the command_prefix for the chroot. More... | |
void | set_command_prefix (string_list const &command_prefix) |
Set the command_prefix for the chroot. More... | |
verbosity | get_verbosity () const |
Get the message verbosity. More... | |
const char * | get_verbosity_string () const |
Get the message verbosity as a readable string. More... | |
void | set_verbosity (verbosity verbosity) |
Set the message verbosity. More... | |
void | set_verbosity (std::string const &verbosity) |
Set the message verbosity. More... | |
void | setup_env (environment &env) const |
Set environment. More... | |
void | lock (setup_type type) |
Lock a chroot during setup. More... | |
void | unlock (setup_type type, int status) |
Unlock a chroot during setup. More... | |
template<typename T > | |
std::shared_ptr< T > | get_facet () |
Get a chroot facet. More... | |
template<typename T > | |
const std::shared_ptr< const T > | get_facet () const |
Get a chroot facet. More... | |
template<typename T > | |
void | add_facet (std::shared_ptr< T > facet) |
Add a chroot facet. More... | |
template<typename T > | |
void | remove_facet () |
Remove a chroot facet. More... | |
template<typename T > | |
void | remove_facet (std::shared_ptr< T > facet) |
Remove a chroot facet. More... | |
template<typename T > | |
void | replace_facet (std::shared_ptr< T > facet) |
Replace an existing chroot facet with a new facet. More... | |
string_list | list_facets () const |
List all registered chroot facets. More... | |
session_flags | get_session_flags () const |
Get the session flags of the chroot. More... | |
void | get_details (format_detail &detail) const |
Get detailed information about the chroot for output. More... | |
void | print_details (std::ostream &stream) const |
Print detailed information about the chroot to a stream. More... | |
void | get_keyfile (keyfile &keyfile) const |
Copy the chroot properties into a keyfile. More... | |
void | set_keyfile (keyfile const &keyfile) |
Set the chroot properties from a keyfile. More... | |
Protected Member Functions | |
chroot_lvm_snapshot () | |
The constructor. | |
chroot_lvm_snapshot (const chroot_lvm_snapshot &rhs) | |
The copy constructor. | |
virtual void | setup_lock (chroot::setup_type type, bool lock, int status) |
Unlock a chroot during setup. More... | |
virtual void | get_details (chroot const &chroot, format_detail &detail) const |
Get detailed information about the chroot for output. More... | |
virtual void | get_keyfile (chroot const &chroot, keyfile &keyfile) const |
Copy the chroot properties into a keyfile. More... | |
virtual void | set_keyfile (chroot &chroot, keyfile const &keyfile, string_list &used_keys) |
Set the chroot properties from a keyfile. More... | |
![]() | |
chroot_block_device_base () | |
The constructor. | |
chroot_block_device_base (const chroot_block_device_base &rhs) | |
The copy constructor. | |
![]() | |
chroot () | |
The constructor. | |
chroot (const chroot &rhs) | |
The copy constructor. More... | |
void | set_run_setup_scripts (bool run_setup_scripts) |
Set whether chroot setup scripts will be run. More... | |
virtual void | setup_session_info (bool start) |
Set up persistent session information. More... | |
Private Attributes | |
std::string | snapshot_device |
LVM snapshot device name for lvcreate. | |
std::string | snapshot_options |
LVM snapshot options for lvcreate. | |
Friends | |
class | chroot |
Additional Inherited Members | |
![]() | |
enum | setup_type { SETUP_START, SETUP_RECOVER, SETUP_STOP } |
Type of setup to perform. More... | |
enum | session_flags { SESSION_NOFLAGS = 0, SESSION_CREATE = 1 << 0, SESSION_CLONE = 1 << 1, SESSION_PURGE = 1 << 2, SESSION_SOURCE = 1 << 3 } |
Chroot session properties. More... | |
enum | verbosity { VERBOSITY_QUIET, VERBOSITY_NORMAL, VERBOSITY_VERBOSE } |
Message verbosity. More... | |
enum | error_code { CHROOT_CREATE, CHROOT_DEVICE, CHROOT_TYPE, DEVICE_ABS, DEVICE_LOCK, DEVICE_NOTBLOCK, DEVICE_UNLOCK, DIRECTORY_ABS, FACET_INVALID, FACET_PRESENT, FILE_ABS, FILE_LOCK, FILE_NOTREG, FILE_OWNER, FILE_PERMS, FILE_UNLOCK, LOCATION_ABS, NAME_INVALID, SCRIPT_CONFIG_CV, SESSION_UNLINK, SESSION_WRITE, VERBOSITY_INVALID } |
Error codes. More... | |
typedef custom_error< error_code > | error |
Exception type. | |
typedef std::shared_ptr< chroot > | ptr |
A shared_ptr to a chroot object. | |
typedef std::shared_ptr< const chroot > | const_ptr |
A shared_ptr to a const chroot object. | |
![]() | |
static ptr | create (std::string const &type) |
Create a chroot. More... | |
![]() | |
std::string | device |
The block device to use. | |
A chroot stored on an LVM logical volume (LV).
A snapshot LV will be created and mounted on demand.
|
virtual |
Copy the chroot.
This is a virtual copy constructor.
Implements sbuild::chroot.
References chroot_lvm_snapshot().
Referenced by clone_source().
|
virtual |
Create a session chroot.
session_id | the identifier (session_id) for the new session. |
alias | used to initially identify the chroot. |
user | the user creating the session. |
root | true if the user has root access, otherwise false. |
Implements sbuild::chroot.
References chroot_lvm_snapshot().
|
virtual |
|
virtual |
|
protectedvirtual |
Get detailed information about the chroot for output.
chroot | the chroot to use. |
detail | the details to output to. |
Reimplemented from sbuild::chroot_block_device_base.
References sbuild::_(), sbuild::format_detail::add(), sbuild::chroot_block_device_base::get_details(), get_snapshot_device(), get_snapshot_options(), snapshot_device, and snapshot_options.
|
protectedvirtual |
Copy the chroot properties into a keyfile.
The keyfile group with the name of the chroot will be set; if it already exists, it will be removed before setting it.
chroot | the chroot to use. |
keyfile | the keyfile to use. |
Reimplemented from sbuild::chroot_block_device_base.
References sbuild::chroot_block_device_base::get_keyfile(), sbuild::chroot::get_name(), get_snapshot_device(), get_snapshot_options(), and sbuild::basic_keyfile< K, P >::set_object_value().
|
virtual |
Get the session flags of the chroot.
These determine how the Session controlling the chroot will operate.
chroot | the chroot to use. |
Reimplemented from sbuild::chroot_block_device_base.
References sbuild::chroot::SESSION_NOFLAGS, and sbuild::chroot::SESSION_PURGE.
std::string const & chroot_lvm_snapshot::get_snapshot_device | ( | ) | const |
Get the logical volume snapshot device name.
This is used by lvcreate.
References snapshot_device.
Referenced by get_details(), get_keyfile(), setup_env(), and setup_lock().
std::string const & chroot_lvm_snapshot::get_snapshot_options | ( | ) | const |
Get the logical volume snapshot options.
These are used by lvcreate.
References snapshot_options.
Referenced by get_details(), get_keyfile(), and setup_env().
|
protectedvirtual |
Set the chroot properties from a keyfile.
The chroot name must have previously been set, so that the correct keyfile group may be determined.
chroot | the chroot to use. |
keyfile | the keyfile to get the properties from. |
used_keys | a list of the keys used will be set. |
Reimplemented from sbuild::chroot_block_device_base.
References sbuild::chroot::get_name(), sbuild::basic_keyfile< K, P >::get_object_value(), sbuild::keyfile_base::PRIORITY_DEPRECATED, sbuild::keyfile_base::PRIORITY_DISALLOWED, sbuild::keyfile_base::PRIORITY_REQUIRED, sbuild::chroot_block_device_base::set_keyfile(), set_snapshot_device(), and set_snapshot_options().
void chroot_lvm_snapshot::set_snapshot_device | ( | std::string const & | snapshot_device | ) |
Set the logical volume snapshot device name.
This is used by lvcreate.
snapshot_device | the device name. |
References sbuild::chroot::DEVICE_ABS, sbuild::is_absname(), and snapshot_device.
Referenced by set_keyfile().
void chroot_lvm_snapshot::set_snapshot_options | ( | std::string const & | snapshot_options | ) |
Set the logical volume snapshot options.
These are used by lvcreate.
snapshot_options | the options. |
References snapshot_options.
Referenced by set_keyfile().
|
virtual |
Set environment.
Set the environment that the setup scripts will see during execution.
chroot | the chroot to use. |
env | the environment to set. |
Reimplemented from sbuild::chroot_block_device_base.
References sbuild::environment::add(), sbuild::basename(), get_snapshot_device(), get_snapshot_options(), and sbuild::chroot_block_device_base::setup_env().
|
protectedvirtual |
Unlock a chroot during setup.
The locking technique (if any) may vary depending upon the chroot type and setup stage. For example, during creation of an LVM snapshot a block device might require locking, but afterwards this will change to the new block device.
An error will be thrown on failure.
type | the type of setup being performed |
lock | true to lock, false to unlock |
status | the exit status of the setup commands (0 for success, nonzero for failure). |
Implements sbuild::chroot.
References sbuild::chroot::CHROOT_DEVICE, sbuild::chroot_block_device_base::device, sbuild::chroot::DEVICE_NOTBLOCK, sbuild::chroot_block_device_base::get_device(), get_snapshot_device(), sbuild::stat::is_block(), sbuild::chroot::setup_session_info(), sbuild::chroot::SETUP_START, and sbuild::chroot::SETUP_STOP.