diff options
author | Flavio Curella <flavio.curella@gmail.com> | 2016-12-08 12:10:25 -0600 |
---|---|---|
committer | Flavio Curella <flavio.curella@gmail.com> | 2016-12-08 12:19:30 -0600 |
commit | 6f239fbf29109d39d3cfed0650c9ffe217c681a8 (patch) | |
tree | 3df0bab5e1e9a0468a240382997d3e0eb17550be | |
parent | d024b1bd78808faafb9d1ccc57d7520e4d04a5f6 (diff) | |
download | docker-py-6f239fbf29109d39d3cfed0650c9ffe217c681a8.tar.gz |
Make resources hashable, so that they can be added to `set`s
Signed-off-by: Flavio Curella <flavio.curella@gmail.com>
-rw-r--r-- | docker/models/resource.py | 3 | ||||
-rw-r--r-- | tests/unit/models_resources_test.py | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/docker/models/resource.py b/docker/models/resource.py index 95712ae..ed3900a 100644 --- a/docker/models/resource.py +++ b/docker/models/resource.py @@ -23,6 +23,9 @@ class Model(object): def __eq__(self, other): return isinstance(other, self.__class__) and self.id == other.id + def __hash__(self): + return hash("%s:%s" % (self.__class__.__name__, self.id)) + @property def id(self): """ diff --git a/tests/unit/models_resources_test.py b/tests/unit/models_resources_test.py index 25c6a3e..5af24ee 100644 --- a/tests/unit/models_resources_test.py +++ b/tests/unit/models_resources_test.py @@ -12,3 +12,17 @@ class ModelTest(unittest.TestCase): container.reload() assert client.api.inspect_container.call_count == 2 assert container.attrs['Name'] == "foobar" + + def test_hash(self): + client = make_fake_client() + container1 = client.containers.get(FAKE_CONTAINER_ID) + my_set = set([container1]) + assert len(my_set) == 1 + + container2 = client.containers.get(FAKE_CONTAINER_ID) + my_set.add(container2) + assert len(my_set) == 1 + + image1 = client.images.get(FAKE_CONTAINER_ID) + my_set.add(image1) + assert len(my_set) == 2 |