summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-02-14 03:30:13 +0000
committerGerrit Code Review <review@openstack.org>2018-02-14 03:30:13 +0000
commit880096a080ec59977c0855786e9d8f27c3ebbdd1 (patch)
tree6f3f5616c2d677ba63036c324c351a4b8c9283f0
parent3c0b23eaa2ae85b9f199455a52849ca2a2c35f15 (diff)
parentaf6740ce2000577515613242a4fd1f7fc9bb792c (diff)
downloadhorizon-880096a080ec59977c0855786e9d8f27c3ebbdd1.tar.gz
Merge "Tabs in launch server wizard not depending on OPENSTACK_NOVA_EXTENSIONS_BLACKLIST" into stable/pike
-rw-r--r--openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.js9
-rw-r--r--openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.spec.js13
-rw-r--r--openstack_dashboard/static/app/core/workflow/decorator.service.js8
-rw-r--r--openstack_dashboard/static/app/core/workflow/decorator.service.spec.js11
4 files changed, 34 insertions, 7 deletions
diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.js
index 0d5f75783..886b28715 100644
--- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.js
+++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.js
@@ -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',
diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.spec.js
index b7bd1810c..71a78a974 100644
--- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.spec.js
+++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-workflow.service.spec.js
@@ -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");
+ });
+
});
})();
diff --git a/openstack_dashboard/static/app/core/workflow/decorator.service.js b/openstack_dashboard/static/app/core/workflow/decorator.service.js
index 522c508c2..5afcec68e 100644
--- a/openstack_dashboard/static/app/core/workflow/decorator.service.js
+++ b/openstack_dashboard/static/app/core/workflow/decorator.service.js
@@ -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);
diff --git a/openstack_dashboard/static/app/core/workflow/decorator.service.spec.js b/openstack_dashboard/static/app/core/workflow/decorator.service.spec.js
index 477c357e7..ee2e580cd 100644
--- a/openstack_dashboard/static/app/core/workflow/decorator.service.spec.js
+++ b/openstack_dashboard/static/app/core/workflow/decorator.service.spec.js
@@ -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() {