Skip to content

Commit 32f57c4

Browse files
committed
Add df method
Signed-off-by: Joffrey F <[email protected]>
1 parent 745edc8 commit 32f57c4

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

docker/api/daemon.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@
77

88

99
class DaemonApiMixin(object):
10+
@utils.minimum_version('1.25')
11+
def df(self):
12+
"""
13+
Get data usage information.
14+
15+
Returns:
16+
(dict): A dictionary representing different resource categories
17+
and their respective data usage.
18+
19+
Raises:
20+
:py:class:`docker.errors.APIError`
21+
If the server returns an error.
22+
"""
23+
url = self._url('/system/df')
24+
return self._result(self._get(url), True)
25+
1026
def events(self, since=None, until=None, filters=None, decode=None):
1127
"""
1228
Get real-time events from the server. Similar to the ``docker events``

docker/client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ def events(self, *args, **kwargs):
155155
return self.api.events(*args, **kwargs)
156156
events.__doc__ = APIClient.events.__doc__
157157

158+
def df(self):
159+
return self.api.df()
160+
df.__doc__ = APIClient.df.__doc__
161+
158162
def info(self, *args, **kwargs):
159163
return self.api.info(*args, **kwargs)
160164
info.__doc__ = APIClient.info.__doc__

docs/client.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Client reference
2525
.. autoattribute:: swarm
2626
.. autoattribute:: volumes
2727

28+
.. automethod:: df()
2829
.. automethod:: events()
2930
.. automethod:: info()
3031
.. automethod:: login()

tests/integration/client_test.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,28 @@
22

33
import docker
44

5+
from ..helpers import requires_api_version
56
from .base import TEST_API_VERSION
67

78

89
class ClientTest(unittest.TestCase):
10+
client = docker.from_env(version=TEST_API_VERSION)
911

1012
def test_info(self):
11-
client = docker.from_env(version=TEST_API_VERSION)
12-
info = client.info()
13+
info = self.client.info()
1314
assert 'ID' in info
1415
assert 'Name' in info
1516

1617
def test_ping(self):
17-
client = docker.from_env(version=TEST_API_VERSION)
18-
assert client.ping() is True
18+
assert self.client.ping() is True
1919

2020
def test_version(self):
21-
client = docker.from_env(version=TEST_API_VERSION)
22-
assert 'Version' in client.version()
21+
assert 'Version' in self.client.version()
22+
23+
@requires_api_version('1.25')
24+
def test_df(self):
25+
data = self.client.df()
26+
assert 'LayersSize' in data
27+
assert 'Containers' in data
28+
assert 'Volumes' in data
29+
assert 'Images' in data

0 commit comments

Comments
 (0)