You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2017/07/21 14:47:36 UTC
ambari git commit: AMBARI-21102. To/From Version Information is
Incorrect When Looking at Prior Upgrades (alexantonenko)
Repository: ambari
Updated Branches:
refs/heads/branch-feature-AMBARI-21450 3510647bc -> 804e21183
AMBARI-21102. To/From Version Information is Incorrect When Looking at Prior Upgrades (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/804e2118
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/804e2118
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/804e2118
Branch: refs/heads/branch-feature-AMBARI-21450
Commit: 804e211830c89ae76d0722cdf2176fdfedff83ca
Parents: 3510647
Author: Alex Antonenko <aa...@hortonworks.com>
Authored: Fri Jul 21 17:47:07 2017 +0300
Committer: Alex Antonenko <aa...@hortonworks.com>
Committed: Fri Jul 21 17:47:07 2017 +0300
----------------------------------------------------------------------
.../stack_version/stack_upgrade_history.js | 19 +--
.../admin/stack_upgrade/upgrade_history.hbs | 164 ++++++++++---------
ambari-web/app/utils/array_utils.js | 6 +-
.../admin/stack_upgrade/upgrade_history_view.js | 37 +++--
.../stack_upgrade/upgrade_history_view_test.js | 83 ++++++++--
5 files changed, 184 insertions(+), 125 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/804e2118/ambari-web/app/models/stack_version/stack_upgrade_history.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_version/stack_upgrade_history.js b/ambari-web/app/models/stack_version/stack_upgrade_history.js
index a0f5f3a..1973381 100644
--- a/ambari-web/app/models/stack_version/stack_upgrade_history.js
+++ b/ambari-web/app/models/stack_version/stack_upgrade_history.js
@@ -31,21 +31,10 @@ App.StackUpgradeHistory = DS.Model.extend({
endTime: DS.attr('number'),
startTime: DS.attr('number'),
createTime: DS.attr('number'),
-
- displayFromVersion: function() {
- var stackName = App.RepositoryVersion.find()
- .findProperty('repositoryVersion', this.get('fromVersion'))
- .get('stackVersionType');
- return stackName + '-' + this.get('fromVersion');
- }.property('fromVersion'),
-
- displayToVersion: function() {
- var stackName = App.RepositoryVersion.find()
- .findProperty('repositoryVersion', this.get('toVersion'))
- .get('stackVersionType');
- return stackName + '-' + this.get('toVersion');
- }.property('toVersion')
-
+ versions: DS.attr('object'),
+ displayStatus: function() {
+ return stringUtils.upperUnderscoreToText(this.get('requestStatus'));
+ }.property('requestStatus')
});
App.StackUpgradeHistory.FIXTURES = [];
http://git-wip-us.apache.org/repos/asf/ambari/blob/804e2118/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_history.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_history.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_history.hbs
index ef03cec..c4832c0 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_history.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_history.hbs
@@ -21,85 +21,87 @@
{{view App.SpinnerView}}
</div>
<div {{bindAttr class="view.isReady::hidden"}}>
- <div class="btn-group display-inline-block">
- <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
- <span class="filters-label">{{t common.filter}}: </span>
- <span>
- {{view.selectedCategory.label}}
- <span class="caret"></span>
- </span>
- </a>
- <ul class="dropdown-menu">
- {{#each category in view.categories}}
- <li>
- <a {{action selectCategory category target="view"}} href="#">
- {{category.label}}
- </a>
- </li>
- {{/each}}
- </ul>
- </div>
- <br/>
- <br/>
- <table class="table advanced-header-table table-striped" id="upgrade-summary-table">
- <thead>
- <th>{{t common.direction}}</th>
- <th>{{t common.type}}</th>
- <th>{{t common.from.version}}</th>
- <th>{{t common.to.version}}</th>
- <th>{{t common.start.time}}</th>
- <th>{{t common.duration}}</th>
- <th>{{t common.end.time}}</th>
- <th>{{t common.status}}</th>
- </thead>
- <tbody>
- {{#if view.pageContent}}
- {{#each item in view.pageContent}}
- <tr>
- <td class='name'>
- <span class="trim_hostname">
- <a href="#" class="black" {{action "showUpgradeHistoryRecord" item target="view"}}>
- {{unbound item.directionLabel}}
- </a>
- </span>
- </td>
- <td>
- <span>{{item.upgradeTypeLabel}}</span>
- </td>
- <td>
- <span>{{item.displayFromVersion}}</span>
- </td>
- <td>
- <span>{{item.displayToVersion}}</span>
- </td>
- <td>
- <span>{{item.startTimeLabel}}</span>
- </td>
- <td>
- <span>{{item.duration}}</span>
- </td>
- <td>
- <span>{{item.endTimeLabel}}</span>
- </td>
- <td>
- <span>{{item.requestStatus}}</span>
- </td>
- </tr>
- {{/each}}
- {{/if}}
- </tbody>
- </table>
- <div class="page-bar">
- <div class="items-on-page">
- <label>{{t common.show}}: {{view view.rowsPerPageSelectView selectionBinding="view.displayLength"}}</label>
- </div>
- <div class="info">{{view.paginationInfo}}</div>
- <div class="paging_two_button">
- <a {{bindAttr class="view.paginationLeftClass"}}{{action previousPage target="view"}}><i
- class="icon-arrow-left"></i></a>
- <a {{bindAttr class="view.paginationRightClass"}}{{action nextPage target="view"}}><i
- class="icon-arrow-right"></i></a>
- </div>
- </div>
+ <div class="row">
+ <h2 class="table-title col-sm-3">{{t common.upgrade.history}}</h2>
+ <div class="table-controls row span9 pull-right">
+ <div class="span12">
+ <div class="btn-group pull-right">
+ <a class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="#">
+ <span class="filters-label">{{t common.filter}}: </span>
+ <span>
+ {{view.selectedCategory.label}}
+ <span class="caret"></span>
+ </span>
+ </a>
+ <ul class="dropdown-menu">
+ {{#each category in view.categories}}
+ <li>
+ <a {{action selectCategory category target="view"}} href="#">
+ {{category.label}}
+ </a>
+ </li>
+ {{/each}}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <table class="table advanced-header-table table-hover" id="upgrade-summary-table">
+ <thead>
+ <tr>
+ <th>{{t common.direction}}</th>
+ <th>{{t common.type}}</th>
+ <th>{{t common.service}}</th>
+ <th>{{t common.version}}</th>
+ <th>{{t common.start.time}}</th>
+ <th>{{t common.duration}}</th>
+ <th>{{t common.end.time}}</th>
+ <th>{{t common.status}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if view.pageContent}}
+ {{#each item in view.pageContent}}
+ <tr>
+ <td class='name'>
+ <span class="trim_hostname">
+ <a href="#" class="black" {{action "showUpgradeHistoryRecord" item.stackUpgradeHistoryItem target="view"}}>
+ {{unbound item.directionLabel}}
+ </a>
+ </span>
+ </td>
+ <td>
+ <span>{{item.upgradeTypeLabel}}</span>
+ </td>
+ <td>
+ <span>{{item.serviceName}}</span>
+ </td>
+ <td>
+ <span>{{item.version}}</span>
+ </td>
+ <td>
+ <span>{{item.startTimeLabel}}</span>
+ </td>
+ <td>
+ <span>{{item.duration}}</span>
+ </td>
+ <td>
+ <span>{{item.endTimeLabel}}</span>
+ </td>
+ <td>
+ <span>{{item.displayStatus}}</span>
+ </td>
+ </tr>
+ {{/each}}
+ {{/if}}
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan="8">
+ {{view App.PaginationView}}
+ </td>
+ </tr>
+ </tfoot>
+ </table>
</div>
-</div>
\ No newline at end of file
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/804e2118/ambari-web/app/utils/array_utils.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/array_utils.js b/ambari-web/app/utils/array_utils.js
index 76914c4..75d5096 100644
--- a/ambari-web/app/utils/array_utils.js
+++ b/ambari-web/app/utils/array_utils.js
@@ -20,6 +20,8 @@ function _parseId(id) {
return id.replace(/[^\d|\.]/g, '').split('.').map(function (i) {return parseInt(i, 10);});
}
+var flatten = function(list) {return list.reduce(function(a, b) {return a.concat(Array.isArray(b) ? flatten(b) : b)}, [])};
+
module.exports = {
/**
*
@@ -83,6 +85,8 @@ module.exports = {
return 0
}
return lId1 > lId2 ? 1 : -1;
- }
+ },
+
+ flatten: flatten
};
http://git-wip-us.apache.org/repos/asf/ambari/blob/804e2118/ambari-web/app/views/main/admin/stack_upgrade/upgrade_history_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_history_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_history_view.js
index 79a4a25..3bcccdf 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_history_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_history_view.js
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-
var App = require('app');
var date = require('utils/date/date');
+var arrayUtils = require('utils/array_utils');
App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewMixin, {
@@ -98,8 +98,7 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
selectedCategory: Em.computed.findBy('categories', 'isSelected', true),
filteredCount: function () {
- var filteredContent = this.get('filteredContent').toArray();
- return filteredContent.length;
+ return this.get('filteredContent').map(function(item) {return Object.keys(item.get('versions') || {}).length}).reduce(Em.sum, 0);
}.property('filteredContent'),
/**
@@ -115,7 +114,7 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
}.property('selectedCategory'),
/**
- * sort and slice recieved content by pagination parameters
+ * sort and slice received content by pagination parameters
*/
pageContent: function () {
var content = this.get('filteredContent').toArray();
@@ -125,21 +124,23 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
}.property('filteredContent', 'startIndex', 'endIndex'),
processForDisplay: function (content) {
- var processedContent = [];
-
- content.forEach(function (item) {
- var direction = item.get('direction') === 'UPGRADE' ? Em.I18n.t('common.upgrade') : Em.I18n.t('common.downgrade');
+ return arrayUtils.flatten(content.map(function(item) {
+ var versions = item.get('versions');
var method = this.get('upgradeMethods').findProperty('type', item.get('upgradeType'));
- item.setProperties({
- directionLabel: direction,
- upgradeTypeLabel: method ? method.get('displayName') : method,
- startTimeLabel: date.startTime(App.dateTimeWithTimeZone(item.get('startTime'))),
- endTimeLabel: date.endTime(App.dateTimeWithTimeZone(item.get('endTime'))),
- duration: date.durationSummary(item.get('startTime'), item.get('endTime'))
+ return Object.keys(versions).map(function(serviceName) {
+ return {
+ version: versions[serviceName].to_repository_version,
+ serviceName: App.format.role(serviceName),
+ directionLabel: item.get('direction') === 'UPGRADE' ? Em.I18n.t('common.upgrade') : Em.I18n.t('common.downgrade'),
+ upgradeTypeLabel: method ? method.get('displayName') : method,
+ startTimeLabel: date.startTime(App.dateTimeWithTimeZone(item.get('startTime'))),
+ endTimeLabel: date.endTime(App.dateTimeWithTimeZone(item.get('endTime'))),
+ duration: date.durationSummary(item.get('startTime'), item.get('endTime')),
+ displayStatus: item.get('displayStatus'),
+ stackUpgradeHistoryItem: item
+ };
});
- processedContent.push(item);
- }, this);
- return processedContent;
+ }));
},
paginationLeftClass: function () {
@@ -293,7 +294,7 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
var associatedVersion = record.get('associatedVersion');
var type = this.get('upgradeMethods').findProperty('type', record.get('upgradeType'));
var displayName = type ? type.get('displayName') : App.format.normalizeName(record.get('upgradeType'));
- var i18nKeySuffix = direction === 'UPGRADE' ? 'upgrade' : 'downgrade';
+ var i18nKeySuffix = direction.toLowerCase() === 'upgrade' ? 'upgrade' : 'downgrade';
this.get('controller').set('currentUpgradeRecord', record);
http://git-wip-us.apache.org/repos/asf/ambari/blob/804e2118/ambari-web/test/views/main/admin/stack_upgrade/upgrade_history_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_history_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_history_view_test.js
index 2e4838c..9780470 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_history_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_history_view_test.js
@@ -135,13 +135,13 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
event = {
context: Em.Object.create({
isSelected: false,
- value: 'ALL',
+ value: 'ALL'
})
};
view.set('categories', [
Em.Object.create({
isSelected: true,
- value: 'UPGRADE_COMPLETED',
+ value: 'UPGRADE_COMPLETED'
}),
event.context
]);
@@ -170,6 +170,61 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
});
});
+ describe('#filteredCount', function () {
+
+ [
+ {
+ filteredContent: [
+ Em.Object.create({
+ versions: {s1: {}}
+ })
+ ],
+ m: '1 version',
+ e: 1
+ },
+ {
+ filteredContent: [
+ Em.Object.create({
+ versions: {s1: {}, s2: {}}
+ })
+ ],
+ m: '2 versions',
+ e: 2
+ },
+ {
+ filteredContent: [
+ Em.Object.create({
+ versions: {s1: {}, s2: {}}
+ }),
+ Em.Object.create({
+ versions: {s1: {}, s2: {}, s3: {}}
+ })
+ ],
+ m: '5 versions',
+ e: 5
+ }
+ ].forEach(function (test) {
+ describe(test.m, function () {
+ beforeEach(function () {
+ sinon.stub(view, 'get', function (key) {
+ if (key === 'filteredContent') {
+ return test.filteredContent;
+ }
+ return Em.get(this, key);
+ });
+ });
+ afterEach(function () {
+ view.get.restore();
+ });
+ it('should map versions', function () {
+ view.set('filteredContent', test.filteredContent);
+ expect(view.get('filteredCount')).to.be.equal(test.e);
+ });
+ });
+ });
+
+ });
+
describe('#processForDisplay', function () {
var timestamp = 1484698121448;
@@ -179,13 +234,15 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
direction: 'UPGRADE',
upgradeType: 'ROLLING',
startTime: timestamp,
- endTime: timestamp + 3600 * 1000
+ endTime: timestamp + 3600 * 1000,
+ versions: {s1: {}}
}),
Em.Object.create({
direction: 'DOWNGRADE',
upgradeType: 'HOST_ORDERED',
startTime: timestamp,
- endTime: timestamp + 3600 * 1000 * 2
+ endTime: timestamp + 3600 * 1000 * 2,
+ versions: {s1: {}}
})
];
@@ -193,16 +250,18 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
Em.Object.create({
directionLabel: Em.I18n.t('common.upgrade'),
upgradeTypeLabel: Em.I18n.t('common.rolling'),
- duration: '1.00 hours'
+ duration: '1.00 hours',
+ serviceName: 'S1'
}),
Em.Object.create({
directionLabel: Em.I18n.t('common.downgrade'),
upgradeTypeLabel: Em.I18n.t('common.hostOrdered'),
- duration: '2.00 hours'
+ duration: '2.00 hours',
+ serviceName: 'S1'
})
];
- var fields = ['directionLabel', 'upgradeTypeLabel', 'duration'];
+ var fields = ['directionLabel', 'upgradeTypeLabel', 'duration', 'serviceName'];
var processedContent;
@@ -217,13 +276,17 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
App.dateTimeWithTimeZone.restore();
});
+ it('2 items mapped', function () {
+ expect(processedContent.length).to.be.equal(2);
+ })
+
expected.forEach(function (item, index) {
describe('test #' + (index + 1), function () {
fields.forEach(function (field) {
it('#' + field, function () {
- expect(processedContent[index].get(field)).to.be.equal(item.get(field));
+ expect(processedContent[index][field]).to.be.equal(item.get(field));
});
});
@@ -233,8 +296,8 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
it('End Time for upgrade in progress is `Not finished`', function () {
- processedContent = view.processForDisplay([Em.Object.create({endTime: -1})]);
- expect(processedContent[0].get('endTimeLabel')).to.be.equal('Not finished');
+ processedContent = view.processForDisplay([Em.Object.create({endTime: -1, versions: {s1:{}}})]);
+ expect(processedContent[0].endTimeLabel).to.be.equal('Not finished');
});
});