qubesadmin.tools package¶
Submodules¶
qubesadmin.tools.dochelpers module¶
Documentation helpers.
This module contains classes and functions which help to maintain documentation, particularly our custom Sphinx extension.
- class qubesadmin.tools.dochelpers.CommandCheckVisitor(command, sub_commands, document)[source]¶
Bases:
SparseNodeVisitorChecks if the visited sub command section nodes and the specified sub command args are in sync.
- check_undocumented_sub_commands()[source]¶
Call this to check if any undocumented sub_commands are left.
While the documentation talks about a ‘SparseNodeVisitor.depart_document()’ function, this function does not exists. (For details see implementation of
NodeVisitor.dispatch_departure()) So we need to manually call this.
- visit_Text(node)[source]¶
If the visited text node starts with ‘alias: ‘, all the provided comma separted alias in this node, are removed from self.sub_commands
- visit_section(node)[source]¶
Checks if the visited sub-command section nodes exists and it options are in sync.
Uses
OptionsCheckVisitorfor checking sub-commands options
- class qubesadmin.tools.dochelpers.ManpageCheckVisitor(app, command, document)[source]¶
Bases:
SparseNodeVisitorChecks if the sub-commands and options specified in the ‘COMMAND’ and ‘OPTIONS’ (case insensitve) sections in sync the command parser.
- class qubesadmin.tools.dochelpers.OptionsCheckVisitor(command, args, document)[source]¶
Bases:
SparseNodeVisitorChecks if the visited option nodes and the specified args are in sync.
- check_undocumented_arguments(ignored_options=None)[source]¶
Call this to check if any undocumented arguments are left.
While the documentation talks about a ‘SparseNodeVisitor.depart_document()’ function, this function does not exists. (For details see implementation of
NodeVisitor.dispatch_departure()) So we need to manually call this.
qubesadmin.tools.qubes_prefs module¶
Manipulate global properties.
qubesadmin.tools.qvm_backup module¶
qvm-backup tool
qubesadmin.tools.qvm_backup_restore module¶
Console frontend for backup restore code
- qubesadmin.tools.qvm_backup_restore.handle_broken(app, args, restore_info)[source]¶
Display information about problems with VMs selected for resetore
qubesadmin.tools.qvm_check module¶
Exits sucessfull if the provided domain(s) exist, else returns failure
- class qubesadmin.tools.qvm_check.QvmCheckArgumentParser(description)[source]¶
Bases:
QubesArgumentParserExtended argument parser for qvm-check to collect invalid domains
- class qubesadmin.tools.qvm_check.QvmCheckVmNameAction(option_strings, nargs=1, dest='vmnames', help=None, **kwargs)[source]¶
Bases:
VmNameActionAction for parsing one or multiple valid/invalid VMNAMEs
qubesadmin.tools.qvm_clone module¶
Clone a domain
qubesadmin.tools.qvm_create module¶
qvm-create tool
qubesadmin.tools.qvm_device module¶
Qubes volume and block device management
- class qubesadmin.tools.qvm_device.DeviceAction(help='A backend, port & device id combination', required=True, allow_unknown=False, only_port=False, **kwargs)[source]¶
Bases:
QubesActionAction for argument parser that gets the :py:class:
qubesadmin.device_protocol.VirtualDevicefrom a BACKEND:PORT_ID:DEVICE_ID string.- parse_qubes_app(parser, namespace)[source]¶
This method is called by
qubes.tools.QubesArgumentParserafter namespace.app is instantiated.Used to initialize values based on namespace.app.
- class qubesadmin.tools.qvm_device.Line(device: DeviceInfo, assignment=False)[source]¶
Bases:
objectHelper class to hold single device info for listing
- property assignments¶
list of frontends the device is assigned to
- qubesadmin.tools.qvm_device.assign_device(args)[source]¶
Called by the parser to execute the qvm-devices assign subcommand.
- qubesadmin.tools.qvm_device.attach_device(args)[source]¶
Called by the parser to execute the qvm-devices attach subcommand.
- qubesadmin.tools.qvm_device.detach_device(args)[source]¶
Called by the parser to execute the qvm-devices detach subcommand.
- qubesadmin.tools.qvm_device.get_parser(device_class=None)[source]¶
Create
argparse.ArgumentParsersuitable for qvm-block.
- qubesadmin.tools.qvm_device.info_device(args)[source]¶
Called by the parser to execute the qvm-devices info subcommand.
- qubesadmin.tools.qvm_device.init_list_parser(sub_parsers)[source]¶
Configures the parser for the qvm-devices list subcommand
- qubesadmin.tools.qvm_device.is_on_deny_list(device, dest_vm)[source]¶
Checks if any interface of the device is on the deny list for dest_vm vm.
- qubesadmin.tools.qvm_device.list_devices(args)[source]¶
Called by the parser to execute the qubes-devices list subcommand.
- qubesadmin.tools.qvm_device.parse_ro_option_as_read_only(options)[source]¶
For backward compatibility.
Read-only option could be represented as –ro, -o read-only=yes or -o ro=True etc.
- qubesadmin.tools.qvm_device.prepare_table(dev_list, with_sbdf=False)[source]¶
Converts a list of
qubes.devices.DeviceInfoobjects to a list of tuples for thequbes.tools.print_table().If qvm-devices is running in a TTY, it will omit duplicate data.
- Parameters:
dev_list (iterable) – List of
qubes.devices.DeviceInfoobjects.with_sbdf (bool) – when True, include SBDF identifier of PCI device
- Returns:
list of tuples
qubesadmin.tools.qvm_features module¶
qvm-features - Manage domain’s features
qubesadmin.tools.qvm_firewall module¶
qvm-firewall tool
- class qubesadmin.tools.qvm_firewall.RuleAction(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]¶
Bases:
Action- Parser action for a single firewall rule. It accept syntax:
<action> [<dsthost> [<proto> [<dstports>|<icmptype>]]]
action=<action> [specialtarget=dns] [dsthost=<dsthost>] [proto=<proto>] [dstports=<dstports>] [icmptype=<icmptype>]
Or a mix of them.
- qubesadmin.tools.qvm_firewall.rules_del(vm, args)[source]¶
Delete a rule according to args.rule/args.rule_no
qubesadmin.tools.qvm_kill module¶
Immediately terminate a qube without a graceful shutdown sequence.
qubesadmin.tools.qvm_ls module¶
qvm-ls - List available domains
- class qubesadmin.tools.qvm_ls.Column(head: str, attr: str | Callable[[QubesVM], object], doc: str | None = None)[source]¶
Bases:
objectA column in qvm-ls output.
- Parameters:
- cell(vm, insertion=0)[source]¶
Format one cell, handling tree indentation for the NAME column.
- Parameters:
vm – Domain to get a value from.
insertion – Tree depth; shifts NAME value to the right.
- Returns:
string to display
- columns = {'CLASS': Column(head='CLASS'), 'DISK': Column(head='DISK'), 'FLAGS': Column(head='FLAGS'), 'GATEWAY': Column(head='GATEWAY'), 'MEMORY': Column(head='MEMORY'), 'PRIV-CURR': Column(head='PRIV-CURR'), 'PRIV-MAX': Column(head='PRIV-MAX'), 'PRIV-POOL': Column(head='PRIV-POOL'), 'PRIV-USED': Column(head='PRIV-USED'), 'ROOT-CURR': Column(head='ROOT-CURR'), 'ROOT-MAX': Column(head='ROOT-MAX'), 'ROOT-POOL': Column(head='ROOT-POOL'), 'ROOT-USED': Column(head='ROOT-USED'), 'STATE': Column(head='STATE')}¶
collection of all columns
- class qubesadmin.tools.qvm_ls.PropertyColumn(name)[source]¶
Bases:
ColumnColumn that displays a VM property by name.
- Parameters:
name – Name of VM property.
- class qubesadmin.tools.qvm_ls.Table(domains, colnames, spinner, *, raw_data=False, tree_sorted=False, sort_order='NAME', reverse_sort=False, ignore_case=False)[source]¶
Bases:
objectTable that is displayed to the user.
- Parameters:
domains – Domains to include in the table.
colnames (list) – Names of the columns (need not to be uppercase).
- sort_to_tree(domains)[source]¶
Sort the domains as a network tree. It returns a list of sets. Each tuple stores the insertion of the cell name and the vm object.
- Parameters:
domains (list()) – The domains which will be sorted
- Return list(tuple()) tree:
returns a list of tuple(insertion, vm)
- qubesadmin.tools.qvm_ls.formats = {'disk': ('name', 'state', 'disk', 'priv-curr', 'priv-max', 'priv-used', 'root-curr', 'root-max', 'root-used'), 'full': ('name', 'state', 'class', 'label', 'qid', 'xid', 'uuid'), 'kernel': ('name', 'state', 'class', 'template', 'kernel', 'kernelopts'), 'network': ('name', 'state', 'netvm', 'ip', 'ipback', 'gateway'), 'prefs': ('name', 'label', 'template', 'netvm', 'vcpus', 'initialmem', 'maxmem', 'virt_mode'), 'simple': ('name', 'state', 'class', 'label', 'template', 'netvm')}¶
Available formats. Feel free to plug your own one.
- qubesadmin.tools.qvm_ls.get_parser()[source]¶
Create
argparse.ArgumentParsersuitable for qvm-ls.
qubesadmin.tools.qvm_pause module¶
qvm-pause - Pause a domain
qubesadmin.tools.qvm_pool module¶
Manages Qubes pools and their options
- qubesadmin.tools.qvm_pool.get_parser()[source]¶
Creates
argparse.ArgumentParsersuitable for qvm-pool.
qubesadmin.tools.qvm_prefs module¶
Manipulate VM properties.
qubesadmin.tools.qvm_remove module¶
Remove domains from the system
qubesadmin.tools.qvm_run module¶
qvm-run tool
qubesadmin.tools.qvm_service module¶
qvm-service - Manage domain’s services
qubesadmin.tools.qvm_shutdown module¶
Shutdown a qube
qubesadmin.tools.qvm_start module¶
qvm-start - start a domain
qubesadmin.tools.qvm_start_daemon module¶
GUI/AUDIO daemon launcher tool
- class qubesadmin.tools.qvm_start_daemon.DAEMONLauncher(app: QubesBase, enabled_services, vm_names=None, kde=False)[source]¶
Bases:
objectLaunch GUI/AUDIO daemon for VMs
- cleanup_guid(xid)[source]¶
Clean up after qubes-guid.
Removes the auto-generated configuration file, if any.
- cleanup_pacat_process(xid)[source]¶
Clean up after pacat-simple-vchan.
Removes the auto-generated configuration file, if any.
- on_connection_established(_subject, _event, **_kwargs)[source]¶
Handler of ‘connection-established’ event, used to launch GUI/AUDIO daemon for domains started before this tool.
- on_domain_spawn(vm, _event, **kwargs)[source]¶
Handler of ‘domain-spawn’ event, starts GUI daemon for stubdomain
- on_domain_start(vm, _event, **kwargs)[source]¶
Handler of ‘domain-start’ event, starts GUI/AUDIO daemon for actual VM
- on_property_audiovm_set(vm, event, **kwargs)[source]¶
Handler for catching event related to dynamic AudioVM set/unset
- on_property_preload_set(vm, _event, **_kwargs)[source]¶
Handler of ‘property-reset:is_preload’ event, used to launch GUI/AUDIO daemon after preload is marked as used.
- async send_monitor_layout(vm, layout=None, startup=False)[source]¶
Send monitor layout to a given VM
This function is a coroutine.
- Parameters:
vm – VM to which send monitor layout
layout – monitor layout to send; if None, fetch it from local X server.
startup
- Returns:
None
- async start_audio(vm)[source]¶
Start AUDIO daemon regardless of start event.
This function is a coroutine.
- Parameters:
vm – VM for which AUDIO daemon should be started
- async start_audio_for_vm(vm)[source]¶
Start AUDIO daemon (pacat-simple-vchan) connected directly to a VM
This function is a coroutine.
- Parameters:
vm – VM for which start AUDIO daemon
- async start_gui(vm, force_stubdom=False, monitor_layout=None)[source]¶
Start GUI daemon regardless of start event.
This function is a coroutine.
- Parameters:
vm – VM for which GUI daemon should be started
force_stubdom – Force GUI daemon for stubdomain, even if the one for target AppVM is running.
monitor_layout – monitor layout configuration
- async start_gui_for_stubdomain(vm, force=False)[source]¶
Start GUI daemon (qubes-guid) connected to a stubdomain
This function is a coroutine.
- class qubesadmin.tools.qvm_start_daemon.KeyboardLayout(binary_string)[source]¶
Bases:
objectClass to store and parse X Keyboard layout data
- class qubesadmin.tools.qvm_start_daemon.XWatcher(conn, app)[source]¶
Bases:
objectWatch and react for X events related to the keyboard layout changes.
- qubesadmin.tools.qvm_start_daemon.escape_config_string(value)[source]¶
Convert a string to libconfig format.
Format specification: http://www.hyperrealm.com/libconfig/libconfig_manual.html#String-Values
See dump_string() for python-libconf: https://github.com/Grk0/python-libconf/blob/master/libconf.py
- qubesadmin.tools.qvm_start_daemon.get_monitor_layout()[source]¶
Get list of monitors and their size/position
- qubesadmin.tools.qvm_start_daemon.retrieve_gui_daemon_options(vm, guivm)[source]¶
Construct a list of GUI daemon options based on VM features.
This checks ‘gui-’ features on the VM, and if they’re absent, ‘gui-default-’ features on the GuiVM.
- qubesadmin.tools.qvm_start_daemon.serialize_gui_daemon_options(options)[source]¶
Prepare configuration file content for GUI daemon. Currently, uses libconfig format.
- qubesadmin.tools.qvm_start_daemon.validator_color(color: str) bool[source]¶
xside.c parse_color validation code is replicated here
qubesadmin.tools.qvm_template module¶
Tool for managing VM templates.
- exception qubesadmin.tools.qvm_template.AlreadyRunning[source]¶
Bases:
ExceptionAnother qvm-template is already running
- class qubesadmin.tools.qvm_template.DlEntry(evr: Tuple[str, str, str], reponame: str, dlsize: int)[source]¶
Bases:
NamedTupleInformation about a template to be downloaded.
- class qubesadmin.tools.qvm_template.RepoOptCallback(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]¶
Bases:
ActionParser action for storing repository related options, like –enablerepo, –disablerepo, etc. Store them in a single list, to preserve relative order.
- exception qubesadmin.tools.qvm_template.SignatureVerificationError[source]¶
Bases:
ExceptionPackage signature is invalid or missing
- class qubesadmin.tools.qvm_template.Template(name: str, epoch: str, version: str, release: str, reponame: str, dlsize: int, buildtime: datetime, licence: str, url: str, summary: str, description: str)[source]¶
Bases:
NamedTupleDetails of a template.
- property evr¶
Return a tuple of (EPOCH, VERSION, RELEASE)
- class qubesadmin.tools.qvm_template.TemplateState(value)[source]¶
Bases:
EnumEnum representing the state of a template.
- AVAILABLE = 'available'¶
- EXTRA = 'extra'¶
- INSTALLED = 'installed'¶
- UPGRADABLE = 'upgradable'¶
- class qubesadmin.tools.qvm_template.VersionSelector(value)[source]¶
Bases:
EnumEnum representing how the candidate template version is chosen.
- LATEST = 1¶
Install latest version.
- LATEST_HIGHER = 4¶
Upgrade to the highest version that is higher than the current one.
- LATEST_LOWER = 3¶
Downgrade to the highest version that is lower than the current one.
- REINSTALL = 2¶
Reinstall current version.
- qubesadmin.tools.qvm_template.build_version_str(evr: Tuple[str, str, str]) str[source]¶
Return version string described by
evr, which is in (epoch, version, release) format.
- qubesadmin.tools.qvm_template.clean(args: Namespace, app: QubesBase) None[source]¶
Command that cleans the local package cache.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
- qubesadmin.tools.qvm_template.confirm_action(msg: str, affected: List[str]) None[source]¶
Confirm user action.
- qubesadmin.tools.qvm_template.download(args: Namespace, app: QubesBase, path_override: str | None = None, dl_list: Dict[str, DlEntry] | None = None, version_selector: VersionSelector = VersionSelector.LATEST) Dict[str, rpm.hdr][source]¶
Command that downloads template packages.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
path_override – Override path to store downloads. If not set or set to None,
args.downloaddiris used. Optionaldl_list – Override list of templates to download. If not set or set to None,
get_dl_listis called, which generates the list fromargs. Optionalversion_selector – Specify algorithm to select the candidate version of a package. Defaults to
VersionSelector.LATEST
- Returns:
package headers of downloaded templates
- qubesadmin.tools.qvm_template.extract_rpm(name: str, path: str, target: str) bool[source]¶
- Extract a template RPM package.
If the package contains root.img file split across multiple parts, only the first 512 bytes of the 00 part is retained (tar header) and a symlink to the rpm file is created in target directory.
- Parameters:
name – Name of the template
path – Location of the RPM package
target – Target path to extract to
- Returns:
Whether the extraction succeeded
- qubesadmin.tools.qvm_template.filter_version(query_res, app: QubesBase, version_selector: VersionSelector = VersionSelector.LATEST)[source]¶
Select only one version for given template name
- qubesadmin.tools.qvm_template.get_dl_list(args: Namespace, app: QubesBase, version_selector: VersionSelector = VersionSelector.LATEST) Dict[str, DlEntry][source]¶
Return list of templates that needs to be downloaded.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
version_selector – Specify algorithm to select the candidate version of a package. Defaults to
VersionSelector.LATEST
- Returns:
Dictionary that maps to
DlEntrythe names of templates that needs to be downloaded
- qubesadmin.tools.qvm_template.get_keys_for_repos(repo_files: List[str], releasever: str) Dict[str, str][source]¶
List gpg keys
Returns a dict reponame -> key path
- qubesadmin.tools.qvm_template.get_managed_template_vm(app: QubesBase, name: str) QubesVM[source]¶
Return the QubesVM object associated with the given name if it exists and is managed by qvm-template, otherwise raise a parser error.
- qubesadmin.tools.qvm_template.get_parser() ArgumentParser[source]¶
Generate argument parser for the application.
- qubesadmin.tools.qvm_template.install(args: Namespace, app: QubesBase, version_selector: VersionSelector = VersionSelector.LATEST, override_existing: bool = False) None[source]¶
Command that installs template packages.
This command creates a lock file to ensure that two instances are not running at the same time.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
version_selector – Specify algorithm to select the candidate version of a package. Defaults to
VersionSelector.LATESToverride_existing – Whether to override existing packages. Used for reinstall, upgrade, and downgrade operations
- qubesadmin.tools.qvm_template.is_managed_template(vm: QubesVM) bool[source]¶
Return whether the VM is managed by qvm-template.
- qubesadmin.tools.qvm_template.is_match_spec(name: str, epoch: str, version: str, release: str, spec: str) Tuple[bool, float][source]¶
Check whether (name, epoch, version, release) matches the spec string.
For the algorithm, refer to section “NEVRA Matching” in the DNF documentation.
Note that currently
archis ignored as the templates should be ofnoarch.- Returns:
A tuple. The first element indicates whether there is a match; the second element represents the priority of the match (lower is better)
- qubesadmin.tools.qvm_template.list_templates(args: Namespace, app: QubesBase, command: str) None[source]¶
Command that lists templates.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
command – If set to
list, display a listing similar todnf list. If set toinfo, display detailed template information similar todnf info. Otherwise, anAssertionErroris raised.
- qubesadmin.tools.qvm_template.locked(func)[source]¶
Execute given function under a lock in LOCK_FILE
- qubesadmin.tools.qvm_template.main(args: Sequence[str] | None = None, app: QubesBase | None = None) int[source]¶
Main routine of qvm-template.
- Parameters:
args – Override arguments received by the application. Optional
app – Override Qubes application object. Optional
- Returns:
Return code of the application
- qubesadmin.tools.qvm_template.migrate_from_rpmdb(app)[source]¶
Migrate templates stored in rpmdb, into ‘features’ set on the VM itself.
- qubesadmin.tools.qvm_template.qrexec_download(args: Namespace, app: QubesBase, spec: str, path: str, key: str, dlsize: int | None = None, refresh: bool = False) None[source]¶
Download a template from repositories.
- Parameters:
args – Arguments received by the application. Specifically,
args.{enablerepo,disablerepo,repoid,releasever,repo_files,updatevm, quiet}are usedapp – Qubes application object
spec – Package spec to query (refer to
<package-name-spec>in the DNF documentation)path – Path to place the downloaded template
dlsize – Size of template to be downloaded. Used for the progress bar. Optional
refresh – Whether to force refresh repo metadata. Defaults to False
- Raises:
ConnectionError – if the qrexec call fails
- qubesadmin.tools.qvm_template.qrexec_payload(args: Namespace, app: QubesBase, spec: str, refresh: bool) str[source]¶
Return payload string for the
qubes.Template*qrexec calls.- Parameters:
args – Arguments received by the application. Specifically,
args.{enablerepo,disablerepo,repoid,releasever,repo_files}are usedapp – Qubes application object
spec – Package spec to query (refer to
<package-name-spec>in the DNF documentation)refresh – Whether to force refresh repo metadata
- Returns:
Payload string
- Raises:
Parser error if spec equals
---or input contains\n
- qubesadmin.tools.qvm_template.qrexec_popen(args: Namespace, app: QubesBase, service: str, stdout: int | IO = -1, filter_esc: bool = True) Popen[source]¶
Return
Popenobject that communicates with the given qrexec call inargs.updatevm.Note that this falls back to invoking
/etc/qubes-rpc/*directly ifargs.updatevmis empty string.- Parameters:
args – Arguments received by the application.
args.updatevmis usedapp – Qubes application object
service – The qrexec call to invoke
stdout –
Where the process stdout points to. This is passed directly to
subprocess.Popen. Defaults tosubprocess.PIPENote that stderr is always set to
subprocess.PIPEfilter_esc – Whether to filter out escape sequences from stdout/stderr. Defaults to True
- Returns:
Popenobject that communicates with the given qrexec call
- qubesadmin.tools.qvm_template.qrexec_repoquery(args: Namespace, app: QubesBase, spec: str = '*', refresh: bool = False) List[Template][source]¶
Query template information from repositories.
- Parameters:
args – Arguments received by the application. Specifically,
args.{enablerepo,disablerepo,repoid,releasever,repo_files,updatevm}are usedapp – Qubes application object
spec – Package spec to query (refer to
<package-name-spec>in the DNF documentation). Defaults to*refresh – Whether to force refresh repo metadata. Defaults to False
- Raises:
ConnectionError – if the qrexec call fails
- Returns:
List of
Templateobjects representing the result of the query
- qubesadmin.tools.qvm_template.query_local(vm: QubesVM) Template[source]¶
Return Template object associated with
vm.Requires the VM to be managed by qvm-template.
- qubesadmin.tools.qvm_template.query_local_evr(vm: QubesVM) Tuple[str, str, str][source]¶
Return the (epoch, version, release) of
vm.Requires the VM to be managed by qvm-template.
- qubesadmin.tools.qvm_template.remove(args: Namespace, app: QubesBase, disassoc: bool = False, purge: bool = False, dummy: str = 'dummy') None[source]¶
Command that remove templates.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
disassoc – Whether to disassociate VMs from the templates
purge – Whether to remove VMs based on the templates
dummy – Name of dummy VM if disassoc is used
- qubesadmin.tools.qvm_template.repolist(args: Namespace, app: QubesBase) None[source]¶
Command that lists configured repositories.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
- qubesadmin.tools.qvm_template.search(args: Namespace, app: QubesBase) None[source]¶
Command that searches template details for given patterns.
- Parameters:
args – Arguments received by the application.
app – Qubes application object
- qubesadmin.tools.qvm_template.verify_rpm(path: str, key: str, *, nogpgcheck: bool = False, template_name: str | None = None) rpm.hdr[source]¶
Verify the digest and signature of a RPM package and return the package header.
Note that verifying RPMs this way is prone to TOCTOU. This is okay for local files, but may create problems if multiple instances of qvm-template are downloading the same file, so a lock is needed in that case.
- Parameters:
path – Location of the RPM package
nogpgcheck – Whether to allow invalid GPG signatures
template_name – expected template name - if specified, verifies if the package name matches expected template name
- Returns:
RPM package header. If verification fails, raises an exception.
qubesadmin.tools.qvm_template_postprocess module¶
Tool for importing rpm-installed template
- async qubesadmin.tools.qvm_template_postprocess.call_postinstall_service(vm)[source]¶
Call qubes.PostInstall service
And adjust related settings (netvm, features).
- qubesadmin.tools.qvm_template_postprocess.get_root_img_size(source_dir)[source]¶
Extract size of root.img to be imported
Import appmenus settings into VM object (later: GUI VM)
- Parameters:
vm – QubesVM object of just imported template
source_dir – directory with source files
skip_generate – do not generate actual menu entries, only set item lists
- qubesadmin.tools.qvm_template_postprocess.import_root_img(vm, source_dir)[source]¶
Import root.img into VM object
- qubesadmin.tools.qvm_template_postprocess.import_template_config(args, conf_path, vm)[source]¶
Parse template.conf and apply its content to the just installed TemplateVM
- Parameters:
args – arguments for qvm-template-postprocess (used for –allow-pv option and possibly some other in the future)
conf_path – path to the template.conf
vm – Template to operate on
- Returns:
- qubesadmin.tools.qvm_template_postprocess.main(args=None, app=None)[source]¶
Main function of qvm-template-postprocess
- qubesadmin.tools.qvm_template_postprocess.parse_template_config(path)[source]¶
Parse template.conf from template package. (KEY=VALUE format)
qubesadmin.tools.qvm_unpause module¶
qvm-unpause - Unpause a domain
qubesadmin.tools.qvm_volume module¶
Qubes volume management
- class qubesadmin.tools.qvm_volume.VolumeData(volume)[source]¶
Bases:
objectWrapper object around
qubes.storage.Volume, mainly to track the domains a volume is attached to.
- qubesadmin.tools.qvm_volume.clone_volume(args)[source]¶
Clone source volume data into destination volume.
- qubesadmin.tools.qvm_volume.get_parser()[source]¶
Create
argparse.ArgumentParsersuitable for qvm-volume.
- qubesadmin.tools.qvm_volume.init_clear_parser(sub_parsers)[source]¶
Add ‘clear’ action related options
- qubesadmin.tools.qvm_volume.init_clone_parser(sub_parsers)[source]¶
Add ‘clone’ action related options
- qubesadmin.tools.qvm_volume.init_config_parser(sub_parsers)[source]¶
Add ‘info’ action related options
- qubesadmin.tools.qvm_volume.init_import_parser(sub_parsers)[source]¶
Add ‘import’ action related options
- qubesadmin.tools.qvm_volume.init_info_parser(sub_parsers)[source]¶
Add ‘info’ action related options
- qubesadmin.tools.qvm_volume.init_list_parser(sub_parsers)[source]¶
Configures the parser for the qvm-volume list subcommand
- qubesadmin.tools.qvm_volume.init_resize_parser(sub_parsers)[source]¶
Add ‘resize’ action related options
- qubesadmin.tools.qvm_volume.init_revert_parser(sub_parsers)[source]¶
Add ‘revert’ action related options
- qubesadmin.tools.qvm_volume.list_volumes(args)[source]¶
Called by the parser to execute the qvm-volume list subcommand.
- qubesadmin.tools.qvm_volume.prepare_table(vd_list, full=False)[source]¶
Converts a list of
VolumeDataobjects to a list of tupples for thequbes.tools.print_table().If qvm-volume is running in a TTY, it will ommit duplicate data.
- Parameters:
vd_list (list) – List of
VolumeDataobjects.full (bool) – If set to true duplicate data is printed even when running from TTY.
- Returns:
list of tupples
Module contents¶
Qubes’ command line tools
- class qubesadmin.tools.AliasedSubParsersAction(option_strings, prog, parser_class, dest='==SUPPRESS==', required=False, help=None, metavar=None)[source]¶
Bases:
_SubParsersActionSubParser with support for action aliases
- class qubesadmin.tools.PoolsAction(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]¶
Bases:
QubesActionAction for argument parser to gather multiple pools
- parse_qubes_app(parser, namespace)[source]¶
This method is called by
qubes.tools.QubesArgumentParserafter namespace.app is instantiated.Used to initialize values based on namespace.app.
- class qubesadmin.tools.PropertyAction(option_strings: list[str], dest: str, *, metavar: str = 'NAME=VALUE', required: bool = False, help: str = 'set property to a value')[source]¶
Bases:
ActionAction for argument parser that stores a property. Format: –<option_name> property=value
- class qubesadmin.tools.QubesAction(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)[source]¶
Bases:
ActionCustom Action for Qubes
- parse_qubes_app(parser, namespace)[source]¶
This method is called by
qubes.tools.QubesArgumentParserafter namespace.app is instantiated.Used to initialize values based on namespace.app.
- class qubesadmin.tools.QubesArgumentParser(vmname_nargs=None, show_forceroot=False, version=None, **kwargs)[source]¶
Bases:
ArgumentParserParser preconfigured for use in most of the Qubes command-line tools.
- Parameters:
vmname_nargs (mixed) – The number of
VMNAMEarguments that should be consumed. Values include: * N (an integer) consumes N arguments (and produces a list) * ‘?’ consumes zero or one arguments * ‘*’ consumes zero or more arguments (and produces a list) * ‘+’ consumes one or more arguments (and produces a list)show_forceroot – don’t hide –force-root parameter, prevent running as root unless it is given
kwargs are passed to
argparser.ArgumentParser.- Currenty supported options:
--force-root(optional, ignored, help is suppressed)--offline-modedo not talk to hypervisor (help is suppressed)--verboseand--quiet- Calling program should set the
versionargument for--versionoption The default is extracted from qubesadmin package information. Setting
versionargument to ‘’ will disable--versionoption.
- error_runtime(message, exit_code=1)[source]¶
Runtime error, without showing usage.
- Parameters:
message (str) – message to show
- class qubesadmin.tools.RunningVmNameAction(option_strings, nargs=1, dest='vmnames', help=None, **kwargs)[source]¶
Bases:
VmNameActionAction for argument parser that gets a running domain from VMNAME
- class qubesadmin.tools.SinglePropertyAction(option_strings, dest, *, metavar: str = 'VALUE', const: object = None, nargs: int | str | None = None, required: bool = False, help: str | None = None)[source]¶
Bases:
ActionAction for argument parser that stores a property. Format: –property_name value or –property_name
- class qubesadmin.tools.SubParsersHelpAction(option_strings, dest='==SUPPRESS==', default='==SUPPRESS==', help=None)[source]¶
Bases:
_HelpActionPrint help for all options and all subparsers
- class qubesadmin.tools.VMVolumeAction(help='A VM & volume id combination', required=True, **kwargs)[source]¶
Bases:
QubesActionAction for argument parser that gets the :py:class:
qubes.storage.Volumefrom a VM:VOLUME string.
- class qubesadmin.tools.VmNameAction(option_strings, nargs=1, dest='vmnames', help=None, **kwargs)[source]¶
Bases:
QubesActionAction for parsing one or multiple domains from provided VMNAMEs
- class qubesadmin.tools.VmNameGroup(container, required, vm_action=<class 'qubesadmin.tools.VmNameAction'>, help=None)[source]¶
Bases:
_MutuallyExclusiveGroupAdds an a VMNAME, –all & –exclude parameters to a :py:class:
argparse.ArgumentParser`.
- qubesadmin.tools.get_parser_for_command(command)[source]¶
Get parser for given qvm-tool.
- Parameters:
command (str) – command name
- Return type:
- Raises:
ImportError – when command’s module is not found
AttributeError – when parser was not found