ProfitBricks Driver Documentation¶
ProfitBricks is an innovative and enterprise-grade IaaS provider.
The ProfitBricks driver allows you to integrate with the ProfitBricks Cloud API to manage virtual data centers and other resources located in the United States and Germany availability zones.
Instantiating a Driver¶
Before you start using the ProfitBricks driver you will have to sign up for a ProfitBricks account. To instantiate a driver you will need to pass your ProfitBrick credentials, i.e., username and password.
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.PROFIT_BRICKS)
driver = cls('username', 'password')
Examples¶
Create a data center¶
import os
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.PROFIT_BRICKS)
# Get ProfitBricks credentials from environment variables
pb_username = os.environ.get('PROFITBRICKS_USERNAME')
pb_password = os.environ.get('PROFITBRICKS_PASSWORD')
driver = cls(pb_username, pb_password)
# list available locations
locations = driver.list_locations()
my_location = None
# US Las Vegas location
for loc in locations:
if loc.id == 'us/las':
my_location = loc
break
# Create a data center
datacenter = driver.ex_create_datacenter('demo-dc', my_location)
print(datacenter)
Create a LAN¶
import os
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.PROFIT_BRICKS)
# Get ProfitBricks credentials from environment variables
pb_username = os.environ.get('PROFITBRICKS_USERNAME')
pb_password = os.environ.get('PROFITBRICKS_PASSWORD')
driver = cls(pb_username, pb_password)
datacenters = driver.list_datacenters()
# Looks for existing data centers named 'demo-dc'
datacenter = [dc for dc in datacenters if dc.name == 'demo-dc'][0]
# Create a public LAN
lan = driver.ex_create_lan(datacenter, is_public=True)
print(lan)
Create a node¶
import os
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
from libcloud.compute.base import NodeAuthSSHKey
cls = get_driver(Provider.PROFIT_BRICKS)
# Get ProfitBricks credentials from environment variables
pb_username = os.environ.get('PROFITBRICKS_USERNAME')
pb_password = os.environ.get('PROFITBRICKS_PASSWORD')
driver = cls(pb_username, pb_password)
# List available sizes
sizes = driver.list_sizes()
# Medium-size instance
my_size = sizes[1]
datacenters = driver.ex_list_datacenters()
# Looks for existing data centers named 'demo-dc'
desired_dc = [dc for dc in datacenters if dc.name == 'demo-dc']
# Get available HDD public images
images = driver.list_images('HDD')
my_image = None
# Let's choose Ubuntu-16.04 image in us/las region
for img in images:
if ('Ubuntu-16.04-LTS-server' in img.name and
'us/las' == img.extra['location']):
my_image = img
break
node_key = None
# Read SSH key from file
# Specify correct path
with open('/home/user/.ssh/id_rsa.pub', 'r') as f:
node_key = NodeAuthSSHKey(f.read())
f.close()
node = driver.create_node(
name='demo-node',
size=my_size,
ex_cpu_family='INTEL_XEON',
image=my_image,
ex_datacenter=desired_dc[0],
ex_ssh_keys=[node_key]
)
print(node)
Create an SSD volume¶
import os
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.PROFIT_BRICKS)
# Get ProfitBricks credentials from environment variables
pb_username = os.environ.get('PROFITBRICKS_USERNAME')
pb_password = os.environ.get('PROFITBRICKS_PASSWORD')
driver = cls(pb_username, pb_password)
datacenters = driver.ex_list_datacenters()
location = driver.ex_describe_location(ex_location_id='us/las')
datacenter = [dc for dc in datacenters if dc.extra['location'] == location.id]
images = driver.list_images(image_type='HDD')
image = [img for img in images if img.extra['location'] == location.id][0]
# Create a new SSD volume. Set `ex_type='HDD'` to create a HDD volume.
ssd_volume = driver.create_volume(
name='Example SSD volume',
size=100,
image=image,
ex_type='SSD',
ex_datacenter=datacenter[0],
ex_password='PuTSoMeSTRONGPaSsWoRdHeRe2017'
)
print(ssd_volume)
Refer to the driver documentation for more examples and code snippets.
API Docs¶
- class libcloud.compute.drivers.profitbricks.ProfitBricksNodeDriver(key, secret=None, secure=True, host=None, port=None, api_version=None, region=None, **kwargs)[source]¶
Base ProfitBricks node driver.
- Parameters
key (
str
) – API key or username to be used (required)secret (
str
) – Secret password to be used (required)secure (
bool
) – Whether to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.host (
str
) – Override hostname used for connections.port (
int
) – Override port used for connections.api_version (
str
) – Optional API version. Only used by drivers which support multiple API versions.region (
str
) – Optional driver region. Only used by drivers which support multiple regions.
- Return type
None
- AVAILABILITY_ZONE = {'1': {'name': 'AUTO'}, '2': {'name': 'ZONE_1'}, '3': {'name': 'ZONE_2'}}¶
ProfitBricks is unique in that they allow the user to define all aspects of the instance size, i.e. disk size, core size, and memory size.
These are instance types that match up with what other providers support.
You can configure disk size, core size, and memory size using the
ex_
parameters on the create_node method.
- PROFIT_BRICKS_GENERIC_SIZES = {'1': {'cores': 1, 'disk': 50, 'id': '1', 'name': 'Micro', 'ram': 1024}, '2': {'cores': 1, 'disk': 50, 'id': '2', 'name': 'Small Instance', 'ram': 2048}, '3': {'cores': 2, 'disk': 50, 'id': '3', 'name': 'Medium Instance', 'ram': 4096}, '4': {'cores': 4, 'disk': 50, 'id': '4', 'name': 'Large Instance', 'ram': 7168}, '5': {'cores': 8, 'disk': 50, 'id': '5', 'name': 'ExtraLarge Instance', 'ram': 14336}, '6': {'cores': 4, 'disk': 50, 'id': '6', 'name': 'Memory Intensive Instance Medium', 'ram': 28672}, '7': {'cores': 8, 'disk': 50, 'id': '7', 'name': 'Memory Intensive Instance Large', 'ram': 57344}}¶
Core Functions
- attach_volume(node, volume)[source]¶
Attaches a volume.
- Parameters
node (
Node
) – The node to which you’re attaching the volume.volume (
StorageVolume
) – The volume you’re attaching.
- Returns
Instance of class
StorageVolume
- Return type
StorageVolume
- connectionCls¶
alias of
libcloud.compute.drivers.profitbricks.ProfitBricksConnection
- copy_image(source_region, node_image, name, description=None)¶
Copies an image from a source region to the current region.
- create_image(node, name, description=None)¶
Creates an image from a node object.
- create_key_pair(name)¶
Create a new key pair object.
- Parameters
name (
str
) – Key pair name.- Return type
KeyPair
object
- create_node(name, image=None, size=None, location=None, ex_cpu_family=None, volume=None, ex_datacenter=None, ex_network_interface=True, ex_internet_access=True, ex_exposed_public_ports=[], ex_exposed_private_ports=[22], ex_availability_zone=None, ex_ram=None, ex_cores=None, ex_disk=None, ex_password=None, ex_ssh_keys=None, ex_bus_type=None, ex_disk_type=None, **kwargs)[source]¶
Creates a node.
image is optional as long as you pass ram, cores, and disk to the method. ProfitBricks allows you to adjust compute resources at a much more granular level.
- Parameters
name – The name for the new node.
type –
str
image (
NodeImage
) – The image to create the node with.size – Standard configured size offered by ProfitBricks - containing configuration for the number of cpu cores, amount of ram and disk size.
size –
NodeSize
location (
NodeLocation
) – The location of the new data center if one is not supplied.ex_cpu_family (
str
) – The CPU family to use (AMD_OPTERON, INTEL_XEON)volume (
StorageVolume
) – If the volume already exists then pass this in.ex_datacenter (
Datacenter
) – If you’ve already created the DC then pass it in.ex_network_interface (:
bool
) – Create with a network interface.ex_internet_access (:
bool
) – Configure public Internet access.ex_exposed_public_ports – Ports to be opened for the public nic.
ex_exposed_public_ports –
list
ofint
ex_exposed_private_ports – Ports to be opened for the private nic.
ex_exposed_private_ports –
list
ofint
ex_availability_zone (class: ProfitBricksAvailabilityZone) – The availability zone.
ex_ram (:
int
) – The amount of ram required.ex_cores (
int
) – The number of cores required.ex_disk (
int
) – The amount of disk required.ex_password (
NodeAuthPassword
orstr
) – The password for the volume.ex_ssh_keys (
list
ofNodeAuthSSHKey
orlist
ofstr
) – Optional SSH keys for the volume.ex_bus_type (
str
) – Volume bus type (VIRTIO, IDE).ex_disk_type (
str
) – Volume disk type (SSD, HDD).
- Returns
Instance of class
Node
- Return type
- class
Node
- create_volume(size, ex_datacenter, name=None, image=None, ex_image_alias=None, ex_type=None, ex_bus_type=None, ex_ssh_keys=None, ex_password=None, ex_availability_zone=None)[source]¶
Creates a volume.
- Parameters
size (
int
) – The size of the volume in GB.ex_datacenter (
Datacenter
) – The datacenter you’re placing the storage in. (req)name – The name to be given to the volume.
name –
str
image (
NodeImage
) – The OS image for the volume.ex_image_alias (
str
) – An alias to a ProfitBricks public image. Use instead of ‘image’.ex_type – The type to be given to the volume (SSD or HDD).
ex_type –
str
ex_bus_type (
str
) – Bus type. Either IDE or VIRTIO (default).ex_ssh_keys (
list
ofNodeAuthSSHKey
orlist
ofstr
) – Optional SSH keys.ex_password (
NodeAuthPassword
orstr
) – Optional password for root.ex_availability_zone (
str
) – Volume Availability Zone.
- Returns
Instance of class
StorageVolume
- Return type
StorageVolume
- create_volume_snapshot(volume)[source]¶
Creates a snapshot for a volume
- Parameters
volume (
StorageVolume
) – The volume you’re creating a snapshot for.- Returns
Instance of class
VolumeSnapshot
- Return type
VolumeSnapshot
- delete_image(node_image)¶
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)¶
Delete an existing key pair.
- Parameters
key_pair (
KeyPair
) – Key pair object.- Return type
bool
- deploy_node(deploy, ssh_username='root', ssh_alternate_usernames=None, ssh_port=22, ssh_timeout=10, ssh_key=None, ssh_key_password=None, auth=None, timeout=300, max_tries=3, ssh_interface='public_ips', at_exit_func=None, wait_period=5, **create_node_kwargs)¶
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
orNodeAuthSSHKey
to theauth
argument. If thecreate_node
implementation supports that kind if credential (as declared inself.features['create_node']
) then it is passed on tocreate_node
. Otherwise it is not passed on tocreate_node
and it is only used for authentication.If the
auth
parameter is not supplied but the driver declares it supportsgenerates_password
then the password returned bycreate_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 failsssh_port (
int
) – Optional SSH server port (default is 22)ssh_timeout (
float
) – Optional SSH connection timeout in seconds (default is 10)auth (
NodeAuthSSHKey
orNodeAuthPassword
) – Initial authentication information for the node (optional)ssh_key (
str
orlist
ofstr
) – 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_remove_attached_disks=False)[source]¶
Destroys a node.
- Parameters
node – The node you wish to destroy.
ex_remove_attached_disks (:
bool
) – True to destroy all attached volumes.
- Return type
:
bool
- destroy_volume(volume)[source]¶
Destroys a volume.
- Parameters
volume (
StorageVolume
) – The volume you’re destroying.- Return type
:
bool
- destroy_volume_snapshot(snapshot)[source]¶
Delete a snapshot
- Parameters
snapshot – The snapshot you wish to delete.
- Type
snapshot:
VolumeSnapshot
:rtype
bool
- detach_volume(node, volume)[source]¶
Detaches a volume.
- Parameters
node (
Node
) – The node to which you’re detaching the volume.volume (
StorageVolume
) – The volume you’re detaching.
- Return type
:
bool
- ex_attach_nic_to_load_balancer(load_balancer, network_interface)[source]¶
Attaches a network interface to a load balancer
- Parameters
load_balancer – The load balancer you wish to attach the network interface to.
network_interface – The network interface being attached.
- Type
load_balancer:
ProfitBricksLoadBalancer
- Type
network_interface:
ProfitBricksNetworkInterface
:rtype
bool
- ex_create_datacenter(name, location, description=None)[source]¶
Creates a datacenter.
ProfitBricks has a concept of datacenters. These represent buckets into which you can place various compute resources.
- Parameters
name (:
str
) – The datacenter name.location (:
NodeLocation
) – instance of classNodeLocation
.description (:
str
) – The datacenter description.
- Returns
Instance of class
Datacenter
- Return type
- ex_create_firewall_rule(network_interface, protocol, name=None, source_mac=None, source_ip=None, target_ip=None, port_range_start=None, port_range_end=None, icmp_type=None, icmp_code=None)[source]¶
Create a firewall rule for a network interface.
- Parameters
network_interface – The network interface to attach the firewall rule to.
protocol (
str
) – The protocol for the rule (TCP, UDP, ICMP, ANY)name (
str
) – The name for the firewall rulesource_mac (
str
) – Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address.source_ip (
str
) – Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.target_ip (
str
) – In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.port_range_start – Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd value null to allow all ports.
- Type
network_interface:
ProfitBricksNetworkInterface
type: port_range_start:
int
- Parameters
port_range_end – Defines the end range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd value null to allow all ports.
type: port_range_end:
int
- Parameters
icmp_type (
int
) – Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen. Value null allows all types.icmp_code (
int
) – Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.
- Returns
Instance class
ProfitBricksFirewallRule
- Return type
- ex_create_ip_block(location, size, name=None)[source]¶
Create an IP block
- Parameters
location (
NodeLocation
) – The location of the IP block.size (
int
) – The size of the IP block.name (
str
) – The name of the IP block.
- Returns
Instance class
ProfitBricksIPBlock
- Return type
- ex_create_lan(datacenter, name=None, is_public=False, nics=None)[source]¶
Create and attach a Lan to a data center.
- Parameters
datacenter (
Datacenter
) – The parent DC for the LAN..name (
str
) – LAN name.is_public (
bool
) – True if the Lan is to have internet access.nics – Optional network interfaces to attach to the lan.
nics –
list
of classProfitBricksNetworkInterface
- Returns
Instance class
ProfitBricksLan
- Return type
- ex_create_load_balancer(datacenter, name=None, ip=None, dhcp=None, nics=None)[source]¶
Create and attach a load balancer to a data center.
- Parameters
datacenter (
Datacenter
) – The parent DC for the load balancer.name (
str
) – Load balancer name.ip (
str
) – Load balancer IPV4 address.dhcp (
bool
) – If true, the load balancer will reserve an IP address using DHCP.nics – Optional network interfaces taking part in load balancing.
nics –
list
of classProfitBricksNetworkInterface
- Returns
Instance class
ProfitBricksLoadBalancer
- Return type
- ex_create_network_interface(node, lan_id=None, ips=None, nic_name=None, dhcp_active=True)[source]¶
Creates a network interface.
- Parameters
lan_id (:
int
) – The ID for the LAN.ips (
list
) – The IP addresses for the NIC.nic_name (
str
) – The name of the NIC, e.g. PUBLIC.dhcp_active (
bool
) – Set to false to disable.
- Returns
Instance of class
ProfitBricksNetworkInterface
- Return type
- ex_delete_firewall_rule(firewall_rule)[source]¶
Delete a firewall rule
- Parameters
firewall_rule – The firewall rule to delete.
- Type
firewall_rule:
ProfitBricksFirewallRule
:rtype
bool
- ex_delete_image(image)[source]¶
Delete a private image
- Parameters
image (
NodeImage
) – The private image you are deleting.- Return type
:
bool
- ex_delete_ip_block(ip_block)[source]¶
Delete an IP block
- Parameters
ip_block – The IP block you wish to delete.
- Type
ip_block:
ProfitBricksIPBlock
:rtype
bool
- ex_delete_lan(lan)[source]¶
Delete a local area network
- Parameters
lan – The lan you wish to delete.
- Type
lan:
ProfitBrickLan
:rtype
bool
- ex_delete_load_balancer(load_balancer)[source]¶
Delete a load balancer
- Parameters
load_balancer – The load balancer you wish to delete.
- Type
load_balancer:
ProfitBricksLoadBalancer
:rtype
bool
- ex_describe_datacenter(ex_href=None, ex_datacenter_id=None)[source]¶
Fetches the details for a data center.
- Parameters
ex_href (
str
) – The href for the data center you are describing.ex_datacenter_id (
str
) – The ID for the data center you are describing.
- Returns
Instance of class
Datacenter
- Return type
- ex_describe_firewall_rule(ex_href=None, ex_datacenter_id=None, ex_server_id=None, ex_nic_id=None, ex_firewall_rule_id=None)[source]¶
Fetch data for a firewall rule.
- Parameters
href (
str
) – The href of the firewall rule you wish to describe.ex_datacenter_id (
str
) – The ID of parent data center of the NIC you wish to describe.ex_server_id (
str
) – The server the NIC is connected to.ex_nic_id (
str
) – The ID of the NIC.ex_firewall_rule_id (
str
) – The ID of the firewall rule.
- Returns
Instance class
ProfitBricksFirewallRule
- Return type
- ex_describe_image(ex_href=None, ex_image_id=None)[source]¶
Describe a ProfitBricks image
- Parameters
ex_href (
str
) – The href for the image you are describingex_image_id (
str
) – The ID for the image you are describing
- Returns
Instance of class
Image
- Return type
Image
- ex_describe_ip_block(ex_href=None, ex_ip_block_id=None)[source]¶
Fetch an IP block
- Parameters
ex_href (
str
) – The href of the IP block.ex_ip_block_id (
str
) – The ID of the IP block.
- Returns
Instance class
ProfitBricksIPBlock
- Return type
- ex_describe_lan(ex_href=None, ex_datacenter_id=None, ex_lan_id=None)[source]¶
Fetch data on a local area network
- Parameters
ex_href (
str
) – The href of the lan you wish to describe.ex_datacenter_id (
str
) – The ID of the parent datacenter for the LAN.ex_lan_id (
str
) – The ID of LAN.
- Returns
Instance class
ProfitBricksLan
- Return type
- ex_describe_load_balanced_nic(ex_href=None, ex_datacenter_id=None, ex_server_id=None, ex_nic_id=None)[source]¶
Fetch information on a load balanced network interface.
- Parameters
ex_href (
str
) – The href of the load balanced NIC you wish to describe.ex_datacenter_id (
str
) – The ID of parent data center of the NIC you wish to describe.ex_server_id (
str
) – The server the NIC is connected to.ex_nic_id (
str
) – The ID of the NIC
- Returns
Instance of class
ProfitBricksNetworkInterface
- Return type
- ex_describe_load_balancer(ex_href=None, ex_datacenter_id=None, ex_load_balancer_id=None)[source]¶
Fetches and returns a load balancer
- Parameters
href (
str
) – The full href (url) of the load balancer.ex_datacenter_id (
str
) – The ID of the parent data center for the load balancer.ex_load_balancer_id (
str
) – The load balancer ID.
- Returns
Instance of class
ProfitBricksLoadBalancer
- Return type
- ex_describe_location(ex_href=None, ex_location_id=None)[source]¶
Fetch details for a ProfitBricks location.
- Parameters
ex_href (
str
) – The href for the location you are describing.ex_location_id (
str
) – The id for the location you are describing (‘de/fra’, ‘de/fkb’, ‘us/las’, ‘us/ewr’)
- Returns
Instance of class
NodeLocation
- Return type
NodeLocation
- ex_describe_network_interface(ex_href=None, ex_datacenter_id=None, ex_server_id=None, ex_nic_id=None)[source]¶
Fetch information on a network interface.
- Parameters
ex_href (
str
) – The href of the NIC you wish to describe.ex_datacenter_id (
str
) – The ID of parent data center of the NIC you wish to describe.ex_server_id (
str
) – The server the NIC is connected to.ex_nic_id (
str
) – The ID of the NIC
- Returns
Instance of class
ProfitBricksNetworkInterface
- Return type
- ex_describe_node(ex_href=None, ex_datacenter_id=None, ex_node_id=None)[source]¶
Fetches a node directly by href or by a combination of the datacenter ID and the server ID.
- Parameters
ex_href (
str
) – The href (url) of the node you wish to describe.ex_datacenter_id (
str
) – The ID for the data center.ex_node_id (
str
) – The ID for the node (server).
- Returns
Instance of class
Node
- Return type
Node
- ex_describe_snapshot(ex_href=None, ex_snapshot_id=None)[source]¶
Fetches and returns a volume snapshot
- Parameters
ex_href (
str
) – The full href (url) of the snapshot.ex_snapshot_id (
str
) – The ID of the snapshot.
- Returns
Instance of class
ProfitBricksSnapshot
- Return type
ProfitBricksSnapshot
- ex_describe_volume(ex_href=None, ex_datacenter_id=None, ex_volume_id=None)[source]¶
Fetches and returns a volume
- Parameters
ex_href (
str
) – The full href (url) of the volume.ex_datacenter_id (
str
) – The ID of the parent datacenter for the volume.ex_volume_id (
str
) – The ID of the volume.
- Returns
Instance of class
StorageVolume
- Return type
StorageVolume
- ex_destroy_datacenter(datacenter)[source]¶
Destroys a datacenter.
- Parameters
datacenter (
Datacenter
) – The DC you’re destroying.- Return type
:
bool
- ex_destroy_network_interface(network_interface)[source]¶
Destroy a network interface.
- Parameters
network_interface (
ProfitBricksNetworkInterface
) – The NIC you wish to describe.- Return type
:
bool
- ex_list_attached_volumes(node)[source]¶
Returns a list of attached volumes for a server
- Parameters
node (
Node
) – The node with the attached volumes.- Returns
list
ofStorageVolume
- Return type
list
- ex_list_availability_zones()[source]¶
Returns a list of availability zones.
- Returns
list
ofProfitBricksAvailabilityZone
- Return type
list
- ex_list_firewall_rules(network_interface)[source]¶
Fetch firewall rules for a network interface.
- Parameters
network_interface (
ProfitBricksNetworkInterface
) – The network interface.- Returns
list
of classProfitBricksFirewallRule
- Return type
list
- ex_list_ip_blocks()[source]¶
List all IP blocks
- Returns
list
of classProfitBricksIPBlock
- Return type
list
- ex_list_lans(datacenter=None)[source]¶
List local area network on: - a datacenter if one is specified - all datacenters if none specified
- Parameters
datacenter (
Datacenter
) – The parent DC for the LAN.- Returns
list
of classProfitBricksLan
- Return type
list
- ex_list_load_balanced_nics(load_balancer)[source]¶
List balanced network interfaces for a load balancer.
- Parameters
load_balancer – The load balancer you wish to update.
- Type
load_balancer:
ProfitBricksLoadBalancer
- Returns
list
of classProfitBricksNetorkInterface
- Return type
list
- ex_list_load_balancers()[source]¶
Fetches as a list of load balancers
- Returns
list
of classProfitBricksLoadBalancer
- Return type
list
- ex_list_network_interfaces()[source]¶
Fetch a list of all network interfaces from all data centers.
- Returns
list
of classProfitBricksNetworkInterface
- Return type
list
- ex_remove_nic_from_load_balancer(load_balancer, network_interface)[source]¶
Removed a network interface from a load balancer
- Parameters
load_balancer – The load balancer you wish to remove the network interface from.
network_interface – The network interface being removed.
- Type
load_balancer:
ProfitBricksLoadBalancer
- Type
network_interface:
ProfitBricksNetworkInterface
:rtype
bool
- ex_rename_datacenter(datacenter, name)[source]¶
Update a datacenter.
- Parameters
datacenter (
Datacenter
) – The DC you are renaming.name (:
str
) – The DC name.
- Returns
Instance of class
Datacenter
- Return type
- ex_restore_volume_snapshot(volume, snapshot)[source]¶
Restores a snapshot for a volume
- Parameters
volume (
StorageVolume
) – The volume you’re restoring the snapshot to.snapshot (
ProfitBricksSnapshot
) – The snapshot you’re restoring to the volume.
:rtype
bool
- ex_set_inet_access(network_interface, internet_access=True)[source]¶
Add/remove public internet access to an interface.
- Parameters
network_interface (
ProfitBricksNetworkInterface
) – The NIC you wish to update.- Returns
Instance of class
ProfitBricksNetworkInterface
- Return type
- ex_update_firewall_rule(firewall_rule, name=None, source_mac=None, source_ip=None, target_ip=None, port_range_start=None, port_range_end=None, icmp_type=None, icmp_code=None)[source]¶
Update a firewall rule
- Parameters
firewall_rule – The firewall rule to update
name (
str
) – The name for the firewall rulesource_mac (
str
) – Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address.source_ip (
str
) – Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.target_ip (
str
) – In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.port_range_start – Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd value null to allow all ports.
- Type
firewall_rule:
ProfitBricksFirewallRule
type: port_range_start:
int
- Parameters
port_range_end – Defines the end range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd value null to allow all ports.
type: port_range_end:
int
- Parameters
icmp_type (
int
) – Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen. Value null allows all types.icmp_code (
int
) – Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.
- Returns
Instance class
ProfitBricksFirewallRule
- Return type
- ex_update_image(image, name=None, description=None, licence_type=None, cpu_hot_plug=None, cpu_hot_unplug=None, ram_hot_plug=None, ram_hot_unplug=None, nic_hot_plug=None, nic_hot_unplug=None, disc_virtio_hot_plug=None, disc_virtio_hot_unplug=None, disc_scsi_hot_plug=None, disc_scsi_hot_unplug=None)[source]¶
Update a private image
- Parameters
image (
NodeImage
) – The private image you are deleting.- Returns
Instance of class
Image
- Return type
Image
- ex_update_lan(lan, is_public, name=None, ip_failover=None)[source]¶
Update a local area network
- Parameters
lan – The lan you wish to update.
is_public (
bool
) – Boolean indicating if the lan faces the public internet.name (
str
) – The name of the lan.ip_failover (
list
of :class:ProfitBricksIPFailover
) – The IP to fail over.
- Type
lan:
ProfitBricksLan
- Returns
Instance class
ProfitBricksLan
- Return type
- ex_update_load_balancer(load_balancer, name=None, ip=None, dhcp=None)[source]¶
Update a load balancer
- Parameters
load_balancer – The load balancer you wish to update.
name (
str
) – The name of the load balancer.ip (
str
) – The IPV4 address of the load balancer.dhcp (
bool
) – If true, the load balancer will reserve an IP address using DHCP.
- Type
load_balancer:
ProfitBricksLoadBalancer
- Returns
Instance class
ProfitBricksLoadBalancer
- Return type
- ex_update_network_interface(network_interface, name=None, lan_id=None, ips=None, dhcp_active=None)[source]¶
Updates a network interface.
- Parameters
network_interface (
ProfitBricksNetworkInterface
) – The network interface being updated.name (
str
) – The name of the NIC, e.g. PUBLIC.lan_id (:
int
) – The ID for the LAN.ips (
list
) – The IP addresses for the NIC as a list.dhcp_active (
bool
) – Set to false to disable.
- Returns
Instance of class
ProfitBricksNetworkInterface
- Return type
- ex_update_node(node, name=None, cores=None, ram=None, availability_zone=None, ex_licence_type=None, ex_boot_volume=None, ex_boot_cdrom=None, ex_cpu_family=None)[source]¶
Updates a node.
- Parameters
node (
Node
) – The node you wish to update.name (
str
) – The new name for the node.cores (:
int
) – The number of CPUs the node should have.ram (:
int
) – The amount of ram the node should have.availability_zone (
ProfitBricksAvailabilityZone
) – Update the availability zone.ex_licence_type (
str
) – Licence type (WINDOWS, WINDOWS2016, LINUX, OTHER, UNKNOWN).ex_boot_volume (
StorageVolume
) – Setting the new boot (HDD) volume.ex_boot_cdrom (
StorageVolume
) – Setting the new boot (CDROM) volume.ex_cpu_family (
str
) – CPU family (INTEL_XEON, AMD_OPTERON).
- Returns
Instance of class
Node
- Return type
- class
Node
- ex_update_snapshot(snapshot, name=None, description=None, cpu_hot_plug=None, cpu_hot_unplug=None, ram_hot_plug=None, ram_hot_unplug=None, nic_hot_plug=None, nic_hot_unplug=None, disc_virtio_hot_plug=None, disc_virtio_hot_unplug=None, disc_scsi_hot_plug=None, disc_scsi_hot_unplug=None, licence_type=None)[source]¶
Updates a snapshot
- Parameters
snapshot (
VolumeSnapshot
) – The snapshot you’re restoring to the volume.name (str) – The snapshot name
description (str) – The snapshot description
cpu_hot_plug (str) – Snapshot CPU is hot pluggalbe
cpu_hot_unplug (str) – Snapshot CPU is hot unpluggalbe
ram_hot_plug (str) – Snapshot RAM is hot pluggalbe
ram_hot_unplug (str) – Snapshot RAM is hot unpluggalbe
nic_hot_plug (str) – Snapshot Network Interface is hot pluggalbe
nic_hot_unplug (str) – Snapshot Network Interface is hot unpluggalbe
disc_virtio_hot_plug (str) – Snapshot VIRTIO disk is hot pluggalbe
disc_virtio_hot_unplug (str) – Snapshot VIRTIO disk is hot unpluggalbe
disc_scsi_hot_plug (str) – Snapshot SCSI disk is hot pluggalbe
disc_scsi_hot_unplug (str) – Snapshot SCSI disk is hot unpluggalbe
licence_type (str) – The snapshot licence_type
- Returns
Instance of class
VolumeSnapshot
- Return type
VolumeSnapshot
- ex_update_volume(volume, ex_storage_name=None, size=None, ex_bus_type=None)[source]¶
Updates a volume.
- Parameters
volume (
StorageVolume
) – The volume you’re updating.ex_storage_name (
str
) – The name of the volume.size (
int
) – The desired size.ex_bus_type (
str
) – Volume bus type (VIRTIO, IDE).
- Returns
Instance of class
StorageVolume
- Return type
StorageVolume
- get_image(image_id)¶
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
- import_key_pair_from_file(name, key_file_path)¶
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.
- Return type
KeyPair
object
- list_images(image_type=None, is_public=True)[source]¶
List all images with an optional filter.
- Parameters
image_type (
str
) – The image type (HDD, CDROM)is_public (
bool
) – Image is public
- Returns
list
ofNodeImage
- Return type
list
- list_sizes()[source]¶
Lists all sizes
- Returns
A list of all configurable node sizes.
- Return type
list
ofNodeSize
- list_snapshots()[source]¶
Fetches as a list of all snapshots
- Returns
list
of classVolumeSnapshot
- Return type
list
- list_volume_snapshots(volume)¶
List snapshots for a storage volume.
- Return type
list
ofVolumeSnapshot
- list_volumes()[source]¶
List all volumes attached to a data center.
- Returns
list
ofStorageVolume
- Return type
list
- start_node(node)[source]¶
Starts a node.
- Parameters
node (
Node
) – The node you wish to start.- Return type
bool
- stop_node(node)[source]¶
Stops a node.
This also deallocates the public IP space.
- Parameters
node (
Node
) – The node you wish to halt.- Return type
:
bool
- wait_until_running(nodes, wait_period=5, timeout=600, ssh_interface='public_ips', force_ipv4=True, ex_list_nodes_kwargs=None)¶
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
ofNode
) – 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 thelist_nodes
method.
- Returns
[(Node, ip_addresses)]
list of tuple of Node instance and list of ip_address on success.- Return type
list
oftuple
- class libcloud.compute.drivers.profitbricks.Datacenter(id, href, name, version, driver, extra=None)[source]¶
Class which stores information about ProfitBricks datacenter instances.
- Parameters
id (
str
) – The datacenter ID.href (
str
) – The datacenter href.name (
str
) – The datacenter name.version (
str
) – Datacenter version.driver (
ProfitBricksNodeDriver
) – ProfitBricks Node Driver.extra (
dict
) – Extra properties for the Datacenter.
Note: This class is ProfitBricks specific.
- class libcloud.compute.drivers.profitbricks.ProfitBricksNetworkInterface(id, name, href, state, extra=None)[source]¶
Class which stores information about ProfitBricks network interfaces.
- Parameters
id (
str
) – The network interface ID.name (
str
) – The network interface name.href (
str
) – The network interface href.state (
int
) – The network interface name.extra (
dict
) – Extra properties for the network interface.
Note: This class is ProfitBricks specific.
- class libcloud.compute.drivers.profitbricks.ProfitBricksFirewallRule(id, name, href, state, extra=None)[source]¶
Extension class which stores information about a ProfitBricks firewall rule.
- Parameters
id (
str
) – The firewall rule ID.name (
str
) – The firewall rule name.href (
str
) – The firewall rule href.state (
int
) – The current state of the firewall rule.extra (
dict
) – Extra properties for the firewall rule.
Note: This class is ProfitBricks specific.
- class libcloud.compute.drivers.profitbricks.ProfitBricksLan(id, name, href, is_public, state, driver, extra=None)[source]¶
Extension class which stores information about a ProfitBricks LAN
- Parameters
id – The ID of the lan.
id –
str
name (
str
) – The name of the lan.href (
str
) – The lan href.is_public (
bool
) – If public, the lan faces the public internet.state (
int
) – The current state of the lan.extra (
dict
) – Extra properties for the lan.
Note: This class is ProfitBricks specific.
- class libcloud.compute.drivers.profitbricks.ProfitBricksLoadBalancer(id, name, href, state, driver, extra=None)[source]¶
Extention class which stores information about a ProfitBricks load balancer
- Parameters
id – The ID of the load balancer.
id –
str
name (
str
) – The name of the load balancer.href (
str
) – The load balancer href.state (
int
) – The current state of the load balancer.extra (
dict
) – Extra properties for the load balancer.
Note: This class is ProfitBricks specific
- class libcloud.compute.drivers.profitbricks.ProfitBricksAvailabilityZone(name)[source]¶
Extension class which stores information about a ProfitBricks availability zone.
- Parameters
name (
str
) – The availability zone name.
Note: This class is ProfitBricks specific.
- class libcloud.compute.drivers.profitbricks.ProfitBricksIPBlock(id, name, href, location, size, ips, state, driver, extra=None)[source]¶
Extension class which stores information about a ProfitBricks IP block.
- Parameters
id – The ID of the IP block.
id –
str
name (
str
) – The name of the IP block.href (
str
) – The IP block href.location (
str
) – The location of the IP block.size (
int
) – Number of IP addresses in the block.ips (
list
) – A collection of IPs associated with the block.state (
int
) – The current state of the IP block.extra (
dict
) – Extra properties for the IP block.
Note: This class is ProfitBricks specific