You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@senssoft.apache.org by ar...@apache.org on 2016/12/16 17:11:03 UTC
[45/58] [abbrv] [partial] incubator-senssoft-tap git commit: Fixed
.gitignore file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/transport/npipesocket.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/transport/npipesocket.py b/env2/lib/python2.7/site-packages/docker/transport/npipesocket.py
deleted file mode 100644
index 3b1b644..0000000
--- a/env2/lib/python2.7/site-packages/docker/transport/npipesocket.py
+++ /dev/null
@@ -1,218 +0,0 @@
-import functools
-import io
-
-import six
-import win32file
-import win32pipe
-
-cERROR_PIPE_BUSY = 0xe7
-cSECURITY_SQOS_PRESENT = 0x100000
-cSECURITY_ANONYMOUS = 0
-
-RETRY_WAIT_TIMEOUT = 10000
-
-
-def check_closed(f):
- @functools.wraps(f)
- def wrapped(self, *args, **kwargs):
- if self._closed:
- raise RuntimeError(
- 'Can not reuse socket after connection was closed.'
- )
- return f(self, *args, **kwargs)
- return wrapped
-
-
-class NpipeSocket(object):
- """ Partial implementation of the socket API over windows named pipes.
- This implementation is only designed to be used as a client socket,
- and server-specific methods (bind, listen, accept...) are not
- implemented.
- """
- def __init__(self, handle=None):
- self._timeout = win32pipe.NMPWAIT_USE_DEFAULT_WAIT
- self._handle = handle
- self._closed = False
-
- def accept(self):
- raise NotImplementedError()
-
- def bind(self, address):
- raise NotImplementedError()
-
- def close(self):
- self._handle.Close()
- self._closed = True
-
- @check_closed
- def connect(self, address):
- win32pipe.WaitNamedPipe(address, self._timeout)
- try:
- handle = win32file.CreateFile(
- address,
- win32file.GENERIC_READ | win32file.GENERIC_WRITE,
- 0,
- None,
- win32file.OPEN_EXISTING,
- cSECURITY_ANONYMOUS | cSECURITY_SQOS_PRESENT,
- 0
- )
- except win32pipe.error as e:
- # See Remarks:
- # https://msdn.microsoft.com/en-us/library/aa365800.aspx
- if e.winerror == cERROR_PIPE_BUSY:
- # Another program or thread has grabbed our pipe instance
- # before we got to it. Wait for availability and attempt to
- # connect again.
- win32pipe.WaitNamedPipe(address, RETRY_WAIT_TIMEOUT)
- return self.connect(address)
- raise e
-
- self.flags = win32pipe.GetNamedPipeInfo(handle)[0]
-
- self._handle = handle
- self._address = address
-
- @check_closed
- def connect_ex(self, address):
- return self.connect(address)
-
- @check_closed
- def detach(self):
- self._closed = True
- return self._handle
-
- @check_closed
- def dup(self):
- return NpipeSocket(self._handle)
-
- @check_closed
- def fileno(self):
- return int(self._handle)
-
- def getpeername(self):
- return self._address
-
- def getsockname(self):
- return self._address
-
- def getsockopt(self, level, optname, buflen=None):
- raise NotImplementedError()
-
- def ioctl(self, control, option):
- raise NotImplementedError()
-
- def listen(self, backlog):
- raise NotImplementedError()
-
- def makefile(self, mode=None, bufsize=None):
- if mode.strip('b') != 'r':
- raise NotImplementedError()
- rawio = NpipeFileIOBase(self)
- if bufsize is None or bufsize <= 0:
- bufsize = io.DEFAULT_BUFFER_SIZE
- return io.BufferedReader(rawio, buffer_size=bufsize)
-
- @check_closed
- def recv(self, bufsize, flags=0):
- err, data = win32file.ReadFile(self._handle, bufsize)
- return data
-
- @check_closed
- def recvfrom(self, bufsize, flags=0):
- data = self.recv(bufsize, flags)
- return (data, self._address)
-
- @check_closed
- def recvfrom_into(self, buf, nbytes=0, flags=0):
- return self.recv_into(buf, nbytes, flags), self._address
-
- @check_closed
- def recv_into(self, buf, nbytes=0):
- if six.PY2:
- return self._recv_into_py2(buf, nbytes)
-
- readbuf = buf
- if not isinstance(buf, memoryview):
- readbuf = memoryview(buf)
-
- err, data = win32file.ReadFile(
- self._handle,
- readbuf[:nbytes] if nbytes else readbuf
- )
- return len(data)
-
- def _recv_into_py2(self, buf, nbytes):
- err, data = win32file.ReadFile(self._handle, nbytes or len(buf))
- n = len(data)
- buf[:n] = data
- return n
-
- @check_closed
- def send(self, string, flags=0):
- err, nbytes = win32file.WriteFile(self._handle, string)
- return nbytes
-
- @check_closed
- def sendall(self, string, flags=0):
- return self.send(string, flags)
-
- @check_closed
- def sendto(self, string, address):
- self.connect(address)
- return self.send(string)
-
- def setblocking(self, flag):
- if flag:
- return self.settimeout(None)
- return self.settimeout(0)
-
- def settimeout(self, value):
- if value is None:
- # Blocking mode
- self._timeout = win32pipe.NMPWAIT_WAIT_FOREVER
- elif not isinstance(value, (float, int)) or value < 0:
- raise ValueError('Timeout value out of range')
- elif value == 0:
- # Non-blocking mode
- self._timeout = win32pipe.NMPWAIT_NO_WAIT
- else:
- # Timeout mode - Value converted to milliseconds
- self._timeout = value * 1000
-
- def gettimeout(self):
- return self._timeout
-
- def setsockopt(self, level, optname, value):
- raise NotImplementedError()
-
- @check_closed
- def shutdown(self, how):
- return self.close()
-
-
-class NpipeFileIOBase(io.RawIOBase):
- def __init__(self, npipe_socket):
- self.sock = npipe_socket
-
- def close(self):
- super(NpipeFileIOBase, self).close()
- self.sock = None
-
- def fileno(self):
- return self.sock.fileno()
-
- def isatty(self):
- return False
-
- def readable(self):
- return True
-
- def readinto(self, buf):
- return self.sock.recv_into(buf)
-
- def seekable(self):
- return False
-
- def writable(self):
- return False
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/transport/unixconn.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/transport/unixconn.py b/env2/lib/python2.7/site-packages/docker/transport/unixconn.py
deleted file mode 100644
index b7905a0..0000000
--- a/env2/lib/python2.7/site-packages/docker/transport/unixconn.py
+++ /dev/null
@@ -1,87 +0,0 @@
-import six
-import requests.adapters
-import socket
-
-from .. import constants
-
-if six.PY3:
- import http.client as httplib
-else:
- import httplib
-
-try:
- import requests.packages.urllib3 as urllib3
-except ImportError:
- import urllib3
-
-
-RecentlyUsedContainer = urllib3._collections.RecentlyUsedContainer
-
-
-class UnixHTTPConnection(httplib.HTTPConnection, object):
- def __init__(self, base_url, unix_socket, timeout=60):
- super(UnixHTTPConnection, self).__init__(
- 'localhost', timeout=timeout
- )
- self.base_url = base_url
- self.unix_socket = unix_socket
- self.timeout = timeout
-
- def connect(self):
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- sock.settimeout(self.timeout)
- sock.connect(self.unix_socket)
- self.sock = sock
-
-
-class UnixHTTPConnectionPool(urllib3.connectionpool.HTTPConnectionPool):
- def __init__(self, base_url, socket_path, timeout=60, maxsize=10):
- super(UnixHTTPConnectionPool, self).__init__(
- 'localhost', timeout=timeout, maxsize=maxsize
- )
- self.base_url = base_url
- self.socket_path = socket_path
- self.timeout = timeout
-
- def _new_conn(self):
- return UnixHTTPConnection(
- self.base_url, self.socket_path, self.timeout
- )
-
-
-class UnixAdapter(requests.adapters.HTTPAdapter):
- def __init__(self, socket_url, timeout=60,
- num_pools=constants.DEFAULT_NUM_POOLS):
- socket_path = socket_url.replace('http+unix://', '')
- if not socket_path.startswith('/'):
- socket_path = '/' + socket_path
- self.socket_path = socket_path
- self.timeout = timeout
- self.pools = RecentlyUsedContainer(
- num_pools, dispose_func=lambda p: p.close()
- )
- super(UnixAdapter, self).__init__()
-
- def get_connection(self, url, proxies=None):
- with self.pools.lock:
- pool = self.pools.get(url)
- if pool:
- return pool
-
- pool = UnixHTTPConnectionPool(
- url, self.socket_path, self.timeout
- )
- self.pools[url] = pool
-
- return pool
-
- def request_url(self, request, proxies):
- # The select_proxy utility in requests errors out when the provided URL
- # doesn't have a hostname, like is the case when using a UNIX socket.
- # Since proxies are an irrelevant notion in the case of UNIX sockets
- # anyway, we simply return the path URL directly.
- # See also: https://github.com/docker/docker-py/issues/811
- return request.path_url
-
- def close(self):
- self.pools.clear()
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/types/__init__.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/types/__init__.py b/env2/lib/python2.7/site-packages/docker/types/__init__.py
deleted file mode 100644
index 3609581..0000000
--- a/env2/lib/python2.7/site-packages/docker/types/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# flake8: noqa
-from .containers import LogConfig, Ulimit
-from .services import (
- ContainerSpec, DriverConfig, Mount, Resources, RestartPolicy, TaskTemplate,
- UpdateConfig
-)
-from .swarm import SwarmSpec, SwarmExternalCA
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/types/base.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/types/base.py b/env2/lib/python2.7/site-packages/docker/types/base.py
deleted file mode 100644
index 6891062..0000000
--- a/env2/lib/python2.7/site-packages/docker/types/base.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import six
-
-
-class DictType(dict):
- def __init__(self, init):
- for k, v in six.iteritems(init):
- self[k] = v
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/types/containers.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/types/containers.py b/env2/lib/python2.7/site-packages/docker/types/containers.py
deleted file mode 100644
index 40a44ca..0000000
--- a/env2/lib/python2.7/site-packages/docker/types/containers.py
+++ /dev/null
@@ -1,92 +0,0 @@
-import six
-
-from .base import DictType
-
-
-class LogConfigTypesEnum(object):
- _values = (
- 'json-file',
- 'syslog',
- 'journald',
- 'gelf',
- 'fluentd',
- 'none'
- )
- JSON, SYSLOG, JOURNALD, GELF, FLUENTD, NONE = _values
-
-
-class LogConfig(DictType):
- types = LogConfigTypesEnum
-
- def __init__(self, **kwargs):
- log_driver_type = kwargs.get('type', kwargs.get('Type'))
- config = kwargs.get('config', kwargs.get('Config')) or {}
-
- if config and not isinstance(config, dict):
- raise ValueError("LogConfig.config must be a dictionary")
-
- super(LogConfig, self).__init__({
- 'Type': log_driver_type,
- 'Config': config
- })
-
- @property
- def type(self):
- return self['Type']
-
- @type.setter
- def type(self, value):
- self['Type'] = value
-
- @property
- def config(self):
- return self['Config']
-
- def set_config_value(self, key, value):
- self.config[key] = value
-
- def unset_config(self, key):
- if key in self.config:
- del self.config[key]
-
-
-class Ulimit(DictType):
- def __init__(self, **kwargs):
- name = kwargs.get('name', kwargs.get('Name'))
- soft = kwargs.get('soft', kwargs.get('Soft'))
- hard = kwargs.get('hard', kwargs.get('Hard'))
- if not isinstance(name, six.string_types):
- raise ValueError("Ulimit.name must be a string")
- if soft and not isinstance(soft, int):
- raise ValueError("Ulimit.soft must be an integer")
- if hard and not isinstance(hard, int):
- raise ValueError("Ulimit.hard must be an integer")
- super(Ulimit, self).__init__({
- 'Name': name,
- 'Soft': soft,
- 'Hard': hard
- })
-
- @property
- def name(self):
- return self['Name']
-
- @name.setter
- def name(self, value):
- self['Name'] = value
-
- @property
- def soft(self):
- return self.get('Soft')
-
- @soft.setter
- def soft(self, value):
- self['Soft'] = value
-
- @property
- def hard(self):
- return self.get('Hard')
-
- @hard.setter
- def hard(self, value):
- self['Hard'] = value
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/types/services.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/types/services.py b/env2/lib/python2.7/site-packages/docker/types/services.py
deleted file mode 100644
index 063779c..0000000
--- a/env2/lib/python2.7/site-packages/docker/types/services.py
+++ /dev/null
@@ -1,181 +0,0 @@
-import six
-
-from .. import errors
-
-
-class TaskTemplate(dict):
- def __init__(self, container_spec, resources=None, restart_policy=None,
- placement=None, log_driver=None):
- self['ContainerSpec'] = container_spec
- if resources:
- self['Resources'] = resources
- if restart_policy:
- self['RestartPolicy'] = restart_policy
- if placement:
- self['Placement'] = placement
- if log_driver:
- self['LogDriver'] = log_driver
-
- @property
- def container_spec(self):
- return self.get('ContainerSpec')
-
- @property
- def resources(self):
- return self.get('Resources')
-
- @property
- def restart_policy(self):
- return self.get('RestartPolicy')
-
- @property
- def placement(self):
- return self.get('Placement')
-
-
-class ContainerSpec(dict):
- def __init__(self, image, command=None, args=None, env=None, workdir=None,
- user=None, labels=None, mounts=None, stop_grace_period=None):
- from ..utils import split_command # FIXME: circular import
-
- self['Image'] = image
-
- if isinstance(command, six.string_types):
- command = split_command(command)
- self['Command'] = command
- self['Args'] = args
-
- if env is not None:
- self['Env'] = env
- if workdir is not None:
- self['Dir'] = workdir
- if user is not None:
- self['User'] = user
- if labels is not None:
- self['Labels'] = labels
- if mounts is not None:
- for mount in mounts:
- if isinstance(mount, six.string_types):
- mounts.append(Mount.parse_mount_string(mount))
- mounts.remove(mount)
- self['Mounts'] = mounts
- if stop_grace_period is not None:
- self['StopGracePeriod'] = stop_grace_period
-
-
-class Mount(dict):
- def __init__(self, target, source, type='volume', read_only=False,
- propagation=None, no_copy=False, labels=None,
- driver_config=None):
- self['Target'] = target
- self['Source'] = source
- if type not in ('bind', 'volume'):
- raise errors.DockerError(
- 'Only acceptable mount types are `bind` and `volume`.'
- )
- self['Type'] = type
-
- if type == 'bind':
- if propagation is not None:
- self['BindOptions'] = {
- 'Propagation': propagation
- }
- if any([labels, driver_config, no_copy]):
- raise errors.DockerError(
- 'Mount type is binding but volume options have been '
- 'provided.'
- )
- else:
- volume_opts = {}
- if no_copy:
- volume_opts['NoCopy'] = True
- if labels:
- volume_opts['Labels'] = labels
- if driver_config:
- volume_opts['driver_config'] = driver_config
- if volume_opts:
- self['VolumeOptions'] = volume_opts
- if propagation:
- raise errors.DockerError(
- 'Mount type is volume but `propagation` argument has been '
- 'provided.'
- )
-
- @classmethod
- def parse_mount_string(cls, string):
- parts = string.split(':')
- if len(parts) > 3:
- raise errors.DockerError(
- 'Invalid mount format "{0}"'.format(string)
- )
- if len(parts) == 1:
- return cls(target=parts[0])
- else:
- target = parts[1]
- source = parts[0]
- read_only = not (len(parts) == 3 or parts[2] == 'ro')
- return cls(target, source, read_only=read_only)
-
-
-class Resources(dict):
- def __init__(self, cpu_limit=None, mem_limit=None, cpu_reservation=None,
- mem_reservation=None):
- limits = {}
- reservation = {}
- if cpu_limit is not None:
- limits['NanoCPUs'] = cpu_limit
- if mem_limit is not None:
- limits['MemoryBytes'] = mem_limit
- if cpu_reservation is not None:
- reservation['NanoCPUs'] = cpu_reservation
- if mem_reservation is not None:
- reservation['MemoryBytes'] = mem_reservation
-
- if limits:
- self['Limits'] = limits
- if reservation:
- self['Reservations'] = reservation
-
-
-class UpdateConfig(dict):
- def __init__(self, parallelism=0, delay=None, failure_action='continue'):
- self['Parallelism'] = parallelism
- if delay is not None:
- self['Delay'] = delay
- if failure_action not in ('pause', 'continue'):
- raise errors.DockerError(
- 'failure_action must be either `pause` or `continue`.'
- )
- self['FailureAction'] = failure_action
-
-
-class RestartConditionTypesEnum(object):
- _values = (
- 'none',
- 'on-failure',
- 'any',
- )
- NONE, ON_FAILURE, ANY = _values
-
-
-class RestartPolicy(dict):
- condition_types = RestartConditionTypesEnum
-
- def __init__(self, condition=RestartConditionTypesEnum.NONE, delay=0,
- max_attempts=0, window=0):
- if condition not in self.condition_types._values:
- raise TypeError(
- 'Invalid RestartPolicy condition {0}'.format(condition)
- )
-
- self['Condition'] = condition
- self['Delay'] = delay
- self['MaxAttempts'] = max_attempts
- self['Window'] = window
-
-
-class DriverConfig(dict):
- def __init__(self, name, options=None):
- self['Name'] = name
- if options:
- self['Options'] = options
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/types/swarm.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/types/swarm.py b/env2/lib/python2.7/site-packages/docker/types/swarm.py
deleted file mode 100644
index 865fde6..0000000
--- a/env2/lib/python2.7/site-packages/docker/types/swarm.py
+++ /dev/null
@@ -1,40 +0,0 @@
-class SwarmSpec(dict):
- def __init__(self, task_history_retention_limit=None,
- snapshot_interval=None, keep_old_snapshots=None,
- log_entries_for_slow_followers=None, heartbeat_tick=None,
- election_tick=None, dispatcher_heartbeat_period=None,
- node_cert_expiry=None, external_ca=None, name=None):
- if task_history_retention_limit is not None:
- self['Orchestration'] = {
- 'TaskHistoryRetentionLimit': task_history_retention_limit
- }
- if any([snapshot_interval, keep_old_snapshots,
- log_entries_for_slow_followers, heartbeat_tick, election_tick]):
- self['Raft'] = {
- 'SnapshotInterval': snapshot_interval,
- 'KeepOldSnapshots': keep_old_snapshots,
- 'LogEntriesForSlowFollowers': log_entries_for_slow_followers,
- 'HeartbeatTick': heartbeat_tick,
- 'ElectionTick': election_tick
- }
-
- if dispatcher_heartbeat_period:
- self['Dispatcher'] = {
- 'HeartbeatPeriod': dispatcher_heartbeat_period
- }
-
- if node_cert_expiry or external_ca:
- self['CAConfig'] = {
- 'NodeCertExpiry': node_cert_expiry,
- 'ExternalCA': external_ca
- }
-
- if name is not None:
- self['Name'] = name
-
-
-class SwarmExternalCA(dict):
- def __init__(self, url, protocol=None, options=None):
- self['URL'] = url
- self['Protocol'] = protocol
- self['Options'] = options
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/__init__.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/__init__.py b/env2/lib/python2.7/site-packages/docker/utils/__init__.py
deleted file mode 100644
index 4bb3876..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# flake8: noqa
-from .utils import (
- compare_version, convert_port_bindings, convert_volume_binds,
- mkbuildcontext, tar, exclude_paths, parse_repository_tag, parse_host,
- kwargs_from_env, convert_filters, datetime_to_timestamp,
- create_host_config, create_container_config, parse_bytes, ping_registry,
- parse_env_file, version_lt, version_gte, decode_json_header, split_command,
- create_ipam_config, create_ipam_pool, parse_devices, normalize_links,
-)
-
-from ..types import LogConfig, Ulimit
-from ..types import SwarmExternalCA, SwarmSpec
-from .decorators import check_resource, minimum_version, update_headers
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/decorators.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/decorators.py b/env2/lib/python2.7/site-packages/docker/utils/decorators.py
deleted file mode 100644
index 2fe880c..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/decorators.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import functools
-
-from .. import errors
-from . import utils
-
-
-def check_resource(f):
- @functools.wraps(f)
- def wrapped(self, resource_id=None, *args, **kwargs):
- if resource_id is None:
- if kwargs.get('container'):
- resource_id = kwargs.pop('container')
- elif kwargs.get('image'):
- resource_id = kwargs.pop('image')
- if isinstance(resource_id, dict):
- resource_id = resource_id.get('Id', resource_id.get('ID'))
- if not resource_id:
- raise errors.NullResource(
- 'image or container param is undefined'
- )
- return f(self, resource_id, *args, **kwargs)
- return wrapped
-
-
-def minimum_version(version):
- def decorator(f):
- @functools.wraps(f)
- def wrapper(self, *args, **kwargs):
- if utils.version_lt(self._version, version):
- raise errors.InvalidVersion(
- '{0} is not available for version < {1}'.format(
- f.__name__, version
- )
- )
- return f(self, *args, **kwargs)
- return wrapper
- return decorator
-
-
-def update_headers(f):
- def inner(self, *args, **kwargs):
- if 'HttpHeaders' in self._auth_configs:
- if not kwargs.get('headers'):
- kwargs['headers'] = self._auth_configs['HttpHeaders']
- else:
- kwargs['headers'].update(self._auth_configs['HttpHeaders'])
- return f(self, *args, **kwargs)
- return inner
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/ports/__init__.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/ports/__init__.py b/env2/lib/python2.7/site-packages/docker/utils/ports/__init__.py
deleted file mode 100644
index 1dbfa3a..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/ports/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from .ports import (
- split_port,
- build_port_bindings
-) # flake8: noqa
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/ports/ports.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/ports/ports.py b/env2/lib/python2.7/site-packages/docker/utils/ports/ports.py
deleted file mode 100644
index 326ef94..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/ports/ports.py
+++ /dev/null
@@ -1,92 +0,0 @@
-
-def add_port_mapping(port_bindings, internal_port, external):
- if internal_port in port_bindings:
- port_bindings[internal_port].append(external)
- else:
- port_bindings[internal_port] = [external]
-
-
-def add_port(port_bindings, internal_port_range, external_range):
- if external_range is None:
- for internal_port in internal_port_range:
- add_port_mapping(port_bindings, internal_port, None)
- else:
- ports = zip(internal_port_range, external_range)
- for internal_port, external_port in ports:
- add_port_mapping(port_bindings, internal_port, external_port)
-
-
-def build_port_bindings(ports):
- port_bindings = {}
- for port in ports:
- internal_port_range, external_range = split_port(port)
- add_port(port_bindings, internal_port_range, external_range)
- return port_bindings
-
-
-def to_port_range(port):
- if not port:
- return None
-
- protocol = ""
- if "/" in port:
- parts = port.split("/")
- if len(parts) != 2:
- _raise_invalid_port(port)
-
- port, protocol = parts
- protocol = "/" + protocol
-
- parts = str(port).split('-')
-
- if len(parts) == 1:
- return ["%s%s" % (port, protocol)]
-
- if len(parts) == 2:
- full_port_range = range(int(parts[0]), int(parts[1]) + 1)
- return ["%s%s" % (p, protocol) for p in full_port_range]
-
- raise ValueError('Invalid port range "%s", should be '
- 'port or startport-endport' % port)
-
-
-def _raise_invalid_port(port):
- raise ValueError('Invalid port "%s", should be '
- '[[remote_ip:]remote_port[-remote_port]:]'
- 'port[/protocol]' % port)
-
-
-def split_port(port):
- parts = str(port).split(':')
-
- if not 1 <= len(parts) <= 3:
- _raise_invalid_port(port)
-
- if len(parts) == 1:
- internal_port, = parts
- return to_port_range(internal_port), None
- if len(parts) == 2:
- external_port, internal_port = parts
-
- internal_range = to_port_range(internal_port)
- external_range = to_port_range(external_port)
-
- if internal_range is None or external_range is None:
- _raise_invalid_port(port)
-
- if len(internal_range) != len(external_range):
- raise ValueError('Port ranges don\'t match in length')
-
- return internal_range, external_range
-
- external_ip, external_port, internal_port = parts
- internal_range = to_port_range(internal_port)
- external_range = to_port_range(external_port)
- if not external_range:
- external_range = [None] * len(internal_range)
-
- if len(internal_range) != len(external_range):
- raise ValueError('Port ranges don\'t match in length')
-
- return internal_range, [(external_ip, ex_port or None)
- for ex_port in external_range]
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/socket.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/socket.py b/env2/lib/python2.7/site-packages/docker/utils/socket.py
deleted file mode 100644
index 164b845..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/socket.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import errno
-import os
-import select
-import struct
-
-import six
-
-try:
- from ..transport import NpipeSocket
-except ImportError:
- NpipeSocket = type(None)
-
-
-class SocketError(Exception):
- pass
-
-
-def read(socket, n=4096):
- """
- Reads at most n bytes from socket
- """
-
- recoverable_errors = (errno.EINTR, errno.EDEADLK, errno.EWOULDBLOCK)
-
- # wait for data to become available
- if not isinstance(socket, NpipeSocket):
- select.select([socket], [], [])
-
- try:
- if hasattr(socket, 'recv'):
- return socket.recv(n)
- return os.read(socket.fileno(), n)
- except EnvironmentError as e:
- if e.errno not in recoverable_errors:
- raise
-
-
-def read_exactly(socket, n):
- """
- Reads exactly n bytes from socket
- Raises SocketError if there isn't enough data
- """
- data = six.binary_type()
- while len(data) < n:
- next_data = read(socket, n - len(data))
- if not next_data:
- raise SocketError("Unexpected EOF")
- data += next_data
- return data
-
-
-def next_frame_size(socket):
- """
- Returns the size of the next frame of data waiting to be read from socket,
- according to the protocol defined here:
-
- https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/attach-to-a-container
- """
- try:
- data = read_exactly(socket, 8)
- except SocketError:
- return 0
-
- _, actual = struct.unpack('>BxxxL', data)
- return actual
-
-
-def frames_iter(socket):
- """
- Returns a generator of frames read from socket
- """
- n = next_frame_size(socket)
- while n > 0:
- yield read(socket, n)
- n = next_frame_size(socket)
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/types.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/types.py b/env2/lib/python2.7/site-packages/docker/utils/types.py
deleted file mode 100644
index 8098c47..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/types.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Compatibility module. See https://github.com/docker/docker-py/issues/1196
-
-import warnings
-
-from ..types import Ulimit, LogConfig # flake8: noqa
-
-warnings.warn('docker.utils.types is now docker.types', ImportWarning)
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/utils/utils.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/utils/utils.py b/env2/lib/python2.7/site-packages/docker/utils/utils.py
deleted file mode 100644
index 8d55b57..0000000
--- a/env2/lib/python2.7/site-packages/docker/utils/utils.py
+++ /dev/null
@@ -1,1139 +0,0 @@
-import base64
-import io
-import os
-import os.path
-import json
-import shlex
-import tarfile
-import tempfile
-import warnings
-from distutils.version import StrictVersion
-from datetime import datetime
-from fnmatch import fnmatch
-
-import requests
-import six
-
-from .. import constants
-from .. import errors
-from .. import tls
-from ..types import Ulimit, LogConfig
-
-if six.PY2:
- from urllib import splitnport
-else:
- from urllib.parse import splitnport
-
-DEFAULT_HTTP_HOST = "127.0.0.1"
-DEFAULT_UNIX_SOCKET = "http+unix://var/run/docker.sock"
-DEFAULT_NPIPE = 'npipe:////./pipe/docker_engine'
-
-BYTE_UNITS = {
- 'b': 1,
- 'k': 1024,
- 'm': 1024 * 1024,
- 'g': 1024 * 1024 * 1024
-}
-
-
-def create_ipam_pool(subnet=None, iprange=None, gateway=None,
- aux_addresses=None):
- return {
- 'Subnet': subnet,
- 'IPRange': iprange,
- 'Gateway': gateway,
- 'AuxiliaryAddresses': aux_addresses
- }
-
-
-def create_ipam_config(driver='default', pool_configs=None):
- return {
- 'Driver': driver,
- 'Config': pool_configs or []
- }
-
-
-def mkbuildcontext(dockerfile):
- f = tempfile.NamedTemporaryFile()
- t = tarfile.open(mode='w', fileobj=f)
- if isinstance(dockerfile, io.StringIO):
- dfinfo = tarfile.TarInfo('Dockerfile')
- if six.PY3:
- raise TypeError('Please use io.BytesIO to create in-memory '
- 'Dockerfiles with Python 3')
- else:
- dfinfo.size = len(dockerfile.getvalue())
- dockerfile.seek(0)
- elif isinstance(dockerfile, io.BytesIO):
- dfinfo = tarfile.TarInfo('Dockerfile')
- dfinfo.size = len(dockerfile.getvalue())
- dockerfile.seek(0)
- else:
- dfinfo = t.gettarinfo(fileobj=dockerfile, arcname='Dockerfile')
- t.addfile(dfinfo, dockerfile)
- t.close()
- f.seek(0)
- return f
-
-
-def decode_json_header(header):
- data = base64.b64decode(header)
- if six.PY3:
- data = data.decode('utf-8')
- return json.loads(data)
-
-
-def tar(path, exclude=None, dockerfile=None, fileobj=None, gzip=False):
- if not fileobj:
- fileobj = tempfile.NamedTemporaryFile()
- t = tarfile.open(mode='w:gz' if gzip else 'w', fileobj=fileobj)
-
- root = os.path.abspath(path)
- exclude = exclude or []
-
- for path in sorted(exclude_paths(root, exclude, dockerfile=dockerfile)):
- t.add(os.path.join(root, path), arcname=path, recursive=False)
-
- t.close()
- fileobj.seek(0)
- return fileobj
-
-
-def exclude_paths(root, patterns, dockerfile=None):
- """
- Given a root directory path and a list of .dockerignore patterns, return
- an iterator of all paths (both regular files and directories) in the root
- directory that do *not* match any of the patterns.
-
- All paths returned are relative to the root.
- """
- if dockerfile is None:
- dockerfile = 'Dockerfile'
-
- exceptions = [p for p in patterns if p.startswith('!')]
-
- include_patterns = [p[1:] for p in exceptions]
- include_patterns += [dockerfile, '.dockerignore']
-
- exclude_patterns = list(set(patterns) - set(exceptions))
-
- paths = get_paths(root, exclude_patterns, include_patterns,
- has_exceptions=len(exceptions) > 0)
-
- return set(paths).union(
- # If the Dockerfile is in a subdirectory that is excluded, get_paths
- # will not descend into it and the file will be skipped. This ensures
- # it doesn't happen.
- set([dockerfile])
- if os.path.exists(os.path.join(root, dockerfile)) else set()
- )
-
-
-def should_include(path, exclude_patterns, include_patterns):
- """
- Given a path, a list of exclude patterns, and a list of inclusion patterns:
-
- 1. Returns True if the path doesn't match any exclusion pattern
- 2. Returns False if the path matches an exclusion pattern and doesn't match
- an inclusion pattern
- 3. Returns true if the path matches an exclusion pattern and matches an
- inclusion pattern
- """
- for pattern in exclude_patterns:
- if match_path(path, pattern):
- for pattern in include_patterns:
- if match_path(path, pattern):
- return True
- return False
- return True
-
-
-def get_paths(root, exclude_patterns, include_patterns, has_exceptions=False):
- paths = []
-
- for parent, dirs, files in os.walk(root, topdown=True, followlinks=False):
- parent = os.path.relpath(parent, root)
- if parent == '.':
- parent = ''
-
- # If exception rules exist, we can't skip recursing into ignored
- # directories, as we need to look for exceptions in them.
- #
- # It may be possible to optimize this further for exception patterns
- # that *couldn't* match within ignored directores.
- #
- # This matches the current docker logic (as of 2015-11-24):
- # https://github.com/docker/docker/blob/37ba67bf636b34dc5c0c0265d62a089d0492088f/pkg/archive/archive.go#L555-L557
-
- if not has_exceptions:
-
- # Remove excluded patterns from the list of directories to traverse
- # by mutating the dirs we're iterating over.
- # This looks strange, but is considered the correct way to skip
- # traversal. See https://docs.python.org/2/library/os.html#os.walk
-
- dirs[:] = [d for d in dirs if
- should_include(os.path.join(parent, d),
- exclude_patterns, include_patterns)]
-
- for path in dirs:
- if should_include(os.path.join(parent, path),
- exclude_patterns, include_patterns):
- paths.append(os.path.join(parent, path))
-
- for path in files:
- if should_include(os.path.join(parent, path),
- exclude_patterns, include_patterns):
- paths.append(os.path.join(parent, path))
-
- return paths
-
-
-def match_path(path, pattern):
- pattern = pattern.rstrip('/')
- if pattern:
- pattern = os.path.relpath(pattern)
-
- pattern_components = pattern.split(os.path.sep)
- path_components = path.split(os.path.sep)[:len(pattern_components)]
- return fnmatch('/'.join(path_components), pattern)
-
-
-def compare_version(v1, v2):
- """Compare docker versions
-
- >>> v1 = '1.9'
- >>> v2 = '1.10'
- >>> compare_version(v1, v2)
- 1
- >>> compare_version(v2, v1)
- -1
- >>> compare_version(v2, v2)
- 0
- """
- s1 = StrictVersion(v1)
- s2 = StrictVersion(v2)
- if s1 == s2:
- return 0
- elif s1 > s2:
- return -1
- else:
- return 1
-
-
-def version_lt(v1, v2):
- return compare_version(v1, v2) > 0
-
-
-def version_gte(v1, v2):
- return not version_lt(v1, v2)
-
-
-def ping_registry(url):
- warnings.warn(
- 'The `ping_registry` method is deprecated and will be removed.',
- DeprecationWarning
- )
-
- return ping(url + '/v2/', [401]) or ping(url + '/v1/_ping')
-
-
-def ping(url, valid_4xx_statuses=None):
- try:
- res = requests.get(url, timeout=3)
- except Exception:
- return False
- else:
- # We don't send yet auth headers
- # and a v2 registry will respond with status 401
- return (
- res.status_code < 400 or
- (valid_4xx_statuses and res.status_code in valid_4xx_statuses)
- )
-
-
-def _convert_port_binding(binding):
- result = {'HostIp': '', 'HostPort': ''}
- if isinstance(binding, tuple):
- if len(binding) == 2:
- result['HostPort'] = binding[1]
- result['HostIp'] = binding[0]
- elif isinstance(binding[0], six.string_types):
- result['HostIp'] = binding[0]
- else:
- result['HostPort'] = binding[0]
- elif isinstance(binding, dict):
- if 'HostPort' in binding:
- result['HostPort'] = binding['HostPort']
- if 'HostIp' in binding:
- result['HostIp'] = binding['HostIp']
- else:
- raise ValueError(binding)
- else:
- result['HostPort'] = binding
-
- if result['HostPort'] is None:
- result['HostPort'] = ''
- else:
- result['HostPort'] = str(result['HostPort'])
-
- return result
-
-
-def convert_port_bindings(port_bindings):
- result = {}
- for k, v in six.iteritems(port_bindings):
- key = str(k)
- if '/' not in key:
- key += '/tcp'
- if isinstance(v, list):
- result[key] = [_convert_port_binding(binding) for binding in v]
- else:
- result[key] = [_convert_port_binding(v)]
- return result
-
-
-def convert_volume_binds(binds):
- if isinstance(binds, list):
- return binds
-
- result = []
- for k, v in binds.items():
- if isinstance(k, six.binary_type):
- k = k.decode('utf-8')
-
- if isinstance(v, dict):
- if 'ro' in v and 'mode' in v:
- raise ValueError(
- 'Binding cannot contain both "ro" and "mode": {}'
- .format(repr(v))
- )
-
- bind = v['bind']
- if isinstance(bind, six.binary_type):
- bind = bind.decode('utf-8')
-
- if 'ro' in v:
- mode = 'ro' if v['ro'] else 'rw'
- elif 'mode' in v:
- mode = v['mode']
- else:
- mode = 'rw'
-
- result.append(
- six.text_type('{0}:{1}:{2}').format(k, bind, mode)
- )
- else:
- if isinstance(v, six.binary_type):
- v = v.decode('utf-8')
- result.append(
- six.text_type('{0}:{1}:rw').format(k, v)
- )
- return result
-
-
-def convert_tmpfs_mounts(tmpfs):
- if isinstance(tmpfs, dict):
- return tmpfs
-
- if not isinstance(tmpfs, list):
- raise ValueError(
- 'Expected tmpfs value to be either a list or a dict, found: {}'
- .format(type(tmpfs).__name__)
- )
-
- result = {}
- for mount in tmpfs:
- if isinstance(mount, six.string_types):
- if ":" in mount:
- name, options = mount.split(":", 1)
- else:
- name = mount
- options = ""
-
- else:
- raise ValueError(
- "Expected item in tmpfs list to be a string, found: {}"
- .format(type(mount).__name__)
- )
-
- result[name] = options
- return result
-
-
-def parse_repository_tag(repo_name):
- parts = repo_name.rsplit('@', 1)
- if len(parts) == 2:
- return tuple(parts)
- parts = repo_name.rsplit(':', 1)
- if len(parts) == 2 and '/' not in parts[1]:
- return tuple(parts)
- return repo_name, None
-
-
-# Based on utils.go:ParseHost http://tinyurl.com/nkahcfh
-# fd:// protocol unsupported (for obvious reasons)
-# Added support for http and https
-# Protocol translation: tcp -> http, unix -> http+unix
-def parse_host(addr, is_win32=False, tls=False):
- proto = "http+unix"
- port = None
- path = ''
-
- if not addr and is_win32:
- addr = DEFAULT_NPIPE
-
- if not addr or addr.strip() == 'unix://':
- return DEFAULT_UNIX_SOCKET
-
- addr = addr.strip()
- if addr.startswith('http://'):
- addr = addr.replace('http://', 'tcp://')
- if addr.startswith('http+unix://'):
- addr = addr.replace('http+unix://', 'unix://')
-
- if addr == 'tcp://':
- raise errors.DockerException(
- "Invalid bind address format: {0}".format(addr)
- )
- elif addr.startswith('unix://'):
- addr = addr[7:]
- elif addr.startswith('tcp://'):
- proto = 'http{0}'.format('s' if tls else '')
- addr = addr[6:]
- elif addr.startswith('https://'):
- proto = "https"
- addr = addr[8:]
- elif addr.startswith('npipe://'):
- proto = 'npipe'
- addr = addr[8:]
- elif addr.startswith('fd://'):
- raise errors.DockerException("fd protocol is not implemented")
- else:
- if "://" in addr:
- raise errors.DockerException(
- "Invalid bind address protocol: {0}".format(addr)
- )
- proto = "https" if tls else "http"
-
- if proto in ("http", "https"):
- address_parts = addr.split('/', 1)
- host = address_parts[0]
- if len(address_parts) == 2:
- path = '/' + address_parts[1]
- host, port = splitnport(host)
-
- if port is None:
- raise errors.DockerException(
- "Invalid port: {0}".format(addr)
- )
-
- if not host:
- host = DEFAULT_HTTP_HOST
- else:
- host = addr
-
- if proto in ("http", "https") and port == -1:
- raise errors.DockerException(
- "Bind address needs a port: {0}".format(addr))
-
- if proto == "http+unix" or proto == 'npipe':
- return "{0}://{1}".format(proto, host).rstrip('/')
- return "{0}://{1}:{2}{3}".format(proto, host, port, path).rstrip('/')
-
-
-def parse_devices(devices):
- device_list = []
- for device in devices:
- if isinstance(device, dict):
- device_list.append(device)
- continue
- if not isinstance(device, six.string_types):
- raise errors.DockerException(
- 'Invalid device type {0}'.format(type(device))
- )
- device_mapping = device.split(':')
- if device_mapping:
- path_on_host = device_mapping[0]
- if len(device_mapping) > 1:
- path_in_container = device_mapping[1]
- else:
- path_in_container = path_on_host
- if len(device_mapping) > 2:
- permissions = device_mapping[2]
- else:
- permissions = 'rwm'
- device_list.append({
- 'PathOnHost': path_on_host,
- 'PathInContainer': path_in_container,
- 'CgroupPermissions': permissions
- })
- return device_list
-
-
-def kwargs_from_env(ssl_version=None, assert_hostname=None, environment=None):
- if not environment:
- environment = os.environ
- host = environment.get('DOCKER_HOST')
-
- # empty string for cert path is the same as unset.
- cert_path = environment.get('DOCKER_CERT_PATH') or None
-
- # empty string for tls verify counts as "false".
- # Any value or 'unset' counts as true.
- tls_verify = environment.get('DOCKER_TLS_VERIFY')
- if tls_verify == '':
- tls_verify = False
- else:
- tls_verify = tls_verify is not None
- enable_tls = cert_path or tls_verify
-
- params = {}
-
- if host:
- params['base_url'] = (
- host.replace('tcp://', 'https://') if enable_tls else host
- )
-
- if not enable_tls:
- return params
-
- if not cert_path:
- cert_path = os.path.join(os.path.expanduser('~'), '.docker')
-
- if not tls_verify and assert_hostname is None:
- # assert_hostname is a subset of TLS verification,
- # so if it's not set already then set it to false.
- assert_hostname = False
-
- params['tls'] = tls.TLSConfig(
- client_cert=(os.path.join(cert_path, 'cert.pem'),
- os.path.join(cert_path, 'key.pem')),
- ca_cert=os.path.join(cert_path, 'ca.pem'),
- verify=tls_verify,
- ssl_version=ssl_version,
- assert_hostname=assert_hostname,
- )
-
- return params
-
-
-def convert_filters(filters):
- result = {}
- for k, v in six.iteritems(filters):
- if isinstance(v, bool):
- v = 'true' if v else 'false'
- if not isinstance(v, list):
- v = [v, ]
- result[k] = v
- return json.dumps(result)
-
-
-def datetime_to_timestamp(dt):
- """Convert a UTC datetime to a Unix timestamp"""
- delta = dt - datetime.utcfromtimestamp(0)
- return delta.seconds + delta.days * 24 * 3600
-
-
-def parse_bytes(s):
- if isinstance(s, six.integer_types + (float,)):
- return s
- if len(s) == 0:
- return 0
-
- if s[-2:-1].isalpha() and s[-1].isalpha():
- if s[-1] == "b" or s[-1] == "B":
- s = s[:-1]
- units = BYTE_UNITS
- suffix = s[-1].lower()
-
- # Check if the variable is a string representation of an int
- # without a units part. Assuming that the units are bytes.
- if suffix.isdigit():
- digits_part = s
- suffix = 'b'
- else:
- digits_part = s[:-1]
-
- if suffix in units.keys() or suffix.isdigit():
- try:
- digits = int(digits_part)
- except ValueError:
- raise errors.DockerException(
- 'Failed converting the string value for memory ({0}) to'
- ' an integer.'.format(digits_part)
- )
-
- # Reconvert to long for the final result
- s = int(digits * units[suffix])
- else:
- raise errors.DockerException(
- 'The specified value for memory ({0}) should specify the'
- ' units. The postfix should be one of the `b` `k` `m` `g`'
- ' characters'.format(s)
- )
-
- return s
-
-
-def host_config_type_error(param, param_value, expected):
- error_msg = 'Invalid type for {0} param: expected {1} but found {2}'
- return TypeError(error_msg.format(param, expected, type(param_value)))
-
-
-def host_config_version_error(param, version, less_than=True):
- operator = '<' if less_than else '>'
- error_msg = '{0} param is not supported in API versions {1} {2}'
- return errors.InvalidVersion(error_msg.format(param, operator, version))
-
-
-def host_config_value_error(param, param_value):
- error_msg = 'Invalid value for {0} param: {1}'
- return ValueError(error_msg.format(param, param_value))
-
-
-def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
- publish_all_ports=False, links=None, privileged=False,
- dns=None, dns_search=None, volumes_from=None,
- network_mode=None, restart_policy=None, cap_add=None,
- cap_drop=None, devices=None, extra_hosts=None,
- read_only=None, pid_mode=None, ipc_mode=None,
- security_opt=None, ulimits=None, log_config=None,
- mem_limit=None, memswap_limit=None,
- mem_reservation=None, kernel_memory=None,
- mem_swappiness=None, cgroup_parent=None,
- group_add=None, cpu_quota=None,
- cpu_period=None, blkio_weight=None,
- blkio_weight_device=None, device_read_bps=None,
- device_write_bps=None, device_read_iops=None,
- device_write_iops=None, oom_kill_disable=False,
- shm_size=None, sysctls=None, version=None, tmpfs=None,
- oom_score_adj=None, dns_opt=None, cpu_shares=None,
- cpuset_cpus=None, userns_mode=None, pids_limit=None):
-
- host_config = {}
-
- if not version:
- warnings.warn(
- 'docker.utils.create_host_config() is deprecated. Please use '
- 'Client.create_host_config() instead.'
- )
- version = constants.DEFAULT_DOCKER_API_VERSION
-
- if mem_limit is not None:
- host_config['Memory'] = parse_bytes(mem_limit)
-
- if memswap_limit is not None:
- host_config['MemorySwap'] = parse_bytes(memswap_limit)
-
- if mem_reservation:
- if version_lt(version, '1.21'):
- raise host_config_version_error('mem_reservation', '1.21')
-
- host_config['MemoryReservation'] = parse_bytes(mem_reservation)
-
- if kernel_memory:
- if version_lt(version, '1.21'):
- raise host_config_version_error('kernel_memory', '1.21')
-
- host_config['KernelMemory'] = parse_bytes(kernel_memory)
-
- if mem_swappiness is not None:
- if version_lt(version, '1.20'):
- raise host_config_version_error('mem_swappiness', '1.20')
- if not isinstance(mem_swappiness, int):
- raise host_config_type_error(
- 'mem_swappiness', mem_swappiness, 'int'
- )
-
- host_config['MemorySwappiness'] = mem_swappiness
-
- if shm_size is not None:
- if isinstance(shm_size, six.string_types):
- shm_size = parse_bytes(shm_size)
-
- host_config['ShmSize'] = shm_size
-
- if pid_mode not in (None, 'host'):
- raise host_config_value_error('pid_mode', pid_mode)
- elif pid_mode:
- host_config['PidMode'] = pid_mode
-
- if ipc_mode:
- host_config['IpcMode'] = ipc_mode
-
- if privileged:
- host_config['Privileged'] = privileged
-
- if oom_kill_disable:
- if version_lt(version, '1.20'):
- raise host_config_version_error('oom_kill_disable', '1.19')
-
- host_config['OomKillDisable'] = oom_kill_disable
-
- if oom_score_adj:
- if version_lt(version, '1.22'):
- raise host_config_version_error('oom_score_adj', '1.22')
- if not isinstance(oom_score_adj, int):
- raise host_config_type_error(
- 'oom_score_adj', oom_score_adj, 'int'
- )
- host_config['OomScoreAdj'] = oom_score_adj
-
- if publish_all_ports:
- host_config['PublishAllPorts'] = publish_all_ports
-
- if read_only is not None:
- host_config['ReadonlyRootfs'] = read_only
-
- if dns_search:
- host_config['DnsSearch'] = dns_search
-
- if network_mode:
- host_config['NetworkMode'] = network_mode
- elif network_mode is None and compare_version('1.19', version) > 0:
- host_config['NetworkMode'] = 'default'
-
- if restart_policy:
- if not isinstance(restart_policy, dict):
- raise host_config_type_error(
- 'restart_policy', restart_policy, 'dict'
- )
-
- host_config['RestartPolicy'] = restart_policy
-
- if cap_add:
- host_config['CapAdd'] = cap_add
-
- if cap_drop:
- host_config['CapDrop'] = cap_drop
-
- if devices:
- host_config['Devices'] = parse_devices(devices)
-
- if group_add:
- if version_lt(version, '1.20'):
- raise host_config_version_error('group_add', '1.20')
-
- host_config['GroupAdd'] = [six.text_type(grp) for grp in group_add]
-
- if dns is not None:
- host_config['Dns'] = dns
-
- if dns_opt is not None:
- if version_lt(version, '1.21'):
- raise host_config_version_error('dns_opt', '1.21')
-
- host_config['DnsOptions'] = dns_opt
-
- if security_opt is not None:
- if not isinstance(security_opt, list):
- raise host_config_type_error('security_opt', security_opt, 'list')
-
- host_config['SecurityOpt'] = security_opt
-
- if sysctls:
- if not isinstance(sysctls, dict):
- raise host_config_type_error('sysctls', sysctls, 'dict')
- host_config['Sysctls'] = {}
- for k, v in six.iteritems(sysctls):
- host_config['Sysctls'][k] = six.text_type(v)
-
- if volumes_from is not None:
- if isinstance(volumes_from, six.string_types):
- volumes_from = volumes_from.split(',')
-
- host_config['VolumesFrom'] = volumes_from
-
- if binds is not None:
- host_config['Binds'] = convert_volume_binds(binds)
-
- if port_bindings is not None:
- host_config['PortBindings'] = convert_port_bindings(port_bindings)
-
- if extra_hosts is not None:
- if isinstance(extra_hosts, dict):
- extra_hosts = [
- '{0}:{1}'.format(k, v)
- for k, v in sorted(six.iteritems(extra_hosts))
- ]
-
- host_config['ExtraHosts'] = extra_hosts
-
- if links is not None:
- host_config['Links'] = normalize_links(links)
-
- if isinstance(lxc_conf, dict):
- formatted = []
- for k, v in six.iteritems(lxc_conf):
- formatted.append({'Key': k, 'Value': str(v)})
- lxc_conf = formatted
-
- if lxc_conf is not None:
- host_config['LxcConf'] = lxc_conf
-
- if cgroup_parent is not None:
- host_config['CgroupParent'] = cgroup_parent
-
- if ulimits is not None:
- if not isinstance(ulimits, list):
- raise host_config_type_error('ulimits', ulimits, 'list')
- host_config['Ulimits'] = []
- for l in ulimits:
- if not isinstance(l, Ulimit):
- l = Ulimit(**l)
- host_config['Ulimits'].append(l)
-
- if log_config is not None:
- if not isinstance(log_config, LogConfig):
- if not isinstance(log_config, dict):
- raise host_config_type_error(
- 'log_config', log_config, 'LogConfig'
- )
- log_config = LogConfig(**log_config)
-
- host_config['LogConfig'] = log_config
-
- if cpu_quota:
- if not isinstance(cpu_quota, int):
- raise host_config_type_error('cpu_quota', cpu_quota, 'int')
- if version_lt(version, '1.19'):
- raise host_config_version_error('cpu_quota', '1.19')
-
- host_config['CpuQuota'] = cpu_quota
-
- if cpu_period:
- if not isinstance(cpu_period, int):
- raise host_config_type_error('cpu_period', cpu_period, 'int')
- if version_lt(version, '1.19'):
- raise host_config_version_error('cpu_period', '1.19')
-
- host_config['CpuPeriod'] = cpu_period
-
- if cpu_shares:
- if version_lt(version, '1.18'):
- raise host_config_version_error('cpu_shares', '1.18')
-
- if not isinstance(cpu_shares, int):
- raise host_config_type_error('cpu_shares', cpu_shares, 'int')
-
- host_config['CpuShares'] = cpu_shares
-
- if cpuset_cpus:
- if version_lt(version, '1.18'):
- raise host_config_version_error('cpuset_cpus', '1.18')
-
- host_config['CpuSetCpus'] = cpuset_cpus
-
- if blkio_weight:
- if not isinstance(blkio_weight, int):
- raise host_config_type_error('blkio_weight', blkio_weight, 'int')
- if version_lt(version, '1.22'):
- raise host_config_version_error('blkio_weight', '1.22')
- host_config["BlkioWeight"] = blkio_weight
-
- if blkio_weight_device:
- if not isinstance(blkio_weight_device, list):
- raise host_config_type_error(
- 'blkio_weight_device', blkio_weight_device, 'list'
- )
- if version_lt(version, '1.22'):
- raise host_config_version_error('blkio_weight_device', '1.22')
- host_config["BlkioWeightDevice"] = blkio_weight_device
-
- if device_read_bps:
- if not isinstance(device_read_bps, list):
- raise host_config_type_error(
- 'device_read_bps', device_read_bps, 'list'
- )
- if version_lt(version, '1.22'):
- raise host_config_version_error('device_read_bps', '1.22')
- host_config["BlkioDeviceReadBps"] = device_read_bps
-
- if device_write_bps:
- if not isinstance(device_write_bps, list):
- raise host_config_type_error(
- 'device_write_bps', device_write_bps, 'list'
- )
- if version_lt(version, '1.22'):
- raise host_config_version_error('device_write_bps', '1.22')
- host_config["BlkioDeviceWriteBps"] = device_write_bps
-
- if device_read_iops:
- if not isinstance(device_read_iops, list):
- raise host_config_type_error(
- 'device_read_iops', device_read_iops, 'list'
- )
- if version_lt(version, '1.22'):
- raise host_config_version_error('device_read_iops', '1.22')
- host_config["BlkioDeviceReadIOps"] = device_read_iops
-
- if device_write_iops:
- if not isinstance(device_write_iops, list):
- raise host_config_type_error(
- 'device_write_iops', device_write_iops, 'list'
- )
- if version_lt(version, '1.22'):
- raise host_config_version_error('device_write_iops', '1.22')
- host_config["BlkioDeviceWriteIOps"] = device_write_iops
-
- if tmpfs:
- if version_lt(version, '1.22'):
- raise host_config_version_error('tmpfs', '1.22')
- host_config["Tmpfs"] = convert_tmpfs_mounts(tmpfs)
-
- if userns_mode:
- if version_lt(version, '1.23'):
- raise host_config_version_error('userns_mode', '1.23')
-
- if userns_mode != "host":
- raise host_config_value_error("userns_mode", userns_mode)
- host_config['UsernsMode'] = userns_mode
-
- if pids_limit:
- if not isinstance(pids_limit, int):
- raise host_config_type_error('pids_limit', pids_limit, 'int')
- if version_lt(version, '1.23'):
- raise host_config_version_error('pids_limit', '1.23')
- host_config["PidsLimit"] = pids_limit
-
- return host_config
-
-
-def normalize_links(links):
- if isinstance(links, dict):
- links = six.iteritems(links)
-
- return ['{0}:{1}'.format(k, v) for k, v in sorted(links)]
-
-
-def create_networking_config(endpoints_config=None):
- networking_config = {}
-
- if endpoints_config:
- networking_config["EndpointsConfig"] = endpoints_config
-
- return networking_config
-
-
-def create_endpoint_config(version, aliases=None, links=None,
- ipv4_address=None, ipv6_address=None,
- link_local_ips=None):
- if version_lt(version, '1.22'):
- raise errors.InvalidVersion(
- 'Endpoint config is not supported for API version < 1.22'
- )
- endpoint_config = {}
-
- if aliases:
- endpoint_config["Aliases"] = aliases
-
- if links:
- endpoint_config["Links"] = normalize_links(links)
-
- ipam_config = {}
- if ipv4_address:
- ipam_config['IPv4Address'] = ipv4_address
-
- if ipv6_address:
- ipam_config['IPv6Address'] = ipv6_address
-
- if link_local_ips is not None:
- if version_lt(version, '1.24'):
- raise errors.InvalidVersion(
- 'link_local_ips is not supported for API version < 1.24'
- )
- ipam_config['LinkLocalIPs'] = link_local_ips
-
- if ipam_config:
- endpoint_config['IPAMConfig'] = ipam_config
-
- return endpoint_config
-
-
-def parse_env_file(env_file):
- """
- Reads a line-separated environment file.
- The format of each line should be "key=value".
- """
- environment = {}
-
- with open(env_file, 'r') as f:
- for line in f:
-
- if line[0] == '#':
- continue
-
- parse_line = line.strip().split('=', 1)
- if len(parse_line) == 2:
- k, v = parse_line
- environment[k] = v
- else:
- raise errors.DockerException(
- 'Invalid line in environment file {0}:\n{1}'.format(
- env_file, line))
-
- return environment
-
-
-def split_command(command):
- if six.PY2 and not isinstance(command, six.binary_type):
- command = command.encode('utf-8')
- return shlex.split(command)
-
-
-def format_environment(environment):
- def format_env(key, value):
- if value is None:
- return key
- if isinstance(value, six.binary_type):
- value = value.decode('utf-8')
-
- return u'{key}={value}'.format(key=key, value=value)
- return [format_env(*var) for var in six.iteritems(environment)]
-
-
-def create_container_config(
- version, image, command, hostname=None, user=None, detach=False,
- stdin_open=False, tty=False, mem_limit=None, ports=None, environment=None,
- dns=None, volumes=None, volumes_from=None, network_disabled=False,
- entrypoint=None, cpu_shares=None, working_dir=None, domainname=None,
- memswap_limit=None, cpuset=None, host_config=None, mac_address=None,
- labels=None, volume_driver=None, stop_signal=None, networking_config=None,
-):
- if isinstance(command, six.string_types):
- command = split_command(command)
-
- if isinstance(entrypoint, six.string_types):
- entrypoint = split_command(entrypoint)
-
- if isinstance(environment, dict):
- environment = format_environment(environment)
-
- if labels is not None and compare_version('1.18', version) < 0:
- raise errors.InvalidVersion(
- 'labels were only introduced in API version 1.18'
- )
-
- if cpuset is not None or cpu_shares is not None:
- if version_gte(version, '1.18'):
- warnings.warn(
- 'The cpuset_cpus and cpu_shares options have been moved to '
- 'host_config in API version 1.18, and will be removed',
- DeprecationWarning
- )
-
- if stop_signal is not None and compare_version('1.21', version) < 0:
- raise errors.InvalidVersion(
- 'stop_signal was only introduced in API version 1.21'
- )
-
- if compare_version('1.19', version) < 0:
- if volume_driver is not None:
- raise errors.InvalidVersion(
- 'Volume drivers were only introduced in API version 1.19'
- )
- mem_limit = mem_limit if mem_limit is not None else 0
- memswap_limit = memswap_limit if memswap_limit is not None else 0
- else:
- if mem_limit is not None:
- raise errors.InvalidVersion(
- 'mem_limit has been moved to host_config in API version 1.19'
- )
-
- if memswap_limit is not None:
- raise errors.InvalidVersion(
- 'memswap_limit has been moved to host_config in API '
- 'version 1.19'
- )
-
- if isinstance(labels, list):
- labels = dict((lbl, six.text_type('')) for lbl in labels)
-
- if mem_limit is not None:
- mem_limit = parse_bytes(mem_limit)
-
- if memswap_limit is not None:
- memswap_limit = parse_bytes(memswap_limit)
-
- if isinstance(ports, list):
- exposed_ports = {}
- for port_definition in ports:
- port = port_definition
- proto = 'tcp'
- if isinstance(port_definition, tuple):
- if len(port_definition) == 2:
- proto = port_definition[1]
- port = port_definition[0]
- exposed_ports['{0}/{1}'.format(port, proto)] = {}
- ports = exposed_ports
-
- if isinstance(volumes, six.string_types):
- volumes = [volumes, ]
-
- if isinstance(volumes, list):
- volumes_dict = {}
- for vol in volumes:
- volumes_dict[vol] = {}
- volumes = volumes_dict
-
- if volumes_from:
- if not isinstance(volumes_from, six.string_types):
- volumes_from = ','.join(volumes_from)
- else:
- # Force None, an empty list or dict causes client.start to fail
- volumes_from = None
-
- attach_stdin = False
- attach_stdout = False
- attach_stderr = False
- stdin_once = False
-
- if not detach:
- attach_stdout = True
- attach_stderr = True
-
- if stdin_open:
- attach_stdin = True
- stdin_once = True
-
- if compare_version('1.10', version) >= 0:
- message = ('{0!r} parameter has no effect on create_container().'
- ' It has been moved to host_config')
- if dns is not None:
- raise errors.InvalidVersion(message.format('dns'))
- if volumes_from is not None:
- raise errors.InvalidVersion(message.format('volumes_from'))
-
- return {
- 'Hostname': hostname,
- 'Domainname': domainname,
- 'ExposedPorts': ports,
- 'User': six.text_type(user) if user else None,
- 'Tty': tty,
- 'OpenStdin': stdin_open,
- 'StdinOnce': stdin_once,
- 'Memory': mem_limit,
- 'AttachStdin': attach_stdin,
- 'AttachStdout': attach_stdout,
- 'AttachStderr': attach_stderr,
- 'Env': environment,
- 'Cmd': command,
- 'Dns': dns,
- 'Image': image,
- 'Volumes': volumes,
- 'VolumesFrom': volumes_from,
- 'NetworkDisabled': network_disabled,
- 'Entrypoint': entrypoint,
- 'CpuShares': cpu_shares,
- 'Cpuset': cpuset,
- 'CpusetCpus': cpuset,
- 'WorkingDir': working_dir,
- 'MemorySwap': memswap_limit,
- 'HostConfig': host_config,
- 'NetworkingConfig': networking_config,
- 'MacAddress': mac_address,
- 'Labels': labels,
- 'VolumeDriver': volume_driver,
- 'StopSignal': stop_signal
- }
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker/version.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker/version.py b/env2/lib/python2.7/site-packages/docker/version.py
deleted file mode 100644
index 27d014c..0000000
--- a/env2/lib/python2.7/site-packages/docker/version.py
+++ /dev/null
@@ -1,2 +0,0 @@
-version = "1.10.6"
-version_info = tuple([int(d) for d in version.split("-")[0].split(".")])
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/DESCRIPTION.rst
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/DESCRIPTION.rst b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/DESCRIPTION.rst
deleted file mode 100644
index e118723..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/DESCRIPTION.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-UNKNOWN
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/INSTALLER
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/INSTALLER b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/INSTALLER
deleted file mode 100644
index a1b589e..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/INSTALLER
+++ /dev/null
@@ -1 +0,0 @@
-pip
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/METADATA
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/METADATA b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/METADATA
deleted file mode 100644
index d6f1eb7..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/METADATA
+++ /dev/null
@@ -1,32 +0,0 @@
-Metadata-Version: 2.0
-Name: docker-compose
-Version: 1.8.0
-Summary: Multi-container orchestration for Docker
-Home-page: https://www.docker.com/
-Author: Docker, Inc.
-Author-email: UNKNOWN
-License: Apache License 2.0
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-Requires-Dist: cached-property (>=1.2.0,<2)
-Requires-Dist: docopt (<0.7,>=0.6.1)
-Requires-Dist: PyYAML (<4,>=3.10)
-Requires-Dist: requests (>=2.6.1,<2.8)
-Requires-Dist: texttable (>=0.8.1,<0.9)
-Requires-Dist: websocket-client (>=0.32.0,<1.0)
-Requires-Dist: docker-py (>=1.9.0,<2.0)
-Requires-Dist: dockerpty (<0.5,>=0.4.1)
-Requires-Dist: six (>=1.3.0,<2)
-Requires-Dist: jsonschema (>=2.5.1,<3)
-Requires-Dist: enum34 (>=1.0.4,<2)
-
-UNKNOWN
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/RECORD
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/RECORD b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/RECORD
deleted file mode 100644
index 89a4211..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/RECORD
+++ /dev/null
@@ -1,83 +0,0 @@
-compose/GITSHA,sha256=jpASxQL3TVzirAeKn9RVj9Zx-UOyi9_mxHgRPjHpjY4,8
-compose/__init__.py,sha256=rTFtWHw2kt3e2ffnFskQihuIX67673YKGReuu-KrCc4,102
-compose/__main__.py,sha256=s6kkTRY0cnWgIy8ptC8T48d7Z8UHbkSIhLNYKUJYkKY,122
-compose/bundle.py,sha256=533DxcDe3lHcoMbxdnQmK-on7Mi5okjxiKEpPB8Dlks,7036
-compose/const.py,sha256=wp1a0adBcp46kHHufz6rdpoKZlD5vaeOmGlR30p0zdg,792
-compose/container.py,sha256=XMpq6GkAIlzfTIRSh7RupHeQbp7zTYm8IZmXpXH8fmk,7749
-compose/errors.py,sha256=nnCXDJvKbUu9rTY3-s82TezWDuZreBkugYZgi-phgtM,178
-compose/network.py,sha256=wEYZ0EFAFHqEvgMdQCmQebvIj4wJSFh-puEK39oDDZ8,5994
-compose/parallel.py,sha256=wqRPUqeHz2qZHFrPAO9dkTXhgQzg-M7ljbryK0kFC-E,7436
-compose/progress_stream.py,sha256=MmE4M7lOyqHikHSX5yVvpdWJyz2wNa15cDKfi5E3oJk,3019
-compose/project.py,sha256=cBNXNU07k06qZbVhpPSNDQDsLdU0hebpf8h4eALSo7E,19718
-compose/service.py,sha256=f0HYq-nM-A1eqerfrRfEg8qy6aMB7LpuybDC4xvJt30,36427
-compose/state.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
-compose/utils.py,sha256=sp9vpF1euhdTqTj5yXqzR0WZgpwfCGPWUjHIUYDqy9s,2691
-compose/volume.py,sha256=lPMmFGwNQu44PATrosKaeK08BgJh7tD9yjcxV-d82IY,4640
-compose/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
-compose/cli/colors.py,sha256=xXRSficE5yN-2fAdN_ZtX9MJfizjgwM3PaxBTMCbs98,860
-compose/cli/command.py,sha256=d9XhUrWW9vnXyvlxekENpLTDbnbQfrG9yyUQ51VqShg,4041
-compose/cli/docker_client.py,sha256=nHfyxtgOyA3Kmtw8BtcOHY8R7mVSQNyON_Rj7Wpakzo,2135
-compose/cli/docopt_command.py,sha256=-ZziHSp14mIVfW7dMkO-FYPhwlgM6FYGGZx-cXECaoo,1700
-compose/cli/errors.py,sha256=vSqOqS_t1gU8CuX8OdFNKerI1jNSFcM5iexYKaCg-LY,3915
-compose/cli/formatter.py,sha256=_3KuUmpoJw7guGZixU9E8IMTGY_UWC8yAUP9FRcIRBc,1358
-compose/cli/log_printer.py,sha256=Y4pFpNBaNG_XbF2vTKA8TiT7P_lC1FaOfHKz8OkdDLM,6605
-compose/cli/main.py,sha256=uXo3isrKJiWDLgwDS7X9HJ_FDH4u5DUrmwrN2mVyK5w,37145
-compose/cli/signals.py,sha256=QlwX3FHiqIQA6f7_QCOx4rG93fUimCreurYl3bIR12s,395
-compose/cli/utils.py,sha256=QmBbqZ-m46IaHY7arVA0O46mxAeOFT24KDrjB51p0Cs,3192
-compose/cli/verbose_proxy.py,sha256=SIrY0HAIiUH9HyaRTDd692JHvMQw4kUwt0qSOZ6bCkQ,1770
-compose/config/__init__.py,sha256=nF5USHmyudNrl6SA0QoS_5kNCtkFTSr7vPfyINpxG70,325
-compose/config/config.py,sha256=pSz1RtdYDzIcqcwBLOSuSSfkchJuHe_R2AcATu-tenI,32327
-compose/config/config_schema_v1.json,sha256=y6W8hrnIP_tqp53vvbXdRYCkeZXGzN4p8zJmsnaYJEA,5475
-compose/config/config_schema_v2.0.json,sha256=iDIwdIJvC8rO2dC8IMk23sPu1gA8_3iah2P7adbxGSw,8823
-compose/config/environment.py,sha256=6saRBOppUlDZQd8yF2pFecftWsBlaBAWptKGYSE2Brw,3235
-compose/config/errors.py,sha256=MGVp2LTs8EIOLB9aMTV8E2bO5bVYFwe26YCzCSyzS-U,1432
-compose/config/interpolation.py,sha256=2cXGuIoffLnrvsrtypE6PB3VKhl3B4mHUzGnizaMTZc,1751
-compose/config/serialize.py,sha256=-e5BtcnaAPR_KR187uF44Mxi7ZfBH9f5hCPgrZyX7cw,1646
-compose/config/sort_services.py,sha256=nl2DvRHmO-_9-wrmWRetkrXE-hJO8QWr6Pk8YAUWrPE,2408
-compose/config/types.py,sha256=GrPFhEPIMspCrEIy1YqGW7m0PNRQBFhATJPaxPPTmaA,6215
-compose/config/validation.py,sha256=1-jLkCltUZBxFI4QMviUW4paPnqPXkfZuUbh8QMbxks,14474
-docker_compose-1.8.0.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10
-docker_compose-1.8.0.dist-info/METADATA,sha256=h3Y_WCbTK1PD5qljExeiyEfxj71KFCQ2tPj5O5mEkEg,1065
-docker_compose-1.8.0.dist-info/RECORD,,
-docker_compose-1.8.0.dist-info/WHEEL,sha256=siaGhHNH1IivIQO0_6mMI-08XttA7Qr2K9-kq5rC0zk,96
-docker_compose-1.8.0.dist-info/entry_points.txt,sha256=-8iKBsI1us-81I-rE86q5ZyOIQJKSiP-kBugo6Ml_gk,68
-docker_compose-1.8.0.dist-info/metadata.json,sha256=Cmku150e5kFzv2CDdEBxcdE39A071_pUXgLTdwgDZ6U,1314
-docker_compose-1.8.0.dist-info/pbr.json,sha256=VCVFzZPRQpukwD9OMPEIOF3mBeIEbAh2TrNve5nbG0U,47
-docker_compose-1.8.0.dist-info/top_level.txt,sha256=jLmhBR06QFGLqfBVdNJ3JPy-7jr7nSl7LgGemw-WiZw,8
-../../../bin/docker-compose,sha256=7DEkKhbx46PlzrtxonKKwF-r4Mjrc6I8sPKJ50pjxWY,287
-docker_compose-1.8.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
-compose/network.pyc,,
-compose/utils.pyc,,
-compose/cli/signals.pyc,,
-compose/config/types.pyc,,
-compose/const.pyc,,
-compose/state.pyc,,
-compose/service.pyc,,
-compose/config/config.pyc,,
-compose/cli/formatter.pyc,,
-compose/config/serialize.pyc,,
-compose/config/errors.pyc,,
-compose/config/__init__.pyc,,
-compose/cli/errors.pyc,,
-compose/errors.pyc,,
-compose/cli/command.pyc,,
-compose/cli/utils.pyc,,
-compose/volume.pyc,,
-compose/cli/docker_client.pyc,,
-compose/bundle.pyc,,
-compose/cli/docopt_command.pyc,,
-compose/container.pyc,,
-compose/cli/log_printer.pyc,,
-compose/config/sort_services.pyc,,
-compose/cli/main.pyc,,
-compose/project.pyc,,
-compose/cli/__init__.pyc,,
-compose/config/interpolation.pyc,,
-compose/__main__.pyc,,
-compose/__init__.pyc,,
-compose/progress_stream.pyc,,
-compose/parallel.pyc,,
-compose/cli/verbose_proxy.pyc,,
-compose/cli/colors.pyc,,
-compose/config/validation.pyc,,
-compose/config/environment.pyc,,
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/WHEEL
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/WHEEL b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/WHEEL
deleted file mode 100644
index 79e7cc9..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/WHEEL
+++ /dev/null
@@ -1,5 +0,0 @@
-Wheel-Version: 1.0
-Generator: bdist_wheel (0.30.0.a0)
-Root-Is-Purelib: true
-Tag: cp27-none-any
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/entry_points.txt
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/entry_points.txt b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/entry_points.txt
deleted file mode 100644
index b6dbac9..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/entry_points.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
- [console_scripts]
- docker-compose=compose.cli.main:main
-
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/metadata.json
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/metadata.json b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/metadata.json
deleted file mode 100644
index c2b1189..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/metadata.json
+++ /dev/null
@@ -1 +0,0 @@
-{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4"], "extensions": {"python.commands": {"wrap_console": {"docker-compose": "compose.cli.main:main"}}, "python.details": {"contacts": [{"name": "Docker, Inc.", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://www.docker.com/"}}, "python.exports": {"console_scripts": {"docker-compose": "compose.cli.main:main"}}}, "extras": [], "generator": "bdist_wheel (0.30.0.a0)", "license": "Apache License 2.0", "metadata_version": "2.0", "name": "docker-compose", "run_requires": [{"requires": ["PyYAML (<4,>=3.10)", "cached-property (>=1.2.0,<2)", "docker-py (>=1.9.0,<2.0)", "dockerpty (<0.5,>=0.4.1)", "docopt (
<0.7,>=0.6.1)", "enum34 (>=1.0.4,<2)", "jsonschema (>=2.5.1,<3)", "requests (>=2.6.1,<2.8)", "six (>=1.3.0,<2)", "texttable (>=0.8.1,<0.9)", "websocket-client (>=0.32.0,<1.0)"]}], "summary": "Multi-container orchestration for Docker", "test_requires": [{"requires": ["mock (>=1.0.1)", "pytest"]}], "version": "1.8.0"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/pbr.json
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/pbr.json b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/pbr.json
deleted file mode 100644
index 2140742..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/pbr.json
+++ /dev/null
@@ -1 +0,0 @@
-{"is_release": false, "git_version": "6c29830"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/top_level.txt
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/top_level.txt b/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/top_level.txt
deleted file mode 100644
index d66d399..0000000
--- a/env2/lib/python2.7/site-packages/docker_compose-1.8.0.dist-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-compose
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/DESCRIPTION.rst
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/DESCRIPTION.rst b/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/DESCRIPTION.rst
deleted file mode 100644
index 06d1a8e..0000000
--- a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/DESCRIPTION.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-docker-py
-=========
-
-|Build Status|
-
-A Python library for the Docker Remote API. It does everything the
-``docker`` command does, but from within Python \u2013�run containers, manage
-them, pull/push images, etc.
-
-Installation
-------------
-
-The latest stable version is always available on PyPi.
-
-::
-
- pip install docker-py
-
-Documentation
--------------
-
-|Documentation Status|
-
-`Read the full documentation
-here <https://docker-py.readthedocs.io/en/latest/>`__. The source is
-available in the ``docs/`` directory.
-
-License
--------
-
-Docker is licensed under the Apache License, Version 2.0. See LICENSE
-for full license text
-
-.. |Build Status| image:: https://travis-ci.org/docker/docker-py.png
- :target: https://travis-ci.org/docker/docker-py
-.. |Documentation Status| image:: https://readthedocs.org/projects/docker-py/badge/?version=latest
- :target: https://readthedocs.org/projects/docker-py/?badge=latest
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/INSTALLER
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/INSTALLER b/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/INSTALLER
deleted file mode 100644
index a1b589e..0000000
--- a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/INSTALLER
+++ /dev/null
@@ -1 +0,0 @@
-pip
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/METADATA
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/METADATA b/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/METADATA
deleted file mode 100644
index ecf839b..0000000
--- a/env2/lib/python2.7/site-packages/docker_py-1.10.6.dist-info/METADATA
+++ /dev/null
@@ -1,69 +0,0 @@
-Metadata-Version: 2.0
-Name: docker-py
-Version: 1.10.6
-Summary: Python client for Docker.
-Home-page: https://github.com/docker/docker-py/
-Author: Joffrey F
-Author-email: joffrey@docker.com
-License: UNKNOWN
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Environment :: Other Environment
-Classifier: Intended Audience :: Developers
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Topic :: Utilities
-Classifier: License :: OSI Approved :: Apache Software License
-Requires-Dist: docker-pycreds (>=0.2.1)
-Requires-Dist: requests (>=2.5.2,!=2.11.0)
-Requires-Dist: six (>=1.4.0)
-Requires-Dist: websocket-client (>=0.32.0)
-Requires-Dist: ipaddress (>=1.0.16); python_version < "3.3"
-Requires-Dist: backports.ssl-match-hostname (>=3.5); python_version < "3.5"
-
-docker-py
-=========
-
-|Build Status|
-
-A Python library for the Docker Remote API. It does everything the
-``docker`` command does, but from within Python \u2013�run containers, manage
-them, pull/push images, etc.
-
-Installation
-------------
-
-The latest stable version is always available on PyPi.
-
-::
-
- pip install docker-py
-
-Documentation
--------------
-
-|Documentation Status|
-
-`Read the full documentation
-here <https://docker-py.readthedocs.io/en/latest/>`__. The source is
-available in the ``docs/`` directory.
-
-License
--------
-
-Docker is licensed under the Apache License, Version 2.0. See LICENSE
-for full license text
-
-.. |Build Status| image:: https://travis-ci.org/docker/docker-py.png
- :target: https://travis-ci.org/docker/docker-py
-.. |Documentation Status| image:: https://readthedocs.org/projects/docker-py/badge/?version=latest
- :target: https://readthedocs.org/projects/docker-py/?badge=latest
-
-