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