Repository: ambari Updated Branches: refs/heads/branch-2.1 eb06cff41 -> 580277d61
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/580277d6 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/580277d6 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/580277d6 Branch: refs/heads/branch-2.1 Commit: 580277d615508ff8f41335631081f4380815f5d4 Parents: eb06cff Author: aBabiichuk <[email protected]> Authored: Fri Jul 31 12:37:03 2015 +0300 Committer: aBabiichuk <[email protected]> Committed: Fri Jul 31 12:45:45 2015 +0300 ---------------------------------------------------------------------- ambari-web/app/data/HDP2.2/site_properties.js | 12 ------ .../configs/objects/service_config_property.js | 43 ++++++++++++-------- ambari-web/app/utils/config.js | 1 - ambari-web/test/utils/config_test.js | 6 ++- 4 files changed, 30 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/580277d6/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/580277d6/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 db09678..4665cfd 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; @@ -482,6 +476,21 @@ App.ServiceConfigProperty = Em.Object.extend({ }.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'), + + /** * Check config overrides and parent config overrides (if exist) * @returns {boolean} * @private http://git-wip-us.apache.org/repos/asf/ambari/blob/580277d6/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index 1e475f5..8b0b73f 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -1641,7 +1641,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/580277d6/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 de53c52..a409553 100644 --- a/ambari-web/test/utils/config_test.js +++ b/ambari-web/test/utils/config_test.js @@ -276,14 +276,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'
