Merge "Tabs in launch server wizard not depending on OPENSTACK_NOVA_EXTENSIONS_BLACKLIST" into stable/pike

This commit is contained in:
Zuul 2018-02-14 03:30:13 +00:00 committed by Gerrit Code Review
commit 880096a080
4 changed files with 34 additions and 7 deletions

View File

@ -81,7 +81,8 @@
title: gettext('Key Pair'),
templateUrl: basePath + 'keypair/keypair.html',
helpUrl: basePath + 'keypair/keypair.help.html',
formName: 'launchInstanceKeypairForm'
formName: 'launchInstanceKeypairForm',
novaExtension: 'Keypairs'
},
{
id: 'configuration',
@ -96,7 +97,8 @@
templateUrl: basePath + 'server-groups/server-groups.html',
helpUrl: basePath + 'server-groups/server-groups.help.html',
formName: 'launchInstanceServerGroupsForm',
policy: stepPolicy.serverGroups
policy: stepPolicy.serverGroups,
novaExtension: 'ServerGroups'
},
{
id: 'hints',
@ -105,7 +107,8 @@
helpUrl: basePath + 'scheduler-hints/scheduler-hints.help.html',
formName: 'launchInstanceSchedulerHintsForm',
policy: stepPolicy.schedulerHints,
setting: 'LAUNCH_INSTANCE_DEFAULTS.enable_scheduler_hints'
setting: 'LAUNCH_INSTANCE_DEFAULTS.enable_scheduler_hints',
novaExtension: 'SchedulerHints'
},
{
id: 'metadata',

View File

@ -71,13 +71,26 @@
expect(launchInstanceWorkflow.steps[4].requiredServiceTypes).toEqual(['network']);
});
it('has a nova extension the key pair step depends on', function() {
expect(launchInstanceWorkflow.steps[6].novaExtension).toEqual("Keypairs");
});
it('has a policy rule for the server groups step', function() {
expect(launchInstanceWorkflow.steps[8].policy).toEqual(stepPolicy.serverGroups);
});
it('has a nova extension the server groups step depends on', function() {
expect(launchInstanceWorkflow.steps[8].novaExtension).toEqual("ServerGroups");
});
it('has a policy rule for the scheduler hints step', function() {
expect(launchInstanceWorkflow.steps[9].policy).toEqual(stepPolicy.schedulerHints);
});
it('has a nova extension the scheduler hints step depends on', function() {
expect(launchInstanceWorkflow.steps[9].novaExtension).toEqual("SchedulerHints");
});
});
})();

View File

@ -50,12 +50,13 @@
'$q',
'horizon.app.core.openstack-service-api.serviceCatalog',
'horizon.app.core.openstack-service-api.policy',
'horizon.app.core.openstack-service-api.settings'
'horizon.app.core.openstack-service-api.settings',
'horizon.app.core.openstack-service-api.novaExtensions'
];
/////////////
function dashboardWorkflowDecorator($q, serviceCatalog, policy, settings) {
function dashboardWorkflowDecorator($q, serviceCatalog, policy, settings, novaExtensions) {
return decorator;
function decorator(spec) {
@ -81,6 +82,9 @@
if (step.setting) {
promises.push(settings.ifEnabled(step.setting, true, true));
}
if (step.novaExtension) {
promises.push(novaExtensions.ifNameEnabled(step.novaExtension));
}
if (promises.length > 0) {
step.checkReadiness = function () {
return $q.all(promises);

View File

@ -17,12 +17,14 @@
'use strict';
describe('Workflow Decorator', function () {
var decoratorService, catalogService, policyService, settingsService, $scope, deferred;
var decoratorService, catalogService, policyService, settingsService, $scope, deferred,
novaExtensionsService;
var steps = [
{ id: '1' },
{ id: '2', requiredServiceTypes: ['foo-service'] },
{ id: '3', policy: 'foo-policy' },
{ id: '4', setting: 'STEPS.step_4_enabled' }
{ id: '4', setting: 'STEPS.step_4_enabled' },
{ id: '5', novaExtension: 'foo-novaExtension'}
];
var spec = { steps: steps };
@ -38,9 +40,12 @@
catalogService = $injector.get('horizon.app.core.openstack-service-api.serviceCatalog');
policyService = $injector.get('horizon.app.core.openstack-service-api.policy');
settingsService = $injector.get('horizon.app.core.openstack-service-api.settings');
novaExtensionsService = $injector
.get('horizon.app.core.openstack-service-api.novaExtensions');
spyOn(catalogService, 'ifTypeEnabled').and.returnValue(deferred.promise);
spyOn(policyService, 'ifAllowed').and.returnValue(deferred.promise);
spyOn(settingsService, 'ifEnabled').and.returnValue(deferred.promise);
spyOn(novaExtensionsService, 'ifNameEnabled').and.returnValue(deferred.promise);
}));
it('is a function', function() {
@ -58,6 +63,8 @@
expect(policyService.ifAllowed).toHaveBeenCalledWith('foo-policy');
expect(settingsService.ifEnabled.calls.count()).toBe(1);
expect(settingsService.ifEnabled).toHaveBeenCalledWith('STEPS.step_4_enabled', true, true);
expect(novaExtensionsService.ifNameEnabled.calls.count()).toBe(1);
expect(novaExtensionsService.ifNameEnabled).toHaveBeenCalledWith('foo-novaExtension');
});
it('step checkReadiness function returns correct results', function() {