libcloud.container.drivers package

Submodules

libcloud.container.drivers.docker module

class libcloud.container.drivers.docker.DockerConnection(user_id, key, secure=True, host=None, port=None, url=None, timeout=None, proxy_url=None, backoff=None, retry_delay=None)[source]

Bases: libcloud.common.base.ConnectionUserAndKey

add_default_headers(headers)[source]

Add parameters that are necessary for every request If user and password are specified, include a base http auth header

responseCls

alias of DockerResponse

timeout = 60
class libcloud.container.drivers.docker.DockerContainerDriver(key=None, secret=None, secure=False, host='localhost', port=4243, key_file=None, cert_file=None)[source]

Bases: libcloud.container.base.ContainerDriver

Docker container driver class.

>>> from libcloud.container.providers import get_driver
>>> driver = get_driver('docker')
>>> conn = driver(host='198.61.239.128', port=4243)
>>> conn.list_containers()
or connecting to http basic auth protected https host:
>>> conn = driver('user', 'pass', host='https://198.61.239.128', port=443)

connect with tls authentication, by providing a hostname, port, a private key file (.pem) and certificate (.pem) file >>> conn = driver(host=’https://198.61.239.128‘, >>> port=4243, key_file=’key.pem’, cert_file=’cert.pem’)

Parameters:
  • key (str) – API key or username to 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.
  • key_file (str) – Path to private key for TLS connection (optional)
  • cert_file (str) – Path to public key for TLS connection (optional)
Returns:

None

connectionCls

alias of DockerConnection

deploy_container(name, image, parameters=None, start=True, command=None, hostname=None, user='', stdin_open=True, tty=True, mem_limit=0, ports=None, environment=None, dns=None, volumes=None, volumes_from=None, network_disabled=False, entrypoint=None, cpu_shares=None, working_dir='', domainname=None, memswap_limit=0, port_bindings=None, network_mode='bridge', labels=None)[source]

Deploy an installed container image

For details on the additional parameters see : http://bit.ly/1PjMVKV

Parameters:
  • name (str) – The name of the new container
  • image (libcloud.container.base.ContainerImage) – The container image to deploy
  • parameters (str) – Container Image parameters
  • start (bool) – Start the container on deployment
Return type:

Container

destroy_container(container)[source]

Remove a container

Parameters:container (libcloud.container.base.Container) – The container to be destroyed
Returns:True if the destroy was successful, False otherwise.
Return type:bool
ex_delete_image(image)[source]

Remove image from the filesystem

Parameters:image (libcloud.container.base.ContainerImage) – The image to remove
Return type:bool
ex_get_logs(container, stream=False)[source]

Get container logs

If stream == True, logs will be yielded as a stream From Api Version 1.11 and above we need a GET request to get the logs Logs are in different format of those of Version 1.10 and below

Parameters:
Return type:

bool

ex_list_processes(container)[source]

List processes running inside a container

Parameters:container (libcloud.container.base.Container) – The container to list processes for.
Return type:str
ex_rename_container(container, name)[source]

Rename a container

Parameters:
Return type:

libcloud.container.base.Container

ex_search_images(term)[source]

Search for an image on Docker.io. Returns a list of ContainerImage objects

>>> images = conn.ex_search_images(term='mistio')
>>> images
[<ContainerImage: id=rolikeusch/docker-mistio...>,
 <ContainerImage: id=mist/mistio, name=mist/mistio,
     driver=Docker  ...>]
param term:The search term
type term:str
rtype:list of libcloud.container.base.ContainerImage
get_container(id)[source]

Get a container by ID

Parameters:id (str) – The ID of the container to get
Return type:libcloud.container.base.Container
install_image(path)[source]

Install a container image from a remote path.

Parameters:path (str) – Path to the container image
Return type:libcloud.container.base.ContainerImage
list_containers(image=None, all=True)[source]

List the deployed container images

Parameters:
Return type:

list of libcloud.container.base.Container

list_images()[source]

List the installed container images

Return type:list of libcloud.container.base.ContainerImage
name = 'Docker'
restart_container(container)[source]

Restart a container

Parameters:container (libcloud.container.base.Container) – The container to be stopped
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
start_container(container)[source]

Start a container

Parameters:container (libcloud.container.base.Container) – The container to be started
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
stop_container(container)[source]

Stop a container

Parameters:container (libcloud.container.base.Container) – The container to be stopped
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
supports_clusters = False
type = 'docker'
version = '1.24'
website = 'http://docker.io'
exception libcloud.container.drivers.docker.DockerException(code, message)[source]

Bases: exceptions.Exception

class libcloud.container.drivers.docker.DockerResponse(response, connection)[source]

Bases: libcloud.common.base.JsonResponse

Parameters:
parse_body()[source]
parse_error()[source]
success()[source]
valid_response_codes = [200, 202, 201, 204]
libcloud.container.drivers.docker.ts_to_str(timestamp)[source]

Return a timestamp as a nicely formated datetime string.

libcloud.container.drivers.dummy module

class libcloud.container.drivers.dummy.DummyContainerDriver(api_key, api_secret)[source]

Bases: libcloud.container.base.ContainerDriver

Dummy Container driver.

>>> from libcloud.container.drivers.dummy import DummyContainerDriver
>>> driver = DummyContainerDriver('key', 'secret')
>>> driver.name
'Dummy Container Provider'
Parameters:
  • api_key (str) – API key or username to used (required)
  • api_secret (str) – Secret password to be used (required)
Return type:

None

name = 'Dummy Container Provider'
supports_clusters = False
website = 'http://example.com'

libcloud.container.drivers.ecs module

class libcloud.container.drivers.ecs.ElasticContainerDriver(access_id, secret, region)[source]

Bases: libcloud.container.base.ContainerDriver

connectionCls

alias of ECSJsonConnection

create_cluster(name, location=None)[source]

Create a container cluster

Parameters:
Return type:

libcloud.container.base.ContainerCluster

deploy_container(name, image, cluster=None, parameters=None, start=True, ex_cpu=10, ex_memory=500, ex_container_port=None, ex_host_port=None)[source]

Creates a task definition from a container image that can be run in a cluster.

Parameters:
Return type:

libcloud.container.base.Container

destroy_cluster(cluster)[source]

Delete a cluster

Returns:True if the destroy was successful, otherwise False.
Return type:bool
destroy_container(container)[source]

Destroy a deployed container

Parameters:container (libcloud.container.base.Container) – The container to destroy
Return type:libcloud.container.base.Container
ecrConnectionClass

alias of ECRJsonConnection

ecr_repository_host = '%s.dkr.ecr.%s.amazonaws.com'
ex_create_service(name, cluster, task_definition, desired_count=1)[source]

Runs and maintains a desired number of tasks from a specified task definition. If the number of tasks running in a service drops below desired_count, Amazon ECS spawns another instantiation of the task in the specified cluster.

Parameters:
  • name (str) – the name of the service
  • cluster (libcloud.container.base.ContainerCluster) – The cluster to run the service on
  • task_definition (str) – The task definition name or ARN for the service
  • desired_count (int) – The desired number of tasks to be running at any one time
Return type:

object The service object

ex_describe_service(service_arn)[source]

Get the details of a service

Parameters:
Returns:

The service object

Return type:

object

ex_destroy_service(service_arn)[source]

Deletes a service

Parameters:
ex_get_registry_client(repository_name)[source]

Get a client for an ECR repository

Parameters:repository_name (str) – The unique name of the repository
Returns:a docker registry API client
Return type:libcloud.container.utils.docker.RegistryClient
ex_get_repository_id(repository_name)[source]

Get the ID of a repository

Parameters:repository_name (str) – The unique name of the repository
Returns:The repository ID
Return type:str
ex_get_repository_token(repository_id)[source]

Get the authorization token (12 hour expiry) for a repository

Parameters:repository_id (str) – The ID of the repository
Returns:A token for login
Return type:str
ex_list_containers_for_task(task_arns)[source]

Get a list of containers by ID collection (ARN)

Parameters:task_arns (list of str) – The list of ARNs
Return type:list of libcloud.container.base.Container
ex_list_service_arns(cluster=None)[source]

List the services

Parameters:cluster (libcloud.container.base.ContainerCluster) – The cluster hosting the services
Return type:list of str
ex_start_task(task_arn, count=1)[source]

Run a task definition and get the containers

Parameters:
  • task_arn (str) – The task ARN to Run
  • count (int) – The number of containers to start
Return type:

list of libcloud.container.base.Container

get_container(id)[source]

Get a container by ID

Parameters:id (str) – The ID of the container to get
Return type:libcloud.container.base.Container
list_clusters()[source]

Get a list of potential locations to deploy clusters into

Parameters:location (libcloud.container.base.ClusterLocation) – The location to search in
Return type:list of libcloud.container.base.ContainerCluster
list_containers(image=None, cluster=None)[source]

List the deployed container images

Parameters:
Return type:

list of libcloud.container.base.Container

list_images(ex_repository_name)[source]

List the images in an ECR repository

Parameters:ex_repository_name (str) – The name of the repository to check defaults to the default repository.
Returns:a list of images
Return type:list of libcloud.container.base.ContainerImage
name = 'Amazon Elastic Container Service'
restart_container(container)[source]

Restart a deployed container

Parameters:container (libcloud.container.base.Container) – The container to restart
Return type:libcloud.container.base.Container
start_container(container, count=1)[source]

Start a deployed task

Parameters:
Return type:

libcloud.container.base.Container

status_map = {'RUNNING': 'running'}
stop_container(container)[source]

Stop a deployed container

Parameters:container (libcloud.container.base.Container) – The container to stop
Return type:libcloud.container.base.Container
supports_clusters = False
website = 'https://aws.amazon.com/ecs/details/'

libcloud.container.drivers.joyent module

class libcloud.container.drivers.joyent.JoyentContainerDriver(key=None, secret=None, secure=False, host='localhost', port=2376, key_file=None, cert_file=None)[source]

Bases: libcloud.container.drivers.docker.DockerContainerDriver

Joyent Triton container driver class.

>>> from libcloud.container.providers import get_driver
>>> driver = get_driver('joyent')
>>> conn = driver(host='https://us-east-1.docker.joyent.com',
    port=2376, key_file='key.pem', cert_file='cert.pem')
connectionCls

alias of DockerConnection

name = 'Joyent Triton'
supports_clusters = False
type = 'joyent'
website = 'http://joyent.com'

libcloud.container.drivers.kubernetes module

class libcloud.container.drivers.kubernetes.KubernetesConnection(user_id, key, secure=True, host=None, port=None, url=None, timeout=None, proxy_url=None, backoff=None, retry_delay=None)[source]

Bases: libcloud.common.base.ConnectionUserAndKey

add_default_headers(headers)[source]

Add parameters that are necessary for every request If user and password are specified, include a base http auth header

responseCls

alias of KubernetesResponse

timeout = 60
class libcloud.container.drivers.kubernetes.KubernetesContainerDriver(key=None, secret=None, secure=False, host='localhost', port=4243)[source]

Bases: libcloud.container.base.ContainerDriver

Parameters:
  • key (str) – API key or username to 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.
Returns:

None

connectionCls

alias of KubernetesConnection

create_cluster(name, location=None)[source]

Create a container cluster (a namespace)

Parameters:
  • name (str) – The name of the cluster
  • location (ClusterLocation) – The location to create the cluster in
Return type:

ContainerCluster

deploy_container(name, image, cluster=None, parameters=None, start=True)[source]

Deploy an installed container image. In kubernetes this deploys a single container Pod. https://cloud.google.com/container-engine/docs/pods/single-container

Parameters:
  • name (str) – The name of the new container
  • image (ContainerImage) – The container image to deploy
  • cluster (ContainerCluster) – The cluster to deploy to, None is default
  • parameters (str) – Container Image parameters
  • start (bool) – Start the container on deployment
Return type:

Container

destroy_cluster(cluster)[source]

Delete a cluster (namespace)

Returns:True if the destroy was successful, otherwise False.
Return type:bool
destroy_container(container)[source]

Destroy a deployed container. Because the containers are single container pods, this will delete the pod.

Parameters:container (Container) – The container to destroy
Return type:bool
ex_destroy_pod(namespace, pod_name)[source]

Delete a pod and the containers within it.

ex_list_pods()[source]

List available Pods

Return type:list of KubernetesPod
get_cluster(id)[source]

Get a cluster by ID

Parameters:id (str) – The ID of the cluster to get
Return type:libcloud.container.base.ContainerCluster
get_container(id)[source]

Get a container by ID

Parameters:id (str) – The ID of the container to get
Return type:libcloud.container.base.Container
list_clusters()[source]

Get a list of namespaces that pods can be deployed into

Parameters:location (libcloud.container.base.ClusterLocation) – The location to search in
Return type:list of libcloud.container.base.ContainerCluster
list_containers(image=None, all=True)[source]

List the deployed container images

Parameters:
Return type:

list of libcloud.container.base.Container

name = 'Kubernetes'
supports_clusters = True
type = 'kubernetes'
website = 'http://kubernetes.io'
exception libcloud.container.drivers.kubernetes.KubernetesException(code, message)[source]

Bases: exceptions.Exception

class libcloud.container.drivers.kubernetes.KubernetesPod(name, containers, namespace)[source]

Bases: object

A Kubernetes pod

class libcloud.container.drivers.kubernetes.KubernetesResponse(response, connection)[source]

Bases: libcloud.common.base.JsonResponse

Parameters:
parse_error()[source]
success()[source]
valid_response_codes = [200, 202, 201, 204]
libcloud.container.drivers.kubernetes.ts_to_str(timestamp)[source]

Return a timestamp as a nicely formated datetime string.

libcloud.container.drivers.rancher module

class libcloud.container.drivers.rancher.RancherConnection(user_id, key, secure=True, host=None, port=None, url=None, timeout=None, proxy_url=None, backoff=None, retry_delay=None)[source]

Bases: libcloud.common.base.ConnectionUserAndKey

add_default_headers(headers)[source]

Add parameters that are necessary for every request If user and password are specified, include a base http auth header

responseCls

alias of RancherResponse

timeout = 30
class libcloud.container.drivers.rancher.RancherContainerDriver(key, secret, secure=True, host='localhost', port=443)[source]

Bases: libcloud.container.base.ContainerDriver

Rancher Container driver class.

Example:

>>> from libcloud.container.providers import get_driver
>>> from libcloud.container.types import Provider
>>> driver = get_driver(Provider.RANCHER)
>>> connection = driver(key="ACCESS_KEY_HERE",
secret="SECRET_KEY_HERE", host="172.30.0.100", port=8080)
>>> image = ContainerImage("hastebin", "hastebin", "rlister/hastebin",
"latest", driver=None)
>>> newcontainer = connection.deploy_container("myawesomepastebin",
image, environment={"STORAGE_TYPE": "file"})
Parameters:
  • key (str) – API key or username to used (required)
  • secret (str) – Secret password to be used (required)
  • secure (bool) – Whether to use HTTPS or HTTP.
  • host (str) – Override hostname used for connections.
  • port (int) – Override port used for connections.
Returns:

None

connectionCls

alias of RancherConnection

deploy_container(name, image, parameters=None, start=True, **config)[source]

Deploy a new container.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/container/#create

The following is the Image format used for ``ContainerImage``

For a ``imageuuid``:

  • docker:<hostname>:<port>/<namespace>/<imagename>:<version>

The following applies:

  • id = <imagename>
  • name = <imagename>
  • path = <hostname>:<port>/<namespace>/<imagename>
  • version = <version>

Any extra configuration can also be passed i.e. “environment”

Parameters:
  • name (str) – The desired name of the container. (required)
  • image (libcloud.container.base.ContainerImage) – The Image object to deploy. (required)
  • parameters (str) – Container Image parameters (unused)
  • start (bool) – Whether to start the container on creation(startOnCreate)
Return type:

Container

destroy_container(container)[source]

Remove a container

Parameters:container (libcloud.container.base.Container) – The container to be destroyed
Returns:True if the destroy was successful, False otherwise.
Return type:bool
ex_activate_service(service_id)[source]

Activate a service.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/service/#activate

Parameters:service_id (str) – The service to activate services for.
Returns:True if activate was successful, False otherwise.
Return type:bool
ex_activate_stack(env_id)[source]

Activate Services for a stack.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/environment/#activateservices

Parameters:env_id (str) – The stack to activate services for.
Returns:True if activate was successful, False otherwise.
Return type:bool
ex_deactivate_service(service_id)[source]

Deactivate a service.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/service/#deactivate

Parameters:service_id (str) – The service to deactivate services for.
Returns:True if deactivate was successful, False otherwise.
Return type:bool
ex_deactivate_stack(env_id)[source]

Deactivate Services for a stack.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/environment/#deactivateservices

Parameters:env_id (str) – The stack to deactivate services for.
Returns:True if deactivate was successful, False otherwise.
Return type:bool
ex_deploy_service(name, image, environment_id, start=True, assign_service_ip_address=None, service_description=None, external_id=None, metadata=None, retain_ip=None, scale=None, scale_policy=None, secondary_launch_configs=None, selector_container=None, selector_link=None, vip=None, **launch_conf)[source]

Deploy a Rancher Service under a stack.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/service/#create

Any further configuration passed applies to the ``launchConfig``

Parameters:
  • name (str) – The desired name of the service. (required)
  • image (libcloud.container.base.ContainerImage) – The Image object to deploy. (required)
  • environment_id (str) – The stack ID this service is tied to. (required)
  • start (bool) – Whether to start the service on creation.
  • assign_service_ip_address (bool) – The IP address to assign the service.
  • service_description (str) – The service description.
  • external_id (str) – The externalId for this service.
  • metadata (dict) – K/V Metadata for this service.
  • retain_ip (bool) – Whether this service should retain its IP.
  • scale (int) – The scale of containers in this service.
  • scale_policy (dict) – The scaling policy for this service.
  • secondary_launch_configs (list) – Secondary container launch configs.
  • selector_container (str) – The selectorContainer for this service.
  • selector_link (type) – The selectorLink for this service.
  • vip (str) – The VIP to assign to this service.
Returns:

The newly created service.

Return type:

dict

ex_deploy_stack(name, description=None, docker_compose=None, environment=None, external_id=None, rancher_compose=None, start=True)[source]

Deploy a new stack.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/environment/#create

Parameters:
  • name (str) – The desired name of the stack. (required)
  • description (str) – A desired description for the stack.
  • docker_compose (str) – The Docker Compose configuration to use.
  • environment (dict) – Environment K/V specific to this stack.
  • external_id (str) – The externalId of the stack.
  • rancher_compose (str) – The Rancher Compose configuration for this env.
  • start (bool) – Whether to start this stack on creation.
Returns:

The newly created stack.

Return type:

dict

ex_destroy_service(service_id)[source]

Destroy a service by ID

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/service/#delete

Parameters:service_id (str) – The service to be destroyed.
Returns:True if destroy was successful, False otherwise.
Return type:bool
ex_destroy_stack(env_id)[source]

Destroy a stack by ID

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/environment/#delete

Parameters:env_id (str) – The stack to be destroyed.
Returns:True if destroy was successful, False otherwise.
Return type:bool
ex_get_service(service_id)[source]

Get a service by ID

Parameters:service_id (str) – The service_id to be obtained.
Return type:dict
ex_get_stack(env_id)[source]

Get a stack by ID

Parameters:env_id (str) – The stack to be obtained.
Return type:dict
ex_list_services()[source]

List all Rancher Services

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/service/

Return type:list of dict
ex_list_stacks()[source]

List all Rancher Stacks

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/environment/

Return type:list of dict
ex_search_containers(search_params)[source]

Search for containers matching certain filters

i.e. { "imageUuid": "docker:mysql", "state": "running"}

Parameters:search_params (dict) – A collection of search parameters to use.
Return type:list
ex_search_services(search_params)[source]

Search for services matching certain filters

i.e. { "name": "awesomesause", "environmentId": "1e2"}

Parameters:search_params (dict) – A collection of search parameters to use.
Return type:list
ex_search_stacks(search_params)[source]

Search for stacks matching certain filters

i.e. { "name": "awesomestack"}

Parameters:search_params (dict) – A collection of search parameters to use.
Return type:list
get_container(con_id)[source]

Get a container by ID

Parameters:con_id (str) – The ID of the container to get
Return type:libcloud.container.base.Container
list_containers()[source]

List the deployed containers.

http://docs.rancher.com/rancher/v1.2/en/api/api-resources/container/

Return type:list of libcloud.container.base.Container
name = 'Rancher'
start_container(container)[source]

Start a container

Parameters:container (libcloud.container.base.Container) – The container to be started
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
stop_container(container)[source]

Stop a container

Parameters:container (libcloud.container.base.Container) – The container to be stopped
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
supports_clusters = False
type = 'rancher'
version = '1'
website = 'http://rancher.com'
exception libcloud.container.drivers.rancher.RancherException(code, message)[source]

Bases: exceptions.Exception

class libcloud.container.drivers.rancher.RancherResponse(response, connection)[source]

Bases: libcloud.common.base.JsonResponse

Parameters:
parse_error()[source]
success()[source]

Module contents