mirror of https://github.com/docker/docker-py.git
Merge pull request #1493 from funkyfuture/model_properties
Adds a few model properties
This commit is contained in:
commit
d19572aae3
|
@ -13,5 +13,4 @@ html/*
|
|||
__pycache__
|
||||
|
||||
# Compiled Documentation
|
||||
site/
|
||||
Makefile
|
||||
docs/_build
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
FROM python:3.5
|
||||
|
||||
RUN mkdir /src
|
||||
ARG uid=1000
|
||||
ARG gid=1000
|
||||
|
||||
RUN addgroup --gid $gid sphinx \
|
||||
&& useradd --uid $uid --gid $gid -M sphinx
|
||||
|
||||
WORKDIR /src
|
||||
COPY requirements.txt docs-requirements.txt ./
|
||||
RUN pip install -r requirements.txt -r docs-requirements.txt
|
||||
|
||||
COPY requirements.txt /src/requirements.txt
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
COPY docs-requirements.txt /src/docs-requirements.txt
|
||||
RUN pip install -r docs-requirements.txt
|
||||
|
||||
COPY . /src
|
||||
USER sphinx
|
||||
|
|
4
Makefile
4
Makefile
|
@ -16,7 +16,7 @@ build-py3:
|
|||
|
||||
.PHONY: build-docs
|
||||
build-docs:
|
||||
docker build -t docker-sdk-python-docs -f Dockerfile-docs .
|
||||
docker build -t docker-sdk-python-docs -f Dockerfile-docs --build-arg uid=$(shell id -u) --build-arg gid=$(shell id -g) .
|
||||
|
||||
.PHONY: build-dind-certs
|
||||
build-dind-certs:
|
||||
|
@ -77,7 +77,7 @@ flake8: build
|
|||
|
||||
.PHONY: docs
|
||||
docs: build-docs
|
||||
docker run --rm -it -v `pwd`:/code docker-sdk-python-docs sphinx-build docs ./_build
|
||||
docker run --rm -it -v `pwd`:/src docker-sdk-python-docs sphinx-build docs docs/_build
|
||||
|
||||
.PHONY: shell
|
||||
shell: build
|
||||
|
|
|
@ -18,6 +18,24 @@ class Container(Model):
|
|||
if self.attrs.get('Name') is not None:
|
||||
return self.attrs['Name'].lstrip('/')
|
||||
|
||||
@property
|
||||
def image(self):
|
||||
"""
|
||||
The image of the container.
|
||||
"""
|
||||
image_id = self.attrs['Image']
|
||||
if image_id is None:
|
||||
return None
|
||||
return self.client.images.get(image_id.split(':')[1])
|
||||
|
||||
@property
|
||||
def labels(self):
|
||||
"""
|
||||
The labels of a container as dictionary.
|
||||
"""
|
||||
result = self.attrs['Config'].get('Labels')
|
||||
return result or {}
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
"""
|
||||
|
|
|
@ -15,6 +15,14 @@ class Image(Model):
|
|||
def __repr__(self):
|
||||
return "<%s: '%s'>" % (self.__class__.__name__, "', '".join(self.tags))
|
||||
|
||||
@property
|
||||
def labels(self):
|
||||
"""
|
||||
The labels of an image as dictionary.
|
||||
"""
|
||||
result = self.attrs['Config'].get('Labels')
|
||||
return result or {}
|
||||
|
||||
@property
|
||||
def short_id(self):
|
||||
"""
|
||||
|
|
|
@ -21,11 +21,13 @@ Container objects
|
|||
|
||||
.. autoclass:: Container()
|
||||
|
||||
.. autoattribute:: id
|
||||
.. autoattribute:: short_id
|
||||
.. autoattribute:: name
|
||||
.. autoattribute:: status
|
||||
.. py:attribute:: attrs
|
||||
.. autoattribute:: id
|
||||
.. autoattribute:: image
|
||||
.. autoattribute:: labels
|
||||
.. autoattribute:: name
|
||||
.. autoattribute:: short_id
|
||||
.. autoattribute:: status
|
||||
|
||||
The raw representation of this object from the server.
|
||||
|
||||
|
|
|
@ -26,10 +26,11 @@ Image objects
|
|||
|
||||
.. autoclass:: Image()
|
||||
|
||||
.. autoattribute:: id
|
||||
.. autoattribute:: short_id
|
||||
.. autoattribute:: tags
|
||||
.. py:attribute:: attrs
|
||||
.. py:attribute:: attrs
|
||||
.. autoattribute:: id
|
||||
.. autoattribute:: labels
|
||||
.. autoattribute:: short_id
|
||||
.. autoattribute:: tags
|
||||
|
||||
The raw representation of this object from the server.
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ def get_fake_inspect_container(tty=False):
|
|||
status_code = 200
|
||||
response = {
|
||||
'Id': FAKE_CONTAINER_ID,
|
||||
'Config': {'Privileged': True, 'Tty': tty},
|
||||
'Config': {'Labels': {'foo': 'bar'}, 'Privileged': True, 'Tty': tty},
|
||||
'ID': FAKE_CONTAINER_ID,
|
||||
'Image': 'busybox:latest',
|
||||
'Name': 'foobar',
|
||||
|
@ -158,6 +158,7 @@ def get_fake_inspect_image():
|
|||
'Parent': "27cf784147099545",
|
||||
'Created': "2013-03-23T22:24:18.818426-07:00",
|
||||
'Container': FAKE_CONTAINER_ID,
|
||||
'Config': {'Labels': {'bar': 'foo'}},
|
||||
'ContainerConfig':
|
||||
{
|
||||
"Hostname": "",
|
||||
|
|
|
@ -384,12 +384,22 @@ class ContainerTest(unittest.TestCase):
|
|||
container.get_archive('foo')
|
||||
client.api.get_archive.assert_called_with(FAKE_CONTAINER_ID, 'foo')
|
||||
|
||||
def test_image(self):
|
||||
client = make_fake_client()
|
||||
container = client.containers.get(FAKE_CONTAINER_ID)
|
||||
assert container.image.id == FAKE_IMAGE_ID
|
||||
|
||||
def test_kill(self):
|
||||
client = make_fake_client()
|
||||
container = client.containers.get(FAKE_CONTAINER_ID)
|
||||
container.kill(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):
|
||||
client = make_fake_client()
|
||||
container = client.containers.get(FAKE_CONTAINER_ID)
|
||||
|
|
|
@ -21,6 +21,11 @@ class ImageCollectionTest(unittest.TestCase):
|
|||
assert isinstance(image, Image)
|
||||
assert image.id == FAKE_IMAGE_ID
|
||||
|
||||
def test_labels(self):
|
||||
client = make_fake_client()
|
||||
image = client.images.get(FAKE_IMAGE_ID)
|
||||
assert image.labels == {'bar': 'foo'}
|
||||
|
||||
def test_list(self):
|
||||
client = make_fake_client()
|
||||
images = client.images.list(all=True)
|
||||
|
|
Loading…
Reference in New Issue