Create links when creating containers

This commit is contained in:
Ben Firshman 2013-12-09 21:39:11 +00:00
parent f0768d4dca
commit 9a81623581
4 changed files with 34 additions and 2 deletions

View File

@ -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)

View File

@ -59,3 +59,4 @@ class ServiceCollectionTest(ServiceTestCase):
self.assertEqual(len(collection[1].containers), 0)

View File

@ -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()

View File

@ -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
)