blob: 4620aeff25060ebaee9270c1bc10bb462d8310f1 [file] [log] [blame]
Zsolt Haraszti86be6f12016-09-27 09:56:49 -07001#
Zsolt Haraszti3eb27a52017-01-03 21:56:48 -08002# Copyright 2017 the original author or authors.
Zsolt Haraszti86be6f12016-09-27 09:56:49 -07003#
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"""
alshabib7941d402016-11-08 00:11:20 +010020from datetime import datetime
alshabib05fb71f2016-12-04 16:08:29 -080021from concurrent.futures import ThreadPoolExecutor
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070022
23import os
alshabib7941d402016-11-08 00:11:20 +010024import socket
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070025from structlog import get_logger
26
alshabib7941d402016-11-08 00:11:20 +010027from docker import Client, errors
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070028
29
alshabibc61999a2016-10-27 16:44:27 -070030docker_socket = os.environ.get('DOCKER_SOCK', 'unix://tmp/docker.sock')
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070031log = get_logger()
32
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070033def 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:
alshabibc61999a2016-10-27 16:44:27 -070044 docker_cli = Client(base_url=docker_socket)
Zsolt Haraszti86be6f12016-09-27 09:56:49 -070045 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
alshabibc67ee3a2016-10-25 23:24:03 -070054
alshabib7941d402016-11-08 00:11:20 +010055def 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)
alshabib7941d402016-11-08 00:11:20 +010070 except Exception, e:
Khen Nursimulu90fc35d2017-01-09 08:42:04 -050071 log.exception('failed-inspect-container', id=id, e=e)
alshabib7941d402016-11-08 00:11:20 +010072 raise
73
74 return info
75