Use inspect network to query for an existing network.

And more tests for get_network()

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2015-10-21 13:05:14 -04:00
parent c34a9f165d
commit 0fed5e6864
2 changed files with 22 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import logging
from functools import reduce from functools import reduce
from docker.errors import APIError from docker.errors import APIError
from docker.errors import NotFound
from .config import ConfigurationError from .config import ConfigurationError
from .config import get_service_name_from_net from .config import get_service_name_from_net
@ -363,10 +364,10 @@ class Project(object):
return [c for c in containers if matches_service_names(c)] return [c for c in containers if matches_service_names(c)]
def get_network(self): def get_network(self):
networks = self.client.networks(names=[self.name]) try:
if networks: return self.client.inspect_network(self.name)
return networks[0] except NotFound:
return None return None
def ensure_network_exists(self): def ensure_network_exists(self):
# TODO: recreate network if driver has changed? # TODO: recreate network if driver has changed?

View File

@ -1,6 +1,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from .testcases import DockerClientTestCase from .testcases import DockerClientTestCase
from compose.cli.docker_client import docker_client
from compose.config import config from compose.config import config
from compose.const import LABEL_PROJECT from compose.const import LABEL_PROJECT
from compose.container import Container from compose.container import Container
@ -96,6 +97,22 @@ class ProjectTest(DockerClientTestCase):
db = project.get_service('db') db = project.get_service('db')
self.assertEqual(db._get_volumes_from(), [data_container.id + ':rw']) self.assertEqual(db._get_volumes_from(), [data_container.id + ':rw'])
def test_get_network_does_not_exist(self):
self.require_engine_version("1.9")
client = docker_client(version='1.21')
project = Project('composetest', [], client)
assert project.get_network() is None
def test_get_network(self):
self.require_engine_version("1.9")
client = docker_client(version='1.21')
network_name = 'network_does_exist'
project = Project(network_name, [], client)
client.create_network(network_name)
assert project.get_network()['name'] == network_name
def test_net_from_service(self): def test_net_from_service(self):
project = Project.from_dicts( project = Project.from_dicts(
name='composetest', name='composetest',