mirror of https://github.com/docker/compose.git
Create links when creating containers
This commit is contained in:
parent
f0768d4dca
commit
9a81623581
|
@ -34,7 +34,10 @@ class Service(object):
|
|||
number = self.next_container_number()
|
||||
name = make_name(self.name, number)
|
||||
container = self.client.create_container(self.image, self.command, name=name)
|
||||
self.client.start(container['Id'])
|
||||
self.client.start(
|
||||
container['Id'],
|
||||
links=self._get_links(),
|
||||
)
|
||||
|
||||
def stop_container(self):
|
||||
self.client.kill(self.containers[0]['Id'])
|
||||
|
@ -47,6 +50,20 @@ class Service(object):
|
|||
else:
|
||||
return max(numbers) + 1
|
||||
|
||||
def get_names(self):
|
||||
return [get_container_name(c) for c in self.containers]
|
||||
|
||||
def inspect(self):
|
||||
return [self.client.inspect_container(c['Id']) for c in self.containers]
|
||||
|
||||
def _get_links(self):
|
||||
links = {}
|
||||
for service in self.links:
|
||||
for name in service.get_names():
|
||||
links[name] = name
|
||||
return links
|
||||
|
||||
|
||||
|
||||
def make_name(prefix, number):
|
||||
return '%s_%s' % (prefix, number)
|
||||
|
|
|
@ -59,3 +59,4 @@ class ServiceCollectionTest(ServiceTestCase):
|
|||
self.assertEqual(len(collection[1].containers), 0)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -65,3 +65,16 @@ class ScalingTestCase(ServiceTestCase):
|
|||
|
||||
self.service.stop()
|
||||
self.assertEqual(len(self.service.containers), 0)
|
||||
|
||||
|
||||
class LinksTestCase(ServiceTestCase):
|
||||
def test_links_are_created_when_starting(self):
|
||||
db = self.create_service('db')
|
||||
web = self.create_service('web', links=[db])
|
||||
db.start()
|
||||
web.start()
|
||||
self.assertIn('/web_1/db_1', db.containers[0]['Names'])
|
||||
db.stop()
|
||||
web.stop()
|
||||
|
||||
|
||||
|
|
|
@ -18,12 +18,13 @@ class ServiceTestCase(TestCase):
|
|||
self.client.kill(c['Id'])
|
||||
self.client.remove_container(c['Id'])
|
||||
|
||||
def create_service(self, name):
|
||||
def create_service(self, name, **kwargs):
|
||||
return Service(
|
||||
name=name,
|
||||
client=self.client,
|
||||
image="ubuntu",
|
||||
command=["/bin/sleep", "300"],
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue