8
8
from dateutil import parser
9
9
from docker import Client
10
10
from docker .errors import APIError
11
+ from docker .errors import NotFound
11
12
from docker .utils import kwargs_from_env
12
13
13
14
15
+ UNIX_SOC_ARGS = {"base_url" : 'unix://var/run/docker.sock' }
16
+
14
17
TEN_SECONDS = timedelta (seconds = 10 )
15
18
16
19
@@ -58,6 +61,11 @@ def parse_args():
58
61
action = "store_true" ,
59
62
help = "Do not remove anything" ,
60
63
)
64
+ parser .add_argument (
65
+ "--client-version" ,
66
+ default = None ,
67
+ help = "Specify client version to use." ,
68
+ )
61
69
return parser .parse_args ()
62
70
63
71
@@ -69,10 +77,20 @@ def make_client(args):
69
77
variables (e.g. DOCKER_HOST). This is much simpler than trying to pass
70
78
all the possible certificate options through argparse.
71
79
"""
72
- if args .use_env :
73
- return Client (** kwargs_from_env (assert_hostname = False ))
74
- else :
75
- return Client (base_url = 'unix://var/run/docker.sock' )
80
+ kwargs = kwargs_from_env (assert_hostname = False ) if args .use_env else UNIX_SOC_ARGS
81
+
82
+ if args .client_version is not None :
83
+ kwargs ["version" ] = args .client_version
84
+
85
+ client = Client (** kwargs )
86
+
87
+ # Verify client can talk to server.
88
+ try :
89
+ client .version ()
90
+ except NotFound as error :
91
+ raise SystemExit (error ) # noqa
92
+
93
+ return client
76
94
77
95
78
96
def normalize_tag_name (tag ):
0 commit comments