From 900d73820e0b484782913cdfc200d37c3200b0c9 Mon Sep 17 00:00:00 2001 From: Justin Pomeroy Date: Thu, 11 Feb 2016 10:57:02 -0600 Subject: [PATCH] Update URL routing This updates the URL routing so URLs include all IDs of the resource hierarchy. This makes it much easier to create links in pages and to obtain the information for parent resources. Partially-Implements: blueprint horizon-lbaas-v2-ui Change-Id: I6cdfb5446362e854da6a18eb16420d9121329ab9 --- .../healthmonitors/detail.controller.js | 56 ++--------- .../healthmonitors/detail.controller.spec.js | 94 ++++--------------- .../lbaasv2/healthmonitors/detail.html | 6 +- .../project/lbaasv2/lbaasv2.module.js | 19 ++-- .../project/lbaasv2/lbaasv2.module.spec.js | 69 ++++++-------- .../lbaasv2/listeners/detail.controller.js | 26 ++--- .../listeners/detail.controller.spec.js | 33 +++---- .../project/lbaasv2/listeners/detail.html | 4 +- .../lbaasv2/listeners/table.controller.js | 5 +- .../project/lbaasv2/listeners/table.html | 2 +- .../actions/batch-actions.service.js | 2 +- .../actions/batch-actions.service.spec.js | 2 +- .../loadbalancers/detail.controller.js | 7 +- .../project/lbaasv2/loadbalancers/table.html | 2 +- .../lbaasv2/members/detail.controller.js | 52 ++-------- .../lbaasv2/members/detail.controller.spec.js | 85 +++++------------ .../project/lbaasv2/members/detail.html | 6 +- .../lbaasv2/members/table.controller.js | 8 +- .../project/lbaasv2/members/table.html | 2 +- .../lbaasv2/pools/detail.controller.js | 43 ++------- .../lbaasv2/pools/detail.controller.spec.js | 73 ++++---------- .../project/lbaasv2/pools/detail.html | 8 +- 22 files changed, 172 insertions(+), 432 deletions(-) diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.js index 1ff2f355..b91995b1 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.js @@ -39,62 +39,22 @@ function HealthMonitorDetailController(api, $routeParams) { var ctrl = this; - ctrl.healthmonitor = {}; - ctrl.pool = {}; - ctrl.listener = {}; - ctrl.loadbalancer = {}; - - var healthmonitorID = $routeParams.healthmonitorId; init(); //////////////////////////////// function init() { - api.getHealthMonitor(healthmonitorID).success(healthMonitorSuccess); + api.getHealthMonitor($routeParams.healthmonitorId).success(set('healthmonitor')); + api.getPool($routeParams.poolId).success(set('pool')); + api.getListener($routeParams.listenerId).success(set('listener')); + api.getLoadBalancer($routeParams.loadbalancerId).success(set('loadbalancer')); } - function healthMonitorSuccess(response) { - ctrl.healthmonitor = response; - - if (ctrl.healthmonitor.hasOwnProperty('pools') && - ctrl.healthmonitor.pools.length > 0) { - getPoolDetails(ctrl.healthmonitor.pools[0].id); - } - } - - function getPoolDetails(poolId) { - api.getPool(poolId).success(poolSuccess); - } - - function poolSuccess(response) { - ctrl.pool = response; - - if (ctrl.pool.hasOwnProperty('listeners') && - ctrl.pool.listeners.length > 0) { - getListenerDetails(ctrl.pool.listeners[0].id); - } - } - - function getListenerDetails(listenerId) { - api.getListener(listenerId).success(listenerSuccess); - } - - function listenerSuccess(response) { - ctrl.listener = response; - - if (ctrl.listener.hasOwnProperty('loadbalancers') && - ctrl.listener.loadbalancers.length > 0) { - getLoadBalancerDetails(ctrl.listener.loadbalancers[0].id); - } - } - - function getLoadBalancerDetails(loadbalancerId) { - api.getLoadBalancer(loadbalancerId).success(loadbalancerSuccess); - } - - function loadbalancerSuccess(response) { - ctrl.loadbalancer = response; + function set(property) { + return angular.bind(null, function setProp(property, value) { + ctrl[property] = value; + }, property); } } diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.spec.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.spec.js index a3345e48..202dec9c 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.spec.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.controller.spec.js @@ -17,36 +17,12 @@ 'use strict'; describe('LBaaS v2 Healthmonitor Detail Controller', function() { - var controller, lbaasv2API, healthmonitor, pool, listener, loadbalancer; + var lbaasv2API, ctrl; - function fakeHealthMonitorAPI() { + function fakeAPI() { return { success: function(callback) { - callback(healthmonitor); - } - }; - } - - function fakePoolAPI() { - return { - success: function(callback) { - callback(pool); - } - }; - } - - function fakeListenerAPI() { - return { - success: function(callback) { - callback(listener); - } - }; - } - - function fakeLoadBalancerAPI() { - return { - success: function(callback) { - callback(loadbalancer); + callback('foo'); } }; } @@ -61,60 +37,30 @@ beforeEach(inject(function($injector) { lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2'); - controller = $injector.get('$controller'); - spyOn(lbaasv2API, 'getHealthMonitor').and.callFake(fakeHealthMonitorAPI); - spyOn(lbaasv2API, 'getPool').and.callFake(fakePoolAPI); - spyOn(lbaasv2API, 'getListener').and.callFake(fakeListenerAPI); - spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(fakeLoadBalancerAPI); + spyOn(lbaasv2API, 'getHealthMonitor').and.callFake(fakeAPI); + spyOn(lbaasv2API, 'getPool').and.callFake(fakeAPI); + spyOn(lbaasv2API, 'getListener').and.callFake(fakeAPI); + spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(fakeAPI); + var controller = $injector.get('$controller'); + ctrl = controller('HealthMonitorDetailController', { + $routeParams: { + loadbalancerId: 'loadbalancerId', + listenerId: 'listenerId', + poolId: 'poolId', + healthmonitorId: 'healthmonitorId' + } + }); })); - function createController() { - return controller('HealthMonitorDetailController', { - api: lbaasv2API, - $routeParams: { healthmonitorId: 'healthmonitorId' } - }); - } - it('should invoke lbaasv2 apis', function() { - healthmonitor = { id: 'healthmonitorId', pools: [{id: 'poolId'}] }; - pool = { id: 'poolId', listeners: [{id: 'listenerId'}] }; - listener = { id: 'listenerId', loadbalancers: [{id: 'loadbalancerId'}] }; - loadbalancer = { id: 'loadbalancerId' }; - createController(); expect(lbaasv2API.getHealthMonitor).toHaveBeenCalledWith('healthmonitorId'); expect(lbaasv2API.getPool).toHaveBeenCalledWith('poolId'); expect(lbaasv2API.getListener).toHaveBeenCalledWith('listenerId'); expect(lbaasv2API.getLoadBalancer).toHaveBeenCalledWith('loadbalancerId'); - }); - - it('should not invoke the getPool, getListener or getLoadBalancer lbaasv2 api', function() { - healthmonitor = { id: 'healthmonitorId', pools: [] }; - createController(); - expect(lbaasv2API.getHealthMonitor).toHaveBeenCalledWith('healthmonitorId'); - expect(lbaasv2API.getPool).not.toHaveBeenCalled(); - expect(lbaasv2API.getListener).not.toHaveBeenCalled(); - expect(lbaasv2API.getLoadBalancer).not.toHaveBeenCalled(); - }); - - it('should not invoke the getListener or getLoadBalancer lbaasv2 api', function() { - healthmonitor = { id: 'healthmonitorId', pools: [{id: 'poolId'}] }; - pool = { id: 'poolId', listeners: [] }; - createController(); - expect(lbaasv2API.getHealthMonitor).toHaveBeenCalledWith('healthmonitorId'); - expect(lbaasv2API.getPool).toHaveBeenCalledWith('poolId'); - expect(lbaasv2API.getListener).not.toHaveBeenCalled(); - expect(lbaasv2API.getLoadBalancer).not.toHaveBeenCalled(); - }); - - it('should not invoke getLoadBalancer lbaasv2 api', function() { - healthmonitor = { id: 'healthmonitorId', pools: [{id: 'poolId'}] }; - pool = { id: 'poolId', listeners: [{id: 'listenerId'}] }; - listener = { id: 'listenerId', loadbalancers: [] }; - createController(); - expect(lbaasv2API.getHealthMonitor).toHaveBeenCalledWith('healthmonitorId'); - expect(lbaasv2API.getPool).toHaveBeenCalledWith('poolId'); - expect(lbaasv2API.getListener).toHaveBeenCalledWith('listenerId'); - expect(lbaasv2API.getLoadBalancer).not.toHaveBeenCalled(); + expect(ctrl.loadbalancer).toBe('foo'); + expect(ctrl.listener).toBe('foo'); + expect(ctrl.pool).toBe('foo'); + expect(ctrl.healthmonitor).toBe('foo'); }); }); diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.html b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.html index ed2d6630..96d0533c 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.html +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/healthmonitors/detail.html @@ -2,9 +2,9 @@ diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.js index 70afc150..35e9de01 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.js @@ -54,27 +54,32 @@ ]; function config($provide, $windowProvider, $routeProvider) { - var href = '/project/ngloadbalancersv2/'; var basePath = $windowProvider.$get().STATIC_URL + 'dashboard/project/lbaasv2/'; $provide.constant('horizon.dashboard.project.lbaasv2.basePath', basePath); + var loadbalancers = '/project/ngloadbalancersv2'; + var listener = loadbalancers + '/:loadbalancerId/listeners/:listenerId'; + var pool = listener + '/pools/:poolId'; + var member = pool + '/members/:memberId'; + var healthmonitor = pool + '/healthmonitors/:healthmonitorId'; + $routeProvider - .when(href, { + .when(loadbalancers, { templateUrl: basePath + 'loadbalancers/table.html' }) - .when(href + 'detail/:loadbalancerId', { + .when(loadbalancers + '/:loadbalancerId', { templateUrl: basePath + 'loadbalancers/detail.html' }) - .when(href + 'listeners/detail/:listenerId', { + .when(listener, { templateUrl: basePath + 'listeners/detail.html' }) - .when(href + 'pools/detail/:poolId', { + .when(pool, { templateUrl: basePath + 'pools/detail.html' }) - .when(href + 'pools/:poolId/members/detail/:memberId', { + .when(member, { templateUrl: basePath + 'members/detail.html' }) - .when(href + 'healthmonitors/detail/:healthmonitorId', { + .when(healthmonitor, { templateUrl: basePath + 'healthmonitors/detail.html' }); } diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.spec.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.spec.js index 62e08a26..a4513298 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.spec.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/lbaasv2.module.spec.js @@ -95,45 +95,36 @@ }); it('should route URLs', function () { - var href = '/project/ngloadbalancersv2/'; - var routes = [ - [ - href, - { - templateUrl: basePath + 'loadbalancers/table.html' - } - ], - [ - href + 'detail/:loadbalancerId', - { - templateUrl: basePath + 'loadbalancers/detail.html' - } - ], - [ - href + 'listeners/detail/:listenerId', - { - templateUrl: basePath + 'listeners/detail.html' - } - ], - [ - href + 'pools/detail/:poolId', - { - templateUrl: basePath + 'pools/detail.html' - } - ], - [ - href + 'pools/:poolId/members/detail/:memberId', - { - templateUrl: basePath + 'members/detail.html' - } - ], - [ - href + 'healthmonitors/detail/:healthmonitorId', - { - templateUrl: basePath + 'healthmonitors/detail.html' - } - ] - ]; + var loadbalancers = '/project/ngloadbalancersv2'; + var listener = loadbalancers + '/:loadbalancerId/listeners/:listenerId'; + var pool = listener + '/pools/:poolId'; + var member = pool + '/members/:memberId'; + var healthmonitor = pool + '/healthmonitors/:healthmonitorId'; + var routes = [[ + loadbalancers, { + templateUrl: basePath + 'loadbalancers/table.html' + } + ], [ + loadbalancers + '/:loadbalancerId', { + templateUrl: basePath + 'loadbalancers/detail.html' + } + ], [ + listener, { + templateUrl: basePath + 'listeners/detail.html' + } + ], [ + pool, { + templateUrl: basePath + 'pools/detail.html' + } + ], [ + member, { + templateUrl: basePath + 'members/detail.html' + } + ], [ + healthmonitor, { + templateUrl: basePath + 'healthmonitors/detail.html' + } + ]]; expect($routeProvider.when.calls.count()).toBe(6); angular.forEach($routeProvider.when.calls.all(), function(call, i) { diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.js index 48078517..bc0f41b5 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.js @@ -39,34 +39,20 @@ function ListenerDetailController(api, $routeParams) { var ctrl = this; - ctrl.listener = {}; - ctrl.loadbalancer = {}; - - var listenerID = $routeParams.listenerId; init(); //////////////////////////////// function init() { - api.getListener(listenerID).success(listenerSuccess); + api.getListener($routeParams.listenerId).success(set('listener')); + api.getLoadBalancer($routeParams.loadbalancerId).success(set('loadbalancer')); } - function listenerSuccess(response) { - ctrl.listener = response; - - if (ctrl.listener.hasOwnProperty('loadbalancers') && - ctrl.listener.loadbalancers.length > 0) { - getLoadBalancerDetails(ctrl.listener.loadbalancers[0].id); - } - } - - function getLoadBalancerDetails(loadbalancerId) { - api.getLoadBalancer(loadbalancerId).success(loadbalancerSuccess); - } - - function loadbalancerSuccess(response) { - ctrl.loadbalancer = response; + function set(property) { + return angular.bind(null, function setProp(property, value) { + ctrl[property] = value; + }, property); } } diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.spec.js b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.spec.js index ddc56984..05ac034b 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.spec.js +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.controller.spec.js @@ -17,12 +17,12 @@ 'use strict'; describe('LBaaS v2 Listener Detail Controller', function() { - var controller, lbaasv2API, listener; + var lbaasv2API, ctrl; function fakeAPI() { return { success: function(callback) { - callback(listener); + callback('foo'); } }; } @@ -37,29 +37,22 @@ beforeEach(inject(function($injector) { lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2'); - controller = $injector.get('$controller'); spyOn(lbaasv2API, 'getListener').and.callFake(fakeAPI); spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(fakeAPI); + var controller = $injector.get('$controller'); + ctrl = controller('ListenerDetailController', { + $routeParams: { + loadbalancerId: 'loadbalancerId', + listenerId: 'listenerId' + } + }); })); - function createController() { - return controller('ListenerDetailController', { - api: lbaasv2API, - $routeParams: { listenerId: '1234' } - }); - } - it('should invoke lbaasv2 apis', function() { - listener = { id: '1234', loadbalancers: [{id: '5678'}] }; - createController(); - expect(lbaasv2API.getListener).toHaveBeenCalledWith('1234'); - expect(lbaasv2API.getLoadBalancer).toHaveBeenCalledWith('5678'); - }); - - it('should not invoke getLoadBalancer lbaasv2 api', function() { - listener = { id: '1234', loadbalancers: [] }; - createController(); - expect(lbaasv2API.getListener).toHaveBeenCalledWith('1234'); + expect(lbaasv2API.getListener).toHaveBeenCalledWith('listenerId'); + expect(lbaasv2API.getLoadBalancer).toHaveBeenCalledWith('loadbalancerId'); + expect(ctrl.loadbalancer).toBe('foo'); + expect(ctrl.listener).toBe('foo'); }); }); diff --git a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.html b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.html index b0a60537..331194ed 100644 --- a/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.html +++ b/neutron_lbaas_dashboard/static/dashboard/project/lbaasv2/listeners/detail.html @@ -2,7 +2,7 @@
Session Persistence
@@ -47,7 +47,7 @@
Health Monitor ID
- {$ ::ctrl.pool.healthmonitor_id $} + {$ ::ctrl.pool.healthmonitor_id $}
{$ 'None' | translate $}