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 â 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: joff...@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 â 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 - -