10
10
11
11
12
12
class ContainerApiMixin (object ):
13
- @utils .check_resource
13
+ @utils .check_resource ( 'container' )
14
14
def attach (self , container , stdout = True , stderr = True ,
15
15
stream = False , logs = False ):
16
16
"""
@@ -54,7 +54,7 @@ def attach(self, container, stdout=True, stderr=True,
54
54
55
55
return self ._read_from_socket (response , stream )
56
56
57
- @utils .check_resource
57
+ @utils .check_resource ( 'container' )
58
58
def attach_socket (self , container , params = None , ws = False ):
59
59
"""
60
60
Like ``attach``, but returns the underlying socket-like object for the
@@ -93,7 +93,7 @@ def attach_socket(self, container, params=None, ws=False):
93
93
)
94
94
)
95
95
96
- @utils .check_resource
96
+ @utils .check_resource ( 'container' )
97
97
def commit (self , container , repository = None , tag = None , message = None ,
98
98
author = None , changes = None , conf = None ):
99
99
"""
@@ -195,7 +195,7 @@ def containers(self, quiet=False, all=False, trunc=False, latest=False,
195
195
x ['Id' ] = x ['Id' ][:12 ]
196
196
return res
197
197
198
- @utils .check_resource
198
+ @utils .check_resource ( 'container' )
199
199
def copy (self , container , resource ):
200
200
"""
201
201
Identical to the ``docker cp`` command. Get files/folders from the
@@ -238,7 +238,7 @@ def create_container(self, image, command=None, hostname=None, user=None,
238
238
memswap_limit = None , cpuset = None , host_config = None ,
239
239
mac_address = None , labels = None , volume_driver = None ,
240
240
stop_signal = None , networking_config = None ,
241
- healthcheck = None , stop_timeout = None ):
241
+ healthcheck = None , stop_timeout = None , runtime = None ):
242
242
"""
243
243
Creates a container. Parameters are similar to those for the ``docker
244
244
run`` command except it doesn't support the attach options (``-a``).
@@ -391,8 +391,6 @@ def create_container(self, image, command=None, hostname=None, user=None,
391
391
``{"PASSWORD": "xxx"}``.
392
392
dns (:py:class:`list`): DNS name servers. Deprecated since API
393
393
version 1.10. Use ``host_config`` instead.
394
- dns_opt (:py:class:`list`): Additional options to be added to the
395
- container's ``resolv.conf`` file
396
394
volumes (str or list): List of paths inside the container to use
397
395
as volumes.
398
396
volumes_from (:py:class:`list`): List of container names or Ids to
@@ -417,6 +415,9 @@ def create_container(self, image, command=None, hostname=None, user=None,
417
415
Default: 10
418
416
networking_config (dict): A networking configuration generated
419
417
by :py:meth:`create_networking_config`.
418
+ runtime (str): Runtime to use with this container.
419
+ healthcheck (dict): Specify a test to perform to check that the
420
+ container is healthy.
420
421
421
422
Returns:
422
423
A dictionary with an image 'Id' key and a 'Warnings' key.
@@ -441,7 +442,7 @@ def create_container(self, image, command=None, hostname=None, user=None,
441
442
network_disabled , entrypoint , cpu_shares , working_dir , domainname ,
442
443
memswap_limit , cpuset , host_config , mac_address , labels ,
443
444
volume_driver , stop_signal , networking_config , healthcheck ,
444
- stop_timeout
445
+ stop_timeout , runtime
445
446
)
446
447
return self .create_container_from_config (config , name )
447
448
@@ -495,6 +496,8 @@ def create_host_config(self, *args, **kwargs):
495
496
to have read-write access to the host's ``/dev/sda`` via a
496
497
node named ``/dev/xvda`` inside the container.
497
498
dns (:py:class:`list`): Set custom DNS servers.
499
+ dns_opt (:py:class:`list`): Additional options to be added to the
500
+ container's ``resolv.conf`` file
498
501
dns_search (:py:class:`list`): DNS search domains.
499
502
extra_hosts (dict): Addtional hostnames to resolve inside the
500
503
container, as a mapping of hostname to IP address.
@@ -576,6 +579,7 @@ def create_host_config(self, *args, **kwargs):
576
579
values are: ``host``
577
580
volumes_from (:py:class:`list`): List of container names or IDs to
578
581
get volumes from.
582
+ runtime (str): Runtime to use with this container.
579
583
580
584
581
585
Returns:
@@ -659,7 +663,7 @@ def create_endpoint_config(self, *args, **kwargs):
659
663
"""
660
664
return EndpointConfig (self ._version , * args , ** kwargs )
661
665
662
- @utils .check_resource
666
+ @utils .check_resource ( 'container' )
663
667
def diff (self , container ):
664
668
"""
665
669
Inspect changes on a container's filesystem.
@@ -678,7 +682,7 @@ def diff(self, container):
678
682
self ._get (self ._url ("/containers/{0}/changes" , container )), True
679
683
)
680
684
681
- @utils .check_resource
685
+ @utils .check_resource ( 'container' )
682
686
def export (self , container ):
683
687
"""
684
688
Export the contents of a filesystem as a tar archive.
@@ -699,7 +703,7 @@ def export(self, container):
699
703
self ._raise_for_status (res )
700
704
return res .raw
701
705
702
- @utils .check_resource
706
+ @utils .check_resource ( 'container' )
703
707
@utils .minimum_version ('1.20' )
704
708
def get_archive (self , container , path ):
705
709
"""
@@ -730,7 +734,7 @@ def get_archive(self, container, path):
730
734
utils .decode_json_header (encoded_stat ) if encoded_stat else None
731
735
)
732
736
733
- @utils .check_resource
737
+ @utils .check_resource ( 'container' )
734
738
def inspect_container (self , container ):
735
739
"""
736
740
Identical to the `docker inspect` command, but only for containers.
@@ -750,7 +754,7 @@ def inspect_container(self, container):
750
754
self ._get (self ._url ("/containers/{0}/json" , container )), True
751
755
)
752
756
753
- @utils .check_resource
757
+ @utils .check_resource ( 'container' )
754
758
def kill (self , container , signal = None ):
755
759
"""
756
760
Kill a container or send a signal to a container.
@@ -773,7 +777,7 @@ def kill(self, container, signal=None):
773
777
774
778
self ._raise_for_status (res )
775
779
776
- @utils .check_resource
780
+ @utils .check_resource ( 'container' )
777
781
def logs (self , container , stdout = True , stderr = True , stream = False ,
778
782
timestamps = False , tail = 'all' , since = None , follow = None ):
779
783
"""
@@ -825,6 +829,11 @@ def logs(self, container, stdout=True, stderr=True, stream=False,
825
829
params ['since' ] = utils .datetime_to_timestamp (since )
826
830
elif (isinstance (since , int ) and since > 0 ):
827
831
params ['since' ] = since
832
+ else :
833
+ raise errors .InvalidArgument (
834
+ 'since value should be datetime or int, not {}' .
835
+ format (type (since ))
836
+ )
828
837
url = self ._url ("/containers/{0}/logs" , container )
829
838
res = self ._get (url , params = params , stream = stream )
830
839
return self ._get_result (container , stream , res )
@@ -836,7 +845,7 @@ def logs(self, container, stdout=True, stderr=True, stream=False,
836
845
logs = True
837
846
)
838
847
839
- @utils .check_resource
848
+ @utils .check_resource ( 'container' )
840
849
def pause (self , container ):
841
850
"""
842
851
Pauses all processes within a container.
@@ -852,7 +861,7 @@ def pause(self, container):
852
861
res = self ._post (url )
853
862
self ._raise_for_status (res )
854
863
855
- @utils .check_resource
864
+ @utils .check_resource ( 'container' )
856
865
def port (self , container , private_port ):
857
866
"""
858
867
Lookup the public-facing port that is NAT-ed to ``private_port``.
@@ -901,7 +910,7 @@ def port(self, container, private_port):
901
910
902
911
return h_ports
903
912
904
- @utils .check_resource
913
+ @utils .check_resource ( 'container' )
905
914
@utils .minimum_version ('1.20' )
906
915
def put_archive (self , container , path , data ):
907
916
"""
@@ -949,7 +958,7 @@ def prune_containers(self, filters=None):
949
958
url = self ._url ('/containers/prune' )
950
959
return self ._result (self ._post (url , params = params ), True )
951
960
952
- @utils .check_resource
961
+ @utils .check_resource ( 'container' )
953
962
def remove_container (self , container , v = False , link = False , force = False ):
954
963
"""
955
964
Remove a container. Similar to the ``docker rm`` command.
@@ -973,7 +982,7 @@ def remove_container(self, container, v=False, link=False, force=False):
973
982
self ._raise_for_status (res )
974
983
975
984
@utils .minimum_version ('1.17' )
976
- @utils .check_resource
985
+ @utils .check_resource ( 'container' )
977
986
def rename (self , container , name ):
978
987
"""
979
988
Rename a container. Similar to the ``docker rename`` command.
@@ -991,7 +1000,7 @@ def rename(self, container, name):
991
1000
res = self ._post (url , params = params )
992
1001
self ._raise_for_status (res )
993
1002
994
- @utils .check_resource
1003
+ @utils .check_resource ( 'container' )
995
1004
def resize (self , container , height , width ):
996
1005
"""
997
1006
Resize the tty session.
@@ -1010,7 +1019,7 @@ def resize(self, container, height, width):
1010
1019
res = self ._post (url , params = params )
1011
1020
self ._raise_for_status (res )
1012
1021
1013
- @utils .check_resource
1022
+ @utils .check_resource ( 'container' )
1014
1023
def restart (self , container , timeout = 10 ):
1015
1024
"""
1016
1025
Restart a container. Similar to the ``docker restart`` command.
@@ -1031,7 +1040,7 @@ def restart(self, container, timeout=10):
1031
1040
res = self ._post (url , params = params )
1032
1041
self ._raise_for_status (res )
1033
1042
1034
- @utils .check_resource
1043
+ @utils .check_resource ( 'container' )
1035
1044
def start (self , container , * args , ** kwargs ):
1036
1045
"""
1037
1046
Start a container. Similar to the ``docker start`` command, but
@@ -1070,7 +1079,7 @@ def start(self, container, *args, **kwargs):
1070
1079
self ._raise_for_status (res )
1071
1080
1072
1081
@utils .minimum_version ('1.17' )
1073
- @utils .check_resource
1082
+ @utils .check_resource ( 'container' )
1074
1083
def stats (self , container , decode = None , stream = True ):
1075
1084
"""
1076
1085
Stream statistics for a specific container. Similar to the
@@ -1096,7 +1105,7 @@ def stats(self, container, decode=None, stream=True):
1096
1105
return self ._result (self ._get (url , params = {'stream' : False }),
1097
1106
json = True )
1098
1107
1099
- @utils .check_resource
1108
+ @utils .check_resource ( 'container' )
1100
1109
def stop (self , container , timeout = 10 ):
1101
1110
"""
1102
1111
Stops a container. Similar to the ``docker stop`` command.
@@ -1117,7 +1126,7 @@ def stop(self, container, timeout=10):
1117
1126
timeout = (timeout + (self .timeout or 0 )))
1118
1127
self ._raise_for_status (res )
1119
1128
1120
- @utils .check_resource
1129
+ @utils .check_resource ( 'container' )
1121
1130
def top (self , container , ps_args = None ):
1122
1131
"""
1123
1132
Display the running processes of a container.
@@ -1139,7 +1148,7 @@ def top(self, container, ps_args=None):
1139
1148
params ['ps_args' ] = ps_args
1140
1149
return self ._result (self ._get (u , params = params ), True )
1141
1150
1142
- @utils .check_resource
1151
+ @utils .check_resource ( 'container' )
1143
1152
def unpause (self , container ):
1144
1153
"""
1145
1154
Unpause all processes within a container.
@@ -1152,7 +1161,7 @@ def unpause(self, container):
1152
1161
self ._raise_for_status (res )
1153
1162
1154
1163
@utils .minimum_version ('1.22' )
1155
- @utils .check_resource
1164
+ @utils .check_resource ( 'container' )
1156
1165
def update_container (
1157
1166
self , container , blkio_weight = None , cpu_period = None , cpu_quota = None ,
1158
1167
cpu_shares = None , cpuset_cpus = None , cpuset_mems = None , mem_limit = None ,
@@ -1217,7 +1226,7 @@ def update_container(
1217
1226
res = self ._post_json (url , data = data )
1218
1227
return self ._result (res , True )
1219
1228
1220
- @utils .check_resource
1229
+ @utils .check_resource ( 'container' )
1221
1230
def wait (self , container , timeout = None ):
1222
1231
"""
1223
1232
Block until a container stops, then return its exit code. Similar to
0 commit comments