Merge "Don't deploy overcloud if any role is bound to deleted node profile"
This commit is contained in:
commit
9af7f5b6a2
@ -129,10 +129,11 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
|
||||
def test_create_post(self):
|
||||
roles = TEST_DATA.tuskarclient_overcloud_roles.list()
|
||||
flavor = TEST_DATA.novaclient_flavors.first()
|
||||
old_flavor_id = roles[0].flavor_id
|
||||
roles[0].flavor_id = 'default'
|
||||
roles[0].flavor_id = flavor.id
|
||||
data = {
|
||||
'count__1__default': '1',
|
||||
'count__1__%s' % flavor.id: '1',
|
||||
'count__2__': '0',
|
||||
'count__3__': '0',
|
||||
'count__4__': '0',
|
||||
@ -149,7 +150,7 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
}),
|
||||
patch('openstack_dashboard.api.nova', **{
|
||||
'spec_set': ['flavor_list'],
|
||||
'flavor_list.return_value': [],
|
||||
'flavor_list.return_value': [flavor],
|
||||
}),
|
||||
) as (OvercloudRole, Overcloud, Node, nova):
|
||||
res = self.client.post(CREATE_URL, data)
|
||||
@ -158,7 +159,7 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
Overcloud.create.call_args_list,
|
||||
[
|
||||
call(request, {
|
||||
('1', 'default'): 1,
|
||||
('1', flavor.id): 1,
|
||||
('2', ''): 0,
|
||||
('3', ''): 0,
|
||||
('4', ''): 0,
|
||||
@ -196,6 +197,35 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
roles[0].flavor_id = old_flavor_id
|
||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||
|
||||
def test_create_post_invalid_flavor(self):
|
||||
roles = TEST_DATA.tuskarclient_overcloud_roles.list()
|
||||
old_flavor_id = roles[0].flavor_id
|
||||
roles[0].flavor_id = 'non-existing'
|
||||
data = {
|
||||
'count__1__%s' % roles[0].flavor_id: '1',
|
||||
'count__2__': '0',
|
||||
'count__3__': '0',
|
||||
'count__4__': '0',
|
||||
}
|
||||
with contextlib.nested(
|
||||
patch('tuskar_ui.api.OvercloudRole', **{
|
||||
'spec_set': ['list'],
|
||||
'list.return_value': roles,
|
||||
}),
|
||||
_mock_overcloud(),
|
||||
patch('tuskar_ui.api.Node', **{
|
||||
'spec_set': ['list'],
|
||||
'list.return_value': [],
|
||||
}),
|
||||
patch('openstack_dashboard.api.nova', **{
|
||||
'spec_set': ['flavor_list'],
|
||||
'flavor_list.return_value': [],
|
||||
}),
|
||||
) as (OvercloudRole, Overcloud, Node, nova):
|
||||
res = self.client.post(CREATE_URL, data)
|
||||
self.assertFormErrors(res)
|
||||
roles[0].flavor_id = old_flavor_id
|
||||
|
||||
def test_detail_get(self):
|
||||
roles = TEST_DATA.tuskarclient_overcloud_roles.list()
|
||||
with contextlib.nested(
|
||||
@ -272,11 +302,12 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
|
||||
def test_scale_post(self):
|
||||
roles = TEST_DATA.tuskarclient_overcloud_roles.list()
|
||||
flavor = TEST_DATA.novaclient_flavors.first()
|
||||
old_flavor_id = roles[0].flavor_id
|
||||
roles[0].flavor_id = 'default'
|
||||
roles[0].flavor_id = flavor.id
|
||||
data = {
|
||||
'overcloud_id': '1',
|
||||
'count__1__default': '1',
|
||||
'count__1__%s' % flavor.id: '1',
|
||||
'count__2__': '0',
|
||||
'count__3__': '0',
|
||||
'count__4__': '0',
|
||||
@ -292,7 +323,7 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
} for role in roles]),
|
||||
patch('openstack_dashboard.api.nova', **{
|
||||
'spec_set': ['flavor_list'],
|
||||
'flavor_list.return_value': [],
|
||||
'flavor_list.return_value': [flavor],
|
||||
}),
|
||||
) as (OvercloudRole, Overcloud, nova):
|
||||
url = urlresolvers.reverse(
|
||||
@ -304,7 +335,7 @@ class OvercloudTests(test.BaseAdminViewTests):
|
||||
# Overcloud.update.call_args_list,
|
||||
# [
|
||||
# call(request, {
|
||||
# ('1', 'default'): 1,
|
||||
# ('1', flavor.id): 1,
|
||||
# ('2', ''): 0,
|
||||
# ('3', ''): 0,
|
||||
# ('4', ''): 0,
|
||||
|
@ -53,10 +53,10 @@ class Action(horizon.workflows.Action):
|
||||
def _get_profiles(self, role, profile_names):
|
||||
# TODO(rdopieralski) Get a list of hardware profiles for each
|
||||
# role here, when we support multiple profiles per role.
|
||||
if role.flavor_id:
|
||||
if role.flavor_id and role.flavor_id in profile_names:
|
||||
profiles = [(
|
||||
role.flavor_id,
|
||||
profile_names.get(str(role.flavor_id), role.flavor_id),
|
||||
profile_names[role.flavor_id],
|
||||
)]
|
||||
else:
|
||||
profiles = []
|
||||
|
Loading…
x
Reference in New Issue
Block a user