| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- from __future__ import absolute_import
 
- from __future__ import unicode_literals
 
- import os
 
- from compose.config.config import ConfigDetails
 
- from compose.config.config import ConfigFile
 
- from compose.config.config import load
 
- BUSYBOX_IMAGE_NAME = 'busybox'
 
- BUSYBOX_DEFAULT_TAG = '1.31.0-uclibc'
 
- BUSYBOX_IMAGE_WITH_TAG = '{}:{}'.format(BUSYBOX_IMAGE_NAME, BUSYBOX_DEFAULT_TAG)
 
- def build_config(contents, **kwargs):
 
-     return load(build_config_details(contents, **kwargs))
 
- def build_config_details(contents, working_dir='working_dir', filename='filename.yml'):
 
-     return ConfigDetails(
 
-         working_dir,
 
-         [ConfigFile(filename, contents)],
 
-     )
 
- def create_custom_host_file(client, filename, content):
 
-     dirname = os.path.dirname(filename)
 
-     container = client.create_container(
 
-         BUSYBOX_IMAGE_WITH_TAG,
 
-         ['sh', '-c', 'echo -n "{}" > {}'.format(content, filename)],
 
-         volumes={dirname: {}},
 
-         host_config=client.create_host_config(
 
-             binds={dirname: {'bind': dirname, 'ro': False}},
 
-             network_mode='none',
 
-         ),
 
-     )
 
-     try:
 
-         client.start(container)
 
-         exitcode = client.wait(container)['StatusCode']
 
-         if exitcode != 0:
 
-             output = client.logs(container)
 
-             raise Exception(
 
-                 "Container exited with code {}:\n{}".format(exitcode, output))
 
-         container_info = client.inspect_container(container)
 
-         if 'Node' in container_info:
 
-             return container_info['Node']['Name']
 
-     finally:
 
-         client.remove_container(container, force=True)
 
- def create_host_file(client, filename):
 
-     with open(filename, 'r') as fh:
 
-         content = fh.read()
 
-     return create_custom_host_file(client, filename, content)
 
 
  |