Forráskód Böngészése

AMBARI-1145. Cluster Management refactoring. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1431830 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 éve
szülő
commit
44efbaf96c
55 módosított fájl, 276 hozzáadás és 905 törlés
  1. 0 5
      ambari-web/app/controllers.js
  2. 1 1
      ambari-web/app/controllers/global/cluster_controller.js
  3. 0 23
      ambari-web/app/controllers/main/admin/item.js
  4. 0 23
      ambari-web/app/controllers/main/alert.js
  5. 0 23
      ambari-web/app/controllers/main/charts/horizon_chart.js
  6. 0 2
      ambari-web/app/controllers/main/host/details.js
  7. 0 23
      ambari-web/app/controllers/main/rack.js
  8. 46 36
      ambari-web/app/controllers/main/service/info/configs.js
  9. 0 24
      ambari-web/app/controllers/main/service/info/metrics.js
  10. 2 1
      ambari-web/app/controllers/wizard.js
  11. 5 0
      ambari-web/app/controllers/wizard/step10_controller.js
  12. 3 0
      ambari-web/app/controllers/wizard/step7_controller.js
  13. 23 34
      ambari-web/app/controllers/wizard/step8_controller.js
  14. 2 2
      ambari-web/app/controllers/wizard/step9_controller.js
  15. 14 14
      ambari-web/app/data/config_mapping.js
  16. 6 6
      ambari-web/app/data/config_properties.js
  17. 19 1
      ambari-web/app/data/mock/step3_pollData.js
  18. 1 1
      ambari-web/app/data/service_components.js
  19. 1 0
      ambari-web/app/initialize.js
  20. 5 3
      ambari-web/app/messages.js
  21. 0 1
      ambari-web/app/models.js
  22. 3 0
      ambari-web/app/models/component.js
  23. 13 7
      ambari-web/app/models/service.js
  24. 0 20
      ambari-web/app/models/service_metrics.js
  25. 6 2
      ambari-web/app/routes/installer.js
  26. 2 2
      ambari-web/app/styles/application.less
  27. 11 4
      ambari-web/app/styles/apps.less
  28. 1 1
      ambari-web/app/templates/main.hbs
  29. 0 25
      ambari-web/app/templates/main/admin/security.hbs
  30. 9 1
      ambari-web/app/templates/main/apps/list_row.hbs
  31. 0 21
      ambari-web/app/templates/main/charts/horizon.hbs
  32. 0 34
      ambari-web/app/templates/main/charts/horizon/chart.hbs
  33. 0 20
      ambari-web/app/templates/main/host/audit.hbs
  34. 0 20
      ambari-web/app/templates/main/service/info/metrics.hbs
  35. 0 47
      ambari-web/app/templates/main/test.hbs
  36. 5 0
      ambari-web/app/templates/wizard/step10.hbs
  37. 2 2
      ambari-web/app/templates/wizard/step9HostTasksLogPopup.hbs
  38. 19 7
      ambari-web/app/utils/data_table.js
  39. 1 1
      ambari-web/app/utils/helper.js
  40. 0 9
      ambari-web/app/views.js
  41. 0 80
      ambari-web/app/views/common/combobox.js
  42. 0 24
      ambari-web/app/views/common/empty_view.js
  43. 0 23
      ambari-web/app/views/main/admin/security.js
  44. 24 0
      ambari-web/app/views/main/apps/item/dag_view.js
  45. 0 17
      ambari-web/app/views/main/apps/runs_view.js
  46. 11 3
      ambari-web/app/views/main/apps_view.js
  47. 0 25
      ambari-web/app/views/main/charts/horizon.js
  48. 0 101
      ambari-web/app/views/main/charts/horizon/chart.js
  49. 0 26
      ambari-web/app/views/main/host/audit.js
  50. 22 2
      ambari-web/app/views/main/host/summary.js
  51. 0 23
      ambari-web/app/views/main/hosts.js
  52. 0 72
      ambari-web/app/views/main/service/info/audit.js
  53. 0 26
      ambari-web/app/views/main/service/info/metrics.js
  54. 0 24
      ambari-web/app/views/main/test.js
  55. 19 13
      ambari-web/pom.xml

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

@@ -26,7 +26,6 @@ require('controllers/installer');
 require('controllers/global/background_operations_controller');
 require('controllers/main');
 require('controllers/main/admin');
-require('controllers/main/admin/item');
 require('controllers/main/admin/user');
 require('controllers/main/admin/user/edit');
 require('controllers/main/admin/user/create');
@@ -35,11 +34,9 @@ require('controllers/main/admin/authentication');
 require('controllers/main/service');
 require('controllers/main/service/item');
 require('controllers/main/service/info/summary');
-require('controllers/main/service/info/metrics');
 require('controllers/main/service/info/configs');
 require('controllers/main/service/info/audit');
 require('controllers/main/service/add_controller');
-require('controllers/main/alert');
 require('controllers/main/host');
 require('controllers/main/host/details');
 require('controllers/main/host/add_controller');
@@ -59,8 +56,6 @@ require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_mapsRu
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_reducesRunning');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_memHeapUsed');
 require('controllers/main/charts/heatmap');
-require('controllers/main/charts/horizon_chart');
-require('controllers/main/rack');
 require('controllers/main/apps_controller');
 require('controllers/main/apps/item_controller');
 require('controllers/wizard/slave_component_groups_controller');

+ 1 - 1
ambari-web/app/controllers/global/cluster_controller.js

@@ -184,7 +184,7 @@ App.ClusterController = Em.Controller.extend({
     }
 
     var self = this;
-    var runsUrl = App.testMode ? "/data/apps/runs.json" : App.apiPrefix + "/jobhistory/workflow";
+    var runsUrl = App.testMode ? "/data/apps/runs.json" : App.apiPrefix + "/jobhistory/workflow?orderBy=startTime&sortDir=DESC&limit=" + App.maxRunsForAppBrowser;
 
     App.HttpClient.get(runsUrl, App.runsMapper, {
       complete:function (jqXHR, textStatus) {

+ 0 - 23
ambari-web/app/controllers/main/admin/item.js

@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainAdminItemController = Em.Controller.extend({
-  name:'mainAdminItemController'
-})

+ 0 - 23
ambari-web/app/controllers/main/alert.js

@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainAlertController = Em.ArrayController.extend({
-  name:'mainAlertController'
-})

+ 0 - 23
ambari-web/app/controllers/main/charts/horizon_chart.js

@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainChartsHorizonChartController = Em.Controller.extend({
-  name: 'mainChartsHorizonChartController'
-});

+ 0 - 2
ambari-web/app/controllers/main/host/details.js

@@ -147,8 +147,6 @@ App.MainHostDetailsController = Em.Controller.extend({
 
           console.log('Send request for STOPPING successfully');
 
-
-
           if(App.testMode){
             component.set('workStatus', App.Component.Status.stopping);
             setTimeout(function(){

+ 0 - 23
ambari-web/app/controllers/main/rack.js

@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainRackController = Em.ArrayController.extend({
-  name:'mainRackController'
-})

+ 46 - 36
ambari-web/app/controllers/main/service/info/configs.js

@@ -278,6 +278,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
           serviceConfigObj.isReconfigurable = (configProperty.isReconfigurable !== undefined) ? configProperty.isReconfigurable : true;
           serviceConfigObj.isVisible = (configProperty.isVisible !== undefined) ? configProperty.isVisible : true;
           serviceConfigObj.unit = (configProperty.unit !== undefined) ? configProperty.unit : undefined;
+          serviceConfigObj.description = (configProperty.description !== undefined) ? configProperty.description : undefined;
 
         }
         serviceConfigObj.displayType = this.get('configs').someProperty('name', index) ? this.get('configs').findProperty('name', index).displayType : null;
@@ -315,16 +316,14 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
           globalConfigs.pushObject(serviceConfigObj);
         } else if (!this.get('configMapping').someProperty('name', index)) {
           if (advancedConfig.someProperty('name', index)) {
-
-            if (_tag.siteName !== this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName')).filename) {
-              serviceConfigObj.isVisible = false;
-            }
             serviceConfigObj.id = 'site property';
             serviceConfigObj.serviceName = this.get('content.serviceName');
             serviceConfigObj.category = 'Advanced';
             serviceConfigObj.displayName = index;
             serviceConfigObj.displayType = 'advanced';
-            // localServiceConfigs.configs.pushObject(serviceConfigObj);
+            if (advancedConfig.findProperty('name', index).filename) {
+              serviceConfigObj.filename = advancedConfig.findProperty('name', index).filename;
+            }
             serviceConfigs.pushObject(serviceConfigObj);
           } else {
             serviceConfigObj.id = 'conf-site';
@@ -431,7 +430,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var message;
     var value;
     var flag;
-    if (this.get('content.isStopped') === true) {
+    if ((this.get('content.serviceName') !== 'HDFS' && this.get('content.isStopped') === true) || (this.get('content.serviceName') === 'HDFS') && this.get('content.isStopped') === true && App.Service.find('MAPREDUCE').get('isStopped')) {
       var result = this.saveServiceConfigProperties();
       flag = result.flag;
       if (flag === true) {
@@ -444,8 +443,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       }
 
     } else {
-      header = 'Stop Service';
-      message = 'Stop the service and wait till it stops completely. Thereafter you can apply configuration changes';
+      if (this.get('content.serviceName') !== 'HDFS') {
+        header = 'Stop Service';
+        message = 'Stop the service and wait till it stops completely. Thereafter you can apply configuration changes';
+      } else {
+        header = 'Stop Services';
+        message = 'Stop HDFS and MapReduce. Wait till both of them stops completely. Thereafter you can apply configuration changes';
+      }
     }
     App.ModalPopup.show({
       header: header,
@@ -525,13 +529,21 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var customConfigResult = this.setCustomConfigs();
     result.flag = customConfigResult.flag;
     result.value = customConfigResult.value;
+    /*
+    For now, we are skipping validation checks to see if the user is overriding already-defined paramaters, as
+    the user needs this flexibility.  We may turn this back on as a warning in the future...
     if (result.flag !== true) {
       result.message = 'Error in custom configuration. Some properties entered in the box are already exposed on this page';
       return result;
     }
+    */
     result.flag = result.flag && this.createConfigurations();
     if (result.flag === true) {
-      result.flag = this.applyCreatedConfToService('new');
+      if (this.get('content.serviceName') !== 'HDFS') {
+        result.flag = this.applyCreatedConfToService(this.get('content.serviceName'));
+      } else {
+        result.flag = this.applyCreatedConfToService(this.get('content.serviceName')) && this.applyCreatedConfToService('MAPREDUCE');
+      }
     } else {
       result.message = 'Faliure in applying service configuration';
     }
@@ -778,8 +790,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     this.get('globalConfigs').forEach(function (_globalSiteObj) {
       // do not pass any globalConfigs whose name ends with _host or _hosts
       if (!/_hosts?$/.test(_globalSiteObj.name)) {
-        // append "m" to JVM memory options
-        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name)) {
+        // append "m" to JVM memory options except for hadoop_heapsize
+        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && _globalSiteObj.name !== 'hadoop_heapsize') {
           _globalSiteObj.value += "m";
         }
         globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value;
@@ -819,11 +831,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     return {"type": siteName, "tag": tagName, "properties": siteProperties};
   },
 
-  applyCreatedConfToService: function (configStatus) {
+  applyCreatedConfToService: function (serviceName) {
     var result;
     var clusterName = App.router.getClusterName();
-    var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName');
-    var data = this.getConfigForService(configStatus);
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + serviceName;
+    var data = this.getConfigForService(serviceName);
     var realData = data;
     $.ajax({
       type: 'PUT',
@@ -853,22 +865,17 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     return result;
   },
 
-  getConfigForService: function (config) {
+  getConfigForService: function (serviceName) {
     var data = {config: {}};
     this.get('serviceConfigTags').forEach(function (_serviceTag) {
-      if (config === 'new') {
-        if (_serviceTag.siteName === 'core-site') {
-          if (this.get('content.serviceName') === 'HDFS') {
-            data.config[_serviceTag.siteName] = _serviceTag.newTagName;
-          } else {
-            data.config[_serviceTag.siteName] = _serviceTag.tagName;
-          }
-        } else {
+      if (_serviceTag.siteName === 'core-site') {
+        if (this.get('content.serviceName') === 'HDFS') {
           data.config[_serviceTag.siteName] = _serviceTag.newTagName;
+        } else {
+          data.config[_serviceTag.siteName] = _serviceTag.tagName;
         }
-      }
-      else if (config = 'previous') {
-        data.config[_serviceTag.siteName] = _serviceTag.tagName;
+      } else if (this.get('content.serviceName') === serviceName) {
+        data.config[_serviceTag.siteName] = _serviceTag.newTagName;
       }
     }, this);
     return data;
@@ -884,28 +891,31 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
         keyValue.forEach(function (_keyValue) {
           console.log("The value of the keyValue is: " + _keyValue.trim());
           _keyValue = _keyValue.trim();
-          var key = _keyValue.match(/(.+)=/);
-          var value = _keyValue.match(/=(.*)/);
-          if (key) {
-            // Check dat entered config is allowed to reconfigure
-            if (this.get('uiConfigs').filterProperty('filename', _site.name + '.xml').someProperty('name', key[1])) {
+
+          // split on the first = encountered (the value may contain ='s)
+          var matches = _keyValue.match(/^([^=]+)=(.*)$/);
+          if (matches) {
+            var key = matches[1];
+            var value = matches[2];
+            // Check that entered config is allowed to reconfigure
+            if (this.get('uiConfigs').filterProperty('filename', _site.name + '.xml').someProperty('name', key)) {
               var property = {
                 siteProperty: null,
                 displayNames: []
               };
               if (_site.name !== 'core-site') {
-                property.siteProperty = key[1];
+                property.siteProperty = key;
 
-                if (this.get('configMapping').someProperty('name', key[1])) {
-                  this.setPropertyDisplayNames(property.displayNames, this.get('configMapping').findProperty('name', key[1]).templateName);
+                if (this.get('configMapping').someProperty('name', key)) {
+                  this.setPropertyDisplayNames(property.displayNames, this.get('configMapping').findProperty('name', key).templateName);
                 }
                 siteProperties.push(property);
                 flag = false;
               } else {
-                this.setSiteProperty(key[1], value[1], _site.name + '.xml');
+                this.setSiteProperty(key, value, _site.name + '.xml');
               }
             } else if (flag) {
-              this.setSiteProperty(key[1], value[1], _site.name + '.xml');
+              this.setSiteProperty(key, value, _site.name + '.xml');
             }
           }
         }, this);

+ 0 - 24
ambari-web/app/controllers/main/service/info/metrics.js

@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainServiceInfoMetricsController = Em.Controller.extend({
-  name: 'mainServiceInfoMetricsController',
-  content: 'Metrics'
-})

+ 2 - 1
ambari-web/app/controllers/wizard.js

@@ -21,9 +21,10 @@ var App = require('app');
 
 App.WizardController = Em.Controller.extend({
 
-  isStepDisabled: [],
+  isStepDisabled: null,
 
   init: function () {
+    this.set('isStepDisabled', []);
     this.clusters = App.Cluster.find();
     this.isStepDisabled.pushObject(Ember.Object.create({
       step: 1,

+ 5 - 0
ambari-web/app/controllers/wizard/step10_controller.js

@@ -21,6 +21,11 @@ var App = require('app');
 App.WizardStep10Controller = Em.Controller.extend({
   name: 'wizardStep10Controller',
   clusterInfo: [],
+
+  isNagiosRestartRequired: function() {
+    return App.db.getSelectedServiceNames().contains('NAGIOS') && this.get('content.controllerName') !== 'installerController';
+  }.property(),
+
   clearStep: function () {
     this.get('clusterInfo').clear();
   },

+ 3 - 0
ambari-web/app/controllers/wizard/step7_controller.js

@@ -350,6 +350,8 @@ App.WizardStep7Controller = Em.Controller.extend({
 
   submit: function () {
     if (!this.get('isSubmitDisabled')) {
+      App.router.send('next');
+      /*
       var result = {};
       result = this.validateCustomConfig();
       if (result.flag === true) {
@@ -357,6 +359,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       } else {
         this.showCustomConfigErrMsg(result.value);
       }
+      */
     }
   }
 

+ 23 - 34
ambari-web/app/controllers/wizard/step8_controller.js

@@ -136,18 +136,16 @@ App.WizardStep8Controller = Em.Controller.extend({
         // Hack for templeton.zookeeper.hosts
         if (value !== null) {   // if the property depends on more than one template name like <templateName[0]>/<templateName[1]> then don't proceed to the next if the prior is null or not found in the global configs
           if (name === "templeton.zookeeper.hosts" || name === 'hbase.zookeeper.quorum') {
+            // globValue is an array of ZooKeeper Server hosts
             var zooKeeperPort = '2181';
-            if (typeof globValue === 'string') {
-              var temp = [];
-              temp.push(globValue);
-              globValue = temp;
-            }
             if (name === "templeton.zookeeper.hosts") {
-              globValue.forEach(function (_host, index) {
-                globValue[index] = globValue[index] + ':' + zooKeeperPort;
-              }, this);
+              var zooKeeperServers = globValue.map(function (item) {
+                return item + ':' + zooKeeperPort;
+              }).join(',');
+              value = value.replace(_express, zooKeeperServers);
+            } else {
+              value = value.replace(_express, globValue.join(','));
             }
-            value = value.replace(_express, globValue.toString());
           } else {
             value = value.replace(_express, globValue);
           }
@@ -231,14 +229,17 @@ App.WizardStep8Controller = Em.Controller.extend({
       var keyValue = _site.value.split(/\n+/);
       if (keyValue) {
         keyValue.forEach(function (_keyValue) {
-          console.log("The value of the keyValue is: " + _keyValue.trim());
           _keyValue = _keyValue.trim();
-          var key = _keyValue.match(/(.+)=/);
-          var value = _keyValue.match(/=(.*)/);
-          if (key) {
-            this.setSiteProperty(key[1], value[1], _site.name + '.xml');
+          console.log("The value of the keyValue is: " + _keyValue);
+          // split on the first = encountered (the value may contain ='s)
+          var matches = _keyValue.match(/^([^=]+)=(.*)$/);
+          if (matches) {
+            var key = matches[1];
+            var value = matches[2];
+            if (key) {
+              this.setSiteProperty(key, value, _site.name + '.xml');
+            }
           }
-
         }, this);
       }
     }, this);
@@ -562,7 +563,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   },
 
   loadHiveMetaStoreValue: function (metaStoreComponent) {
-    var hiveHostName = this.get('content.masterComponentHosts').findProperty('display_name', 'Hive Server');
+    var hiveHostName = this.get('content.masterComponentHosts').findProperty('display_name', 'HiveServer2');
     metaStoreComponent.set('component_value', hiveHostName.hostName);
   },
 
@@ -1144,11 +1145,9 @@ App.WizardStep8Controller = Em.Controller.extend({
     this.get('globals').forEach(function (_globalSiteObj) {
       // do not pass any globals whose name ends with _host or _hosts
       if (!/_hosts?$/.test(_globalSiteObj.name)) {
-        // append "m" to JVM memory options
-        var value = null;
-        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name)) {
-          value = _globalSiteObj.value + "m";
-          globalSiteProperties[_globalSiteObj.name] = value;
+        // append "m" to JVM memory options except for hadoop_heapsize
+        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && _globalSiteObj.name !== 'hadoop_heapsize') {
+          globalSiteProperties[_globalSiteObj.name] =  _globalSiteObj.value + "m";
         } else {
           globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value;
         }
@@ -1169,11 +1168,9 @@ App.WizardStep8Controller = Em.Controller.extend({
         var properties = _group.properties;
         properties.forEach(function (_property) {
           if (!/_hosts?$/.test(_property.name)) {
-            // append "m" to JVM memory options
-            var value = null;
-            if (/_heapsize|_newsize|_maxnewsize$/.test(_property.name)) {
-              value = _property.value + "m";
-              globalSiteProperties[_property.name] = value;
+            // append "m" to JVM memory options except for hadoop_heapsize
+            if (/_heapsize|_newsize|_maxnewsize$/.test(_property.name) && _property.name !== 'hadoop_heapsize') {
+              globalSiteProperties[_property.name] = _property.value + "m";
             } else {
               globalSiteProperties[_property.name] = _property.storeValue;
             }
@@ -1283,10 +1280,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     configs.forEach(function (_configProperty) {
       hbaseProperties[_configProperty.name] = _configProperty.value;
     }, this);
-    var masterHosts = App.db.getMasterComponentHosts();
-    // TODO: should filter on "component" but that gives unexpected results
-    var zkServers = masterHosts.filterProperty('display_name', 'ZooKeeper').mapProperty('hostName');
-    hbaseProperties['hbase.zookeeper.quorum'] = zkServers.join(',');
     return {type: 'hbase-site', tag: 'version1', properties: hbaseProperties};
   },
 
@@ -1326,10 +1319,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     configs.forEach(function (_configProperty) {
       hiveProperties[_configProperty.name] = _configProperty.value;
     }, this);
-    hiveProperties['hive.metastore.uris'] = 'thrift://' + this.get('globals').findProperty('name', 'hivemetastore_host').value + ':9083';
-    hiveProperties['javax.jdo.option.ConnectionURL'] =
-      'jdbc:mysql://' + this.get('globals').findProperty('name', 'hive_mysql_hostname').value +
-        '/' + this.get('globals').findProperty('name', 'hive_database_name').value + '?createDatabaseIfNotExist=true';
     return {type: 'hive-site', tag: 'version1', properties: hiveProperties};
   },
 

+ 2 - 2
ambari-web/app/controllers/wizard/step9_controller.js

@@ -120,9 +120,9 @@ App.WizardStep9Controller = Em.Controller.extend({
     var hosts = new Ember.Set();
     for (var index in hostInfo) {
       var obj = Em.Object.create(hostInfo[index]);
-      obj.message = '';
+      //obj.message = '';
       obj.progress = 0;
-      obj.status = 'info';
+      obj.status = (obj.status) ? obj.status : 'info';
       obj.tasks = [];
       obj.logTasks = [];
       hosts.add(obj);

+ 14 - 14
ambari-web/app/data/config_mapping.js

@@ -344,7 +344,7 @@ module.exports = [
     "name": "javax.jdo.option.ConnectionURL",
     "templateName": ["hive_mysql_hostname", "hive_database_name"],
     "foreignKey": null,
-    "value": "jdbc:mysql://<templateName[0]>\/<templateName[1]>?createDatabaseIfNotExist=true",
+    "value": "jdbc:mysql://<templateName[0]>/<templateName[1]>?createDatabaseIfNotExist=true",
     "filename": "hive-site.xml"
   },
   {
@@ -428,14 +428,14 @@ module.exports = [
     "name": "mapred.hosts",
     "templateName": ["hadoop_conf_dir", "mapred_hosts_include"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/<templateName[1]>",
+    "value": "<templateName[0]>/<templateName[1]>",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapred.hosts.exclude",
     "templateName": ["hadoop_conf_dir", "mapred_hosts_exclude"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/<templateName[1]>",
+    "value": "<templateName[0]>/<templateName[1]>",
     "filename": "mapred-site.xml"
   },
   {
@@ -449,7 +449,7 @@ module.exports = [
     "name": "mapred.job.tracker.persist.jobstatus.dir",
     "templateName": ["hadoop_conf_dir"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/health_check",
+    "value": "<templateName[0]>/health_check",
     "filename": "mapred-site.xml"
   },
   {
@@ -526,28 +526,28 @@ module.exports = [
     "name": "mapreduce.jobtracker.kerberos.principal",
     "templateName": ["kerberos_domain"],
     "foreignKey": null,
-    "value": "jt\/_HOST@<templateName[0]>",
+    "value": "jt/_HOST@<templateName[0]>",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapreduce.tasktracker.kerberos.principal",
     "templateName": ["kerberos_domain"],
     "foreignKey": null,
-    "value": "tt\/_HOST@<templateName[0]>",
+    "value": "tt/_HOST@<templateName[0]>",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapreduce.jobtracker.keytab.file",
     "templateName": ["keytab_path"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/jt.service.keytab",
+    "value": "<templateName[0]>/jt.service.keytab",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapreduce.tasktracker.keytab.file",
     "templateName": ["keytab_path"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/tt.service.keytab",
+    "value": "<templateName[0]>/tt.service.keytab",
     "filename": "mapred-site.xml"
   },
   {
@@ -568,21 +568,21 @@ module.exports = [
     "name": "mapreduce.jobhistory.kerberos.principal",
     "templateName": ["kerberos_domain"],
     "foreignKey": null,
-    "value": "jt\/_HOST@<templateName[0]>",
+    "value": "jt/_HOST@<templateName[0]>",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapreduce.jobhistory.keytab.file",
     "templateName": ["keytab_path"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/jt.service.keytab",
+    "value": "<templateName[0]>/jt.service.keytab",
     "filename": "mapred-site.xml"
   },
   {
     "name": "hbase.rootdir",
     "templateName": ["namenode_host", "hbase_hdfs_root_dir"],
     "foreignKey": null,
-    "value": "hdfs:\/\/<templateName[0]>:8020<templateName[1]>",
+    "value": "hdfs://<templateName[0]>:8020<templateName[1]>",
     "filename": "hbase-site.xml"
   },
   {
@@ -724,21 +724,21 @@ module.exports = [
     "name": "hbase.master.keytab.file",
     "templateName": ["keytab_path"],
     "foreignKey": null,
-    "value": "<templateName[0]>\/hm.service.keytab",
+    "value": "<templateName[0]>/hm.service.keytab",
     "filename": "hbase-site.xml"
   },
   {
     "name": "hbase.master.kerberos.principal",
     "templateName": ["kerberos_domain"],
     "foreignKey": null,
-    "value": "hm\/_HOST@<templateName[0]>",
+    "value": "hm/_HOST@<templateName[0]>",
     "filename": "hbase-site.xml"
   },
   {
     "name": "hbase.regionserver.kerberos.principal",
     "templateName": ["kerberos_domain"],
     "foreignKey": null,
-    "value": "rs\/_HOST@<templateName[0]>",
+    "value": "rs/_HOST@<templateName[0]>",
     "filename": "hbase-site.xml"
   },
   /*

+ 6 - 6
ambari-web/app/data/config_properties.js

@@ -1210,9 +1210,9 @@ module.exports =
     {
       "id": "puppet var",
       "name": "hcat_log_dir",
-      "displayName": "HCat Log Dir",
-      "description": "Directory for HCatalog log files",
-      "defaultValue": "/var/log/hcatalog",
+      "displayName": "WebHCat Log Dir",
+      "description": "Directory for WebHCat log files",
+      "defaultValue": "/var/log/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": true,
@@ -1223,9 +1223,9 @@ module.exports =
     {
       "id": "puppet var",
       "name": "hcat_pid_dir",
-      "displayName": "HCat PID Dir",
-      "description": "Directory in which the PID files for HCatalog processes will be created",
-      "defaultValue": "/var/run/hcatalog",
+      "displayName": "WebHCat PID Dir",
+      "description": "Directory in which the PID files for WebHCat processes will be created",
+      "defaultValue": "/var/run/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": true,

+ 19 - 1
ambari-web/app/data/mock/step3_pollData.js

@@ -1,3 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 module.exports = new Ember.Set([
   {
     name: '192.168.1.1',
@@ -78,4 +96,4 @@ module.exports = new Ember.Set([
     cpu: '4',
     memory: '8'
   }
-]);
+]);

+ 1 - 1
ambari-web/app/data/service_components.js

@@ -149,7 +149,7 @@ module.exports = new Ember.Set([
   {
     service_name: 'HIVE',
     component_name: 'HIVE_SERVER',
-    display_name: 'Hive Server',
+    display_name: 'HiveServer2',
     isMaster: true,
     isClient: false,
     description: ''

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

@@ -34,6 +34,7 @@ App.maxRetries = 3;
 App.bgOperationsUpdateInterval = 6000;
 App.componentsUpdateInterval = 6000;
 App.contentUpdateInterval = 15000;
+App.maxRunsForAppBrowser = 500;
 
 // this is to make sure that IE does not cache data when making AJAX calls to the server
 $.ajaxSetup({

+ 5 - 3
ambari-web/app/messages.js

@@ -113,7 +113,7 @@ Em.I18n.translations = {
 
   'installer.step3.header':'Confirm Hosts',
   'installer.step3.body':'Registering your hosts.<br>' +
-    'Please confirm the host list and remove any hosts you do not want to include the cluster.',
+    'Please confirm the host list and remove any hosts that you do not want to include in the cluster.',
   'installer.step3.hostLog.popup.header':'Registration log for {0}',
   'installer.step3.hosts.remove.popup.header':'Remove Hosts',
   'installer.step3.hosts.remove.popup.body':'Are you sure you want to remove the selected host(s)?',
@@ -131,7 +131,7 @@ Em.I18n.translations = {
   'installer.step5.header':'Assign Masters',
   'installer.step5.attention':' hosts not running master services',
   'installer.step5.body':'Assign master components to hosts you want to run them on.',
-  'installer.step5.body.hive':'<i class="icon-asterisks">&#10037</i> Hive Server, Hive Metastore, and WebHCat Server will be co-hosted on the same server.',
+  'installer.step5.body.hive':'<i class="icon-asterisks">&#10037</i> HiveServer2, Hive Metastore, and WebHCat Server will be co-hosted on the same server.',
 
   'installer.step6.header':'Assign Slaves and Clients',
   'installer.step6.body':'Assign slave and client components to hosts you want to run them on.<br/>Hosts that are assigned master components are shown with <i class=icon-asterisks>&#10037</i>. <br/>&quot;Client&quot; will install ',
@@ -158,7 +158,7 @@ Em.I18n.translations = {
 
   'installer.step10.header':'Summary',
   'installer.step10.body':'Here is the summary of the install process.',
-
+  'installer.step10.nagiosRestartRequired':'<b>Important!</b> Restarting Nagios service is required for the alerts and notifications to work properly.  After clicking on the Complete button to dismiss this wizard, go to Services -> Nagios to restart the Nagios service.',
 
   'form.create':'Create',
   'form.save':'Save',
@@ -391,6 +391,8 @@ Em.I18n.translations = {
 
   'apps.filters.customRunDate':'Run Date custom filter',
   'apps.dagCharts.popup':'DAG/Charts',
+  'apps.isRunning.popup.title':'Is running',
+  'apps.isRunning.popup.content':'Job is running now',
 
   'nagios.alerts.unavailable':'Alerts Unavailable'
 

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

@@ -29,7 +29,6 @@ require('models/service');
 require('models/component');
 require('models/service_config');
 require('models/service_audit');
-require('models/service_metrics');
 require('models/service/hdfs');
 require('models/service/mapreduce');
 require('models/service/hbase');

+ 3 - 0
ambari-web/app/models/component.js

@@ -76,6 +76,7 @@ App.Component.Status = {
   stopping: "STOPPING",
   stop_failed: "STOP_FAILED",
   start_failed: "START_FAILED",
+  install_failed: "INSTALL_FAILED",
 
   getKeyName:function(value){
     switch(value){
@@ -91,6 +92,8 @@ App.Component.Status = {
         return 'stop_failed';
       case this.start_failed:
         return 'start_failed';
+      case this.install_failed:
+         return 'install_failed';
     }
     return 'none';
   }

+ 13 - 7
ambari-web/app/models/service.js

@@ -52,14 +52,20 @@ App.Service = DS.Model.extend({
 
   isStopped: function () {
     var components = this.get('components');
-    return components.everyProperty('workStatus', App.Component.Status.stopped);
+    var flag = true;
+    components.forEach(function (_component) {
+      if (_component.get('workStatus') !== App.Component.Status.stopped && _component.get('workStatus') !== App.Component.Status.install_failed) {
+        flag = false;
+      }
+    }, this);
+    return flag;
   }.property('components.@each.workStatus'),
 
   isStarted: function () {
     var components = this.get('components').filterProperty('isMaster', true);
     return components.everyProperty('workStatus', App.Component.Status.started);
   }.property('components.@each.workStatus'),
-  isMaintained: function(){
+  isMaintained: function () {
     var maintainedServices = [
       "HDFS",
       "MAPREDUCE",
@@ -71,11 +77,11 @@ App.Service = DS.Model.extend({
       "PIG",
       "SQOOP"
     ];
-    for(var i in maintainedServices){
-      if(this.get('serviceName') == maintainedServices[i]) return true;
+    for (var i in maintainedServices) {
+      if (this.get('serviceName') == maintainedServices[i]) return true;
     }
   }.property('serviceName'),
-  isConfigurable:function(){
+  isConfigurable: function () {
     var configurableServices = [
       "HDFS",
       "MAPREDUCE",
@@ -88,8 +94,8 @@ App.Service = DS.Model.extend({
       "SQOOP",
       "NAGIOS"
     ];
-    for(var i in configurableServices){
-      if(this.get('serviceName') == configurableServices[i]) return true;
+    for (var i in configurableServices) {
+      if (this.get('serviceName') == configurableServices[i]) return true;
     }
   }.property('serviceName'),
   displayName: function () {

+ 0 - 20
ambari-web/app/models/service_metrics.js

@@ -1,20 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-var App = require('app');

+ 6 - 2
ambari-web/app/routes/installer.js

@@ -48,11 +48,15 @@ module.exports = Em.Route.extend({
                   break;
                 case 'CLUSTER_INSTALLING_3' :
                 case 'SERVICE_STARTING_3' :
-                  installerController.setCurrentStep('9');
+                  if(!installerController.get('isStep9')){
+                    installerController.setCurrentStep('9');
+                  }
                   App.db.data = currentClusterStatus.localdb;
                   break;
                 case 'CLUSTER_INSTALLED_4' :
-                  installerController.setCurrentStep('10');
+                  if(!installerController.get('isStep10')){
+                    installerController.setCurrentStep('10');
+                  }
                   App.db.data = currentClusterStatus.localdb;
                   break;
                 case 'CLUSTER_STARTED_5' :

+ 2 - 2
ambari-web/app/styles/application.less

@@ -680,9 +680,9 @@ a:focus {
     }
 
     .task-detail-ico-wrap{
-      font-size: 24px;
+      font-size: 14px;
       float:right;
-      margin-top:-26px;
+      margin-top:-20px;
 
       div{
         cursor: pointer;

+ 11 - 4
ambari-web/app/styles/apps.less

@@ -251,8 +251,13 @@
 /*Big modal window*/
 .big-modal {
   .modal {
+    top: -999px;
+    left: -999px;
+    .modal-body {
+      max-height: none;
+    }
     width: 1150px;
-    margin: -350px 0 0 -575px;
+    margin: 0;
   }
 
   .clear {
@@ -379,10 +384,12 @@
 
 @media all and (max-width: 1024px) {
   .big-modal {
-    .modal {
-      width: 980px;
-      margin: -290px 0 0 -495px;
+    #graph1 {
+      width: 300px;
     }
+    #graph2 {
+      width: 400px;
+  }
   }
 }
 

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

@@ -23,7 +23,7 @@
       <a class="brand" href="#" {{bindAttr title="clusterName"}}>
         {{clusterDisplayName}}
 
-        {{#view App.EmptyView controllerBinding="App.router.backgroundOperationsController"}}
+        {{#view Em.View tagName="" controllerBinding="App.router.backgroundOperationsController"}}
           {{#if allOperationsCount}}
             <span class="label operations-count" {{action "showPopup" target="controller"}}>{{allOperationsCount}}</span>
           {{/if}}

+ 0 - 25
ambari-web/app/templates/main/admin/security.hbs

@@ -1,25 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-<h5>{{t admin.security.title}}<i class="icon-question-sign"></i></h5>
-<div>
-  <button class="btn">
-    <i class="icon-lock"></i>
-    {{t admin.security.button.enable}}
-  </button>
-</div>

+ 9 - 1
ambari-web/app/templates/main/apps/list_row.hbs

@@ -25,4 +25,12 @@
 <td>{{unbound run.inputFormatted}}</td>
 <td>{{unbound run.outputFormatted}}</td>
 <td>{{unbound run.duration}}</td>
-<td ><span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span>&nbsp;{{#if run.isRunning}}<b class='red'>*</b>{{/if}}</td>
+{{#if run.isRunning}}
+<td rel="popover" {{translateAttr title="apps.isRunning.popup.title" data-content="apps.isRunning.popup.content"}}>
+    <span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span>
+    <b class='red'>*</b></td>
+{{else}}
+<td>
+    <span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span>
+</td>
+{{/if}}

+ 0 - 21
ambari-web/app/templates/main/charts/horizon.hbs

@@ -1,21 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-{{#each node in view.hosts}}
-  {{view App.MainChartsHorizonChartView hostBinding="node"}}
-{{/each}}

+ 0 - 34
ambari-web/app/templates/main/charts/horizon/chart.hbs

@@ -1,34 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-<div class="row">
-  <div {{bindAttr class="view.healthStatusClass"}}></div>
-  <div class="span10 hostName">{{view.host.hostName}}</div>
-  <div class="span1">
-    <a href="#"{{action toggleChart target="view"}}>{{view.showChartText}}</a>
-  </div>
-</div>
-
-<div {{bindAttr class="view.chartClass"}}>
-  <div class="attributes">
-    {{#each metric in view.usedMetrics}}
-      <p>{{metric}}</p>
-    {{/each}}
-  </div>
-  <div {{bindAttr id="view.chartContainerId"}}></div>
-</div>

+ 0 - 20
ambari-web/app/templates/main/host/audit.hbs

@@ -1,20 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-<h5>Audit</h5>
-

+ 0 - 20
ambari-web/app/templates/main/service/info/metrics.hbs

@@ -1,20 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-<h5>Metrics</h5>
-{{outlet}}

+ 0 - 47
ambari-web/app/templates/main/test.hbs

@@ -1,47 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-SERVICES
-
-<div>
-  <table style="padding:10px;">
-    <thead>
-    <tr>
-      <th>Service name</th>
-      <th>Component name</th>
-      <th>Component Status</th>
-      <th>Host name</th>
-    </tr>
-    </thead>
-    <tbody>
-    {{#each view.services }}
-    <tr colspan=4>
-      <td style="padding:10px;">{{displayName}}</td>
-    </tr>
-    {{#each components}}
-      <tr>
-        <td></td>
-        <td style="padding:10px;">{{componentName}}</td>
-        <td style="padding:10px;">{{state}}</td>
-        <td style="padding:10px;">{{host_name}}</td>
-      </tr>
-    {{/each}}
-    {{/each}}
-    </tbody>
-  </table>
-</div>

+ 5 - 0
ambari-web/app/templates/wizard/step10.hbs

@@ -17,6 +17,11 @@
 }}
 
 <h2>{{t installer.step10.header}}</h2>
+{{#if isNagiosRestartRequired}}
+  <div class="alert alert-danger">
+    {{t installer.step10.nagiosRestartRequired}}
+  </div>
+{{/if}}
 <div class="alert alert-info">
   {{t installer.step10.body}}
 </div>

+ 2 - 2
ambari-web/app/templates/wizard/step9HostTasksLogPopup.hbs

@@ -57,8 +57,8 @@
       <span class="task-detail-log-rolename" ></span>
     </div>
     <div class="task-detail-ico-wrap">
-      <div {{action "textTrigger" taskInfo target="view"}} class="task-detail-copy"><i class="icon-copy"></i></div>
-      <div {{action openTaskLogInDialog}} class="task-detail-open-dialog"><i class="icon-external-link"></i></div>
+      <div title="Click to Copy" {{action "textTrigger" taskInfo target="view"}} class="task-detail-copy"><i class="icon-copy"></i> Copy</div>
+      <div title="Open in New Window" {{action openTaskLogInDialog}} class="task-detail-open-dialog"><i class="icon-external-link"></i> Open</div>
     </div>
   </div>
   <div class="task-detail-log-info">

+ 19 - 7
ambari-web/app/utils/data_table.js

@@ -198,7 +198,7 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
             break;
           case 'ambari-bandwidth':
             if (cellValue && match) {
-              bandwidthFilter(cellValue, aData[inputFilters[i].iColumn]);
+              bandwidthFilter(cellValue, aData[inputFilters[i].iColumn], inputFilters[i].iColumn);
             }
             break;
           case 'star':
@@ -254,17 +254,27 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
         }
       }
 
-      function bandwidthFilter(rangeExp, rowValue) {
+      function bandwidthFilter(rangeExp, rowValue, iColumn) {
         //rowValue = $(rowValue).text();
-        var compareChar = rangeExp.charAt(0);
+        var compareChar = isNaN(rangeExp.charAt(0)) ? rangeExp.charAt(0) : false;
         var compareScale = rangeExp.charAt(rangeExp.length - 1);
-        var compareValue = isNaN(parseFloat(compareScale)) ? parseFloat(rangeExp.substr(1, rangeExp.length - 2)) : parseFloat(rangeExp.substr(1, rangeExp.length - 1));
+        var compareValue = compareChar ? parseFloat(rangeExp.substr(1, rangeExp.length)) : parseFloat(rangeExp.substr(0, rangeExp.length));
         switch (compareScale) {
+          case 'g':
+            compareValue *= 1073741824;
+            break;
           case 'm':
             compareValue *= 1048576;
             break;
-          default:
+          case 'k':
             compareValue *= 1024;
+            break;
+          default:
+            if (iColumn=='4') {
+              compareValue *= 1073741824;
+            } else {
+              compareValue *= 1024;
+            }
         }
         rowValue = (jQuery(rowValue).text()) ? jQuery(rowValue).text() : rowValue;
 
@@ -280,6 +290,9 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
             case 'MB':
               convertedRowValue = parseFloat(rowValue)*1048576;
               break;
+            case 'GB':
+              convertedRowValue = parseFloat(rowValue)*1073741824;
+              break;
           }
         }
         match = false;
@@ -290,11 +303,10 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
           case '>':
             if (compareValue < convertedRowValue) match = true;
             break;
+          case false:
           case '=':
             if (compareValue == convertedRowValue) match = true;
             break;
-          default:
-            match = false;
         }
       }
 

+ 1 - 1
ambari-web/app/utils/helper.js

@@ -287,7 +287,7 @@ App.format = {
       case 'MYSQL_SERVER':
         return 'MySQL Server';
       case 'HIVE_SERVER':
-        return 'Hive Server';
+        return 'HiveServer2';
       case 'HIVE_METASTORE':
         return 'Hive Metastore';
       case 'HIVE_CLIENT':

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

@@ -22,7 +22,6 @@
 
 require('views/application');
 require('views/common/chart');
-require('views/common/combobox');
 require('views/common/chart/pie');
 require('views/common/chart/linear');
 require('views/common/chart/linear_time');
@@ -31,10 +30,8 @@ require('views/common/metric');
 require('views/common/time_range');
 require('views/common/form/field');
 require('views/common/quick_view_link_view');
-require('views/common/empty_view');
 require('views/login');
 require('views/main');
-require('views/main/test');
 require('views/main/menu');
 require('views/main/charts');
 require('views/main/host');
@@ -42,7 +39,6 @@ require('views/main/host/details');
 require('views/main/host/menu');
 require('views/main/host/summary');
 require('views/main/host/metrics');
-require('views/main/host/audit');
 require('views/main/host/add_view');
 require('views/main/host/metrics/cpu');
 require('views/main/host/metrics/disk');
@@ -56,7 +52,6 @@ require('views/main/admin/advanced/password');
 require('views/main/admin/audit');
 require('views/main/admin/authentication');
 require('views/main/admin/menu');
-require('views/main/admin/security');
 require('views/main/admin/user');
 require('views/main/admin/user/create');
 require('views/main/admin/user/edit');
@@ -78,9 +73,7 @@ require('views/main/service/menu');
 require('views/main/service/item');
 require('views/main/service/info/menu');
 require('views/main/service/info/summary');
-require('views/main/service/info/metrics');
 require('views/main/service/info/configs');
-require('views/main/service/info/audit');
 require('views/main/service/info/metrics/hdfs/jvm_threads');
 require('views/main/service/info/metrics/hdfs/jvm_heap');
 require('views/main/service/info/metrics/hdfs/io');
@@ -106,8 +99,6 @@ require('views/main/service/info/metrics/hbase/hlog_split_size');
 require('views/main/service/add_view');
 require('views/main/charts/menu');
 require('views/main/charts/heatmap');
-require('views/main/charts/horizon');
-require('views/main/charts/horizon/chart');
 require('views/main/charts/heatmap/heatmap_rack');
 require('views/main/charts/heatmap/heatmap_host');
 require('views/main/charts/heatmap/heatmap_host_detail');

+ 0 - 80
ambari-web/app/views/common/combobox.js

@@ -1,80 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.Combobox = Em.Select.extend({
-  classNames:['combobox'],
-  placeholderText:false,
-  disabled:false,
-
-  input:function () {
-    return this.get('combobox').$element;
-  }.property('combobox'),
-
-  button:function () {
-    return this.get('combobox').$button;
-  }.property('combobox'),
-
-  toggleDisabling:function () {
-    var disabled = this.get('disabled') ? 'disabled' : false;
-
-    this.get('input').attr('disabled', disabled);
-    this.get('button').attr('disabled', disabled);
-
-  }.observes('disabled'),
-
-  content:function () {
-    // convert DS.RecordsArray to array;
-    var content = [
-      {}
-    ];
-    var racks = this.get('recordArray');
-
-    racks.forEach(function (cluster, index) {
-      content.push(cluster);
-    });
-
-    return content;
-  }.property('recordArray'),
-  clearTextFieldValue:function () {
-    var options = [];
-
-    this.get('combobox').$element.val('');
-    this.get('combobox').clearTarget();
-
-  },
-
-  test:function () {
-    console.warn("qwerty");
-  },
-
-  didInsertElement:function () {
-    this._super();
-
-    this.set('combobox', this.$().combobox({
-      template:'<div class="combobox-container"><input type="text" autocomplete="off" /><button class="add-on btn dropdown-toggle" data-dropdown="dropdown"><span class="caret"/><span class="combobox-clear"><i class="icon-remove"/></span></button></div>'
-    }).data('combobox'));
-
-    this.clearTextFieldValue(); // fix of script tags in
-
-    if (this.get('placeholderText')) {
-      this.get('combobox').$element.attr('placeholder', this.get('placeholderText'));
-    }
-  }
-});

+ 0 - 24
ambari-web/app/views/common/empty_view.js

@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.EmptyView = Em.View.extend({
-  tagName : ''
-});
-

+ 0 - 23
ambari-web/app/views/main/admin/security.js

@@ -1,23 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainAdminSecurityView = Em.View.extend({
-  templateName: require('templates/main/admin/security')
-});

+ 24 - 0
ambari-web/app/views/main/apps/item/dag_view.js

@@ -62,6 +62,29 @@ App.MainAppsItemDagView = Em.View.extend({
 
   }.observes('controller.content.loadAllJobs'),
 
+  resizeModal: function () {
+    var modal = $('.modal');
+    var body = $('body');
+    modal.find('.modal-body').first().css('max-height', 'none');
+    var modalHeight = modal.height() + 300;
+    var bodyHeight = body.height();
+    if (modalHeight > bodyHeight) {
+      modal.css('top', '20px');
+      $('.modal-body').height(bodyHeight - 180);
+    } else {
+      modal.css('top', (bodyHeight - modalHeight) / 2 + 'px');
+    }
+
+    var modalWidth = modal.width();
+    var bodyWidth = body.width();
+    if (modalWidth > bodyWidth) {
+      modal.css('left', '10px');
+      modal.width(bodyWidth - 20);
+    } else {
+      modal.css('left', (bodyWidth - modalWidth) / 2 + 'px');
+    }
+  },
+
   didInsertElement: function(){
     this.onLoad();
   },
@@ -101,6 +124,7 @@ App.MainAppsItemDagView = Em.View.extend({
     innerTable.fnSettings().oFeatures.bFilter = false;
     var dagSchema = this.get('controller.content.workflowContext');
     var jobs = this.get('jobs');
+    this.resizeModal();
     var graph = new DagViewer(false, 'dag_viewer')
         .setPhysicalParametrs(this.$().width(), 300, -800, 0.01)
         .setData(dagSchema, jobs)

+ 0 - 17
ambari-web/app/views/main/apps/runs_view.js

@@ -1,17 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */

+ 11 - 3
ambari-web/app/views/main/apps_view.js

@@ -206,10 +206,16 @@ App.MainAppsView = Em.View.extend({
   /**
    * Click on big star on the avg block
    */
-  avgStarClick: function() {
-    if (this.get('viewType') === 'starred') return;
-    this.set('whatAvgShow', !this.get('whatAvgShow'));
+  avgStarClick: function () {
     $('a.icon-star.a').toggleClass('active');
+    this.set('whatAvgShow', !this.get('whatAvgShow'));
+    if (!$('a.icon-star.a').hasClass('active')) {
+      if (this.get('viewType') === 'starred') {
+        this.set('viewType', 'filtered');
+      }
+    } else {
+      this.set('viewType', 'starred');
+    }
   },
   /**
    *
@@ -319,6 +325,7 @@ App.MainAppsView = Em.View.extend({
         this.showStared();
         break;
       case 'filtered':
+        this.get('starFilterViewInstance').set('value', '');
         table.fnSettings().oFeatures.bFilter = true;
         table.fnDraw();
         break;
@@ -331,6 +338,7 @@ App.MainAppsView = Em.View.extend({
    * jQuery dataTable init
    */
   createDataTable: function () {
+    $("[rel=popover]").popover({'placement': 'left', 'trigger': 'hover'});
     var smallStars = $('#dataTable .icon-star');
     var self = this;
     this.set('smallStarsIcons', smallStars);

+ 0 - 25
ambari-web/app/views/main/charts/horizon.js

@@ -1,25 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainChartsHorizonView = Em.View.extend({
-  templateName:require('templates/main/charts/horizon'),
-  classNames: ['horizon', 'charts'],
-  hosts: App.Host.find()
-});

+ 0 - 101
ambari-web/app/views/main/charts/horizon/chart.js

@@ -1,101 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainChartsHorizonChartView = App.ChartView.extend({
-  containerIdPrefix:'chartHistoricalMetrick',
-  classNames:['chart'],
-  chartOpened:0,
-  chartDrawn:false,
-  data:[],
-  healthStatusClass:function () {
-    return this.get('host.healthStatus') + ' ' + 'health';
-  }.property('host.healthStatus'),
-
-  templateName:require('templates/main/charts/horizon/chart'),
-
-  chartClass:function () {
-    return this.get('chartOpened') ? "display" : "noDisplay";
-  }.property('chartOpened'),
-
-  showChartText:function () {
-    return this.t("charts.horizon.chart." + (this.get('chartOpened') ? "hideText" : "showText"));
-  }.property('chartOpened'),
-
-  chartContainerSelector:function () {
-    return "#" + this.get('chartContainerId');
-  }.property('chartContainerId'),
-
-  chartContainerId:function () {
-    return this.get('containerIdPrefix') + this.get('host.id');
-  }.property('host.id'),
-
-  getNodeChartBlock:function () {
-    return $('#' + this.get('elementId') + ' div.chartBlock');
-  },
-
-  drawChart:function () {
-    this._super();
-  }.observes('dataLoaded'),
-
-  loadHorizonInfo:function () {
-    var hostInfo = App.HostInfo.create({});
-    var data = hostInfo.get('horizonData');
-    this.set('data', data);
-    this.set('dataLoaded', Math.random()*10);
-  },
-
-  usedMetrics: function(){
-    var thisW = this;
-    var attributes = [];
-    $.each(this.get('nodeAttributes'), function(){
-      attributes.push(thisW.t('metric.'+this));
-    });
-
-    return attributes;
-
-  }.property('nodeAttributes'),
-
-  nodeAttributes: function(){
-
-    console.warn("node attributes:", App.router.get('mainChartsController.metricWidget.chosenMetrics'));
-
-    return App.router.get('mainChartsController.metricWidget.chosenMetrics');
-  }.property('App.router.mainChartsController.metricWidget.chosenMetrics'),
-
-  toggleChart:function () {
-    var thisChart = this;
-    var host = this.get('host');
-    if (!this.get('chartOpened')) { // if chart will be opened
-      if (!this.get('chartDrawn')) {
-        this.drawPlot(); // parent method
-        this.set('chartDrawn', 1);
-      }
-
-      this.loadHorizonInfo();
-      this.addObserver('nodeAttributes', thisChart, 'drawPlot');
-      this.addObserver('nodeAttributes', thisChart, 'loadHorizonInfo');
-    } else { // if chart will be closed
-      this.removeObserver('nodeAttributes', thisChart, 'drawPlot');
-      this.removeObserver('nodeAttributes', thisChart, 'loadHorizonInfo');
-    }
-
-    this.set('chartOpened', 1 - this.get('chartOpened'));
-  }
-});

+ 0 - 26
ambari-web/app/views/main/host/audit.js

@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainHostAuditView = Em.View.extend({
-  templateName: require('templates/main/host/audit'),
-  content:function(){
-    return App.router.get('mainHostDetailsController.content');
-  }.property('App.router.mainHostDetailsController.content')
-});

+ 22 - 2
ambari-web/app/views/main/host/summary.js

@@ -132,13 +132,31 @@ App.MainHostSummaryView = Em.View.extend({
       return hostComponent;
     }.property('content', 'App.router.mainHostDetailsController.content'),
     workStatus: function(){
-      var workStatus = this.get('content.workStatus');
+      var componentName = this.get('content.componentName');
       var hostComponent = this.get('hostComponent');
+      if (App.router.get('backgroundOperationsController.allOperationsCount')) {
+        var task = App.router.get('backgroundOperationsController').getTasksByRole(componentName);
+        if(!Ember.empty(task)){
+          if (task[0].start_time == -1 && task[0].command == 'START') {
+            this.content.set('workStatus', App.HostComponent.Status.starting);
+            if (hostComponent) {
+              hostComponent.set('workStatus', App.HostComponent.Status.starting);
+            }
+          } else if (task[0].start_time == -1 && task[0].command == 'STOP') {
+            this.content.set('workStatus', App.HostComponent.Status.stopping);
+            if (hostComponent) {
+              hostComponent.set('workStatus', App.HostComponent.Status.stopping);
+            }
+          }
+        }
+      }
+
+      var workStatus = this.get('content.workStatus');
       if(hostComponent){
         workStatus = hostComponent.get('workStatus');
       }
       return workStatus;
-    }.property('content.workStatus', 'hostComponent.workStatus'),
+    }.property('hostComponent.workStatus', 'App.route.backgroundOperationsController.allOperationsCount'), //'content.workStatus',
     statusClass: function(){
       var statusClass = null;
       if(this.get('isDataNode')){
@@ -182,6 +200,8 @@ App.MainHostSummaryView = Em.View.extend({
      * Start blinking when host component is starting/stopping
      */
     startBlinking:function(){
+      this.$('.components-health').stop(true, true);
+      this.$('.components-health').css({opacity: 1.0});
       this.doBlinking();
     }.observes('workStatus'),
 

+ 0 - 23
ambari-web/app/views/main/hosts.js

@@ -1,23 +0,0 @@
-  /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainHostsView = Em.View.extend({
-    templateName: require('templates/main/hosts')
-});

+ 0 - 72
ambari-web/app/views/main/service/info/audit.js

@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-require('views/common/grid');
-
-App.MainServiceInfoAuditView = App.Grid.extend({
-//  audits: function() {
-//    return App.router.get('mainServiceInfoAuditController.content').get('serviceAudit');
-//  }.property('App.router.mainServiceInfoAuditController.content'),
-
-  prepareCollection:function () {
-    var audits = App.router.get('mainServiceInfoAuditController.content').get('serviceAudit');
-    console.warn(" AUDITS: ", audits);
-    this.set('collection', audits);
-  },
-
-  addFilters: function(field, values){
-    var filters = this.get('appliedFilters');
-    filters[field] = values;
-    var collection = App.router.get('mainServiceInfoAuditController.content').get('serviceAudit');
-    arrayCollection = collection.filter(function(data) {
-      var oneFilterFail = false;
-      $.each(filters, function(fieldname, values){
-        if(values.indexOf(data.get(fieldname)) == -1) {
-          return oneFilterFail = true;
-        }
-      });
-      return !oneFilterFail;
-    });
-
-    this.set('filteredArray', arrayCollection);
-  },
-
-  _collection: {className: App.ServiceAudit},
-  prepareColumns:function () {
-    this._super();
-
-    this.addColumn({
-      name:"date",
-      label:Em.I18n.t("admin.audit.grid.date")
-    });
-    this.addColumn({
-      name:"service.label",
-      label:Em.I18n.t("admin.audit.grid.service")
-    });
-    this.addColumn({
-      name:"operationName",
-      label:Em.I18n.t("admin.audit.grid.operationName")
-    });
-    this.addColumn({
-      name:"user.userName",
-      label:Em.I18n.t("admin.audit.grid.performedBy")
-    });
-  }
-});

+ 0 - 26
ambari-web/app/views/main/service/info/metrics.js

@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainServiceInfoMetricsView = Em.View.extend({
-  templateName: require('templates/main/service/info/metrics'),
-  alerts: function(){
-    return App.router.get('mainAlertController.content');
-  }.property('App.router.mainAlertController.content')
-});

+ 0 - 24
ambari-web/app/views/main/test.js

@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.MainTestView = Em.View.extend({
-  templateName: require('templates/main/test'),
-  services: App.Service.find()
-});

+ 19 - 13
ambari-web/pom.xml

@@ -16,6 +16,12 @@
    limitations under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.ambari</groupId>
+    <artifactId>ambari-project</artifactId>
+    <version>1.2.0-SNAPSHOT</version>
+    <relativePath>../ambari-project</relativePath>
+  </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.ambari</groupId>
   <artifactId>ambari-web</artifactId>
@@ -121,19 +127,19 @@
           </execution>
         </executions>
       </plugin>
-        <plugin>
-            <groupId>org.apache.rat</groupId>
-            <artifactId>apache-rat-plugin</artifactId>
-            <version>0.8</version>
-            <configuration>
-                <excludes>
-                    <exclude></exclude>
-                </excludes>
-                <includes>
-                    <include>pom.xml</include>
-                </includes>
-            </configuration>
-        </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>package.json</exclude>
+            <exclude>public/**</exclude>
+            <exclude>app/assets/**</exclude>
+            <exclude>vendor/**</exclude>
+            <exclude>node_modules/**</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 </project>