From 771d5df61c7df77f664d4c12f70eddf3ffa7632b Mon Sep 17 00:00:00 2001 From: chi zhang Date: Thu, 2 Apr 2015 14:01:59 -0700 Subject: [PATCH] ui metadata os global config Change-Id: I4a892ba7737b93b910572f81250891124fb1217d --- v2.5/src/app/app.coffee | 4 +- .../app/controllers/wizardController.coffee | 7 +- v2.5/src/app/directives/all.coffee | 1 + .../app/directives/dataMatchDirective.coffee | 40 +++ v2.5/src/app/factory/wizardFactory.coffee | 7 + v2.5/src/app/filters/all.coffee | 2 +- v2.5/src/app/partials/global.tpl.html | 333 +++++------------- v2.5/src/app/server/appDev.js | 163 +++++++++ v2.5/src/app/services/dataService.coffee | 3 + v2.5/src/app/services/wizardService.coffee | 48 ++- 10 files changed, 348 insertions(+), 260 deletions(-) create mode 100644 v2.5/src/app/directives/dataMatchDirective.coffee diff --git a/v2.5/src/app/app.coffee b/v2.5/src/app/app.coffee index d552c58..8a54333 100755 --- a/v2.5/src/app/app.coffee +++ b/v2.5/src/app/app.coffee @@ -7,8 +7,8 @@ define(['angular' 'app/services/all' 'app/factory/all' 'app/directives/all' - # 'app/server/appDev' 'app/filters/all' + # 'app/server/appDev' ], (ng)-> 'use strict' @@ -20,8 +20,8 @@ define(['angular' 'compass.services' 'compass.factories' 'compass.directives' - # 'compassAppDev' 'compass.filters' + # 'compassAppDev' ] .config ['$stateProvider','$urlRouterProvider', '$httpProvider', ($stateProvider, $urlRouterProvider, $httpProvider) -> $stateProvider diff --git a/v2.5/src/app/controllers/wizardController.coffee b/v2.5/src/app/controllers/wizardController.coffee index 7c7a706..feaf355 100644 --- a/v2.5/src/app/controllers/wizardController.coffee +++ b/v2.5/src/app/controllers/wizardController.coffee @@ -74,10 +74,13 @@ define(['./baseController'], ()-> ($scope, wizardService, $q) -> wizardService.globalConfigInit($scope) + wizardService.buildOsGlobalConfigByMetaData($scope) wizardService.watchingTriggeredStep($scope) - $scope.addValue = (key) -> - $scope.general[key].push("") + $scope.addValue = (category, key) -> + scope.os_global_config[category][key] = [] if !$scope.os_global_config[category][key] + $scope.os_global_config[category][key].push("") + # $scope.general[key].push("") $scope.commit = (sendRequest) -> wizardService.globalCommit($scope,sendRequest) diff --git a/v2.5/src/app/directives/all.coffee b/v2.5/src/app/directives/all.coffee index 28e0e2f..7d93376 100755 --- a/v2.5/src/app/directives/all.coffee +++ b/v2.5/src/app/directives/all.coffee @@ -5,4 +5,5 @@ define([ './enterDirective' './hostprogressbarDirective' './wizardDirective' + './dataMatchDirective' ], ()-> ) diff --git a/v2.5/src/app/directives/dataMatchDirective.coffee b/v2.5/src/app/directives/dataMatchDirective.coffee new file mode 100644 index 0000000..c956ac6 --- /dev/null +++ b/v2.5/src/app/directives/dataMatchDirective.coffee @@ -0,0 +1,40 @@ +define ['./baseDirective'], -> + 'use strict'; + + angular.module('compass.directives') + .directive 'compassDataMatch', () -> + return { + require: 'ngModel' + scope: + compassDataMatch: "=" + response: "=" + currentData: "=" + link: (scope, element, attrs, ngModel) -> + scope.$watch(()-> + return scope.compassDataMatch + ,(newValue, oldValue) -> + if scope.compassDataMatch is ngModel.$modelValue + scope.response = + error: false + message: "" + ngModel.$setValidity('match', true) + else + scope.response = + error: true + message: "Passwords do not match" + ngModel.$setValidity('match', false) + ) + + ngModel.$parsers.unshift (value) -> + if scope.compassDataMatch is value + scope.response = + error: false + message: "" + ngModel.$setValidity('match', true) + else + scope.response = + error: true + message: "Passwords do not match" + ngModel.$setValidity('match', false) + return value + } diff --git a/v2.5/src/app/factory/wizardFactory.coffee b/v2.5/src/app/factory/wizardFactory.coffee index 8c633c7..bea3ad6 100644 --- a/v2.5/src/app/factory/wizardFactory.coffee +++ b/v2.5/src/app/factory/wizardFactory.coffee @@ -18,6 +18,7 @@ define(['./baseFactory'], () -> @console_credentials = {} @network_mapping = {} @ceph_config = {} + @os_gloable_config = {} clean: -> @cluster = {} @@ -63,6 +64,12 @@ define(['./baseFactory'], () -> setPartition: (partition) -> @partition = partition + setOsGlobalConfig: (os_config) -> + @os_gloable_config = os_config + + getOsGlobalConfig: -> + return @os_gloable_config + setServerCredentials: (credentials) -> @server_credentials = credentials diff --git a/v2.5/src/app/filters/all.coffee b/v2.5/src/app/filters/all.coffee index 31554e4..c7bdc9e 100644 --- a/v2.5/src/app/filters/all.coffee +++ b/v2.5/src/app/filters/all.coffee @@ -1,3 +1,3 @@ define([ './healthReportFilter' -]) \ No newline at end of file +], ()->) \ No newline at end of file diff --git a/v2.5/src/app/partials/global.tpl.html b/v2.5/src/app/partials/global.tpl.html index cc1ccba..d8bd0d8 100644 --- a/v2.5/src/app/partials/global.tpl.html +++ b/v2.5/src/app/partials/global.tpl.html @@ -2,257 +2,102 @@
- - +
+ +
+ + + +
+ {{content.validationResponse.message}} +
+
+
+ +
+ +
+ +
-
--> - -
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- -
- - - - - - - - - - - -
-
-
-
-
- -
- -
-
-
-
-
- -
- - - - - - - - - - - -
-
-
-
-
- -
- - - - - - - - - - - -
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- -
-
-
-
- -
- -
-
-
- -
-
- - -
- -
-
-
- -
-
- -
- -
- Passwords do not match + +
+
+ +
+ + + + + + + + + + +
+ {{content.validationResponse[$index].message}} +
+
+
- - -
\ No newline at end of file diff --git a/v2.5/src/app/server/appDev.js b/v2.5/src/app/server/appDev.js index 5914c05..1bd52cf 100644 --- a/v2.5/src/app/server/appDev.js +++ b/v2.5/src/app/server/appDev.js @@ -1358,6 +1358,169 @@ define(['angular', 'angularMocks'], function() { return [200, deleteHost, {}]; }); + $httpBackend.whenGET(/\.*\/oses\/[0-9]\/ui_metadata/).respond(function(method, url, data){ + console.log(method, url, data); + var metaData = { + "os_global_config": [ + { + "title": "Server Credentials", + "data": [ + { + "default_value": "root", + "display_name": "User name", + "name": "username", + "display_type": "text", + "is_required": "true", + "placeholder": "Username", + "order": 1 + }, + { + "display_name": "Confirm Password", + "name": "confirmPassword", + "display_type": "password", + "is_required": "true", + "placeholder": "Confirm Password", + "datamatch": "password", + "order": 3 + }, + { + "display_name": "Password", + "name": "password", + "display_type": "password", + "is_required": "true", + "placeholder": "Password", + "order": 2 + } + ], + "order": 2, + "name": "sever_credentials" + }, + { + "title": "", + "data": [ + { + "default_value": "ods.com", + "display_name": "Domain", + "name": "domain", + "display_type": "text", + "is_required": "true", + "placeholder": "Domain", + "order": 9 + }, + { + "display_name": "DNS Server", + "name": "dns_servers", + "display_type": "multitext", + "is_required": "true", + "placeholder": "DNS Server", + "order": 7 + }, + { + "default_value": "10.145.88.1", + "display_name": "Default Gateway", + "name": "default_gateway", + "display_type": "text", + "is_required": "true", + "placeholder": "Gateway", + "order": 10 + }, + { + "display_name": "HTTP Proxy", + "name": "http_proxy", + "display_type": "text", + "is_required": "false", + "placeholder": "HTTP Proxy", + "order": 3 + }, + { + "default_value": [ + "ods.com" + ], + "display_name": "Search Path", + "name": "search_path", + "display_type": "multitext", + "is_required": "false", + "placeholder": "Search Path", + "order": 8 + }, + { + "display_name": "Local Repository", + "name": "local_repo", + "display_type": "text", + "is_required": "false", + "placeholder": "Local Repo", + "order": 11 + }, + { + "default_value": "Los Angeles", + "display_name": "Timezone", + "name": "timezone", + "options": [ + { + "name": "Los Angeles", + "value": "Los Angeles" + }, + { + "name": "Chicago", + "value": "Chicago" + } + ], + "display_type": "dropdown", + "is_required": "true", + "order": 2 + }, + { + "display_name": "NTP Server", + "name": "ntp_server", + "display_type": "text", + "is_required": "true", + "placeholder": "NTP Server", + "order": 6 + }, + { + "default_value": "en", + "display_name": "Language", + "name": "language", + "options": [ + { + "name": "English", + "value": "en" + }, + { + "name": "Chinese", + "value": "cn" + } + ], + "display_type": "dropdown", + "is_required": "true", + "order": 1 + }, + { + "display_name": "No Proxy", + "name": "no_proxy", + "display_type": "multitext", + "is_required": "false", + "placeholder": "No Proxy", + "order": 5 + }, + { + "display_name": "HTTPS Proxy", + "name": "https_proxy", + "display_type": "text", + "is_required": "false", + "placeholder": "HTTPS Proxy", + "order": 4 + } + ], + "order": 1, + "name": "general" + } + ] + } + + return [200, metaData, {}] + }); + $httpBackend.whenGET(/\.*\/monit.*clusters\/([0-9]|[1-9][0-9])\/overview/).respond(function(method, url, data) { console.log(method, url, data); var overviewData = [{ diff --git a/v2.5/src/app/services/dataService.coffee b/v2.5/src/app/services/dataService.coffee index 48e8a57..cbb0cf2 100644 --- a/v2.5/src/app/services/dataService.coffee +++ b/v2.5/src/app/services/dataService.coffee @@ -116,5 +116,8 @@ define(['./baseService'], () -> startHealthCheck: (id, request) -> return @$http.post(@settings.apiUrlBase + '/clusters/' + id + '/action',angular.toJson(request)) + getOsGlobalConfigMetaData: (id) -> + return @$http.get(@settings.apiUrlBase + '/oses/'+ id + '/ui_metadata') + angular.module('compass.services').service('dataService', ['$http', 'settings', ($http,settings) -> new DS($http,settings)]) ) \ No newline at end of file diff --git a/v2.5/src/app/services/wizardService.coffee b/v2.5/src/app/services/wizardService.coffee index 992ae88..1a864ed 100644 --- a/v2.5/src/app/services/wizardService.coffee +++ b/v2.5/src/app/services/wizardService.coffee @@ -141,11 +141,15 @@ define(['./baseService'], ()-> $scope.pendingStep = 1 globalConfigInit: ($scope) -> + $scope.os_global_config = {} $scope.cluster = @wizardFactory.getClusterInfo() - $scope.general = @wizardFactory.getGeneralConfig() - $scope.server_credentials = @wizardFactory.getServerCredentials() - @dataService.getTimezones().success (data) -> - $scope.timezones = data + if @wizardFactory.getOsGlobalConfig() != undefined + $scope.os_global_config = @wizardFactory.getOsGlobalConfig() + # $scope.cluster = @wizardFactory.getClusterInfo() + # $scope.general = @wizardFactory.getGeneralConfig() + # $scope.server_credentials = @wizardFactory.getServerCredentials() + # @dataService.getTimezones().success (data) -> + # $scope.timezones = data networkInit: ($scope) -> $scope.cluster = @wizardFactory.getClusterInfo() @@ -483,15 +487,18 @@ define(['./baseService'], ()-> "message": "" }) $scope.$emit "loading", true - osGlobalConfig = - "os_config": - "general": $scope.general - "server_credentials": - "username": $scope.server_credentials.username - "password": $scope.server_credentials.password + # osGlobalConfig = + # "os_config": + # "general": $scope.general + # "server_credentials": + # "username": $scope.server_credentials.username + # "password": $scope.server_credentials.password wizardFactory = @wizardFactory + submitData = {} + for mdata in $scope.metaData + submitData[mdata.name] = $scope.os_global_config[mdata.name] if $scope.generalForm.$valid - @dataService.updateClusterConfig($scope.cluster.id, osGlobalConfig).success (configData) -> + @dataService.updateClusterConfig($scope.cluster.id, submitData).success (configData) -> wizardFactory.setCommitState({ "name": "os_global" "state": "success" @@ -883,6 +890,25 @@ define(['./baseService'], ()-> return @dataService.postSwitchAction(id, action) putSwitches: (id, sw) -> return @dataService.putSwitches(id, sw) + buildOsGlobalConfigByMetaData: ($scope) -> + @dataService.getOsGlobalConfigMetaData($scope.cluster.os_id).success (data) -> + $scope.metaData = data.os_global_config + for key, values of data + for category in values + if $scope.os_global_config[category.name] + $scope[key][category.name]= $scope.os_global_config[category.name] + else + $scope[key][category.name] = {} + for content in category.data + if content.default_value and !$scope.os_global_config[category.name][content.name] + $scope.os_global_config[category.name][content.name] = content.default_value + + if content.display_type is "multitext" + if $scope.os_global_config[category.name][content.name] + $scope[key][category.name][content.name] = $scope.os_global_config[category.name][content.name] + else + $scope[key][category.name][content.name] = [""] + angular.module('compass.services').service 'wizardService',[