From 52d7f8c159cb1f9dd3dd5496123202eee547d6a2 Mon Sep 17 00:00:00 2001 From: jiahuay Date: Wed, 16 Jul 2014 16:31:42 -0700 Subject: [PATCH] Add auto assign roles Change-Id: I1930b4759e045c5fa27bbbe1abab1aa31ffddef7 --- v2/assets/css/style.css | 4 +- v2/src/app/appDev.js | 71 +++----------------- v2/src/app/wizard/role_assignment.tpl.html | 55 +++++++++++++--- v2/src/app/wizard/server_selection.tpl.html | 22 ++++--- v2/src/app/wizard/wizard.js | 73 ++++++++++++++++++--- 5 files changed, 135 insertions(+), 90 deletions(-) diff --git a/v2/assets/css/style.css b/v2/assets/css/style.css index d886749..058b58a 100644 --- a/v2/assets/css/style.css +++ b/v2/assets/css/style.css @@ -35,7 +35,9 @@ html { padding-top: 7px; } .role-tag { - background-color: #91b8d0; + background-color: #6fb3e0 !important; + border-color: #6fb3e0 !important; + border-radius: 10px; color: #fff; display: inline-block; font-size: 13px; diff --git a/v2/src/app/appDev.js b/v2/src/app/appDev.js index 1d44f18..d1fdc27 100644 --- a/v2/src/app/appDev.js +++ b/v2/src/app/appDev.js @@ -102,16 +102,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1", "cluster2"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Controller", - "name": "os-controller" - }, { - "display_name": "Network", - "name": "os-network" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Installing" }, { @@ -124,13 +115,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Network", - "name": "os-network" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -143,10 +128,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Network", - "name": "os-network" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -159,13 +141,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Compute", - "name": "os-compute-worker" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -178,10 +154,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Compute", - "name": "os-compute-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -194,10 +167,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -210,13 +180,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Network", - "name": "os-network" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -229,13 +193,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Network", - "name": "os-network" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -248,13 +206,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Network", - "name": "os-network" - }, { - "display_name": "Storage", - "name": "os-block-storage-worker" - }], + "roles": [], "network": {}, "state": "Successful" }, { @@ -267,10 +219,7 @@ compassAppDev.run(function($httpBackend, settings, $http) { "clusters": ["cluster1"], "os": "CentOS", "adapter": "OpenStack", - "roles": [{ - "display_name": "Compute", - "name": "os-compute-worker" - }, ], + "roles": [], "network": {}, "state": "Successful" }]; diff --git a/v2/src/app/wizard/role_assignment.tpl.html b/v2/src/app/wizard/role_assignment.tpl.html index d96aa08..a7a2f1b 100644 --- a/v2/src/app/wizard/role_assignment.tpl.html +++ b/v2/src/app/wizard/role_assignment.tpl.html @@ -23,11 +23,18 @@ + + +
- +
- +
+
+
+
+
+
+
+ +
+ +
+
+
+ + + Total Hosts: {{servers.length}} | Total Roles: {{rolesTotalCount}} + +
+
+
+
+
+
+
- @@ -61,7 +93,10 @@ - @@ -54,13 +55,18 @@
- + + {{column.title}} Roles
- + {{server[column.field]}} diff --git a/v2/src/app/wizard/server_selection.tpl.html b/v2/src/app/wizard/server_selection.tpl.html index 0e87b5b..d7fd13f 100644 --- a/v2/src/app/wizard/server_selection.tpl.html +++ b/v2/src/app/wizard/server_selection.tpl.html @@ -40,12 +40,13 @@
- + + {{column.title}}
- + - - + - diff --git a/v2/src/app/wizard/wizard.js b/v2/src/app/wizard/wizard.js index 073a52e..6e485e8 100644 --- a/v2/src/app/wizard/wizard.js +++ b/v2/src/app/wizard/wizard.js @@ -675,8 +675,10 @@ angular.module('compass.wizard', [ $scope.commit = function() { var securityData = { "os_config": { - "username": $scope.server_credentials.username, - "password": $scope.server_credentials.password + "server_credentials": { + "username": $scope.server_credentials.username, + "password": $scope.server_credentials.password + } }, "package_config": { "security": { @@ -738,24 +740,59 @@ angular.module('compass.wizard', [ alert("Please select at least one server"); } else { // get selected servers and assign role to them - var roleExist = false; for (var i = 0; i < $scope.servers.length; i++) { if ($scope.servers[i].checked) { - for (var j = 0; j < $scope.servers[i].roles.length; j++) { - if (role.name == $scope.servers[i].roles[j].name) { - roleExist = true; - } - } + var roleExist = $scope.checkRoleExist($scope.servers[i].roles, role); if (!roleExist) { $scope.servers[i].roles.push(role); - } else { - roleExist = false; } } } } }; + // Assume all servers have not been assigned any roles before calling this function + $scope.autoAssignRoles = function() { + var roles = angular.copy($scope.roles); + var svIndex = 0; + angular.forEach(roles, function(newrole) { + var i = 0; + var loopStep = 0; + while (i < newrole.count && loopStep < $scope.servers.length) { + if (svIndex >= $scope.servers.length) { + svIndex = 0; + } + var roleExist = $scope.checkRoleExist($scope.servers[svIndex].roles, newrole); + if (!roleExist) { + $scope.servers[svIndex].roles.push(newrole); + i++; + loopStep = 0; + } else { + loopStep++; + } + svIndex++; + } + }) + }; + + $scope.checkRoleExist = function(existingRoles, newRole) { + var roleExist = false; + angular.forEach(existingRoles, function(existingRole) { + if (existingRole.name == newRole.name) { + roleExist = true; + } + }) + return roleExist; + }; + + $scope.$watch('roles', function(roles) { + var count = 0; + angular.forEach(roles, function(role) { + count += role.count; + }) + $scope.rolesTotalCount = count; + }, true); + $scope.tableParams = new ngTableParams({ page: 1, // show first page count: $scope.servers.length + 1 // count per page @@ -799,8 +836,24 @@ angular.module('compass.wizard', [ // error callback return $q.reject(response); }); + promises.push(updateRoles); }); + if ($scope.ha_vip) { + var config = { + "package_config": { + "ha_vip": $scope.ha_vip + } + } + var updateHAVIP = dataService.updateClusterConfig(cluster.id, config).then(function(configData) { + // success callback + }, function(response) { + // error callback + return $q.reject(response); + }); + promises.push(updateHAVIP); + } + $q.all(promises).then(function() { wizardFactory.setServers($scope.servers); var commitState = {