Repository: ambari
Updated Branches:
  refs/heads/trunk d8921d38c -> bcf15099d


AMBARI-12601 Specifying heterogeneous storage does not work for DataNode 
Directories. (ababiichuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bcf15099
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bcf15099
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bcf15099

Branch: refs/heads/trunk
Commit: bcf15099dd36acd4c0be8e19b27b436044357b9b
Parents: d8921d3
Author: aBabiichuk <[email protected]>
Authored: Fri Jul 31 12:37:03 2015 +0300
Committer: aBabiichuk <[email protected]>
Committed: Fri Jul 31 12:37:03 2015 +0300

----------------------------------------------------------------------
 ambari-web/app/data/HDP2.2/site_properties.js   | 12 ------
 .../configs/objects/service_config_property.js  | 45 ++++++++++++--------
 ambari-web/app/utils/config.js                  |  1 -
 ambari-web/test/utils/config_test.js            |  6 ++-
 4 files changed, 31 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/bcf15099/ambari-web/app/data/HDP2.2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2.2/site_properties.js 
b/ambari-web/app/data/HDP2.2/site_properties.js
index 44d7a82..f8b88e7 100644
--- a/ambari-web/app/data/HDP2.2/site_properties.js
+++ b/ambari-web/app/data/HDP2.2/site_properties.js
@@ -37,7 +37,6 @@ var excludedConfigs = [
   'tez.runtime.intermediate-input.is-compressed',
   'tez.runtime.intermediate-output.compress.codec',
   'tez.runtime.intermediate-output.should-compress',
-  'dfs.datanode.data.dir',
   'hive.heapsize'
 ];
 var hdp22properties = hdp2properties.filter(function (item) {
@@ -98,17 +97,6 @@ hdp22properties.push(
   },
   {
     "id": "site property",
-    "name": "dfs.datanode.data.dir",
-    "displayName": "DataNode directories",
-    "defaultDirectory": "/hadoop/hdfs/data",
-    "displayType": "datanodedirs",
-    "category": "DATANODE",
-    "serviceName": "HDFS",
-    "filename": "hdfs-site.xml",
-    "index": 1
-  },
-  {
-    "id": "site property",
     "name": "hadoop.security.key.provider.path",
     "displayName": "hadoop.security.key.provider.path",
     "defaultValue": "",

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcf15099/ambari-web/app/models/configs/objects/service_config_property.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/objects/service_config_property.js 
b/ambari-web/app/models/configs/objects/service_config_property.js
index b259f56..2495e7c 100644
--- a/ambari-web/app/models/configs/objects/service_config_property.js
+++ b/ambari-web/app/models/configs/objects/service_config_property.js
@@ -304,7 +304,6 @@ App.ServiceConfigProperty = Em.Object.extend({
         return App.ServiceConfigRadioButtons;
         break;
       case 'directories':
-      case 'datanodedirs':
         return App.ServiceConfigTextArea;
         break;
       case 'content':
@@ -395,25 +394,20 @@ App.ServiceConfigProperty = Em.Object.extend({
           break;
         case 'checkbox':
           break;
-        case 'datanodedirs':
-          if (!validator.isValidDataNodeDir(value)) {
-            this.set('errorMessage', 'dir format is wrong, can be "[{storage 
type}]/{dir name}"');
-            isError = true;
-          }
-          else {
-            if (!validator.isAllowedDir(value)) {
-              this.set('errorMessage', 'Cannot start with "home(s)"');
-              isError = true;
-            }
-          }
-          break;
         case 'directories':
         case 'directory':
-          if (!validator.isValidDir(value)) {
-            this.set('errorMessage', 'Must be a slash or drive at the start');
-            isError = true;
+          if (this.get('configSupportHeterogeneous')) {
+            if (!validator.isValidDataNodeDir(value)) {
+              this.set('errorMessage', 'dir format is wrong, can be "[{storage 
type}]/{dir name}"');
+              isError = true;
+            }
+          } else {
+            if (!validator.isValidDir(value)) {
+              this.set('errorMessage', 'Must be a slash or drive at the 
start');
+              isError = true;
+            }
           }
-          else {
+          if (!isError) {
             if (!validator.isAllowedDir(value)) {
               this.set('errorMessage', 'Can\'t start with "home(s)"');
               isError = true;
@@ -475,6 +469,21 @@ App.ServiceConfigProperty = Em.Object.extend({
     } else {
       this.set('error', true);
     }
-  }.observes('value', 'isFinal', 'retypedPassword')
+  }.observes('value', 'isFinal', 'retypedPassword'),
+
+  /**
+   * defines specific directory properties that
+   * allows setting drive type before dir name
+   * ex: [SSD]/usr/local/my_dir
+   * @param config
+   * @returns {*|Boolean|boolean}
+   */
+  configSupportHeterogeneous: function() {
+    if (App.get('isHadoop22Stack')) {
+      return ['directories', 'directory'].contains(this.get('displayType')) && 
['dfs.datanode.data.dir'].contains(this.get('name'));
+    } else {
+      return false;
+    }
+  }.property('displayType', 'name', 'App.isHadoop22Stack')
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcf15099/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index fd6e5c8..1322ecd 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1205,7 +1205,6 @@ App.config = Em.Object.create({
     switch (displayType) {
       case 'directories':
       case 'directory':
-      case 'datanodedirs':
         rez = value.replace(/,/g, ' ').trim().split(/\s+/g).join(',');
         break;
       case 'host':

http://git-wip-us.apache.org/repos/asf/ambari/blob/bcf15099/ambari-web/test/utils/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/config_test.js 
b/ambari-web/test/utils/config_test.js
index ad6cc7b..bdd382f 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -227,14 +227,16 @@ describe('App.config', function () {
       },
       {
         config: {
-          displayType: 'datanodedirs',
+          displayType: 'directories',
+          name: 'dfs.datanode.data.dir',
           value: ' [DISK]/a [SSD]/b '
         },
         e: '[DISK]/a,[SSD]/b'
       },
       {
         config: {
-          displayType: 'datanodedirs',
+          displayType: 'directories',
+          name: 'dfs.datanode.data.dir',
           value: '/a,/b, /c\n/d,\n/e  /f'
         },
         e: '/a,/b,/c,/d,/e,/f'

Reply via email to