mirror of https://github.com/docker/docker-py.git
Adds a 'labels' property to the container model
The Docker API seems to respond with a 'null' value for the 'Labels' attribute from containers that were created with older Docker versions. An empty dictionary is returned in this case. Signed-off-by: Frank Sachsenheim <funkyfuture@riseup.net>
This commit is contained in:
parent
6529fa599c
commit
1cd56b9f0c
|
|
@ -18,6 +18,14 @@ class Container(Model):
|
||||||
if self.attrs.get('Name') is not None:
|
if self.attrs.get('Name') is not None:
|
||||||
return self.attrs['Name'].lstrip('/')
|
return self.attrs['Name'].lstrip('/')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def labels(self):
|
||||||
|
"""
|
||||||
|
The labels of a container as dictionary.
|
||||||
|
"""
|
||||||
|
result = self.attrs['Config'].get('Labels')
|
||||||
|
return result or {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def status(self):
|
def status(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ Container objects
|
||||||
.. autoattribute:: short_id
|
.. autoattribute:: short_id
|
||||||
.. autoattribute:: name
|
.. autoattribute:: name
|
||||||
.. autoattribute:: status
|
.. autoattribute:: status
|
||||||
|
.. autoattribute:: labels
|
||||||
.. py:attribute:: attrs
|
.. py:attribute:: attrs
|
||||||
|
|
||||||
The raw representation of this object from the server.
|
The raw representation of this object from the server.
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ def get_fake_inspect_container(tty=False):
|
||||||
status_code = 200
|
status_code = 200
|
||||||
response = {
|
response = {
|
||||||
'Id': FAKE_CONTAINER_ID,
|
'Id': FAKE_CONTAINER_ID,
|
||||||
'Config': {'Privileged': True, 'Tty': tty},
|
'Config': {'Labels': {'foo': 'bar'}, 'Privileged': True, 'Tty': tty},
|
||||||
'ID': FAKE_CONTAINER_ID,
|
'ID': FAKE_CONTAINER_ID,
|
||||||
'Image': 'busybox:latest',
|
'Image': 'busybox:latest',
|
||||||
'Name': 'foobar',
|
'Name': 'foobar',
|
||||||
|
|
|
||||||
|
|
@ -390,6 +390,11 @@ class ContainerTest(unittest.TestCase):
|
||||||
container.kill(signal=5)
|
container.kill(signal=5)
|
||||||
client.api.kill.assert_called_with(FAKE_CONTAINER_ID, signal=5)
|
client.api.kill.assert_called_with(FAKE_CONTAINER_ID, signal=5)
|
||||||
|
|
||||||
|
def test_labels(self):
|
||||||
|
client = make_fake_client()
|
||||||
|
container = client.containers.get(FAKE_CONTAINER_ID)
|
||||||
|
assert container.labels == {'foo': 'bar'}
|
||||||
|
|
||||||
def test_logs(self):
|
def test_logs(self):
|
||||||
client = make_fake_client()
|
client = make_fake_client()
|
||||||
container = client.containers.get(FAKE_CONTAINER_ID)
|
container = client.containers.get(FAKE_CONTAINER_ID)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue