Browse Source

AMBARI-1468. Stack Upgrade Wizard - Step 1 (show services and versions). (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1448922 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 years ago
parent
commit
92cc346d2d

+ 3 - 0
CHANGES.txt

@@ -12,6 +12,9 @@ Trunk (unreleased changes):
 
 
  NEW FEATURES
  NEW FEATURES
 
 
+ AMBARI-1468. Stack Upgrade Wizard - Step 1 (show services and versions).
+ (yusaku)
+
  AMBARI-1459. Add Admin > Cluster page. (yusaku)
  AMBARI-1459. Add Admin > Cluster page. (yusaku)
 
 
  AMBARI-1454. Service page: add "Reassign <Master Component>" action items
  AMBARI-1454. Service page: add "Reassign <Master Component>" action items

File diff suppressed because it is too large
+ 1581 - 37
ambari-web/app/assets/data/wizard/stack/stacks.json


+ 2 - 0
ambari-web/app/controllers.js

@@ -27,6 +27,7 @@ require('controllers/global/background_operations_controller');
 require('controllers/main');
 require('controllers/main');
 require('controllers/main/admin');
 require('controllers/main/admin');
 require('controllers/main/admin/cluster');
 require('controllers/main/admin/cluster');
+require('controllers/main/admin/stack_upgrade_controller');
 require('controllers/main/admin/user');
 require('controllers/main/admin/user');
 require('controllers/main/admin/user/edit');
 require('controllers/main/admin/user/edit');
 require('controllers/main/admin/user/create');
 require('controllers/main/admin/user/create');
@@ -70,5 +71,6 @@ require('controllers/wizard/step7_controller');
 require('controllers/wizard/step8_controller');
 require('controllers/wizard/step8_controller');
 require('controllers/wizard/step9_controller');
 require('controllers/wizard/step9_controller');
 require('controllers/wizard/step10_controller');
 require('controllers/wizard/step10_controller');
+require('controllers/wizard/stack_upgrade/step1_controller');
 require('controllers/global/cluster_controller');
 require('controllers/global/cluster_controller');
 require('controllers/global/update_controller');
 require('controllers/global/update_controller');

+ 58 - 77
ambari-web/app/controllers/main/admin/cluster.js

@@ -21,92 +21,73 @@ var App = require('app');
 App.MainAdminClusterController = Em.Controller.extend({
 App.MainAdminClusterController = Em.Controller.extend({
   name:'mainAdminClusterController',
   name:'mainAdminClusterController',
   services: [],
   services: [],
-  installedServices: function(){
-    return App.Service.find().mapProperty('serviceName');
-  }.property(),
-  currentVersion: function(){
-    return App.get('currentStackVersion');
-  }.property('App.currentStackVersion'),
   upgradeVersion: '',
   upgradeVersion: '',
   /**
   /**
    * get the newest version of HDP from server
    * get the newest version of HDP from server
-   * and update if it newer than current
    */
    */
   updateUpgradeVersion: function(){
   updateUpgradeVersion: function(){
-    var url = App.formatUrl(
-      App.apiPrefix + "/stacks",
-      {},
-      '/data/wizard/stack/stacks.json'
-    );
-    var result = this.get('upgradeVersion') || App.defaultStackVersion;
-    $.ajax({
-      type: "GET",
-      url: url,
-      async: false,
-      dataType: 'json',
-      timeout: App.timeout,
-      success: function (data) {
-        result = result.replace(/HDP-/, '');
-        data.filterProperty('name', 'HDP').mapProperty('version').forEach(function(version){
-          result = (result < version) ? version : result;
-        });
-        result = 'HDP-' + result;
-      },
-      error: function (request, ajaxOptions, error) {
-        console.log('Error message is: ' + request.responseText);
-      },
-      statusCode: require('data/statusCodes')
-    });
-    if(result && result !== this.get('upgradeVersion')){
-      this.set('upgradeVersion', result);
+    if(App.router.get('clusterController.isLoaded')){
+      var url = App.formatUrl(
+        App.apiPrefix + "/stacks",
+        {},
+        '/data/wizard/stack/stacks.json'
+      );
+      var upgradeVersion = this.get('upgradeVersion') || App.defaultStackVersion;
+      var installedServices = [];
+      var newServices = [];
+      $.ajax({
+        type: "GET",
+        url: url,
+        async: false,
+        dataType: 'json',
+        timeout: App.timeout,
+        success: function (data) {
+          upgradeVersion = upgradeVersion.replace(/HDP-/, '');
+          data.filterProperty('name', 'HDP').mapProperty('version').forEach(function(version){
+            upgradeVersion = (upgradeVersion < version) ? version : upgradeVersion;
+          });
+          installedServices = data.findProperty('version', App.currentStackVersion.replace(/HDP-/, ''));
+          newServices = data.findProperty('version', upgradeVersion);
+          upgradeVersion = 'HDP-' + upgradeVersion;
+        },
+        error: function (request, ajaxOptions, error) {
+          console.log('Error message is: ' + request.responseText);
+        },
+        statusCode: require('data/statusCodes')
+      });
+      this.set('upgradeVersion', upgradeVersion);
+      this.parseServicesInfo(installedServices, newServices);
     }
     }
-  },
+  }.observes('App.router.clusterController.isLoaded'),
   /**
   /**
-   * load services info(versions, description)
+   * parse services info(versions, description) by version
    */
    */
-  loadServicesFromServer: function () {
-    var displayOrderConfig = require('data/services');
+  parseServicesInfo: function (oldServices, newServices) {
     var result = [];
     var result = [];
-    var method = 'GET';
-    var url = App.formatUrl(
-      App.apiPrefix + App.get('stackVersionURL'),
-      {},
-      '/data/wizard/stack/hdp/version/1.2.0.json'
-    );
-    var self = this;
-    $.ajax({
-      type: method,
-      url: url,
-      async: false,
-      dataType: 'text',
-      timeout: App.timeout,
-      success: function (data) {
-        var jsonData = jQuery.parseJSON(data);
-
-        // loop through all the service components
-        for (var i = 0; i < displayOrderConfig.length; i++) {
-          var entry = jsonData.services.findProperty("name", displayOrderConfig[i].serviceName);
-          if(self.get('installedServices').contains(entry.name)){
-            var myService = Em.Object.create({
-              serviceName: entry.name,
-              displayName: displayOrderConfig[i].displayName,
-              isDisabled: i === 0,
-              isSelected: true,
-              isInstalled: false,
-              isHidden: displayOrderConfig[i].isHidden,
-              description: entry.comment,
-              version: entry.version,
-              newVersion: '1.3.0'
-            });
-            result.push(myService);
-          }
+    var installedServices = App.Service.find().mapProperty('serviceName');
+    var displayOrderConfig = require('data/services');
+    // loop through all the service components
+    for (var i = 0; i < displayOrderConfig.length; i++) {
+      var entry = oldServices.services.findProperty("name", displayOrderConfig[i].serviceName);
+      if (installedServices.contains(entry.name)) {
+        var myService = Em.Object.create({
+          serviceName: entry.name,
+          displayName: displayOrderConfig[i].displayName,
+          isDisabled: i === 0,
+          isSelected: true,
+          isInstalled: false,
+          isHidden: displayOrderConfig[i].isHidden,
+          description: entry.comment,
+          version: entry.version,
+          newVersion: newServices.services.findProperty("name", displayOrderConfig[i].serviceName).version
+        });
+        //From 1.3.0 for Hive we display only "Hive" (but it installes HCat and WebHCat as well)
+        if (this.get('upgradeVersion').replace(/HDP-/, '') >= '1.3.0' && displayOrderConfig[i].serviceName == 'HIVE') {
+          myService.set('displayName', 'Hive');
         }
         }
-      },
-      error: function (request, ajaxOptions, error) {
-        console.log('Error message is: ' + request.responseText);
-      },
-      statusCode: require('data/statusCodes')
-    });
+        result.push(myService);
+      }
+    }
     this.set('services', result);
     this.set('services', result);
-  }.observes('upgradeVersion')
+  }
 });
 });

+ 9 - 0
ambari-web/app/messages.js

@@ -103,6 +103,8 @@ Em.I18n.translations = {
   'common.error': 'Error',
   'common.error': 'Error',
   'common.loading': 'Loading',
   'common.loading': 'Loading',
   'common.search': 'Search',
   'common.search': 'Search',
+  'common.confirm': 'Confirm',
+  'common.upgrade': 'Upgrade',
 
 
   'question.sure':'Are you sure {0}?',
   'question.sure':'Are you sure {0}?',
 
 
@@ -386,6 +388,13 @@ Em.I18n.translations = {
   'installer.step10.installTime.seconds':'Install and start completed in {0} seconds',
   'installer.step10.installTime.seconds':'Install and start completed in {0} seconds',
   'installer.step10.installTime.minutes':'Install and start completed in {0} minutes and {1} seconds',
   'installer.step10.installTime.minutes':'Install and start completed in {0} minutes and {1} seconds',
 
 
+  'installer.stackUpgrade.header':'Stack Upgrade Wizard',
+  'installer.stackUpgrade.step1.newVersion':'New Version',
+  'installer.stackUpgrade.step1.installedVersion':'Installed Version',
+  'installer.stackUpgrade.step1.installedStackVersion':'Installed stack version',
+  'installer.stackUpgrade.step1.upgradeStackVersion':'Upgrade stack version',
+  'installer.stackUpgrade.step1.description':'This Stack Upgrade Wizard will walk you through the steps of upgrading the cluster to the latest available stack version.',
+
   'form.create':'Create',
   'form.create':'Create',
   'form.save':'Save',
   'form.save':'Save',
   'form.cancel':'Cancel',
   'form.cancel':'Cancel',

+ 1 - 0
ambari-web/app/router.js

@@ -38,6 +38,7 @@ App.Router = Em.Router.extend({
     this.get('installerController').clear();
     this.get('installerController').clear();
     this.get('addHostController').clear();
     this.get('addHostController').clear();
     this.get('addServiceController').clear();
     this.get('addServiceController').clear();
+    this.get('stackUpgradeController').clear();
     for (i = 1; i < 11; i++) {
     for (i = 1; i < 11; i++) {
       this.set('wizardStep' + i + 'Controller.hasSubmitted', false);
       this.set('wizardStep' + i + 'Controller.hasSubmitted', false);
       this.set('wizardStep' + i + 'Controller.isDisabled', true);
       this.set('wizardStep' + i + 'Controller.isDisabled', true);

+ 7 - 3
ambari-web/app/routes/main.js

@@ -261,13 +261,17 @@ module.exports = Em.Route.extend({
         router.get('mainAdminController').connectOutlet('mainAdminAudit');
         router.get('mainAdminController').connectOutlet('mainAdminAudit');
       }
       }
     }),
     }),
+    upgradeStack:function (router, event) {
+      if(!$(event.currentTarget).hasClass('inactive')){
+        router.transitionTo('stackUpgrade');
+      }
+    },
 
 
     adminNavigate:function (router, object) {
     adminNavigate:function (router, object) {
-      Em.run.next(function () {
-        router.transitionTo('admin' + object.context.capitalize());
-      });
+      router.transitionTo('admin' + object.context.capitalize());
     }
     }
   }),
   }),
+  stackUpgrade:require('routes/stack_upgrade'),
 
 
   dashboard:Em.Route.extend({
   dashboard:Em.Route.extend({
     route:'/dashboard',
     route:'/dashboard',

+ 13 - 0
ambari-web/app/styles/application.less

@@ -395,6 +395,19 @@ h1 {
   }
   }
 }
 }
 
 
+#stack-upgrade {
+  .content {
+    padding: 25px;
+    background-color: #fff;
+  }
+  .box {
+    padding: 5px;
+  }
+  table th {
+    vertical-align: middle;
+  }
+}
+
 #host-log {
 #host-log {
   .stderr, .stdout {
   .stderr, .stdout {
     background-color: #f0f0f0;
     background-color: #f0f0f0;

+ 1 - 1
ambari-web/app/templates/main/admin/cluster.hbs

@@ -18,7 +18,7 @@
 
 
 <div class="admin-cluster">
 <div class="admin-cluster">
     <div class="header">
     <div class="header">
-        <strong>{{t admin.cluster.stackVersion}}: {{currentVersion}}
+        <strong>{{t admin.cluster.stackVersion}}: {{App.currentStackVersion}}
             (<a href="true" {{bindAttr class="view.isUpgradeAvailable::inactive"}}{{action "upgradeStack"}}>
             (<a href="true" {{bindAttr class="view.isUpgradeAvailable::inactive"}}{{action "upgradeStack"}}>
             {{#if view.isUpgradeAvailable}}{{t admin.cluster.upgradeAvailable}}: {{upgradeVersion}}
             {{#if view.isUpgradeAvailable}}{{t admin.cluster.upgradeAvailable}}: {{upgradeVersion}}
             {{else}} {{t admin.cluster.upgradeUnavailable}}
             {{else}} {{t admin.cluster.upgradeUnavailable}}

+ 2 - 1
ambari-web/app/utils/db.js

@@ -53,7 +53,8 @@ App.db.cleanUp = function () {
     },
     },
     'Installer' : {},
     'Installer' : {},
     'AddHost' : {},
     'AddHost' : {},
-    'AddService' : {}
+    'AddService' : {},
+    'StackUpgrade' : {}
   };
   };
   console.log("In cleanup./..");
   console.log("In cleanup./..");
   localStorage.setObject('ambari', App.db.data);
   localStorage.setObject('ambari', App.db.data);

+ 2 - 0
ambari-web/app/views.js

@@ -49,6 +49,7 @@ require('views/main/host/metrics/network');
 require('views/main/host/metrics/processes');
 require('views/main/host/metrics/processes');
 require('views/main/admin');
 require('views/main/admin');
 require('views/main/admin/cluster');
 require('views/main/admin/cluster');
+require('views/main/admin/stack_upgrade');
 require('views/main/admin/advanced');
 require('views/main/admin/advanced');
 require('views/main/admin/advanced/password');
 require('views/main/admin/advanced/password');
 require('views/main/admin/audit');
 require('views/main/admin/audit');
@@ -120,4 +121,5 @@ require('views/wizard/step7_view');
 require('views/wizard/step8_view');
 require('views/wizard/step8_view');
 require('views/wizard/step9_view');
 require('views/wizard/step9_view');
 require('views/wizard/step10_view');
 require('views/wizard/step10_view');
+require('views/wizard/stack_upgrade/step1_view');
 require('views/loading');
 require('views/loading');

+ 2 - 5
ambari-web/app/views/main/admin/cluster.js

@@ -22,9 +22,6 @@ App.MainAdminClusterView = Em.View.extend({
   templateName: require('templates/main/admin/cluster'),
   templateName: require('templates/main/admin/cluster'),
 
 
   isUpgradeAvailable: function(){
   isUpgradeAvailable: function(){
-    return this.get('controller.upgradeVersion').replace(/HDP-/, '') > this.get('controller.currentVersion').replace(/HDP-/, '');
-  }.property('controller.upgradeVersion', 'controller.currentVersion'),
-  didInsertElement: function(){
-    this.get('controller').updateUpgradeVersion();
-  }
+    return this.get('controller.upgradeVersion').replace(/HDP-/, '') > App.currentStackVersion.replace(/HDP-/, '');
+  }.property('controller.upgradeVersion', 'App.currentStackVersion')
 });
 });

Some files were not shown because too many files changed in this diff