From d527eda20b030c99239477af51a73537c3c781d4 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Wed, 6 Feb 2013 15:01:49 +0100 Subject: Assign unique names with os-multiple-create. This patch introduces a new configuration option, multi_instance_display_name_template, which makes it so that all instances are given a unique display_name and hostname when requesting that multiple instances get created at the same time. Implements bp multi-boot-instance-naming DocImpact Change-Id: Id8e7dac1adadbb101dd1027807867ab13d3b7e80 --- nova/tests/api/openstack/compute/test_servers.py | 6 +++++ nova/tests/cells/test_cells_scheduler.py | 3 ++- nova/tests/compute/test_compute.py | 28 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) (limited to 'nova/tests') diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 4bfb1c1e3..e6ecd4c60 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -1740,6 +1740,11 @@ class ServersControllerCreateTest(test.TestCase): """ return self.instance_cache_by_id[instance_id] + def instance_update(context, uuid, values): + instance = self.instance_cache_by_uuid[uuid] + instance.update(values) + return instance + def rpc_call_wrapper(context, topic, msg, timeout=None): """Stub out the scheduler creating the instance entry.""" if (topic == CONF.scheduler_topic and @@ -1779,6 +1784,7 @@ class ServersControllerCreateTest(test.TestCase): self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) + self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(rpc, 'cast', fake_method) self.stubs.Set(rpc, 'call', rpc_call_wrapper) self.stubs.Set(db, 'instance_update_and_get_original', diff --git a/nova/tests/cells/test_cells_scheduler.py b/nova/tests/cells/test_cells_scheduler.py index 15b2571b5..ecd51c9f7 100644 --- a/nova/tests/cells/test_cells_scheduler.py +++ b/nova/tests/cells/test_cells_scheduler.py @@ -78,7 +78,8 @@ class CellsSchedulerTestCase(test.TestCase): for instance_uuid in self.instance_uuids: instance = db.instance_get_by_uuid(self.ctxt, instance_uuid) self.assertEqual('meow', instance['hostname']) - self.assertEqual('moo', instance['display_name']) + self.assertEqual('moo-%s' % instance['uuid'], + instance['display_name']) self.assertEqual('fake_image_ref', instance['image_ref']) def test_run_instance_selects_child_cell(self): diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 12bd3cf19..eb7246cf8 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -5495,6 +5495,34 @@ class ComputeAPITestCase(BaseTestCase): db.instance_destroy(self.context, refs[0]['uuid']) + def test_multi_instance_display_name_template(self): + self.flags(multi_instance_display_name_template='%(name)s') + (refs, resv_id) = self.compute_api.create(self.context, + instance_types.get_default_instance_type(), None, + min_count=2, max_count=2, display_name='x') + self.assertEqual(refs[0]['display_name'], 'x') + self.assertEqual(refs[0]['hostname'], 'x') + self.assertEqual(refs[1]['display_name'], 'x') + self.assertEqual(refs[1]['hostname'], 'x') + + self.flags(multi_instance_display_name_template='%(name)s-%(count)s') + (refs, resv_id) = self.compute_api.create(self.context, + instance_types.get_default_instance_type(), None, + min_count=2, max_count=2, display_name='x') + self.assertEqual(refs[0]['display_name'], 'x-1') + self.assertEqual(refs[0]['hostname'], 'x-1') + self.assertEqual(refs[1]['display_name'], 'x-2') + self.assertEqual(refs[1]['hostname'], 'x-2') + + self.flags(multi_instance_display_name_template='%(name)s-%(uuid)s') + (refs, resv_id) = self.compute_api.create(self.context, + instance_types.get_default_instance_type(), None, + min_count=2, max_count=2, display_name='x') + self.assertEqual(refs[0]['display_name'], 'x-%s' % refs[0]['uuid']) + self.assertEqual(refs[0]['hostname'], 'x-%s' % refs[0]['uuid']) + self.assertEqual(refs[1]['display_name'], 'x-%s' % refs[1]['uuid']) + self.assertEqual(refs[1]['hostname'], 'x-%s' % refs[1]['uuid']) + def test_instance_architecture(self): # Test the instance architecture. i_ref = self._create_fake_instance() -- cgit