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'
