
    2.a                         d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ  G d d      Zej8                  Zy)   )	APIClient)DEFAULT_TIMEOUT_SECONDSDEFAULT_MAX_POOL_SIZEConfigCollectionContainerCollectionImageCollectionNetworkCollectionNodeCollectionPluginCollectionSecretCollectionServiceCollectionSwarmVolumeCollection)kwargs_from_envc                   p   e Zd ZdZd Zed        Zed        Zed        Z	ed        Z
ed        Zed        Zed	        Zed
        Zed        Zed        Zed        Zd Zej$                  j                  e_        d Zej(                  j                  e_        d Zej*                  j                  e_        d Zej,                  j                  e_        d Zej.                  j                  e_        d Zej0                  j                  e_        d Zej2                  j                  e_        d Zy)DockerClienta  
    A client for communicating with a Docker server.

    Example:

        >>> import docker
        >>> client = docker.DockerClient(base_url='unix://var/run/docker.sock')

    Args:
        base_url (str): URL to the Docker server. For example,
            ``unix:///var/run/docker.sock`` or ``tcp://127.0.0.1:1234``.
        version (str): The version of the API to use. Set to ``auto`` to
            automatically detect the server's version. Default: ``1.35``
        timeout (int): Default timeout for API calls, in seconds.
        tls (bool or :py:class:`~docker.tls.TLSConfig`): Enable TLS. Pass
            ``True`` to enable it with default options, or pass a
            :py:class:`~docker.tls.TLSConfig` object to use custom
            configuration.
        user_agent (str): Set a custom user agent for requests to the server.
        credstore_env (dict): Override environment variables when calling the
            credential store process.
        use_ssh_client (bool): If set to `True`, an ssh connection is made
            via shelling out to the ssh client. Ensure the ssh client is
            installed and configured on the host.
        max_pool_size (int): The maximum number of connections
            to save in the pool.
    c                 $    t        |i || _        y N)r   apiselfargskwargss      //usr/lib/python3/dist-packages/docker/client.py__init__zDockerClient.__init__,   s    d-f-    c           	          |j                  dt              }|j                  dt              }|j                  dd      }|j                  dd      } | d||||dt        di |S )	at  
        Return a client configured from environment variables.

        The environment variables used are the same as those used by the
        Docker command-line client. They are:

        .. envvar:: DOCKER_HOST

            The URL to the Docker host.

        .. envvar:: DOCKER_TLS_VERIFY

            Verify the host against a CA certificate.

        .. envvar:: DOCKER_CERT_PATH

            A path to a directory containing TLS certificates to use when
            connecting to the Docker host.

        Args:
            version (str): The version of the API to use. Set to ``auto`` to
                automatically detect the server's version. Default: ``auto``
            timeout (int): Default timeout for API calls, in seconds.
            max_pool_size (int): The maximum number of connections
                to save in the pool.
            ssl_version (int): A valid `SSL version`_.
            assert_hostname (bool): Verify the hostname of the server.
            environment (dict): The environment to read environment variables
                from. Default: the value of ``os.environ``
            credstore_env (dict): Override environment variables when calling
                the credential store process.
            use_ssh_client (bool): If set to `True`, an ssh connection is
                made via shelling out to the ssh client. Ensure the ssh
                client is installed and configured on the host.

        Example:

            >>> import docker
            >>> client = docker.from_env()

        .. _`SSL version`:
            https://docs.python.org/3.5/library/ssl.html#ssl.PROTOCOL_TLSv1
        timeoutmax_pool_sizeversionNuse_ssh_clientF)r(   r)   r*   r+    )popr   r   r   )clsr#   r(   r)   r*   r+   s         r$   from_envzDockerClient.from_env/   sx    Z **Y(?@

?4IJ**Y-$4e< 
')	

 ''
 	
r&   c                     t        |       S )z
        An object for managing configs on the server. See the
        :doc:`configs documentation <configs>` for full details.
        clientr   r!   s    r$   configszDockerClient.configsi         t,,r&   c                     t        |       S )z
        An object for managing containers on the server. See the
        :doc:`containers documentation <containers>` for full details.
        r1   r   r3   s    r$   
containerszDockerClient.containersq   s     #$//r&   c                     t        |       S )z
        An object for managing images on the server. See the
        :doc:`images documentation <images>` for full details.
        r1   r
   r3   s    r$   imageszDockerClient.imagesy   s     d++r&   c                     t        |       S )z
        An object for managing networks on the server. See the
        :doc:`networks documentation <networks>` for full details.
        r1   r   r3   s    r$   networkszDockerClient.networks        !--r&   c                     t        |       S )z
        An object for managing nodes on the server. See the
        :doc:`nodes documentation <nodes>` for full details.
        r1   r   r3   s    r$   nodeszDockerClient.nodes   s     T**r&   c                     t        |       S )z
        An object for managing plugins on the server. See the
        :doc:`plugins documentation <plugins>` for full details.
        r1   r   r3   s    r$   pluginszDockerClient.plugins   r5   r&   c                     t        |       S )z
        An object for managing secrets on the server. See the
        :doc:`secrets documentation <secrets>` for full details.
        r1   r   r3   s    r$   secretszDockerClient.secrets   r5   r&   c                     t        |       S )z
        An object for managing services on the server. See the
        :doc:`services documentation <services>` for full details.
        r1   r   r3   s    r$   serviceszDockerClient.services   r<   r&   c                     t        |       S )z
        An object for managing a swarm on the server. See the
        :doc:`swarm documentation <swarm>` for full details.
        r1   r   r3   s    r$   swarmzDockerClient.swarm   s     D!!r&   c                     t        |       S )z
        An object for managing volumes on the server. See the
        :doc:`volumes documentation <volumes>` for full details.
        r1   r   r3   s    r$   volumeszDockerClient.volumes   r5   r&   c                 :     | j                   j                  |i |S r   )r   eventsr    s      r$   rJ   zDockerClient.events   s    txx///r&   c                 6    | j                   j                         S r   )r   dfr3   s    r$   rL   zDockerClient.df   s    xx{{}r&   c                 :     | j                   j                  |i |S r   )r   infor    s      r$   rN   zDockerClient.info       txx}}d-f--r&   c                 :     | j                   j                  |i |S r   )r   loginr    s      r$   rQ   zDockerClient.login   s    txx~~t.v..r&   c                 :     | j                   j                  |i |S r   )r   pingr    s      r$   rS   zDockerClient.ping   rO   r&   c                 :     | j                   j                  |i |S r   )r   r*   r    s      r$   r*   zDockerClient.version   s    txx000r&   c                 6    | j                   j                         S r   )r   closer3   s    r$   rV   zDockerClient.close   s    xx~~r&   c                     d| dg}t        t        |      r|j                  d       t        dj	                  |            )Nz('DockerClient' object has no attribute ''zIn Docker SDK for Python 2.0, this method is now on the object APIClient. See the low-level API section of the documentation for more details. )hasattrr   appendAttributeErrorjoin)r!   namess      r$   __getattr__zDockerClient.__getattr__   sC    7vQ?@9d#HH 7 8 SXXa[))r&   N)__name__
__module____qualname____doc__r%   classmethodr/   propertyr4   r7   r9   r;   r>   r@   rB   rD   rF   rH   rJ   r   rL   rN   rQ   rS   r*   rV   r`   r,   r&   r$   r   r      s   6. 6
 6
r - - 0 0 , , . . + + - - - - . . " " - -0%%--FN%%BJ.>>))DL/OO++EM.>>))DL1''//GO OO++EM*r&   r   N)
api.clientr   	constantsr   r   models.configsr   models.containersr	   models.imagesr   models.networksr   models.nodesr   models.pluginsr   models.secretsr   models.servicesr   models.swarmr   models.volumesr   utilsr   r   r/   r,   r&   r$   <module>rt      sF    ! G , 2 * . ( , , .  , "M* M*`   r&   