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
-