sbuild::Chroot Class Reference

Common chroot data. More...

#include <sbuild-chroot.h>

Inheritance diagram for sbuild::Chroot:

Inheritance graph
[legend]
List of all members.

Public Types

typedef runtime_error_custom<
Chroot
error
 Exception type.
typedef std::tr1::shared_ptr<
Chroot
chroot_ptr
 A shared_ptr to an AuthConv object.
enum  SetupType {
  SETUP_START, SETUP_RECOVER, SETUP_STOP, RUN_START,
  RUN_STOP
}
 Type of setup to perform. More...
enum  SessionFlags { SESSION_CREATE = 1 << 0 }
 Chroot session properties. More...

Public Member Functions

virtual ~Chroot ()
 The destructor.
virtual chroot_ptr clone () const =0
 Copy the chroot.
std::string const & get_name () const
 Get the name of the chroot.
void set_name (std::string const &name)
 Set the name of the chroot.
std::string const & get_description () const
 Get the description of the chroot.
void set_description (std::string const &description)
 Set the description of the chroot.
virtual std::string const & get_mount_location () const
 Get the mount location of the chroot.
void set_mount_location (std::string const &location)
 Set the mount location of the chroot.
virtual std::string const & get_mount_device () const
 Get the mount device of the chroot.
void set_mount_device (std::string const &device)
 Set the mount device of the chroot.
unsigned int get_priority () const
 Get the priority of the chroot.
void set_priority (unsigned int priority)
 Set the priority of a chroot.
string_list const & get_groups () const
 Get the groups allowed to access the chroot.
void set_groups (string_list const &groups)
 Set the groups allowed to access the chroot.
string_list const & get_root_groups () const
 Get the groups allowed to access the chroot as root.
void set_root_groups (string_list const &groups)
 Set the groups allowed to access the chroot as root.
string_list const & get_aliases () const
 Get the aliases of the chroot.
void set_aliases (string_list const &aliases)
 Set the aliases of the chroot.
bool get_active () const
 Get the activity status of the chroot.
void set_active (bool active)
 Set the activity status of the chroot.
bool get_run_setup_scripts () const
 Check if chroot setup scripts will be run.
void set_run_setup_scripts (bool run_setup_scripts)
 Set whether chroot setup scripts will be run.
bool get_run_session_scripts () const
 Check if chroot session scripts will be run.
void set_run_session_scripts (bool run_session_scripts)
 Set whether chroot session scripts will be run.
virtual std::string const & get_chroot_type () const =0
 Get the type of the chroot.
virtual void setup_env (environment &env)
 Set environment.
virtual void setup_lock (SetupType type, bool lock)=0
 Lock a chroot during setup.
virtual SessionFlags get_session_flags () const =0
 Get the session flags of the chroot.
virtual void print_details (std::ostream &stream) const
 Print detailed information about the chroot to a stream.
virtual void print_config (std::ostream &stream) const
 Print the configuration group for a chroot in the format required by schroot.conf.

Static Public Member Functions

static chroot_ptr create (std::string const &type)
 Create a chroot.
static chroot_ptr create (keyfile const &keyfile, std::string const &group)
 Create a chroot.

Protected Member Functions

 Chroot ()
 The constructor.
 Chroot (keyfile const &keyfile, std::string const &group)
 The constructor.
virtual void setup_session_info (bool start)
 Set up persistent session information.
template<typename T>
format_detail< T > format_details (std::string const &name, T const &value) const
 Format a name-value pair for output.

Private Attributes

std::string name
 Chroot name.
std::string description
 Chroot description.
unsigned int priority
 Chroot prioroty.
string_list groups
 Groups allowed to access the chroot.
string_list root_groups
 Groups allowed to access the chroot as root.
string_list aliases
 Alternative names for the chroot.
std::string mount_location
 Location to mount chroot in the filesystem (if any).
std::string mount_device
 Block device to mount (if any).
bool active
 Chroot activity status.
bool run_setup_scripts
 Run chroot setup scripts?
bool run_session_scripts
 Run session setup scripts?

Classes

class  format_detail
 Helper to perform formatting of chroot details. More...

Detailed Description

Common chroot data.

This class contains all of the metadata associated with a single chroot, for all chroot types. This is the in-core representation of a chroot definition in the configuration file, and may be initialised directly from an open keyfile.


Member Typedef Documentation

typedef std::tr1::shared_ptr<Chroot> sbuild::Chroot::chroot_ptr
 

A shared_ptr to an AuthConv object.

typedef runtime_error_custom<Chroot> sbuild::Chroot::error
 

Exception type.


Member Enumeration Documentation

enum sbuild::Chroot::SessionFlags
 

Chroot session properties.

Enumerator:
SESSION_CREATE  The chroot supports session creation.

enum sbuild::Chroot::SetupType
 

Type of setup to perform.

Enumerator:
SETUP_START  Activate a chroot.
SETUP_RECOVER  Reactivate a chroot.
SETUP_STOP  Deactivate a chroot.
RUN_START  Start running a command in an active chroot.
RUN_STOP  End running a command in an active chroot.


Constructor & Destructor Documentation

Chroot::Chroot  )  [protected]
 

The constructor.

Chroot::Chroot keyfile const &  keyfile,
std::string const &  group
[protected]
 

The constructor.

Initialise from an open keyfile.

Parameters:
keyfile the configuration file
group the keyfile group (chroot name)

Chroot::~Chroot  )  [virtual]
 

The destructor.


Member Function Documentation

virtual chroot_ptr sbuild::Chroot::clone  )  const [pure virtual]
 

Copy the chroot.

This is a virtual copy constructor.

Returns:
a shared_ptr to the new copy of the chroot.

Implemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

Chroot::chroot_ptr Chroot::create keyfile const &  keyfile,
std::string const &  group
[static]
 

Create a chroot.

This is a factory function.

Parameters:
keyfile the configuration file
group the keyfile group (chroot name)
Returns:
a shared_ptr to the new chroot.

Chroot::chroot_ptr Chroot::create std::string const &  type  )  [static]
 

Create a chroot.

This is a factory function.

Parameters:
type the type of chroot to create.
Returns:
a shared_ptr to the new chroot.

template<typename T>
format_detail<T> sbuild::Chroot::format_details std::string const &  name,
T const &  value
const [inline, protected]
 

Format a name-value pair for output.

This is a convenience wrapper to construct a format_detail of the appropriate type.

Parameters:
name the name to output.
value the value to output.
Returns:
a format_detail of the appropriate type.

bool Chroot::get_active  )  const
 

Get the activity status of the chroot.

Returns:
true if active, false if inactive

string_list const & Chroot::get_aliases  )  const
 

Get the aliases of the chroot.

These are alternative names for the chroot.

Returns:
a list of names.

virtual std::string const& sbuild::Chroot::get_chroot_type  )  const [pure virtual]
 

Get the type of the chroot.

Returns:
the chroot type.

Implemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

std::string const & Chroot::get_description  )  const
 

Get the description of the chroot.

Returns:
the description.

string_list const & Chroot::get_groups  )  const
 

Get the groups allowed to access the chroot.

Returns:
a list of groups.

std::string const & Chroot::get_mount_device  )  const [virtual]
 

Get the mount device of the chroot.

Returns:
the device.

Reimplemented in sbuild::ChrootBlockDevice, and sbuild::ChrootLvmSnapshot.

std::string const & Chroot::get_mount_location  )  const [virtual]
 

Get the mount location of the chroot.

Returns:
the mount location.

Reimplemented in sbuild::ChrootPlain.

std::string const & Chroot::get_name  )  const
 

Get the name of the chroot.

Returns:
the name.

unsigned int Chroot::get_priority  )  const
 

Get the priority of the chroot.

This is a number indicating whether than a ditribution is older than another.

Returns:
the priority.

string_list const & Chroot::get_root_groups  )  const
 

Get the groups allowed to access the chroot as root.

Mmebers of these groups can switch to root without authenticating themselves.

Returns:
a list of groups.

bool Chroot::get_run_session_scripts  )  const
 

Check if chroot session scripts will be run.

Returns:
true if session scripts will be run, otherwise false.

bool Chroot::get_run_setup_scripts  )  const
 

Check if chroot setup scripts will be run.

Returns:
true if setup scripts will be run, otherwise false.

virtual SessionFlags sbuild::Chroot::get_session_flags  )  const [pure virtual]
 

Get the session flags of the chroot.

These determine how the Session controlling the chroot will operate.

Returns:
the session flags.

Implemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

void Chroot::print_config std::ostream &  stream  )  const [virtual]
 

Print the configuration group for a chroot in the format required by schroot.conf.

Parameters:
stream the stream to output to.
Todo:
Replace with proper serialisation code to stream to a keyfile.

Reimplemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

void Chroot::print_details std::ostream &  stream  )  const [virtual]
 

Print detailed information about the chroot to a stream.

The information is printed in plain text with one line per property.

Parameters:
stream the stream to output to.

Reimplemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

void Chroot::set_active bool  active  ) 
 

Set the activity status of the chroot.

Parameters:
active true if active, false if inactive

void Chroot::set_aliases string_list const &  aliases  ) 
 

Set the aliases of the chroot.

These are alternative names for the chroot.

Parameters:
aliases a list of names.

void Chroot::set_description std::string const &  description  ) 
 

Set the description of the chroot.

Parameters:
description the description.

void Chroot::set_groups string_list const &  groups  ) 
 

Set the groups allowed to access the chroot.

Parameters:
groups a list of groups.

void Chroot::set_mount_device std::string const &  device  ) 
 

Set the mount device of the chroot.

Parameters:
device the device.

void Chroot::set_mount_location std::string const &  location  ) 
 

Set the mount location of the chroot.

Parameters:
location the mount location.

void Chroot::set_name std::string const &  name  ) 
 

Set the name of the chroot.

Parameters:
name the name.

void Chroot::set_priority unsigned int  priority  ) 
 

Set the priority of a chroot.

This is a number indicating whether a distribution is older than another. For example, "oldstable" and "oldstable-security" might be 0, while "stable" and "stable-security" 1, "testing" 2 and "unstable" 3. The values are not important, but the difference between them is.

Parameters:
priority the priority.

void Chroot::set_root_groups string_list const &  groups  ) 
 

Set the groups allowed to access the chroot as root.

Mmebers of these groups can switch to root without authenticating themselves.

Parameters:
groups a list of groups.

void Chroot::set_run_session_scripts bool  run_session_scripts  ) 
 

Set whether chroot session scripts will be run.

Parameters:
run_session_scripts true if session scripts will be run, otherwise false.

void Chroot::set_run_setup_scripts bool  run_setup_scripts  ) 
 

Set whether chroot setup scripts will be run.

Parameters:
run_setup_scripts true if setup scripts will be run, otherwise false.

void Chroot::setup_env environment env  )  [virtual]
 

Set environment.

Set the environment that the setup scripts will see during execution.

Parameters:
env the environment to set.

Reimplemented in sbuild::ChrootBlockDevice, sbuild::ChrootFile, sbuild::ChrootLvmSnapshot, and sbuild::ChrootPlain.

virtual void sbuild::Chroot::setup_lock SetupType  type,
bool  lock
[pure virtual]
 

Lock 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.

Parameters:
type the type of setup being performed
lock true to lock, false to unlock

void Chroot::setup_session_info bool  start  )  [protected, virtual]
 

Set up persistent session information.

Parameters:
start true if startion, or false if ending a session.


Member Data Documentation

bool sbuild::Chroot::active [private]
 

Chroot activity status.

string_list sbuild::Chroot::aliases [private]
 

Alternative names for the chroot.

std::string sbuild::Chroot::description [private]
 

Chroot description.

string_list sbuild::Chroot::groups [private]
 

Groups allowed to access the chroot.

std::string sbuild::Chroot::mount_device [private]
 

Block device to mount (if any).

std::string sbuild::Chroot::mount_location [private]
 

Location to mount chroot in the filesystem (if any).

std::string sbuild::Chroot::name [private]
 

Chroot name.

unsigned int sbuild::Chroot::priority [private]
 

Chroot prioroty.

string_list sbuild::Chroot::root_groups [private]
 

Groups allowed to access the chroot as root.

bool sbuild::Chroot::run_session_scripts [private]
 

Run session setup scripts?

bool sbuild::Chroot::run_setup_scripts [private]
 

Run chroot setup scripts?


The documentation for this class was generated from the following files:
Generated on Wed Feb 1 11:43:52 2006 for schroot by  doxygen 1.4.6