o
    2.a                     @   s   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 dZejZdS )   )	APIClient)DEFAULT_TIMEOUT_SECONDSDEFAULT_MAX_POOL_SIZEConfigCollectionContainerCollectionImageCollectionNetworkCollectionNodeCollectionPluginCollectionSecretCollectionServiceCollectionSwarmVolumeCollection)kwargs_from_envc                   @   s"  e Zd ZdZdd Zedd Zedd Zedd	 Z	ed
d Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zdd Zejje_dd Zejje_dd Zejje_d d! Zejje_d"d# Zejje_d$d% Zejje_d&d' Zejje_d(d) Zd*S )+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                 O   s   t |i || _d S N)r   apiselfargskwargs r!   //usr/lib/python3/dist-packages/docker/client.py__init__,   s   zDockerClient.__init__c                 K   sR   | dt}| dt}| dd}| 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'   r!   )popr   r   r   )clsr    r$   r%   r&   r'   r!   r!   r"   from_env/   s   -zDockerClient.from_envc                 C   
   t | dS )z
        An object for managing configs on the server. See the
        :doc:`configs documentation <configs>` for full details.
        Zclientr   r   r!   r!   r"   configsi      
zDockerClient.configsc                 C   r+   )z
        An object for managing containers on the server. See the
        :doc:`containers documentation <containers>` for full details.
        r,   r   r-   r!   r!   r"   
containersq   r/   zDockerClient.containersc                 C   r+   )z
        An object for managing images on the server. See the
        :doc:`images documentation <images>` for full details.
        r,   r	   r-   r!   r!   r"   imagesy   r/   zDockerClient.imagesc                 C   r+   )z
        An object for managing networks on the server. See the
        :doc:`networks documentation <networks>` for full details.
        r,   r   r-   r!   r!   r"   networks   r/   zDockerClient.networksc                 C   r+   )z
        An object for managing nodes on the server. See the
        :doc:`nodes documentation <nodes>` for full details.
        r,   r   r-   r!   r!   r"   nodes   r/   zDockerClient.nodesc                 C   r+   )z
        An object for managing plugins on the server. See the
        :doc:`plugins documentation <plugins>` for full details.
        r,   r   r-   r!   r!   r"   plugins   r/   zDockerClient.pluginsc                 C   r+   )z
        An object for managing secrets on the server. See the
        :doc:`secrets documentation <secrets>` for full details.
        r,   r   r-   r!   r!   r"   secrets   r/   zDockerClient.secretsc                 C   r+   )z
        An object for managing services on the server. See the
        :doc:`services documentation <services>` for full details.
        r,   r   r-   r!   r!   r"   services   r/   zDockerClient.servicesc                 C   r+   )z
        An object for managing a swarm on the server. See the
        :doc:`swarm documentation <swarm>` for full details.
        r,   r   r-   r!   r!   r"   swarm   r/   zDockerClient.swarmc                 C   r+   )z
        An object for managing volumes on the server. See the
        :doc:`volumes documentation <volumes>` for full details.
        r,   r   r-   r!   r!   r"   volumes   r/   zDockerClient.volumesc                 O      | j j|i |S r   )r   eventsr   r!   r!   r"   r:         zDockerClient.eventsc                 C   
   | j  S r   )r   dfr-   r!   r!   r"   r=         
zDockerClient.dfc                 O   r9   r   )r   infor   r!   r!   r"   r?      r;   zDockerClient.infoc                 O   r9   r   )r   loginr   r!   r!   r"   r@      r;   zDockerClient.loginc                 O   r9   r   )r   pingr   r!   r!   r"   rA      r;   zDockerClient.pingc                 O   r9   r   )r   r&   r   r!   r!   r"   r&      r;   zDockerClient.versionc                 C   r<   r   )r   closer-   r!   r!   r"   rB      r>   zDockerClient.closec                 C   s0   d| dg}t t|r|d td|)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sr!   r!   r"   __getattr__   s   

zDockerClient.__getattr__N)__name__
__module____qualname____doc__r#   classmethodr*   propertyr.   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r   r=   r?   r@   rA   r&   rB   rK   r!   r!   r!   r"   r      sP    
9
















r   N)Z
api.clientr   Z	constantsr   r   Zmodels.configsr   Zmodels.containersr   Zmodels.imagesr
   Zmodels.networksr   Zmodels.nodesr   Zmodels.pluginsr   Zmodels.secretsr   Zmodels.servicesr   Zmodels.swarmr   Zmodels.volumesr   Zutilsr   r   r*   r!   r!   r!   r"   <module>   s      
Q