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