stack_and_upgrade_controller.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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.MainAdminStackAndUpgradeController = Em.Controller.extend({
  20. name: 'mainAdminStackAndUpgradeController',
  21. serviceToInstall: null,
  22. upgradeTasks: [],
  23. /**
  24. * version that currently applied to server
  25. */
  26. currentVersion: null,
  27. /**
  28. * versions to which cluster could be upgraded
  29. */
  30. targetVersions: [],
  31. services: function() {
  32. return App.StackService.find().map(function(s) {
  33. s.set('isInstalled', App.Service.find().someProperty('serviceName', s.get('serviceName')));
  34. return s;
  35. });
  36. }.property('App.router.clusterController.isLoaded'),
  37. /**
  38. * launch Add Service wizard
  39. * @param event
  40. */
  41. goToAddService: function (event) {
  42. this.set('serviceToInstall', event.context);
  43. App.get('router').transitionTo('main.serviceAdd');
  44. },
  45. /**
  46. * call to fetch cluster stack versions
  47. * @return {$.ajax}
  48. */
  49. loadVersionsInfo: function () {
  50. return App.ajax.send({
  51. name: 'admin.stack_versions.all',
  52. sender: this,
  53. data: {},
  54. success: 'loadVersionsInfoSuccessCallback'
  55. });
  56. },
  57. /**
  58. * parse stack versions and
  59. * set <code>currentVersion</code>
  60. * set <code>targetVersions</code>
  61. * @param data
  62. */
  63. loadVersionsInfoSuccessCallback: function (data) {
  64. var current = data.items.findProperty('ClusterStackVersions.state', 'CURRENT');
  65. var target = data.items.without(current);
  66. this.set('currentVersion', current.ClusterStackVersions);
  67. this.set('targetVersions', target.map(function (ver) {
  68. return ver.ClusterStackVersions;
  69. }));
  70. },
  71. /**
  72. * load upgrade tasks by upgrade id
  73. * @return {$.ajax}
  74. */
  75. loadUpgradeTasks: function () {
  76. //TODO should make call with actual upgrade id
  77. var upgradeId = 1;
  78. return App.ajax.send({
  79. name: 'admin.upgrade.tasks',
  80. sender: this,
  81. data: {
  82. id: upgradeId
  83. },
  84. success: 'loadUpgradeTasksSuccessCallback'
  85. });
  86. },
  87. /**
  88. * parse and push upgrade tasks to controller
  89. * @param data
  90. */
  91. loadUpgradeTasksSuccessCallback: function (data) {
  92. this.set("upgradeTasks", data.items.map(function (item) {
  93. return item.UpgradeItem;
  94. }));
  95. },
  96. /**
  97. * start cluster downgrade
  98. */
  99. downgrade: function () {
  100. //TODO start actual downgrade
  101. },
  102. /**
  103. * start cluster upgrade
  104. */
  105. upgrade: function () {
  106. //TODO start actual upgrade
  107. this.loadUpgradeTasks();
  108. this.openUpgradeDialog();
  109. },
  110. /**
  111. * resume upgrade process
  112. */
  113. resumeUpgrade: function () {
  114. //TODO resume upgrade
  115. },
  116. /**
  117. * finish upgrade process
  118. */
  119. finalize: function () {
  120. //TODO start actual finalize
  121. },
  122. /**
  123. * show dialog with tasks of upgrade
  124. * @return {App.ModalPopup}
  125. */
  126. openUpgradeDialog: function () {
  127. var upgradeVersion = 'HDP-2.2.1';
  128. return App.ModalPopup.show({
  129. header: Em.I18n.t('admin.stackUpgrade.dialog.header').format(upgradeVersion),
  130. bodyClass: Em.View.extend({
  131. controller: this,
  132. templateName: require('templates/main/admin/stack_upgrade/stack_upgrade_dialog'),
  133. tasks: function () {
  134. return this.get('controller.upgradeTasks');
  135. }.property('controller.upgradeTasks')
  136. }),
  137. primary: null,
  138. secondary: null
  139. });
  140. }
  141. });