pycloudlib.cloud module

Base class for all other clouds to provide consistent set of functions.

class pycloudlib.cloud.BaseCloud(tag: str, timestamp_suffix: bool = True, config_file: Path | StringIO | None = None, required_values: Sequence[Any | None] | None = None)[source]

Bases: ABC

Base Cloud Class.

__init__(tag: str, timestamp_suffix: bool = True, config_file: Path | StringIO | None = None, required_values: Sequence[Any | None] | None = None)[source]

Initialize base cloud class.

Parameters:
  • tag – string used to name and tag resources with

  • timestamp_suffix – Append a timestamped suffix to the tag string.

  • config_file – path to pycloudlib configuration file

clean() List[Exception][source]

Cleanup ALL artifacts associated with this Cloud instance.

This includes all instances, snapshots, resources, etc. To ensure cleanup isn’t interrupted, any exceptions raised during cleanup operations will be collected and returned.

create_key_pair()[source]

Create and set a ssh key pair for a cloud instance.

Returns:

A tuple containing the public and private key created

abstract daily_image(release: str, **kwargs)[source]

ID of the latest daily image for a particular release.

Parameters:

release – The release to look for

Returns:

A single string with the latest daily image ID for the specified release.

abstract delete_image(image_id: str, **kwargs)[source]

Delete an image.

Parameters:
  • image_id – string, id of the image to delete

  • **kwargs – dictionary of other arguments to pass to delete_image

get_image_id_from_name(name: str) str[source]

Get the id of the first image whose name contains the given name.

The name does not need to be an exact match, just a substring of the image name.

Parameters:

name – string, name of the image to search for

Returns:

string, image ID

abstract get_instance(instance_id, *, username: str | None = None, **kwargs) BaseInstance[source]

Get an instance by id.

Parameters:
  • instance_id – ID identifying the instance

  • username – username to use when connecting via SSH

Returns:

An instance object to use to manipulate the instance further.

abstract image_serial(image_id)[source]

Find the image serial of the latest daily image for a particular release.

Parameters:

image_id – string, Ubuntu image id

Returns:

string, serial of latest image

abstract launch(image_id: str, instance_type=None, user_data=None, **kwargs) BaseInstance[source]

Launch an instance.

Parameters:
  • image_id – string, image ID to use for the instance

  • instance_type – string, type of instance to create

  • user_data – used by cloud-init to run custom scripts/configuration

  • username – username to use when connecting via SSH

  • **kwargs – dictionary of other arguments to pass to launch

Returns:

An instance object to use to manipulate the instance further.

list_keys()[source]

List ssh key names present on the cloud for accessing instances.

Returns:

A list of strings of key pair names accessible to the cloud.

abstract released_image(release, **kwargs)[source]

ID of the latest released image for a particular release.

Parameters:

release – The release to look for

Returns:

A single string with the latest released image ID for the specified release.

abstract snapshot(instance, clean=True, **kwargs)[source]

Snapshot an instance and generate an image from it.

Parameters:
  • instance – Instance to snapshot

  • clean – run instance clean method before taking snapshot

Returns:

An image id

use_key(public_key_path, private_key_path=None, name=None)[source]

Use an existing key.

Parameters:
  • public_key_path – path to the public key to upload

  • private_key_path – path to the private key

  • name – name to reference key by

class pycloudlib.cloud.ImageType(value)[source]

Bases: Enum

Allowed image types when launching cloud images.

GENERIC = 'generic'
MINIMAL = 'minimal'
PRO = 'Pro'
PRO_FIPS = 'Pro FIPS'
PRO_FIPS_UPDATES = 'Pro FIPS Updates'