Skip to content

Commit e0a6258

Browse files
committed
Add more Docker API calls
Signed-off-by: Nicolas Bock <[email protected]>
1 parent e3b83a8 commit e0a6258

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

ebuildtester/docker.py

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ class Docker:
1919
def __init__(self, local_portage, overlay_dirs):
2020
"""Create a new container."""
2121

22-
docker_image = options.OPTIONS.docker_image
22+
self.docker_client = docker.client.from_env()
23+
self.docker_image_name = options.OPTIONS.docker_image
24+
self.docker_image = None
2325
repo_names = self._get_repo_names(overlay_dirs)
2426
overlay_mountpoints = [os.path.join("/var/lib/overlays", r)
2527
for r in repo_names]
2628

27-
self._setup_container(docker_image)
28-
self._create_container(docker_image, local_portage,
29+
self._setup_container()
30+
self._create_container(local_portage,
2931
zip(overlay_dirs, overlay_mountpoints))
3032
self._start_container()
3133
self._set_profile()
@@ -139,31 +141,38 @@ def _reader(self, proc, stream, name):
139141
(self.cid[:6], name, out.rstrip()))
140142
options.log_ch.flush()
141143

142-
def _setup_container(self, docker_image):
144+
def _setup_container(self):
143145
"""Setup the container."""
144146

145147
if options.OPTIONS.pull:
146-
docker_args = options.OPTIONS.docker_command \
147-
+ ["pull", docker_image]
148-
docker = subprocess.Popen(docker_args)
149-
docker.wait()
148+
options.log.info(f'pulling image {self.docker_image_name}')
149+
self.docker_image = self.docker_client \
150+
.images.pull(self.docker_image_name)
151+
else:
152+
self.docker_image = self.docker_client.images \
153+
.get(self.docker_image_name)
154+
options.log.debug('image = %s', self.docker_image)
150155

151-
def _create_container(self, docker_image, local_portage, overlays):
156+
def _create_container(self, local_portage, overlays):
152157
"""Create new container."""
153158

154-
docker_args = options.OPTIONS.docker_command \
155-
+ ["create",
156-
"--tty",
157-
"--cap-add", "CAP_SYS_ADMIN",
158-
"--cap-add", "CAP_MKNOD",
159-
"--cap-add", "CAP_NET_ADMIN",
159+
docker_args = {
160+
"--tty": None,
161+
"--cap-add": [
162+
"CAP_SYS_ADMIN",
163+
"CAP_MKNOD",
164+
"CAP_NET_ADMIN",
165+
],
160166
# https://github.com/moby/moby/issues/16429
161-
"--security-opt", "apparmor:unconfined",
162-
"--device", "/dev/fuse",
163-
"--workdir", "/root",
164-
"--volume", "%s:/var/db/repos/gentoo" % local_portage,
165-
"--volume", "%s/distfiles:/var/cache/distfiles" % local_portage,
166-
"--volume", "%s/packages:/var/cache/binpkgs" % local_portage]
167+
"--security-opt": "apparmor:unconfined",
168+
"--device": "/dev/fuse",
169+
"--workdir": "/root",
170+
"--volume": [
171+
"%s:/var/db/repos/gentoo" % local_portage,
172+
"%s/distfiles:/var/cache/distfiles" % local_portage,
173+
"%s/packages:/var/cache/binpkgs" % local_portage,
174+
],
175+
}
167176

168177
if options.OPTIONS.storage_opt:
169178
for s in options.OPTIONS.storage_opt:
@@ -176,9 +185,11 @@ def _create_container(self, docker_image, local_portage, overlays):
176185
for o in overlays:
177186
docker_args += ["--volume=%s:%s" % o]
178187

179-
docker_args += [docker_image]
180-
options.log.info("creating docker container with: %s" %
188+
docker_args += [self.docker_image_name]
189+
options.log.info("creating docker container with: %s",
181190
" ".join(docker_args))
191+
self.docker_client.containers.create(self.docker_image, **docker_args)
192+
182193
docker = subprocess.Popen(docker_args, stdout=subprocess.PIPE)
183194
docker.wait()
184195

0 commit comments

Comments
 (0)