Merge "Clean up instance defaults setting" into stable/train
This commit is contained in:
commit
f49538ffae
@ -363,10 +363,12 @@ class ExpandRolesAction(base.TripleOAction):
|
||||
|
||||
def run(self, context):
|
||||
for role in self.roles:
|
||||
role.setdefault('defaults', {})
|
||||
role['defaults'].setdefault(
|
||||
'image', {'href': self.default_image})
|
||||
for inst in role.get('instances', []):
|
||||
# Set the default image so that the
|
||||
# source validation can succeed.
|
||||
inst.setdefault('image', {'href': self.default_image})
|
||||
for k, v in role['defaults'].items():
|
||||
inst.setdefault(k, v)
|
||||
|
||||
# Set the default hostname now for duplicate hostname
|
||||
# detection during validation
|
||||
@ -401,12 +403,7 @@ class ExpandRolesAction(base.TripleOAction):
|
||||
role_instances = []
|
||||
for instance in role.get('instances', []):
|
||||
inst = {}
|
||||
inst.update(role.get('defaults', {}))
|
||||
inst.update(instance)
|
||||
inst.setdefault('image', {'image': self.default_image})
|
||||
|
||||
if 'name' in inst and 'hostname' not in inst:
|
||||
inst['hostname'] = inst['name']
|
||||
|
||||
# create a hostname map entry now if the specified hostname
|
||||
# is a valid generated name
|
||||
@ -420,8 +417,7 @@ class ExpandRolesAction(base.TripleOAction):
|
||||
while len([i for i in role_instances
|
||||
if i.get('provisioned', True)]) < count:
|
||||
inst = {}
|
||||
inst.update(role.get('defaults', {}))
|
||||
inst.setdefault('image', {'href': self.default_image})
|
||||
inst.update(role['defaults'])
|
||||
role_instances.append(inst)
|
||||
|
||||
# NOTE(dtantsur): our hostname format may differ from THT defaults,
|
||||
|
@ -677,6 +677,38 @@ class TestExpandRoles(base.TestCase):
|
||||
},
|
||||
result['environment']['parameter_defaults'])
|
||||
|
||||
def test_image_in_defaults(self):
|
||||
roles = [{
|
||||
'name': 'Controller',
|
||||
'defaults': {
|
||||
'image': {
|
||||
'href': 'file:///tmp/foo.qcow2',
|
||||
'checksum': '12345678'
|
||||
}
|
||||
},
|
||||
'count': 3,
|
||||
'instances': [{
|
||||
'hostname': 'overcloud-controller-0',
|
||||
'image': {'href': 'overcloud-full'}
|
||||
}, {
|
||||
'hostname': 'overcloud-controller-1',
|
||||
}]
|
||||
}]
|
||||
action = baremetal_deploy.ExpandRolesAction(roles)
|
||||
result = action.run(mock.Mock())
|
||||
self.assertEqual(
|
||||
[
|
||||
{'hostname': 'overcloud-controller-0',
|
||||
'image': {'href': 'overcloud-full'}},
|
||||
{'hostname': 'overcloud-controller-1',
|
||||
'image': {'href': 'file:///tmp/foo.qcow2',
|
||||
'checksum': '12345678'}},
|
||||
{'hostname': 'overcloud-controller-2',
|
||||
'image': {'href': 'file:///tmp/foo.qcow2',
|
||||
'checksum': '12345678'}},
|
||||
],
|
||||
result['instances'])
|
||||
|
||||
def test_with_parameters(self):
|
||||
roles = [{
|
||||
'name': 'Compute',
|
||||
|
Loading…
Reference in New Issue
Block a user