diff options
author | Zuul <zuul@review.openstack.org> | 2018-02-14 03:30:13 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-02-14 03:30:13 +0000 |
commit | 880096a080ec59977c0855786e9d8f27c3ebbdd1 (patch) | |
tree | 6f3f5616c2d677ba63036c324c351a4b8c9283f0 | |
parent | 3c0b23eaa2ae85b9f199455a52849ca2a2c35f15 (diff) | |
parent | af6740ce2000577515613242a4fd1f7fc9bb792c (diff) | |
download | horizon-880096a080ec59977c0855786e9d8f27c3ebbdd1.tar.gz |
Merge "Tabs in launch server wizard not depending on OPENSTACK_NOVA_EXTENSIONS_BLACKLIST" into stable/pike
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() { |