Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E69B9200BB6 for ; Fri, 4 Nov 2016 11:27:41 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id E53D8160AE9; Fri, 4 Nov 2016 10:27:41 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id DAFAF160AE8 for ; Fri, 4 Nov 2016 11:27:40 +0100 (CET) Received: (qmail 21273 invoked by uid 500); 4 Nov 2016 10:27:40 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 21264 invoked by uid 99); 4 Nov 2016 10:27:39 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Nov 2016 10:27:39 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C86E2E04EE; Fri, 4 Nov 2016 10:27:39 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: onechiporenko@apache.org To: commits@ambari.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: ambari git commit: AMBARI-18798. Long rack_id value causes sql-error (onechiporenko) Date: Fri, 4 Nov 2016 10:27:39 +0000 (UTC) archived-at: Fri, 04 Nov 2016 10:27:42 -0000 Repository: ambari Updated Branches: refs/heads/trunk 0c165e336 -> d348b65e0 AMBARI-18798. Long rack_id value causes sql-error (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d348b65e Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d348b65e Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d348b65e Branch: refs/heads/trunk Commit: d348b65e023d17589767c7a2c45700bf4ad674ed Parents: 0c165e3 Author: Oleg Nechiporenko Authored: Fri Nov 4 12:01:28 2016 +0200 Committer: Oleg Nechiporenko Committed: Fri Nov 4 12:01:28 2016 +0200 ---------------------------------------------------------------------- ambari-web/app/messages.js | 2 +- ambari-web/app/styles/application.less | 12 ++++------ ambari-web/app/templates/main/host/summary.hbs | 2 +- ambari-web/app/utils/validator.js | 3 ++- .../common/helpers/format_word_break_view.js | 8 +++---- ambari-web/test/utils/validator_test.js | 22 ++++++++++++++++++ .../helpers/format_word_break_view_test.js | 24 +++++++++++--------- 7 files changed, 48 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index b0ebddd..fa5e1bb 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -408,7 +408,7 @@ Em.I18n.translations = { 'hostPopup.reccomendation.beforeDecommission': '{0} Maintenance Mode is pre required for decommissioning.', 'hostPopup.setRackId.success': 'Updating rack id to \"{0}\". It may take a few moments for it to get refreshed.', 'hostPopup.setRackId.error': 'Updating the rack id failed.', - 'hostPopup.setRackId.invalid': 'Should start with a forward slash it may include alphanumeric chars, dots, dashes and forward slashes.', + 'hostPopup.setRackId.invalid': 'Should start with a forward slash it may include alphanumeric chars, dots, dashes and forward slashes. Should be less than 255 symbols.', 'hostPopup.RackId': 'Rack', 'hostPopup.recommendation.beforeDecommission': '{0} Maintenance Mode is pre required for decommissioning.', http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/app/styles/application.less ---------------------------------------------------------------------- diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less index 64b5797..821c087 100644 --- a/ambari-web/app/styles/application.less +++ b/ambari-web/app/styles/application.less @@ -4663,6 +4663,11 @@ ul.list-inline li { width: 100% } +.rack-id { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} .big-arrow-right { background-repeat: no-repeat; @@ -4672,13 +4677,6 @@ ul.list-inline li { .advanced-header-table { table-layout: fixed; - td { - &.rack-id { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } .sorting_asc { background: url(data:image/png;base64,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) no-repeat right 50%; } http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/app/templates/main/host/summary.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/host/summary.hbs b/ambari-web/app/templates/main/host/summary.hbs index 1ec0ac6..ea4be05 100644 --- a/ambari-web/app/templates/main/host/summary.hbs +++ b/ambari-web/app/templates/main/host/summary.hbs @@ -154,7 +154,7 @@
 {{view.content.ip}}
{{t common.rack}}:
-
 {{view.content.rack}} +
 {{formatWordBreak view.content.rack}} {{#isAuthorized "HOST.TOGGLE_MAINTENANCE"}} http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/app/utils/validator.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/validator.js b/ambari-web/app/utils/validator.js index 48ba4dd..c7248bb 100644 --- a/ambari-web/app/utils/validator.js +++ b/ambari-web/app/utils/validator.js @@ -269,8 +269,9 @@ module.exports = { }, isValidRackId: function(path) { + var _path = '' + path; // See app/message.js:hostPopup.setRackId.invalid - return /^\/[/.\w-]+$/.test(path); + return /^\/[/.\w-]+$/.test(_path) && _path.length < 255; }, /** http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/app/views/common/helpers/format_word_break_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/helpers/format_word_break_view.js b/ambari-web/app/views/common/helpers/format_word_break_view.js index d33692c..8601cdc 100644 --- a/ambari-web/app/views/common/helpers/format_word_break_view.js +++ b/ambari-web/app/views/common/helpers/format_word_break_view.js @@ -31,7 +31,7 @@ App.FormatWordBreakView = Em.View.extend({ if (str.length <= maxBlockLength || str.contains('-') || str.contains(' ')) { return str; } - return str.split(/(?=[A-Z])/).join(''); + return str.split(/(?=[A-Z])/).join(''); }, /** @@ -40,13 +40,13 @@ App.FormatWordBreakView = Em.View.extend({ result: function() { var content = this.get('content') || ''; var self = this; - ['.', '_'].forEach(function (delimiter) { + ['.', '_', '/'].forEach(function (delimiter) { if (content.contains(delimiter)) { content = content.split(delimiter).map(function (substr) { return self._splitLongSubStrings(substr); - }).join(delimiter + ''); + }).join(delimiter + ''); } }); - return content.replace(/(){2,}/, ''); // no need for double + return content.replace(/(){2,}/g, ''); // no need for double }.property('content') }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/test/utils/validator_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/utils/validator_test.js b/ambari-web/test/utils/validator_test.js index 2a30993..4f069e0 100644 --- a/ambari-web/test/utils/validator_test.js +++ b/ambari-web/test/utils/validator_test.js @@ -498,4 +498,26 @@ describe('validator', function () { }) }); }); + + describe('#isValidRackId()', function () { + + [ + {v: '', e: false}, + {v: 'a', e: false}, + {v: '1', e: false}, + {v: '/', e: false}, + {v: '/a', e: true}, + {v: '/1', e: true}, + {v: '/-', e: true}, + {v: '/' + (new Array(255)).join('a'), m: 'Value bigger than 255 symbols', e: false} + ].forEach(function (test) { + + it(test.m || test.v, function () { + expect(validator.isValidRackId(test.v)).to.be.equal(test.e); + }) + + }); + + }); + }); http://git-wip-us.apache.org/repos/asf/ambari/blob/d348b65e/ambari-web/test/views/common/helpers/format_word_break_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/common/helpers/format_word_break_view_test.js b/ambari-web/test/views/common/helpers/format_word_break_view_test.js index 40154af..f656fbe 100644 --- a/ambari-web/test/views/common/helpers/format_word_break_view_test.js +++ b/ambari-web/test/views/common/helpers/format_word_break_view_test.js @@ -30,17 +30,19 @@ describe('App.FormatWordBreakView', function () { Em.A([ {content: 'abc', expected: 'abc'}, - {content: 'a.bc', expected: 'a.bc'}, - {content: 'a.b.c', expected: 'a.b.c'}, - {content: 'a.123456789A123456789B12345.c', expected: 'a.123456789A123456789B12345.c'}, - {content: 'a_bc', expected: 'a_bc'}, - {content: 'a_b_c', expected: 'a_b_c'}, - {content: 'a_123456789A123456789B12345_c', expected: 'a_123456789A123456789B12345_c'}, - {content: 'a.123456789A123456789B12345_c', expected: 'a.123456789A123456789B12345_c'}, - {content: 'a.123456789a123456789b12345_c', expected: 'a.123456789a123456789b12345_c'}, - {content: 'a.123456789a-23456789b12345_c', expected: 'a.123456789a-23456789b12345_c'}, - {content: 'a.123456789a 23456789b12345_c', expected: 'a.123456789a 23456789b12345_c'}, - {content: 'a.123456789a123456789_c', expected: 'a.123456789a123456789_c'}, + {content: 'a.bc', expected: 'a.bc'}, + {content: 'a.b.c', expected: 'a.b.c'}, + {content: 'a/bc', expected: 'a/bc'}, + {content: 'a/b/c', expected: 'a/b/c'}, + {content: 'a.123456789A123456789B12345.c', expected: 'a.123456789A123456789B12345.c'}, + {content: 'a_bc', expected: 'a_bc'}, + {content: 'a_b_c', expected: 'a_b_c'}, + {content: 'a_123456789A123456789B12345_c', expected: 'a_123456789A123456789B12345_c'}, + {content: 'a.123456789A123456789B12345_c', expected: 'a.123456789A123456789B12345_c'}, + {content: 'a.123456789a123456789b12345_c', expected: 'a.123456789a123456789b12345_c'}, + {content: 'a.123456789a-23456789b12345_c', expected: 'a.123456789a-23456789b12345_c'}, + {content: 'a.123456789a 23456789b12345_c', expected: 'a.123456789a 23456789b12345_c'}, + {content: 'a.123456789a123456789_c', expected: 'a.123456789a123456789_c'}, ]).forEach(function (test) { var message = 'content: {0}, expected: {1}'.format(JSON.stringify(test.content), JSON.stringify(test.expected)); it(message, function () {