mcvirt package

Subpackages

Submodules

mcvirt.argument_validator module

Argument validators.

class mcvirt.argument_validator.ArgumentValidator[source]

Bases: object

Provide methods to validate argument values

static validate_boolean(variable)[source]

Ensure variable is a boolean

static validate_drbd_resource(variable)[source]

Validate DRBD resource name

static validate_hostname(hostname)[source]

Validate a hostname

static validate_integer(value)[source]

Validate integer

static validate_network_name(name)[source]

Validate the name of a network

static validate_positive_integer(value)[source]

Validate that a given variable is a positive integer

mcvirt.bash-complete module

mcvirt.config_file module

Provide base class for configuration files

class mcvirt.config_file.ConfigFile[source]

Bases: object

Provides operations to obtain and set the MCVirt configuration for a VM

CURRENT_VERSION = 4
GIT = '/usr/bin/git'
static create()[source]

Creates a basic VM configuration for new VMs

getPermissionConfig()[source]
get_config()[source]

Load the VM configuration from disk and returns the parsed JSON.

static get_config_path(vm_name)[source]

Provide the path of the VM-specific configuration file

gitAdd(message='')[source]

Commits changes to an added or modified configuration file

gitRemove(message='')[source]

Removes and commits a configuration file

setConfigPermissions()[source]

Sets file permissions for config directories

update_config(callback_function, reason='')[source]

Write a provided configuration back to the configuration file.

upgrade()[source]

Performs an upgrade of the config file

mcvirt.constants module

Provide constants used throughout MCVirt.

class mcvirt.constants.DirectoryLocation[source]

Bases: object

Provides directory/file path constants.

BASE_STORAGE_DIR = '/var/lib/mcvirt'
BASE_VM_STORAGE_DIR = '/var/lib/mcvirt/build-4189623-project-52530-mcvirt/vm'
ISO_STORAGE_DIR = '/var/lib/mcvirt/build-4189623-project-52530-mcvirt/iso'
LOCK_FILE = '/var/run/lock/mcvirt/lock'
LOCK_FILE_DIR = '/var/run/lock/mcvirt'
LOG_FILE = '/var/log/mcvirt.log'
NODE_STORAGE_DIR = '/var/lib/mcvirt/build-4189623-project-52530-mcvirt'
TEMPLATE_DIR = '/usr/lib/mcvirt/templates'

mcvirt.exceptions module

Provide access to all MCVirt exceptions.

exception mcvirt.exceptions.ArgumentParserException[source]

Bases: mcvirt.exceptions.MCVirtException

An invalid argument was provided

exception mcvirt.exceptions.AttributeAlreadyChanged[source]

Bases: mcvirt.exceptions.MCVirtException

Attribute, user is trying to change, has already changed

exception mcvirt.exceptions.AuthenticationError[source]

Bases: mcvirt.exceptions.MCVirtException

Incorrect credentials

exception mcvirt.exceptions.BackupSnapshotAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

The backup snapshot for the logical volume already exists

exception mcvirt.exceptions.BackupSnapshotDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

The backup snapshot for the logical volume does not exist

exception mcvirt.exceptions.BlankPasswordException[source]

Bases: mcvirt.exceptions.MCVirtException

The provided password is blank

exception mcvirt.exceptions.CACertificateAlreadyExists[source]

Bases: mcvirt.exceptions.MCVirtException

CA file for server already exists

exception mcvirt.exceptions.CACertificateNotFoundException[source]

Bases: mcvirt.exceptions.MCVirtException

CA certificate for host could not be found

exception mcvirt.exceptions.CAFileAlreadyExists[source]

Bases: mcvirt.exceptions.MCVirtException

The CA file already exists.

exception mcvirt.exceptions.CannotCloneDrbdBasedVmsException[source]

Bases: mcvirt.exceptions.MCVirtException

Cannot clone Drbd-based VMs

exception mcvirt.exceptions.CannotDeleteClonedVmException[source]

Bases: mcvirt.exceptions.MCVirtException

Cannot delete a cloned VM

exception mcvirt.exceptions.CannotMigrateLocalDiskException[source]

Bases: mcvirt.exceptions.MCVirtException

Local disks cannot be migrated

exception mcvirt.exceptions.CannotStartClonedVmException[source]

Bases: mcvirt.exceptions.MCVirtException

Cloned VMs cannot be started

exception mcvirt.exceptions.ClusterNotInitialisedException[source]

Bases: mcvirt.exceptions.MCVirtException

The cluster has not been initialised, so cannot connect to the remote node

exception mcvirt.exceptions.ConfigFileCouldNotBeFoundException[source]

Bases: mcvirt.exceptions.MCVirtException

Config file could not be found

exception mcvirt.exceptions.ConnectionFailureToRemoteLibvirtInstance[source]

Bases: mcvirt.exceptions.MCVirtException

Connection failure whilst attempting to obtain a remote libvirt connection

exception mcvirt.exceptions.CouldNotConnectToNodeException[source]

Bases: mcvirt.exceptions.MCVirtException

Could not connect to remove cluster node

exception mcvirt.exceptions.CurrentUserError[source]

Bases: mcvirt.exceptions.MCVirtException

Error whilst obtaining current pyro user

exception mcvirt.exceptions.DiskAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

The disk already exists

exception mcvirt.exceptions.DrbdAlreadyEnabled[source]

Bases: mcvirt.exceptions.MCVirtException

Drbd has already been enabled on this node

exception mcvirt.exceptions.DrbdBlockDeviceDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

Drbd block device does not exist

exception mcvirt.exceptions.DrbdNotEnabledOnNode[source]

Bases: mcvirt.exceptions.MCVirtException

Drbd volumes cannot be created on a node that has not been configured to use Drbd

exception mcvirt.exceptions.DrbdNotInstalledException[source]

Bases: mcvirt.exceptions.MCVirtException

Drbd is not installed

exception mcvirt.exceptions.DrbdStateException[source]

Bases: mcvirt.exceptions.MCVirtException

The Drbd state is not OK

exception mcvirt.exceptions.DrbdVolumeNotInSyncException[source]

Bases: mcvirt.exceptions.MCVirtException

The last Drbd verification of the volume failed

exception mcvirt.exceptions.DuplicatePermissionException[source]

Bases: mcvirt.exceptions.MCVirtException

User already exists in group

exception mcvirt.exceptions.ExternalStorageCommandErrorException[source]

Bases: mcvirt.exceptions.MCVirtException

An error occurred whilst performing an external command

exception mcvirt.exceptions.FailedToRemoveFileException[source]

Bases: mcvirt.exceptions.MCVirtException

A failure occurred whilst trying to remove an ISO

exception mcvirt.exceptions.HardDriveDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

The given hard drive does not exist

exception mcvirt.exceptions.InaccessibleNodeException[source]

Bases: mcvirt.exceptions.MCVirtException, Pyro4.errors.SecurityError

Unable to connect to node in the cluster

exception mcvirt.exceptions.IncorrectCredentials[source]

Bases: mcvirt.exceptions.MCVirtException

The supplied credentials are incorrect

exception mcvirt.exceptions.InsufficientPermissionsException[source]

Bases: mcvirt.exceptions.MCVirtException

User does not have the required permission

exception mcvirt.exceptions.InterfaceDoesNotExist[source]

Bases: mcvirt.exceptions.MCVirtException

Physical interface does not exist

exception mcvirt.exceptions.InvalidArgumentException[source]

Bases: mcvirt.exceptions.MCVirtException

Argument given is not valid

exception mcvirt.exceptions.InvalidConnectionString[source]

Bases: mcvirt.exceptions.MCVirtException

Connection string is invalid

exception mcvirt.exceptions.InvalidIPAddressException[source]

Bases: mcvirt.exceptions.MCVirtException

The specified IP address is invalid

exception mcvirt.exceptions.InvalidISOPathException[source]

Bases: mcvirt.exceptions.MCVirtException

ISO to add does not exist

exception mcvirt.exceptions.InvalidNodesException[source]

Bases: mcvirt.exceptions.MCVirtException

The nodes passed is invalid

exception mcvirt.exceptions.InvalidPermissionGroupException[source]

Bases: mcvirt.exceptions.MCVirtException

Attempted to perform actions on an invalid permission group

exception mcvirt.exceptions.InvalidUserTypeException[source]

Bases: mcvirt.exceptions.MCVirtException

An invalid user type was specified.

exception mcvirt.exceptions.InvalidUsernameException[source]

Bases: mcvirt.exceptions.MCVirtException

Username is within a reserved namespace

exception mcvirt.exceptions.InvalidVirtualMachineNameException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is being created with an invalid name

exception mcvirt.exceptions.InvalidVolumeGroupNameException[source]

Bases: mcvirt.exceptions.MCVirtException

The specified name of the volume group is invalid

exception mcvirt.exceptions.IsoAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

An ISO with the same name already exists

exception mcvirt.exceptions.IsoInUseException[source]

Bases: mcvirt.exceptions.MCVirtException

The ISO is in use, so cannot be removed

exception mcvirt.exceptions.IsoNotPresentOnDestinationNodeException[source]

Bases: mcvirt.exceptions.MCVirtException

ISO attached to VM does not exist on destination node whilst performing a migration]

exception mcvirt.exceptions.LibVirtConnectionException[source]

Bases: mcvirt.exceptions.MCVirtException

An error ocurred whilst connecting to LibVirt

exception mcvirt.exceptions.LibvirtException[source]

Bases: mcvirt.exceptions.MCVirtException

Issue with performing libvirt command

exception mcvirt.exceptions.LibvirtNotInstalledException[source]

Bases: mcvirt.exceptions.MCVirtException

Libvirt does not appear to be installed

exception mcvirt.exceptions.LogicalVolumeDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

A required logical volume does not exist

exception mcvirt.exceptions.MCVirtCommandException[source]

Bases: mcvirt.exceptions.MCVirtException

Provides an exception to be thrown after errors whilst calling external commands

exception mcvirt.exceptions.MCVirtException[source]

Bases: exceptions.Exception

Provides an exception to be thrown for errors in MCVirt

exception mcvirt.exceptions.MCVirtLockException[source]

Bases: mcvirt.exceptions.MCVirtException

A lock has already been found

exception mcvirt.exceptions.MigrationFailureExcpetion[source]

Bases: mcvirt.exceptions.MCVirtException

A Libvirt Exception occurred whilst performing a migration

exception mcvirt.exceptions.MissingConfigurationException[source]

Bases: mcvirt.exceptions.MCVirtException

Configuration is missing

exception mcvirt.exceptions.MustGenerateCertificateException[source]

Bases: mcvirt.exceptions.MCVirtException

The certificate cannot be manually added and must be generated

exception mcvirt.exceptions.NameNotSpecifiedException[source]

Bases: mcvirt.exceptions.MCVirtException

A name has not been specified and cannot be determined by the path/URL

exception mcvirt.exceptions.NetworkAdapterDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

The network adapter does not exist

exception mcvirt.exceptions.NetworkAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

Network already exists with the same name

exception mcvirt.exceptions.NetworkDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

Network does not exist

exception mcvirt.exceptions.NetworkUtilizedException[source]

Bases: mcvirt.exceptions.MCVirtException

Network is utilized by virtual machines

exception mcvirt.exceptions.NodeAlreadyPresent[source]

Bases: mcvirt.exceptions.MCVirtException

Node being added is already connected to cluster

exception mcvirt.exceptions.NodeAuthenticationException[source]

Bases: mcvirt.exceptions.MCVirtException

Incorrect password supplied for remote node

exception mcvirt.exceptions.NodeDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

The node does not exist

exception mcvirt.exceptions.NodeVersionMismatch[source]

Bases: Pyro4.errors.SecurityError

A node is running a different version of MCVirt

exception mcvirt.exceptions.OpenSSLNotFoundException[source]

Bases: mcvirt.exceptions.MCVirtException

The OpenSSL executable could not be found

exception mcvirt.exceptions.PasswordsDoNotMatchException[source]

Bases: mcvirt.exceptions.MCVirtException

The new passwords do not match

exception mcvirt.exceptions.ReachedMaximumStorageDevicesException[source]

Bases: mcvirt.exceptions.MCVirtException

Reached the limit to number of hard disks attached to VM

exception mcvirt.exceptions.RemoteCommandExecutionFailedException[source]

Bases: mcvirt.exceptions.MCVirtException

A remote command execution fails

exception mcvirt.exceptions.RemoteNodeLockedException[source]

Bases: mcvirt.exceptions.MCVirtException

Remote node is locked

exception mcvirt.exceptions.RemoteObjectConflict[source]

Bases: mcvirt.exceptions.MCVirtException

The remote node contains an object that will cause conflict when syncing

exception mcvirt.exceptions.StorageTypeNotSpecified[source]

Bases: mcvirt.exceptions.MCVirtException

Storage type has not been specified

exception mcvirt.exceptions.StorageTypesCannotBeMixedException[source]

Bases: mcvirt.exceptions.MCVirtException

Storage types cannot be mixed within a single VM

exception mcvirt.exceptions.UnknownRemoteCommandException[source]

Bases: mcvirt.exceptions.MCVirtException

An unknown command was passed to the remote machine

exception mcvirt.exceptions.UnknownStorageTypeException[source]

Bases: mcvirt.exceptions.MCVirtException

An hard drive object with an unknown disk type has been initialised

exception mcvirt.exceptions.UnprivilegedUserException[source]

Bases: mcvirt.exceptions.MCVirtException

Unprivileged user running executable

exception mcvirt.exceptions.UnsuitableNodeException[source]

Bases: mcvirt.exceptions.MCVirtException

The node is unsuitable to run the VM

exception mcvirt.exceptions.UserAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

The given user already exists.

exception mcvirt.exceptions.UserDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

The specified user does not exist

exception mcvirt.exceptions.UserNotPresentInGroup[source]

Bases: mcvirt.exceptions.MCVirtException

User to be removed from group is not in the group

exception mcvirt.exceptions.VirtualMachineDoesNotExistException[source]

Bases: mcvirt.exceptions.MCVirtException

Virtual machine does not exist

exception mcvirt.exceptions.VirtualMachineLockException[source]

Bases: mcvirt.exceptions.MCVirtException

Lock cannot be set to the current lock state

exception mcvirt.exceptions.VmAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is being created with a duplicate name

exception mcvirt.exceptions.VmAlreadyRegisteredException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is already registered on a node

exception mcvirt.exceptions.VmAlreadyStartedException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is already started when attempting to start it

exception mcvirt.exceptions.VmAlreadyStoppedException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is already stopped when attempting to stop it

exception mcvirt.exceptions.VmDirectoryAlreadyExistsException[source]

Bases: mcvirt.exceptions.MCVirtException

Directory for a VM already exists

exception mcvirt.exceptions.VmIsCloneException[source]

Bases: mcvirt.exceptions.MCVirtException

VM is a clone

exception mcvirt.exceptions.VmNotRegistered[source]

Bases: mcvirt.exceptions.MCVirtException

The virtual machine is not currently registered on a node

exception mcvirt.exceptions.VmRegisteredElsewhereException[source]

Bases: mcvirt.exceptions.MCVirtException

Attempt to perform an action on a VM registered on another node

exception mcvirt.exceptions.VmRunningException[source]

Bases: mcvirt.exceptions.MCVirtException

An offline migration can only be performed on a powered off VM

exception mcvirt.exceptions.VmStoppedException[source]

Bases: mcvirt.exceptions.MCVirtException

An online migraiton can only be performed on a powered on VM

exception mcvirt.exceptions.VncNotEnabledException[source]

Bases: mcvirt.exceptions.MCVirtException

VNC is not enabled on the VM

mcvirt.exceptions.exception_class

alias of InaccessibleNodeException

mcvirt.libvirt_connector module

class mcvirt.libvirt_connector.LibvirtConnector[source]

Bases: mcvirt.rpc.pyro_object.PyroObject

Obtains/manages Libvirt connections

get_connection(server=None)[source]

Obtains a Libvirt connection for a given server

mcvirt.logger module

class mcvirt.logger.LogItem(method, user, object_name, object_type)[source]

Bases: object

description
finish_error(exception)[source]
finish_error_unknown(exception)[source]
finish_success()[source]
start()[source]
class mcvirt.logger.LogState[source]

Bases: object

FAILED = {'status': 3, 'name': 'FAILED'}
QUEUED = {'status': 0, 'name': 'QUEUED'}
RUNNING = {'status': 1, 'name': 'RUNNING'}
SUCCESS = {'status': 2, 'name': 'SUCCESS'}
class mcvirt.logger.Logger[source]

Bases: mcvirt.rpc.pyro_object.PyroObject

LOGS = []
create_log(method, user, object_name, object_type)[source]
get_logs(start_log=None, back=0, newer=False)[source]
mcvirt.logger.getLogNames(callback, instance_method, object_type, args, kwargs)[source]

Attempts to determine object name and object type, based on method

mcvirt.mcvirt-drbd module

mcvirt.mcvirt_config module

class mcvirt.mcvirt_config.MCVirtConfig[source]

Bases: mcvirt.config_file.ConfigFile

Provides operations to obtain and set the MCVirt configuration for a VM

create()[source]

Create a basic VM configuration for new VMs

getListenAddress()[source]

Return the address that should be used for listening for connections - the stored IP address, if configured, else all interfaces

mcvirt.parser module

Provides argument parser.

class mcvirt.parser.Parser(verbose=True)[source]

Bases: object

Provides an argument parser for MCVirt.

parse_arguments(script_args=None)[source]

Parse arguments and performs actions based on the arguments.

print_status(status)[source]

Print if the user has specified that the parser should print statuses.

class mcvirt.parser.ThrowingArgumentParser(prog=None, usage=None, description=None, epilog=None, version=None, parents=[], formatter_class=<class 'argparse.HelpFormatter'>, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)[source]

Bases: argparse.ArgumentParser

Override the ArgumentParser class, in order to change the handling of errors.

error(message)[source]

Override the error function.

mcvirt.syslogger module

class mcvirt.syslogger.Syslogger[source]

Bases: object

Provide interface for logging to log file

LOGGER_INSTANCE = None
static get_log_level()[source]

Return the log level, set either by environmental variable or configuration in MCVirt config

static logger()[source]

Obtain logger instance if not already create, else return cached object

mcvirt.system module

class mcvirt.system.System[source]

Bases: object

static getNewPassword()[source]

Prompts the user for a new password, throwing an exception is the password is not repeated correctly

static getUserInput(display_text, password=False)[source]

Prompts the user for input

static runCommand(command_args, raise_exception_on_failure=True, cwd=None)[source]

Runs system command, throwing an exception if the exit code is not 0

mcvirt.utils module

mcvirt.utils.get_all_submodules(target_class)[source]

Returns all inheriting classes, recursively

mcvirt.utils.get_hostname()[source]

Returns the hostname of the system

mcvirt.version module

Module contents