blob: 4620aeff25060ebaee9270c1bc10bb462d8310f1 [file] [log] [blame]
William Kurkian6f436d02019-02-06 16:25:01 -05001#
2# Copyright 2017 the original author or authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17"""
18Some docker related convenience functions
19"""
20from datetime import datetime
21from concurrent.futures import ThreadPoolExecutor
22
23import os
24import socket
25from structlog import get_logger
26
27from docker import Client, errors
28
29
30docker_socket = os.environ.get('DOCKER_SOCK', 'unix://tmp/docker.sock')
31log = get_logger()
32
33def get_my_containers_name():
34 """
35 Return the docker containers name in which this process is running.
36 To look up the container name, we use the container ID extracted from the
37 $HOSTNAME environment variable (which is set by docker conventions).
38 :return: String with the docker container name (or None if any issue is
39 encountered)
40 """
41 my_container_id = os.environ.get('HOSTNAME', None)
42
43 try:
44 docker_cli = Client(base_url=docker_socket)
45 info = docker_cli.inspect_container(my_container_id)
46
47 except Exception, e:
48 log.exception('failed', my_container_id=my_container_id, e=e)
49 raise
50
51 name = info['Name'].lstrip('/')
52
53 return name
54
55def get_all_running_containers():
56 try:
57 docker_cli = Client(base_url=docker_socket)
58 containers = docker_cli.containers()
59
60 except Exception, e:
61 log.exception('failed', e=e)
62 raise
63
64 return containers
65
66def inspect_container(id):
67 try:
68 docker_cli = Client(base_url=docker_socket)
69 info = docker_cli.inspect_container(id)
70 except Exception, e:
71 log.exception('failed-inspect-container', id=id, e=e)
72 raise
73
74 return info
75