Exoscale Computer Driver Documentation

Exoscale is a public European cloud provider with data centers in Germany, Austria, and Switzerland.

../../_images/exoscale.png

Exoscale driver is based on the CloudStack one and uses basic zones. For more information and CloudStack specific documentation, please refer to CloudStack Compute Driver Documentation page.

Other Resources

API Docs

class libcloud.compute.drivers.exoscale.ExoscaleNodeDriver(key, secret=None, secure=True, host=None, path=None, port=None, url=None, *args, **kwargs)[source]
Inherits:

NodeDriver.__init__

Parameters:
  • host (str) – The host where the API can be reached. (required)

  • path (str) – The path where the API can be reached. (required)

  • url (str) – Full URL to the API endpoint. Mutually exclusive with host and path argument.

attach_volume(node, volume, device=None)

@inherits: NodeDriver.attach_volume :type node: CloudStackNode

Return type:

bool

connectionCls

alias of CloudStackConnection

copy_image(source_region: str, node_image: NodeImage, name: str, description: str | None = None) NodeImage

Copies an image from a source region to the current region.

Parameters:
  • source_region (str) – Region to copy the node from.

  • node_image (NodeImage:) – NodeImage to copy.

  • name (str) – name for new image.

  • description – description for new image.

Return type:

NodeImage:

Returns:

NodeImage instance on success.

create_image(node: Node, name: str, description: str | None = None) List[NodeImage]

Creates an image from a node object.

Parameters:
  • node (Node) – Node to run the task on.

  • name (description) – name for new image.

  • description – description for new image.

Return type:

NodeImage:

Returns:

NodeImage instance on success.

create_key_pair(name, **kwargs)

Create a new key pair object.

Parameters:
  • name (str) – Key pair name.

  • name – Name of the keypair (required)

  • projectid (str) – An optional project for the ssh key

  • domainid (str) – An optional domainId for the ssh key. If the account parameter is used, domainId must also be used.

  • account (str) – An optional account for the ssh key. Must be used with domainId.

Returns:

Created key pair object.

Return type:

libcloud.compute.base.KeyPair

create_node(name, size, image, location=None, networks=None, project=None, diskoffering=None, ex_keyname=None, ex_userdata=None, ex_security_groups=None, ex_displayname=None, ex_ip_address=None, ex_start_vm=False, ex_rootdisksize=None, ex_affinity_groups=None)

Create a new node

@inherits: NodeDriver.create_node

Parameters:
  • networks (list of CloudStackNetwork) – Optional list of networks to launch the server into.

  • project (CloudStackProject) – Optional project to create the new node under.

  • diskoffering (CloudStackDiskOffering) – Optional disk offering to add to the new node.

  • ex_keyname (str) – Name of existing keypair

  • ex_userdata (str) – String containing user data

  • ex_security_groups (list of str) – List of security groups to assign to the node

  • ex_displayname (str) – String containing instance display name

  • ex_ip_address (str) – String with ipaddress for the default nic

  • ex_start_vm (bool) – Boolean to specify to start VM after creation Default Cloudstack behaviour is to start a VM, if not specified.

  • ex_rootdisksize (str) – String with rootdisksize for the template

  • ex_affinity_groups (list of CloudStackAffinityGroup) – List of affinity groups to assign to the node

Return type:

CloudStackNode

create_volume(size, name, location=None, snapshot=None, ex_volume_type=None)

Creates a data volume Defaults to the first location

create_volume_snapshot(volume, name=None)

Create snapshot from volume

Parameters:
  • volume (StorageVolume) – Instance of StorageVolume

  • name (str) – The name of the snapshot is disregarded by CloudStack drivers

Return type:

VolumeSnapshot

delete_image(node_image: NodeImage) bool

Deletes a node image from a provider.

Parameters:

node_image (NodeImage) – Node image object.

Returns:

True if delete_image was successful, False otherwise.

Return type:

bool

delete_key_pair(key_pair, **kwargs)

Delete an existing key pair.

Parameters:
  • key_pair (libcloud.compute.base.KeyPair) – Key pair object.

  • projectid (str) – The project associated with keypair

  • domainid (str) – The domain ID associated with the keypair

  • account (str) – The account associated with the keypair. Must be used with the domainId parameter.

Returns:

True of False based on success of Keypair deletion

Return type:

bool

deploy_node(deploy: Deployment, ssh_username: str = 'root', ssh_alternate_usernames: List[str] | None = None, ssh_port: int = 22, ssh_timeout: int = 10, ssh_key: T_Ssh_key | None = None, ssh_key_password: str | None = None, auth: T_Auth | None = None, timeout: int = 300, max_tries: int = 3, ssh_interface: str = 'public_ips', at_exit_func: Callable | None = None, wait_period: int = 5, **create_node_kwargs) Node

Create a new node, and start deployment.

In order to be able to SSH into a created node access credentials are required.

A user can pass either a NodeAuthPassword or NodeAuthSSHKey to the auth argument. If the create_node implementation supports that kind if credential (as declared in self.features['create_node']) then it is passed on to create_node. Otherwise it is not passed on to create_node and it is only used for authentication.

If the auth parameter is not supplied but the driver declares it supports generates_password then the password returned by create_node will be used to SSH into the server.

Finally, if the ssh_key_file is supplied that key will be used to SSH into the server.

This function may raise a DeploymentException, if a create_node call was successful, but there is a later error (like SSH failing or timing out). This exception includes a Node object which you may want to destroy if incomplete deployments are not desirable.

>>> from libcloud.compute.drivers.dummy import DummyNodeDriver
>>> from libcloud.compute.deployment import ScriptDeployment
>>> from libcloud.compute.deployment import MultiStepDeployment
>>> from libcloud.compute.base import NodeAuthSSHKey
>>> driver = DummyNodeDriver(0)
>>> key = NodeAuthSSHKey('...') # read from file
>>> script = ScriptDeployment("yum -y install emacs strace tcpdump")
>>> msd = MultiStepDeployment([key, script])
>>> def d():
...     try:
...         driver.deploy_node(deploy=msd)
...     except NotImplementedError:
...         print ("not implemented for dummy driver")
>>> d()
not implemented for dummy driver

Deploy node is typically not overridden in subclasses. The existing implementation should be able to handle most such.

Parameters:
  • deploy (Deployment) – Deployment to run once machine is online and available to SSH.

  • ssh_username (str) – Optional name of the account which is used when connecting to SSH server (default is root)

  • ssh_alternate_usernames (list) – Optional list of ssh usernames to try to connect with if using the default one fails

  • ssh_port (int) – Optional SSH server port (default is 22)

  • ssh_timeout (float) – Optional SSH connection timeout in seconds (default is 10)

  • auth (NodeAuthSSHKey or NodeAuthPassword) – Initial authentication information for the node (optional)

  • ssh_key (str or list of str) – A path (or paths) to an SSH private key with which to attempt to authenticate. (optional)

  • ssh_key_password (str) – Optional password used for encrypted keys.

  • timeout (int) – How many seconds to wait before timing out. (default is 600)

  • max_tries (int) – How many times to retry if a deployment fails before giving up (default is 3)

  • ssh_interface (str) – The interface to wait for. Default is ‘public_ips’, other option is ‘private_ips’.

  • at_exit_func (func) –

    Optional atexit handler function which will be registered and called with created node if user cancels the deploy process (e.g. CTRL+C), after the node has been created, but before the deploy process has finished.

    This method gets passed in two keyword arguments:

    • driver -> node driver in question

    • node -> created Node object

    Keep in mind that this function will only be called in such scenario. In case the method finishes (this includes throwing an exception), at exit handler function won’t be called.

  • wait_period (int) – How many seconds to wait between each iteration while waiting for node to transition into running state and have IP assigned. (default is 5)

destroy_node(node, ex_expunge=False)

@inherits: NodeDriver.reboot_node :type node: CloudStackNode

Parameters:

ex_expunge (bool) – If true is passed, the vm is expunged immediately. False by default.

Return type:

bool

destroy_volume(volume)
Return type:

bool

destroy_volume_snapshot(snapshot)

Destroys a snapshot.

Parameters:

snapshot (VolumeSnapshot) – The snapshot to delete

Return type:

bool

detach_volume(volume)
Return type:

bool

ex_allocate_public_ip(vpc_id=None, network_id=None, location=None)

Allocate a public IP.

Parameters:
  • vpc_id (str) – VPC the ip belongs to

  • network_id (''str'') – Network where this IP is connected to.

  • location (NodeLocation) – Zone

Return type:

CloudStackAddress

ex_attach_nic_to_node(node, network, ip_address=None)

Add an extra Nic to a VM

Parameters:
  • network (:class:'CloudStackNetwork`) – NetworkOffering object

  • node (:class:'CloudStackNode`) – Node Object

  • ip_address (str) – Optional, specific IP for this Nic

Return type:

bool

ex_authorize_security_group_ingress(securitygroupname, protocol, cidrlist, startport=None, endport=None, icmptype=None, icmpcode=None, **kwargs)

Creates a new Security Group Ingress rule

Parameters:
  • securitygroupname (str) – The name of the security group. Mutually exclusive with securitygroupid.

  • protocol (str) – Can be TCP, UDP or ICMP. Sometime other protocols can be used like AH, ESP or GRE.

  • cidrlist (str) – Source address CIDR for which this rule applies.

  • startport (int) – Start port of the range for this ingress rule. Applies to protocols TCP and UDP.

  • endport (int) – End port of the range for this ingress rule. It can be None to set only one port. Applies to protocols TCP and UDP.

  • icmptype (int) – Type of the ICMP packet (eg: 8 for Echo Request). -1 or None means “all types”. Applies to protocol ICMP.

  • icmpcode (int) – Code of the ICMP packet for the specified type. If the specified type doesn’t require a code set this value to 0. -1 or None means “all codes”. Applies to protocol ICMP.

  • account (str) – An optional account for the security group. Must be used with domainId.

  • domainid – An optional domainId for the security group. If the account parameter is used, domainId must also be used.

  • projectid (str) – An optional project of the security group

  • securitygroupid (str) – The ID of the security group. Mutually exclusive with securitygroupname

  • usersecuritygrouplist (dict) – User to security group mapping

Return type:

dict

ex_change_node_size(node, offering)

Change offering/size of a virtual machine

Parameters:
  • node (CloudStackNode) – Node to change size

  • offering (NodeSize) – The new offering

:rtype str

ex_create_affinity_group(name, group_type)

Creates a new Affinity Group

Parameters:
  • name (str) – Name of the affinity group

  • group_type (CloudStackAffinityGroupType) – Type of the affinity group from the available affinity/anti-affinity group types

  • description (str) – Optional description of the affinity group

  • domainid (str) – domain ID of the account owning the affinity group

Return type:

CloudStackAffinityGroup

ex_create_egress_firewall_rule(network_id, cidr_list, protocol, icmp_code=None, icmp_type=None, start_port=None, end_port=None)

Creates a Firewall Rule

Parameters:
  • network_id (str) – the id network network for the egress firewall services

  • cidr_list (str) – cidr list

  • protocol (str) – TCP/IP Protocol (TCP, UDP)

  • icmp_code (int) – Error code for this icmp message

  • icmp_type (int) – Type of the icmp message being sent

  • start_port (int) – start of port range

  • end_port (int) – end of port range

Return type:

CloudStackEgressFirewallRule

ex_create_firewall_rule(address, cidr_list, protocol, icmp_code=None, icmp_type=None, start_port=None, end_port=None)

Creates a Firewall Rule

Parameters:
  • address (CloudStackAddress) – External IP address

  • cidr_list (str) – cidr list

  • protocol (str) – TCP/IP Protocol (TCP, UDP)

  • icmp_code (int) – Error code for this icmp message

  • icmp_type (int) – Type of the icmp message being sent

  • start_port (int) – start of port range

  • end_port (int) – end of port range

Return type:

CloudStackFirewallRule

ex_create_ip_forwarding_rule(node, address, protocol, start_port, end_port=None)

“Add a NAT/firewall forwarding rule.

Parameters:
  • node (CloudStackNode) – Node which should be used

  • address (CloudStackAddress) – CloudStackAddress which should be used

  • protocol (str) – Protocol which should be used (TCP or UDP)

  • start_port (int) – Start port which should be used

  • end_port (int) – End port which should be used

Return type:

CloudStackForwardingRule

ex_create_keypair(name, **kwargs)

Creates a SSH KeyPair, returns fingerprint and private key

Parameters:
  • name (str) – Name of the keypair (required)

  • projectid (str) – An optional project for the ssh key

  • domainid (str) – An optional domainId for the ssh key. If the account parameter is used, domainId must also be used.

  • account (str) – An optional account for the ssh key. Must be used with domainId.

Returns:

A keypair dictionary

Return type:

dict

ex_create_network(display_text, name, network_offering, location, gateway=None, netmask=None, network_domain=None, vpc_id=None, project_id=None)

Creates a Network, only available in advanced zones.

Parameters:
  • display_text (str) – the display text of the network

  • name (str) – the name of the network

  • network_offering (:class:'CloudStackNetworkOffering`) – NetworkOffering object

  • location (NodeLocation) – Zone object

  • gateway (str) – Optional, the Gateway of this network

  • netmask (str) – Optional, the netmask of this network

  • network_domain (str) – Optional, the DNS domain of the network

  • vpc_id (str) – Optional, the VPC id the network belongs to

  • project_id (str) – Optional, the project id the networks belongs to

Return type:

CloudStackNetwork

ex_create_network_acl(protocol, acl_id, cidr_list, start_port, end_port, action=None, traffic_type=None)

Creates an ACL rule in the given network (the network has to belong to VPC)

Parameters:
  • protocol (string) – the protocol for the ACL rule. Valid values are TCP/UDP/ICMP/ALL or valid protocol number

  • acl_id (str) – Name of the network ACL List

  • cidr_list (str) – the cidr list to allow traffic from/to

  • start_port (str) – the starting port of ACL

  • end_port (str) – the ending port of ACL

  • action (str) – scl entry action, allow or deny

  • traffic_type (str) – the traffic type for the ACL,can be Ingress or Egress, defaulted to Ingress if not specified

Return type:

CloudStackNetworkACL

ex_create_network_acllist(name, vpc_id, description=None)

Create an ACL List for a network within a VPC.

Parameters:
  • name (string) – Name of the network ACL List

  • vpc_id (string) – Id of the VPC associated with this network ACL List

  • description (string) – Description of the network ACL List

Return type:

CloudStackNetworkACLList

ex_create_port_forwarding_rule(node, address, private_port, public_port, protocol, public_end_port=None, private_end_port=None, openfirewall=True, network_id=None)

Creates a Port Forwarding Rule, used for Source NAT

Parameters:
  • address (CloudStackAddress) – IP address of the Source NAT

  • private_port (int) – Port of the virtual machine

  • protocol (str) – Protocol of the rule

  • public_port (int) – Public port on the Source NAT address

  • node (CloudStackNode) – The virtual machine

  • network_id (string) – The network of the vm the Port Forwarding rule will be created for. Required when public Ip address is not associated with any Guest network yet (VPC case)

Return type:

CloudStackPortForwardingRule

ex_create_security_group(name, **kwargs)

Creates a new Security Group

Parameters:
  • name (str) – name of the security group (required)

  • account (str) – An optional account for the security group. Must be used with domainId.

  • domainid (str) – An optional domainId for the security group. If the account parameter is used, domainId must also be used.

  • description (str) – The description of the security group

  • projectid (str) – Deploy vm for the project

Return type:

dict

ex_create_snapshot_template(snapshot, name, ostypeid, displaytext=None)

Create a template from a snapshot

Parameters:
  • snapshot – Instance of VolumeSnapshot

  • name (str) – the name of the template

  • name – the os type id

  • name – the display name of the template

Return type:

NodeImage

ex_create_tags(resource_ids, resource_type, tags)

Create tags for a resource (Node/StorageVolume/etc). A list of resource types can be found at http://goo.gl/6OKphH

Parameters:
  • resource_ids (list of resource IDs) – Resource IDs to be tagged. The resource IDs must all be associated with the resource_type. For example, for virtual machines (UserVm) you can only specify a list of virtual machine IDs.

  • resource_type (str) – Resource type (eg: UserVm)

  • tags (dict) – A dictionary or other mapping of strings to strings, associating tag names with tag values.

Return type:

bool

ex_create_vpc(cidr, display_text, name, vpc_offering, zone_id, network_domain=None)

Creates a VPC, only available in advanced zones.

Parameters:
  • cidr – the cidr of the VPC. All VPC guest networks’ cidrs should be within this CIDR

  • display_text (str) – the display text of the VPC

  • name (str) – the name of the VPC

  • vpc_offering (:class:'CloudStackVPCOffering`) – the ID of the VPC offering

  • zone_id (str) – the ID of the availability zone

  • network_domain (str) – Optional, the DNS domain of the network

Return type:

CloudStackVPC

ex_create_vpn_connection(vpn_customer_gateway, vpn_gateway, for_display=None, passive=None)

Creates a VPN Connection.

Parameters:
  • vpn_customer_gateway (CloudStackVpnCustomerGateway) – The VPN Customer Gateway (required).

  • vpn_gateway (CloudStackVpnGateway) – The VPN Gateway (required).

  • for_display (str) – Display the Connection to the end user or not.

  • passive (bool) – If True, sets the connection to be passive.

Return type:

class:

CloudStackVpnConnection

ex_create_vpn_customer_gateway(cidr_list, esp_policy, gateway, ike_policy, ipsec_psk, account=None, domain_id=None, dpd=None, esp_lifetime=None, ike_lifetime=None, name=None)

Creates a VPN Customer Gateway.

Parameters:
  • cidr_list (str) – Guest CIDR list of the Customer Gateway (required).

  • esp_policy (str) – ESP policy of the Customer Gateway (required).

  • gateway (str) – Public IP address of the Customer Gateway (required).

  • ike_policy (str) – IKE policy of the Customer Gateway (required).

  • ipsec_psk (str) – IPsec preshared-key of the Customer Gateway (required).

  • account (str) – The associated account with the Customer Gateway (must be used with the domain_id param).

  • domain_id (str) – The domain ID associated with the Customer Gateway. If used with the account parameter returns the gateway associated with the account for the specified domain.

  • dpd (bool) – If DPD is enabled for the VPN connection.

  • esp_lifetime (int) – Lifetime of phase 2 VPN connection to the Customer Gateway, in seconds.

  • ike_lifetime (int) – Lifetime of phase 1 VPN connection to the Customer Gateway, in seconds.

  • name (str) – Name of the Customer Gateway.

Return type:

class:

CloudStackVpnCustomerGateway

ex_create_vpn_gateway(vpc, for_display=None)

Creates a VPN Gateway.

Parameters:
  • vpc – VPC to create the Gateway for (required).

  • for_display (bool) – Display the VPC to the end user or not.

Return type:

class:

CloudStackVpnGateway

ex_delete_affinity_group(affinity_group)

Delete an Affinity Group

Parameters:

affinity_group (CloudStackAffinityGroup) – Instance of affinity group

:rtype bool

ex_delete_egress_firewall_rule(firewall_rule)

Remove a Firewall rule.

Parameters:

egress_firewall_rule (CloudStackEgressFirewallRule) – Firewall rule which should be used

Return type:

bool

ex_delete_firewall_rule(firewall_rule)

Remove a Firewall Rule.

Parameters:

firewall_rule (CloudStackFirewallRule) – Firewall rule which should be used

Return type:

bool

ex_delete_ip_forwarding_rule(node, rule)

Remove a NAT/firewall forwarding rule.

Parameters:
  • node (CloudStackNode) – Node which should be used

  • rule (CloudStackForwardingRule) – Forwarding rule which should be used

Return type:

bool

ex_delete_keypair(keypair, **kwargs)

Deletes an existing SSH KeyPair

Parameters:
  • keypair (str) – Name of the keypair (required)

  • projectid (str) – The project associated with keypair

  • domainid (str) – The domain ID associated with the keypair

  • account (str) – The account associated with the keypair. Must be used with the domainId parameter.

Returns:

True of False based on success of Keypair deletion

Return type:

bool

ex_delete_network(network, force=None)

Deletes a Network, only available in advanced zones.

Parameters:
  • network – The network

  • force (bool) – Force deletion of the network?

Return type:

bool

ex_delete_port_forwarding_rule(node, rule)

Remove a Port forwarding rule.

Parameters:
  • node (CloudStackNode) – Node used in the rule

  • rule (CloudStackPortForwardingRule) – Forwarding rule which should be used

Return type:

bool

ex_delete_security_group(name)

Deletes a given Security Group

Parameters:
  • domainid (str) – The domain ID of account owning the security group

  • id (str) – The ID of the security group. Mutually exclusive with name parameter

  • name (str) – The ID of the security group. Mutually exclusive with id parameter

  • account (str) – The account of the security group. Must be specified with domain ID

  • projectid (str) – The project of the security group

Return type:

bool

ex_delete_tags(resource_ids, resource_type, tag_keys)

Delete tags from a resource.

Parameters:
  • resource_ids (list of resource IDs) – Resource IDs to be tagged. The resource IDs must all be associated with the resource_type. For example, for virtual machines (UserVm) you can only specify a list of virtual machine IDs.

  • resource_type (str) – Resource type (eg: UserVm)

  • tag_keys (list) – A list of keys to delete. CloudStack only requires the keys from the key/value pair.

Return type:

bool

ex_delete_vpc(vpc)

Deletes a VPC, only available in advanced zones.

Parameters:

vpc – The VPC

Return type:

bool

ex_delete_vpn_connection(vpn_connection)

Deletes a VPN Connection.

Parameters:

vpn_connection (CloudStackVpnConnection) – The VPN Connection (required).

Return type:

bool

ex_delete_vpn_customer_gateway(vpn_customer_gateway)

Deletes a VPN Customer Gateway.

Parameters:

vpn_customer_gateway (CloudStackVpnCustomerGateway) – The VPN Customer Gateway (required).

Return type:

bool

ex_delete_vpn_gateway(vpn_gateway)

Deletes a VPN Gateway.

Parameters:

vpn_gateway (CloudStackVpnGateway) – The VPN Gateway (required).

Return type:

bool

ex_detach_nic_from_node(nic, node)

Remove Nic from a VM

Parameters:
  • nic (:class:'CloudStackNetwork`) – Nic object

  • node (:class:'CloudStackNode`) – Node Object

Return type:

bool

ex_get_node(node_id, project=None)

Return a Node object based on its ID.

Parameters:
  • node_id (str) – The id of the node

  • project (CloudStackProject) – Limit node returned to those configured under the defined project.

Return type:

CloudStackNode

ex_get_volume(volume_id, project=None)

Return a StorageVolume object based on its ID.

Parameters:
  • volume_id (str) – The id of the volume

  • project (CloudStackProject) – Limit volume returned to those configured under the defined project.

Return type:

CloudStackNode

ex_import_keypair(name, keyfile)

Imports a new public key where the public key is passed via a filename

Parameters:
  • name (str) – The name of the public key to import.

  • keyfile (str) – The filename with path of the public key to import.

Return type:

dict

ex_import_keypair_from_string(name, key_material)

Imports a new public key where the public key is passed in as a string

Parameters:
  • name (str) – The name of the public key to import.

  • key_material (str) – The contents of a public key file.

Return type:

dict

ex_limits()

Extra call to get account’s resource limits, such as the amount of instances, volumes, snapshots and networks.

CloudStack uses integers as the resource type so we will convert them to a more human readable string using the resource map

A list of the resource type mappings can be found at http://goo.gl/17C6Gk

Returns:

dict

Return type:

dict

ex_list_affinity_group_types()

List Affinity Group Types

:rtype list of CloudStackAffinityGroupTypes

ex_list_affinity_groups()

List Affinity Groups

:rtype list of CloudStackAffinityGroup

ex_list_disk_offerings()

Fetch a list of all available disk offerings.

Return type:

list of CloudStackDiskOffering

ex_list_egress_firewall_rules()

Lists all egress Firewall Rules

Return type:

list of CloudStackEgressFirewallRule

ex_list_firewall_rules()

Lists all Firewall Rules

Return type:

list of CloudStackFirewallRule

ex_list_ip_forwarding_rules(account=None, domain_id=None, id=None, ipaddress_id=None, is_recursive=None, keyword=None, list_all=None, page=None, page_size=None, project_id=None, virtualmachine_id=None)

Lists all NAT/firewall forwarding rules

Parameters:
  • account (str) – List resources by account. Must be used with the domainId parameter

  • domain_id (str) – List only resources belonging to the domain specified

  • id (str) – Lists rule with the specified ID

  • ipaddress_id (str) – list the rule belonging to this public ip address

  • is_recursive (bool) – Defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.

  • keyword (str) – List by keyword

  • list_all (bool) – If set to false, list only resources belonging to the command’s caller; if set to true - list resources that the caller is authorized to see. Default value is false

  • page (int) – The page to list the keypairs from

  • page_size (int) – The number of results per page

  • project_id (str) – list objects by project

  • virtualmachine_id (str) – Lists all rules applied to the specified Vm

Return type:

list of CloudStackIPForwardingRule

ex_list_keypairs(**kwargs)

List Registered SSH Key Pairs

Parameters:
  • projectid (str) – list objects by project

  • page (int) – The page to list the keypairs from

  • keyword (str) – List by keyword

  • listall (bool) – If set to false, list only resources belonging to the command’s caller; if set to true - list resources that the caller is authorized to see. Default value is false

  • pagesize (int) – The number of results per page

  • account (str) – List resources by account. Must be used with the domainId parameter

  • isrecursive (bool) – Defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.

  • fingerprint (str) – A public key fingerprint to look for

  • name (str) – A key pair name to look for

  • domainid (str) – List only resources belonging to the domain specified

Returns:

A list of keypair dictionaries

Return type:

list of dict

ex_list_network_acl()

Lists all network ACL items

Return type:

list of CloudStackNetworkACL

ex_list_network_acllists()

Lists all network ACLs

Return type:

list of CloudStackNetworkACLList

ex_list_network_offerings()

List the available network offerings

:rtype list of CloudStackNetworkOffering

ex_list_networks(project=None)

List the available networks

Parameters:

project (CloudStackProject) – Optional project the networks belongs to.

:rtype list of CloudStackNetwork

ex_list_nics(node)

List the available networks

Parameters:

vm (:class:`CloudStackNode) – Node Object

:rtype list of CloudStackNic

ex_list_os_types()

List all registered os types (needed for snapshot creation)

Return type:

list

ex_list_port_forwarding_rules(account=None, domain_id=None, id=None, ipaddress_id=None, is_recursive=None, keyword=None, list_all=None, network_id=None, page=None, page_size=None, project_id=None)

Lists all Port Forwarding Rules

Parameters:
  • account (str) – List resources by account. Must be used with the domainId parameter

  • domain_id (str) – List only resources belonging to the domain specified

  • for_display (bool) – List resources by display flag (only root admin is eligible to pass this parameter).

  • id (str) – Lists rule with the specified ID

  • ipaddress_id (str) – list the rule belonging to this public ip address

  • is_recursive (bool) – Defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.

  • keyword (str) – List by keyword

  • list_all (bool) – If set to false, list only resources belonging to the command’s caller; if set to true - list resources that the caller is authorized to see. Default value is false

  • network_id (string) – list port forwarding rules for certain network

  • page (int) – The page to list the keypairs from

  • page_size (int) – The number of results per page

  • project_id (str) – list objects by project

Return type:

list of CloudStackPortForwardingRule

ex_list_projects()

List the available projects

:rtype list of CloudStackProject

ex_list_public_ips()

Lists all Public IP Addresses.

Return type:

list of CloudStackAddress

ex_list_routers(vpc_id=None)

List routers

:rtype list of CloudStackRouter

ex_list_security_groups(**kwargs)

Lists Security Groups

Parameters:
  • domainid (str) – List only resources belonging to the domain specified

  • account (str) – List resources by account. Must be used with the domainId parameter.

  • listall (bool) – If set to false, list only resources belonging to the command’s caller; if set to true list resources that the caller is authorized to see. Default value is false

  • pagesize (int) – Number of entries per page

  • keyword (str) – List by keyword

  • tags (dict) – List resources by tags (key/value pairs)

  • id (str) – list the security group by the id provided

  • securitygroupname (str) – lists security groups by name

  • virtualmachineid (str) – lists security groups by virtual machine id

  • projectid (str) – list objects by project

  • isrecursive (bool) – (boolean) defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.

  • page (int) – (integer)

:rtype list

ex_list_vpc_offerings()

List the available vpc offerings

:rtype list of CloudStackVPCOffering

ex_list_vpcs(project=None)

List the available VPCs

Parameters:

project (CloudStackProject) – Optional project under which VPCs are present.

:rtype list of CloudStackVPC

ex_list_vpn_connections(account=None, domain_id=None, for_display=None, id=None, is_recursive=None, keyword=None, list_all=None, page=None, page_size=None, project_id=None, vpc_id=None)

List VPN Connections.

Parameters:
  • account (str) – List resources by account (must be used with the domain_id parameter).

  • domain_id (str) – List only resources belonging to the domain specified.

  • for_display (bool) – List resources by display flag (only root admin is eligible to pass this parameter).

  • id (str) – ID of the VPN Connection.

  • is_recursive (bool) – Defaults to False, but if true, lists all resources from the parent specified by the domain_id till leaves.

  • keyword (str) – List by keyword.

  • list_all (str) – If set to False, list only resources belonging to the command’s caller; if set to True - list resources that the caller is authorized to see. Default value is False.

  • page (int) – Start from page.

  • page_size (int) – Items per page.

  • project_id (str) – List objects by project.

  • vpc_id (str) – List objects by VPC.

Return type:

list of CloudStackVpnConnection

ex_list_vpn_customer_gateways(account=None, domain_id=None, id=None, is_recursive=None, keyword=None, list_all=None, page=None, page_size=None, project_id=None)

List VPN Customer Gateways.

Parameters:
  • account (str) – List resources by account (must be used with the domain_id parameter).

  • domain_id (str) – List only resources belonging to the domain specified.

  • id (str) – ID of the VPN Customer Gateway.

  • is_recursive (bool) – Defaults to False, but if true, lists all resources from the parent specified by the domain_id till leaves.

  • keyword (str) – List by keyword.

  • list_all (str) – If set to False, list only resources belonging to the command’s caller; if set to True - list resources that the caller is authorized to see. Default value is False.

  • page (int) – Start from page.

  • page_size (int) – Items per page.

  • project_id (str) – List objects by project.

Return type:

list of CloudStackVpnCustomerGateway

ex_list_vpn_gateways(account=None, domain_id=None, for_display=None, id=None, is_recursive=None, keyword=None, list_all=None, page=None, page_size=None, project_id=None, vpc_id=None)

List VPN Gateways.

Parameters:
  • account (str) – List resources by account (must be used with the domain_id parameter).

  • domain_id (str) – List only resources belonging to the domain specified.

  • for_display (bool) – List resources by display flag (only root admin is eligible to pass this parameter).

  • id (str) – ID of the VPN Gateway.

  • is_recursive (bool) – Defaults to False, but if true, lists all resources from the parent specified by the domain ID till leaves.

  • keyword (str) – List by keyword.

  • list_all (str) – If set to False, list only resources belonging to the command’s caller; if set to True - list resources that the caller is authorized to see. Default value is False.

  • page (int) – Start from page.

  • page_size (int) – Items per page.

  • project_id (str) – List objects by project.

  • vpc_id (str) – List objects by VPC.

Return type:

list of CloudStackVpnGateway

ex_register_iso(name, url, location=None, **kwargs)

Registers an existing ISO by URL.

Parameters:
  • name (str) – Name which should be used

  • url (str) – Url should be used

  • location (NodeLocation) – Location which should be used

Return type:

str

ex_release_public_ip(address)

Release a public IP.

Parameters:

address (CloudStackAddress) – CloudStackAddress which should be used

Return type:

bool

ex_replace_network_acllist(acl_id, network_id)

Create an ACL List for a network within a VPC.Replaces ACL associated with a Network or private gateway

Parameters:
  • acl_id (string) – the ID of the network ACL

  • network_id (string) – the ID of the network

Return type:

CloudStackNetworkACLList

ex_restore(node, template=None)

Restore virtual machine

Parameters:
  • node (CloudStackNode) – Node to restore

  • template (NodeImage) – Optional new template

:rtype str

ex_revoke_security_group_ingress(rule_id)

Revoke/delete an ingress security rule

Parameters:

id (str) – The ID of the ingress security rule

Return type:

bool

ex_start(node)

Starts/Resumes a stopped virtual machine

Parameters:
  • id (str) – The ID of the virtual machine (required)

  • hostid (str) – destination Host ID to deploy the VM to parameter available for root admin only

:rtype str

ex_stop(node)

Stops/Suspends a running virtual machine

Parameters:

node (CloudStackNode) – Node to stop.

Return type:

str

ex_update_node_affinity_group(node, affinity_group_list)

Updates the affinity/anti-affinity group associations of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect.

Parameters:
  • node (CloudStackNode) – Node to update.

  • affinity_group_list (list of CloudStackAffinityGroup) – List of CloudStackAffinityGroup to associate

:rtype CloudStackNode

features: Dict[str, List[str]] = {'create_node': ['generates_password']}
List of available features for a driver.
get_image(image_id: str) NodeImage

Returns a single node image from a provider.

Parameters:

image_id (str) – Node to run the task on.

:rtype NodeImage: :return: NodeImage instance on success.

get_key_pair(name)

Retrieve a single key pair.

Parameters:

name (str) – Name of the key pair to retrieve.

Return type:

KeyPair

import_key_pair_from_file(name: str, key_file_path: str) KeyPair

Import a new public key from string.

Parameters:
  • name (str) – Key pair name.

  • key_file_path (str) – Path to the public key file.

Return type:

KeyPair object

import_key_pair_from_string(name, key_material)

Import a new public key from string.

Parameters:
  • name (str) – Key pair name.

  • key_material (str) – Public key material.

Returns:

Imported key pair object.

Return type:

libcloud.compute.base.KeyPair

list_images(location=None)

List images on a provider.

Parameters:

location (NodeLocation) – The location at which to list images.

Returns:

list of node image objects.

Return type:

list of NodeImage

list_key_pairs(**kwargs)

List registered key pairs.

Parameters:
  • projectid (str) – list objects by project

  • page (int) – The page to list the keypairs from

  • keyword (str) – List by keyword

  • listall (bool) – If set to false, list only resources belonging to the command’s caller; if set to true - list resources that the caller is authorized to see. Default value is false

  • pagesize (int) – The number of results per page

  • account (str) – List resources by account. Must be used with the domainId parameter

  • isrecursive (bool) – Defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.

  • fingerprint (str) – A public key fingerprint to look for

  • name (str) – A key pair name to look for

  • domainid (str) – List only resources belonging to the domain specified

Returns:

A list of key par objects.

Return type:

list of libcloud.compute.base.KeyPair

list_locations()

:rtype list of NodeLocation

list_nodes(project=None, location=None)

@inherits: NodeDriver.list_nodes

Parameters:
  • project (CloudStackProject) – Limit nodes returned to those configured under the defined project.

  • location (NodeLocation) – Limit nodes returned to those in the defined location.

Return type:

list of CloudStackNode

list_sizes(location=None)

:rtype list of NodeSize

list_snapshots()

Describe all snapshots.

Return type:

list of VolumeSnapshot

list_volume_snapshots(volume: StorageVolume) List[VolumeSnapshot]

List snapshots for a storage volume.

Return type:

list of VolumeSnapshot

list_volumes(node=None)

List all volumes

Parameters:

node (CloudStackNode) – Only return volumes for the provided node.

Return type:

list of StorageVolume

reboot_node(node)

@inherits: NodeDriver.reboot_node :type node: CloudStackNode

Return type:

bool

start_node(node: Node) bool

Start a node.

Parameters:

node (Node) – The node to be started

Returns:

True if the start was successful, otherwise False

Return type:

bool

stop_node(node: Node) bool

Stop a node

Parameters:

node (Node) – The node to be stopped.

Returns:

True if the stop was successful, otherwise False

Return type:

bool

wait_until_running(nodes: List[Node], wait_period: float = 5, timeout: int = 600, ssh_interface: str = 'public_ips', force_ipv4: bool = True, ex_list_nodes_kwargs: Dict | None = None) List[Tuple[Node, List[str]]]

Block until the provided nodes are considered running.

Node is considered running when it’s state is “running” and when it has at least one IP address assigned.

Parameters:
  • nodes (list of Node) – List of nodes to wait for.

  • wait_period (int) – How many seconds to wait between each loop iteration. (default is 3)

  • timeout (int) – How many seconds to wait before giving up. (default is 600)

  • ssh_interface (str) – Which attribute on the node to use to obtain an IP address. Valid options: public_ips, private_ips. Default is public_ips.

  • force_ipv4 (bool) – Ignore IPv6 addresses (default is True).

  • ex_list_nodes_kwargs (dict) – Optional driver-specific keyword arguments which are passed to the list_nodes method.

Returns:

[(Node, ip_addresses)] list of tuple of Node instance and list of ip_address on success.

Return type:

list of tuple