Merge "conf: Remove deprecated 'multi_instance_display_name_template' opt"

This commit is contained in:
Zuul 2018-04-19 08:31:51 +00:00 committed by Gerrit Code Review
commit 318d353d64
6 changed files with 35 additions and 81 deletions

@ -506,25 +506,9 @@ class API(base.Base):
'auto_disk_config': auto_disk_config
}
def _new_instance_name_from_template(self, uuid, display_name, index):
params = {
'uuid': uuid,
'name': display_name,
'count': index + 1,
}
try:
new_name = (CONF.multi_instance_display_name_template %
params)
except (KeyError, TypeError):
LOG.exception('Failed to set instance name using '
'multi_instance_display_name_template.')
new_name = display_name
return new_name
def _apply_instance_name_template(self, context, instance, index):
def _apply_instance_name_template(self, instance, index):
original_name = instance.display_name
new_name = self._new_instance_name_from_template(instance.uuid,
instance.display_name, index)
new_name = '%s-%d' % (original_name, index + 1)
instance.display_name = new_name
if not instance.get('hostname', None):
if utils.sanitize_hostname(original_name) == "":
@ -1506,8 +1490,7 @@ class API(base.Base):
self._populate_instance_names(instance, num_instances)
instance.shutdown_terminate = shutdown_terminate
if num_instances > 1 and self.cell_type != 'api':
instance = self._apply_instance_name_template(context, instance,
index)
instance = self._apply_instance_name_template(instance, index)
return instance

@ -74,25 +74,6 @@ Possible values:
img_signature, img_signature_key_type,
img_signature_certificate_uuid
"""),
cfg.StrOpt('multi_instance_display_name_template',
default='%(name)s-%(count)d',
deprecated_for_removal=True,
deprecated_since='15.0.0',
deprecated_reason="""
This config changes API behaviour. All changes in API behaviour should be
discoverable.
""",
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 each instance. The benefit is that the instances
end up with different hostnames. Example display names when creating
two VM's: name-1, name-2.
Possible values:
* Valid keys for the template are: name, uuid, count.
"""),
cfg.IntOpt('max_local_block_devices',
default=3,
@ -1122,10 +1103,6 @@ Possible values:
default)
* A string with a list of named database columns, for example ``%(id)d``
or ``%(uuid)s`` or ``%(hostname)s``.
Related options:
* not to be confused with: ``multi_instance_display_name_template``
"""),
]

@ -9679,40 +9679,30 @@ class ComputeAPITestCase(BaseTestCase):
for instance in refs:
self.assertEqual(instance['reservation_id'], resv_id)
def test_multi_instance_display_name_template(self, cells_enabled=False):
num_instances = 2
self.flags(multi_instance_display_name_template='%(name)s')
(refs, resv_id) = self.compute_api.create(self.context,
def test_single_instance_display_name(self):
"""Verify building one instance doesn't do anything funky with
the display and host names.
"""
# TODO(stephenfin): Remove cells_enabled parameter when we removed
# cells v1
num_instances = 1
refs, _ = self.compute_api.create(self.context,
flavors.get_default_flavor(),
image_href=uuids.image_href_id,
min_count=num_instances, max_count=num_instances,
display_name='x')
for i in range(num_instances):
hostname = None if cells_enabled else 'x'
self.assertEqual(refs[i]['display_name'], 'x')
self.assertEqual(refs[i]['hostname'], hostname)
name = 'x'
self.assertEqual(refs[0]['display_name'], name)
self.assertEqual(refs[0]['hostname'], name)
self.flags(multi_instance_display_name_template='%(name)s-%(count)d')
self._multi_instance_display_name_default(cells_enabled=cells_enabled)
self.flags(multi_instance_display_name_template='%(name)s-%(uuid)s')
(refs, resv_id) = self.compute_api.create(self.context,
flavors.get_default_flavor(),
image_href=uuids.image_href_id,
min_count=num_instances, max_count=num_instances,
display_name='x')
for i in range(num_instances):
name = 'x' if cells_enabled else 'x-%s' % refs[i]['uuid']
hostname = None if cells_enabled else name
self.assertEqual(refs[i]['display_name'], name)
self.assertEqual(refs[i]['hostname'], hostname)
def test_multi_instance_display_name_default(self):
self._multi_instance_display_name_default()
def _multi_instance_display_name_default(self, cells_enabled=False):
def test_multi_instance_display_name(self, cells_enabled=False):
"""Verify building two instances at once results in a unique
display and host name.
"""
# TODO(stephenfin): Remove cells_enabled parameter when we removed
# cells v1
num_instances = 2
(refs, resv_id) = self.compute_api.create(self.context,
refs, _ = self.compute_api.create(self.context,
flavors.get_default_flavor(),
image_href=uuids.image_href_id,
min_count=num_instances, max_count=num_instances,

@ -4994,16 +4994,14 @@ class _ComputeAPIUnitTestMixIn(object):
params = dict(display_name="vm")
instance = self._create_instance_obj(params=params)
with mock.patch.object(instance, 'save'):
self.compute_api._apply_instance_name_template(self.context,
instance, 1)
self.compute_api._apply_instance_name_template(instance, 1)
self.assertEqual('vm-2', instance.hostname)
def test_populate_instance_names_host_name_is_empty_multi(self):
params = dict(display_name=u'\u865a\u62df\u673a\u662f\u4e2d\u6587')
instance = self._create_instance_obj(params=params)
with mock.patch.object(instance, 'save'):
self.compute_api._apply_instance_name_template(self.context,
instance, 1)
self.compute_api._apply_instance_name_template(instance, 1)
self.assertEqual('Server-%s' % instance.uuid, instance.hostname)
def test_host_statuses(self):

@ -512,13 +512,9 @@ class CellsComputeAPITestCase(test_compute.ComputeAPITestCase):
super(CellsComputeAPITestCase, self).test_populate_instance_for_create(
num_instances=2)
def test_multi_instance_display_name_default(self):
self._multi_instance_display_name_default(cells_enabled=True)
def test_multi_instance_display_name_template(self):
def test_multi_instance_display_name(self):
super(CellsComputeAPITestCase,
self).test_multi_instance_display_name_template(
cells_enabled=True)
self).test_multi_instance_display_name(cells_enabled=True)
class CellsShelveComputeAPITestCase(test_shelve.ShelveComputeAPITestCase):

@ -0,0 +1,10 @@
---
upgrade:
- |
The following deprecated configuration options have been removed from the
``compute`` section of ``nova.conf``:
- ``multi_instance_display_name_template``
These were deprecated in the 15.0.0 release as they allowed for
inconsistent API behavior across deployments.