Container

Container represents abstract API for container managers. It is now implemented by conu.backend.docker.image.DockerContainer

class conu.apidefs.container.Container(image, container_id, name)

Container class definition which contains abstract methods. The instances should call the constructor

__init__(image, container_id, name)
Parameters
  • image – Image instance

  • container_id – str, unique identifier of this container

  • container_id – str, pretty container name

copy_from(src, dest)

copy a file or a directory from container to host system

Parameters
  • src – str, path to a file or a directory within container or image

  • dest – str, path to a file or a directory on host system

Returns

None

copy_to(src, dest)

copy a file or a directory from host system to a container

Parameters
  • src – str, path to a file or a directory on host system

  • dest – str, path to a file or a directory within container

Returns

None

delete(force=False, **kwargs)

remove this container; kwargs indicate that some container runtimes might accept more parameters

Parameters

force – bool, if container engine supports this, force the functionality

Returns

None

execute(command, **kwargs)

execute a command in this container

Parameters
  • command – list of str, command to execute in the container

  • kwargs – specific parameters for container engines exec methods

Returns

str (output) or iterator

exit_code()

get exit code of container. Return value is 0 for running and created containers

Returns

int

get_IPv4s()

Return all known IPv4 addresses of this container. It may be possible that the container has disabled networking: in that case, the list is empty

Returns

list of str

get_IPv6s()

Return all known IPv6 addresses of this container. It may be possible that the container has disabled networking: in that case, the list is empty

Returns

list of str

get_id()

get unique identifier of this container

Returns

str

get_image_name()

return name of the container image

Returns

str

get_metadata()

return general metadata for container

Returns

ContainerMetadata

get_pid()

get process identifier of the root process in the container

Returns

int

get_ports()

get ports specified in container metadata

Returns

list of str

get_status()

Get status of container

Returns

Status of container

http_client(host=None, port=None)

allow requests in context – e.g.:

with container.http_client(port="80", ...) as c:
    assert c.get("/api/...")
Parameters
  • host – str, if None, set self.get_IPv4s()[0]

  • port – str or int, if None, set to self.get_ports()[0]

Returns

instance of conu.utils.http_client.HttpClient

http_request(path='/', method='GET', host=None, port=None, json=False, data=None)

perform a HTTP request

Parameters
  • path – str, path within the reqest, e.g. “/api/version”

  • method – str, HTTP method

  • host – str, if None, set self.get_IPv4s()[0]

  • port – str or int, if None, set to self.get_ports()[0]

  • json – bool, should we expect json?

  • data – data to send (can be dict, list, str)

Returns

dict

inspect(refresh=False)

return cached metadata by default

Parameters

refresh – bool, returns up to date metadata if set to True

Returns

dict

is_port_open(port, timeout=10)

check if given port is open and receiving connections

Parameters
  • port – int

  • timeout – int, how many seconds to wait for connection; defaults to 2

Returns

True if the connection has been established inside timeout, False otherwise

is_running()

returns True if the container is running, this method should always ask the API and should not use a cached value

Returns

bool

kill(signal=None)

send a signal to this container (bear in mind that the process won’t have time to shutdown properly and your service may end up in an inconsistent state)

Parameters

signal – str or int, signal to use for killing the container (SIGKILL by default)

Returns

None

logs(follow=False)

Get logs from this container.

Parameters

follow – bool, provide new logs as they come

Returns

iterator

mount(mount_point=None)

mount container filesystem

Parameters

mount_point – str, directory where the filesystem will be mounted

Returns

instance of Filesystem

name()

Return name of this container.

Returns

str

open_connection(port=None)

open a TCP connection to service running in the container, if port is None and container exposes only a single port, connect to it, otherwise raise an exception

Parameters

port – int or None

Returns

socket

start()

start current container - the container has to be created

Returns

None

status()

Provide current, up-to-date status of this container. This method should not use cached value. Implementation of this method should clearly state list of possible values to get from this method

Returns

str

stop()

stop this container

Returns

None

wait(timeout)

Block until the container stops, then return its exit code.

Parameters

timeout – int, Request timeout

Returns

int, exit code