wizard_controller.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. App.KerberosWizardController = App.WizardController.extend({
  20. name: 'kerberosWizardController',
  21. totalSteps: 6,
  22. isKerberosWizard: true,
  23. /**
  24. * Used for hiding back button in wizard
  25. */
  26. hideBackButton: true,
  27. content: Em.Object.create({
  28. controllerName: 'kerberosWizardController',
  29. serviceName: 'KERBEROS',
  30. hosts: '',
  31. kerberosOption: null,
  32. cluster: null,
  33. services: null,
  34. advancedServiceConfig: null,
  35. serviceConfigProperties: [],
  36. failedTask: null
  37. }),
  38. setCurrentStep: function (currentStep, completed) {
  39. this._super(currentStep, completed);
  40. if (App.testMode) {
  41. return;
  42. }
  43. App.clusterStatus.setClusterStatus({
  44. clusterName: this.get('content.cluster.name'),
  45. clusterState: 'KERBEROS_DEPLOY',
  46. wizardControllerName: 'kerberosWizardController',
  47. localdb: App.db.data
  48. });
  49. },
  50. /**
  51. * return new object extended from clusterStatusTemplate
  52. * @return Object
  53. */
  54. getCluster: function () {
  55. return jQuery.extend({}, this.get('clusterStatusTemplate'), {name: App.router.getClusterName()});
  56. },
  57. /**
  58. * save status of the cluster.
  59. * @param clusterStatus object with status,requestId fields.
  60. */
  61. saveClusterStatus: function (clusterStatus) {
  62. var oldStatus = this.toObject(this.get('content.cluster'));
  63. clusterStatus = jQuery.extend(oldStatus, clusterStatus);
  64. if (clusterStatus.requestId) {
  65. clusterStatus.requestId.forEach(function (requestId) {
  66. if (clusterStatus.oldRequestsId.indexOf(requestId) === -1) {
  67. clusterStatus.oldRequestsId.push(requestId)
  68. }
  69. }, this);
  70. }
  71. this.set('content.cluster', clusterStatus);
  72. this.save('cluster');
  73. },
  74. saveTasksStatuses: function (statuses) {
  75. this.setDBProperty('tasksStatuses',statuses);
  76. this.set('content.tasksStatuses', statuses);
  77. },
  78. saveConfigTag: function (tag) {
  79. App.db.setKerberosWizardConfigTag(tag);
  80. this.set('content.' + [tag.name], tag.value);
  81. },
  82. saveKerberosOption: function (stepController) {
  83. this.setDBProperty('kerberosOption', stepController.get('selectedItem'));
  84. this.set('content.kerberosOption', stepController.get('selectedItem'));
  85. },
  86. loadConfigTag: function (tag) {
  87. var tagVal = App.db.getKerberosWizardConfigTag(tag);
  88. this.set('content.' + tag, tagVal);
  89. },
  90. loadTasksStatuses: function () {
  91. var statuses = this.getDBProperty('tasksStatuses');
  92. this.set('content.tasksStatuses', statuses);
  93. },
  94. /**
  95. * Load serviceConfigProperties to model
  96. */
  97. loadServiceConfigProperties: function () {
  98. var serviceConfigProperties = this.getDBProperty('serviceConfigProperties');
  99. this.set('content.serviceConfigProperties', serviceConfigProperties);
  100. },
  101. /**
  102. * load advanced configs from server
  103. */
  104. loadAdvancedConfigs: function (dependentController) {
  105. var self = this;
  106. var loadAdvancedConfigResult = [];
  107. dependentController.set('isAdvancedConfigLoaded', false);
  108. var serviceName = this.get('content.serviceName');
  109. App.config.loadAdvancedConfig(serviceName, function (properties) {
  110. loadAdvancedConfigResult.pushObjects(properties);
  111. self.set('content.advancedServiceConfig', loadAdvancedConfigResult);
  112. self.setDBProperty('advancedServiceConfig', loadAdvancedConfigResult);
  113. dependentController.set('isAdvancedConfigLoaded', true);
  114. });
  115. },
  116. saveRequestIds: function (requestIds) {
  117. this.setDBProperty('requestIds',requestIds);
  118. this.set('content.requestIds', requestIds);
  119. },
  120. loadKerberosOption: function () {
  121. this.set('content.kerberosOption', this.getDBProperty('kerberosOption'));
  122. },
  123. loadRequestIds: function () {
  124. var requestIds = this.getDBProperty('requestIds');
  125. this.set('content.requestIds', requestIds);
  126. },
  127. saveTasksRequestIds: function (requestIds) {
  128. this.setDBProperty('tasksRequestIds',requestIds);
  129. this.set('content.tasksRequestIds', requestIds);
  130. },
  131. loadTasksRequestIds: function () {
  132. var requestIds = this.getDBProperty('tasksRequestIds');
  133. this.set('content.tasksRequestIds', requestIds);
  134. },
  135. loadMap: {
  136. '1': [
  137. {
  138. type: 'sync',
  139. callback: function () {
  140. this.loadKerberosOption();
  141. }
  142. }
  143. ],
  144. '2': [
  145. {
  146. type: 'sync',
  147. callback: function () {
  148. var kerberosStep2controller = App.router.get('kerberosWizardStep2Controller');
  149. this.loadAdvancedConfigs(kerberosStep2controller);
  150. this.loadServiceConfigProperties();
  151. this.load('hosts');
  152. }
  153. }
  154. ],
  155. '3': [
  156. {
  157. type: 'sync',
  158. callback: function () {
  159. this.loadTasksStatuses();
  160. this.loadTasksRequestIds();
  161. this.loadRequestIds();
  162. }
  163. }
  164. ]
  165. },
  166. /**
  167. * Remove all loaded data.
  168. * Created as copy for App.router.clearAllSteps
  169. */
  170. clearAllSteps: function () {
  171. this.clearInstallOptions();
  172. // clear temporary information stored during the install
  173. this.set('content.cluster', this.getCluster());
  174. },
  175. clearTasksData: function () {
  176. this.saveTasksStatuses(undefined);
  177. this.saveRequestIds(undefined);
  178. this.saveTasksRequestIds(undefined);
  179. },
  180. /**
  181. * Clear all temporary data
  182. */
  183. finish: function () {
  184. // The in-memory variable for currentstep should be reset to 1st step.
  185. this.setCurrentStep('1');
  186. // kerberos wizard namespace in the localStorage should be emptied
  187. this.resetDbNamespace();
  188. App.router.get('updateController').updateAll();
  189. }
  190. });