craft_providers.multipass.multipass module

API provider for Multipass.

This implementation interfaces with multipass using the multipass command-line utility.

class craft_providers.multipass.multipass.Multipass(*, multipass_path=PosixPath('multipass'))[source]

Bases: object

Wrapper for multipass command.

Parameters

multipass_path (Path) – Path to multipass command to use.

Variables

minimum_required_version – Minimum required version for compatibility.

delete(*, instance_name, purge=True)[source]

Passthrough for running multipass delete.

Parameters
  • instance_name (str) – The name of the instance_name to delete.

  • purge – Flag to purge the instance_name’s image after deleting.

Raises

MultipassError – on error.

Return type

None

exec(*, command, instance_name, runner=<function run>, **kwargs)[source]

Execute command in instance_name with specified runner.

Parameters
  • command (List[str]) – Command to execute in the instance.

  • instance_name (str) – Name of instance to execute in.

  • runner (Callable) – Execution function to invoke, e.g. subprocess.run or Popen. First argument is finalized command with the attached kwargs.

  • kwargs – Additional kwargs for runner.

Returns

Runner’s instance.

info(*, instance_name)[source]

Get information/state for instance.

Return type

Dict[str, Any]

Returns

Parsed json data from info command.

Raises

MultipassError – On error.

Parameters

instance_name (str) –

is_supported_version()[source]

Check if Multipass version is supported.

A helper to check if Multipass meets minimum supported version for craft-providers.

Return type

bool

Returns

True if installed version is supported.

launch(*, instance_name, image, cpus=None, mem=None, disk=None)[source]

Launch multipass VM.

Parameters
  • instance_name (str) – The name the launched instance will have.

  • image (str) – Name of image to create the instance with.

  • cpus (Optional[str]) – Amount of virtual CPUs to assign to the launched instance.

  • mem (Optional[str]) – Amount of RAM to assign to the launched instance.

  • disk (Optional[str]) – Amount of disk space the launched instance will have.

Raises

MultipassError – on error.

Return type

None

list()[source]

List names of VMs.

Return type

List[str]

Returns

Data from stdout if instance exists, else None.

Raises

MultipassError – On error.

minimum_required_version = '1.7'
mount(*, source, target, uid_map=None, gid_map=None)[source]

Mount host source path to target.

Parameters
  • source (Path) – Path of local directory to mount.

  • target (str) – Target mount points, in <name>[:<path>] format, where <name> is an instance name, and optional <path> is the mount point. If omitted, the mount point will be the same as the source’s absolute path.

  • uid_map (Optional[Dict[str, str]]) – A mapping of user IDs for use in the mount of the form <host-id> -> <instance-id>. File and folder ownership will be mapped from <host-id> to <instance-id> inside the instance.

  • gid_map (Optional[Dict[str, str]]) – A mapping of group IDs for use in the mount of the form <host-id> -> <instance-id>. File and folder ownership will be mapped from <host-id> to <instance-id> inside the instance.

Return type

None

start(*, instance_name)[source]

Start VM instance.

Parameters

instance_name (str) – the name of the instance to start.

Raises

MultipassError – on error.

Return type

None

stop(*, instance_name, delay_mins=0)[source]

Stop VM instance.

Parameters
  • instance_name (str) – the name of the instance_name to stop.

  • delay_mins (int) – Delay shutdown for specified number of minutes.

Raises

MultipassError – on error.

Return type

None

transfer(*, source, destination)[source]

Transfer to destination path with source IO.

Parameters
  • source (str) – The source path, prefixed with <name:> for a path inside the instance.

  • destination (str) – The destination path, prefixed with <name:> for a path inside the instance.

Raises

MultipassError – On error.

Return type

None

transfer_destination_io(*, source, destination, chunk_size=4096)[source]

Transfer from source file to destination IO.

Note that this can’t use std{in,out}=open(…) due to LP #1849753.

Parameters
  • source (str) – The source path, prefixed with <name:> for a path inside the instance.

  • destination (BufferedIOBase) – An IO stream to write to.

  • chunk_size (int) – Number of bytes to transfer at a time. Defaults to 4096.

Raises

MultipassError – On error.

Return type

None

transfer_source_io(*, source, destination, chunk_size=4096)[source]

Transfer to destination path with source IO.

Note that this can’t use std{in,out}=open(…) due to LP #1849753.

Parameters
  • source (BufferedIOBase) – An IO stream to read from.

  • destination (str) – The destination path, prefixed with <name:> for a path inside the instance.

  • chunk_size (int) – Number of bytes to transfer at a time. Defaults to 4096.

Raises

MultipassError – On error.

Return type

None

umount(*, mount)[source]

Unmount target in VM.

Parameters

mount (str) – Mount point in <name>[:<path>] format, where <name> are instance names, and optional <path> are mount points. If omitted, all mounts will be removed from the named instance.

Raises

MultipassError – On error.

Return type

None

version()[source]

Get multipass and multipassd versions.

Return type

Tuple[str, Optional[str]]

Returns

Tuple of parsed versions (multipass, multipassd). multipassd may be None if Multipass is not yet ready.

wait_until_ready(*, retry_wait=0.25, timeout=None)[source]

Wait until Multipass is ready (upon install/startup).

Parameters
  • retry_wait (float) – Time to sleep between retries.

  • timeout (Optional[float]) – Timeout in seconds.

Return type

Tuple[str, Optional[str]]

Returns

Tuple of parsed versions (multipass, multipassd). multipassd may be None if Multipass is not ready and the timeout limit is reached.