Change default value of multi_instance_display_name_template

As per bug 1238910, instance names longer then 63 characters get
truncated when turned into hostnames. Previously
multi_instance_display_name_template defaulted to appending a entire 37
character uuid to each instance name, leaving only 26 characters left
before the hostname gets truncated.

Instead of using over half the possible hostname with a UUID, default to
just appending the count.

Add unit test to test default multi_instance_display_name_template
value.

DocImpact
UpgradeImpact

Change-Id: I111ceae5df56a9b3050e4a7c97a0320fb3c0ff23
Closes-Bug: 1403312
This commit is contained in:
Joe Gordon 2014-12-16 20:58:12 -08:00
parent 372e2aac7f
commit 609b2df339
3 changed files with 17 additions and 11 deletions

View File

@ -101,7 +101,7 @@ compute_opts = [
help='Kernel image that indicates not to use a kernel, but to '
'use a raw disk image instead'),
cfg.StrOpt('multi_instance_display_name_template',
default='%(name)s-%(uuid)s',
default='%(name)s-%(count)d',
help='When creating multiple instances with a single request '
'using the os-multiple-create API extension, this '
'template will be used to build the display name for '

View File

@ -127,14 +127,14 @@ class CellsSchedulerTestCase(test.TestCase):
['default'], block_device_mapping)
self.assertEqual(instance_uuids, call_info['uuids'])
for instance_uuid in instance_uuids:
for count, instance_uuid in enumerate(instance_uuids):
instance = db.instance_get_by_uuid(self.ctxt, instance_uuid)
meta = utils.instance_meta(instance)
self.assertEqual('cow', meta['moo'])
sys_meta = utils.instance_sys_meta(instance)
self.assertEqual('cat', sys_meta['meow'])
self.assertEqual('meow', instance['hostname'])
self.assertEqual('moo-%s' % instance['uuid'],
self.assertEqual('moo-%d' % (count + 1),
instance['display_name'])
self.assertEqual('fake_image_ref', instance['image_ref'])

View File

@ -8780,14 +8780,8 @@ class ComputeAPITestCase(BaseTestCase):
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,
flavors.get_default_flavor(), image_href='some-fake-image',
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-%(count)d')
self._multi_instance_display_name_default()
self.flags(multi_instance_display_name_template='%(name)s-%(uuid)s')
(refs, resv_id) = self.compute_api.create(self.context,
@ -8798,6 +8792,18 @@ class ComputeAPITestCase(BaseTestCase):
self.assertEqual(refs[1]['display_name'], 'x-%s' % refs[1]['uuid'])
self.assertEqual(refs[1]['hostname'], 'x-%s' % refs[1]['uuid'])
def test_multi_instance_display_name_default(self):
self._multi_instance_display_name_default()
def _multi_instance_display_name_default(self):
(refs, resv_id) = self.compute_api.create(self.context,
flavors.get_default_flavor(), image_href='some-fake-image',
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')
def test_instance_architecture(self):
# Test the instance architecture.
i_ref = self._create_fake_instance()