You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by lp...@apache.org on 2017/09/05 09:41:22 UTC
[27/50] [abbrv] ambari git commit: AMBARI-21715. Upgrade History Is
too Verbose (alexantonenko)
AMBARI-21715. Upgrade History Is too Verbose (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/84ab2eb4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/84ab2eb4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/84ab2eb4
Branch: refs/heads/feature-branch-AMBARI-21307
Commit: 84ab2eb406159609ea10c7279d7f268163ecf527
Parents: 3fd4004
Author: Alex Antonenko <aa...@hortonworks.com>
Authored: Thu Aug 31 19:04:39 2017 +0300
Committer: Alex Antonenko <aa...@hortonworks.com>
Committed: Thu Aug 31 19:04:39 2017 +0300
----------------------------------------------------------------------
.../main/admin/stack_and_upgrade_controller.js | 14 +-
ambari-web/app/messages.js | 2 +
ambari-web/app/styles/stack_versions.less | 37 ++++++
.../admin/stack_upgrade/upgrade_history.hbs | 49 +++++--
.../admin/stack_upgrade/upgrade_options.hbs | 44 +++----
.../admin/stack_upgrade/upgrade_history_view.js | 53 +++++---
.../stack_upgrade/upgrade_history_view_test.js | 129 ++++++++++---------
7 files changed, 216 insertions(+), 112 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 5c96251..7a3ec20 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -1100,7 +1100,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
}.property().volatile(),
isInUpgradeWizard: isInUpgradeWizard,
showPreUpgradeChecks: App.get('supports.preUpgradeCheck') && !isInUpgradeWizard,
- versionText: preUpgradeShow ? Em.I18n.t('admin.stackVersions.version.preUpgrade.bodyMsg.version').format(version.get('displayName')) : isInUpgradeWizard ? '' : Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.version').format(version.get('displayName')),
+ versionText: self.getVersionText( preUpgradeShow, isInUpgradeWizard, version ),
selectMethod: function (event) {
if (isInUpgradeWizard || !event.context.get('allowed') || event.context.get('isPrecheckFailed')) return;
var selectedMethod = event.context;
@@ -1221,6 +1221,18 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
});
},
+ getVersionText: function (preUpgradeShow, isInUpgradeWizard, version) {
+ if ( preUpgradeShow ){
+ return Em.I18n.t('admin.stackVersions.version.preUpgrade.bodyMsg.version').format(version.get('displayName'));
+ }
+ else{
+ if ( isInUpgradeWizard ){
+ return '';
+ }
+ return Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.version').format(version.get('displayName'));
+ }
+ },
+
/**
* open upgrade options from upgrade wizard
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index caaca95..a2b9960 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -351,6 +351,8 @@ Em.I18n.translations = {
'common.rolling': 'Rolling',
'common.express': 'Express',
'common.hostOrdered': 'Host Ordered',
+ 'common.repository': 'Repository',
+ 'common.repositoryType': 'Repository Type',
'common.rolling.downgrade': 'Rolling Downgrade',
'common.express.downgrade': 'Express Downgrade',
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/ambari-web/app/styles/stack_versions.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/stack_versions.less b/ambari-web/app/styles/stack_versions.less
index 8bd5835..5914348 100644
--- a/ambari-web/app/styles/stack_versions.less
+++ b/ambari-web/app/styles/stack_versions.less
@@ -751,3 +751,40 @@
}
}
}
+
+#upgrade-summary-table {
+ .wide-column {
+ width: 14%;
+ }
+ .accordion-group {
+ border-right: none;
+ padding-left:20px;
+ }
+ .accordion-heading {
+ background-color: transparent;
+ }
+ .accordion-toggle {
+ padding: 5px;
+ display: inline-block;
+ float: left;
+ line-height: 10px;
+ margin-left: -20px;
+ cursor: pointer;
+ }
+ .accordion-body {
+ min-width: 350px;
+ .accordion-inner{
+ padding-top:10px;
+ .label{
+ padding: 5px 15px;
+ &.available{
+ background-color: #468847;
+ }
+ }
+ }
+ .service-name {
+ text-align: left;
+ min-width: 70px;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/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 85fa4c0..1287a82 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
@@ -51,33 +51,62 @@
<tr>
<th>{{t common.direction}}</th>
<th>{{t common.type}}</th>
- <th>{{t common.service}}</th>
- <th>{{t common.version}}</th>
+ <th class="wide-column">{{t common.repository}}</th>
+ <th class="wide-column">{{t common.repositoryType}}</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>
+ <tbody class="accordion" id="versionsAccordion">
{{#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"}}>
+ <td class="name accordion-group">
+ <span class="trim_hostname accordion-heading">
+ <i class="icon-caret-right accordion-toggle"
+ data-toggle="collapse"
+ data-parent="#versionsAccordion"
+ {{bindAttr href="item.idHref"}}></i>
+ <a href="#" class="black"
+ {{action "showUpgradeHistoryRecord" item.stackUpgradeHistoryItem target="view"}}>
{{unbound item.directionLabel}}
</a>
</span>
+ <div class="accordion-body collapse" {{bindAttr id="item.id"}}>
+ <div class="accordion-inner">
+ {{#each service in item.services}}
+ <div class="row service-version-info">
+ <div class="col-xs-4 service-name">
+ {{service.displayName}}
+ </div>
+ <div class="col-xs-3">
+ <span class="label available">
+ {{service.fromVersion}}
+ </span>
+ </div>
+ <div class="col-xs-2">
+ <i class="icon-arrow-right"></i>
+ </div>
+ <div class="col-xs-3">
+ <span class="label available">
+ {{service.toVersion}}
+ </span>
+ </div>
+ </div>
+ {{/each}}
+ </div>
+ </div>
</td>
<td>
<span>{{item.upgradeTypeLabel}}</span>
</td>
- <td>
- <span>{{item.serviceName}}</span>
+ <td class="wide-column">
+ <span>{{item.repositoryName}}</span>
</td>
- <td>
- <span>{{item.version}}</span>
+ <td class="wide-column">
+ <span>{{item.repositoryType}}</span>
</td>
<td>
<span>{{item.startTimeLabel}}</span>
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
index ad1703c..0e4e105 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
@@ -62,24 +62,24 @@
{{/unless}}
{{/each}}
</div>
-
- <div class="text tolerance-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.tolerance}}
- <i class="glyphicon glyphicon-question-sign failure-tolerance-tooltip" data-toggle="tooltip"></i>
-
- <div>
+ {{#if view.upgradeShow}}
+ <div class="text tolerance-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.tolerance}}
+ <i class="glyphicon glyphicon-question-sign failure-tolerance-tooltip" data-toggle="tooltip"></i>
+ <div>
{{view App.CheckboxView
- labelClassNames="tolerance-option"
- labelTranslate="admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2"
- checkedBinding="view.parentView.skipSCFailures"}}
- </div>
- <div>
+ labelClassNames="tolerance-option"
+ labelTranslate="admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2"
+ checkedBinding="view.parentView.skipSCFailures"}}
+ </div>
+ <div>
{{view App.CheckboxView
- labelClassNames="tolerance-option"
- labelTranslate="admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1"
- checkedBinding="view.parentView.skipComponentFailures"
+ labelClassNames="tolerance-option"
+ labelTranslate="admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1"
+ checkedBinding="view.parentView.skipComponentFailures"
}}
+ </div>
</div>
- </div>
+ {{/if}}
<div class="alert alert-warning">{{t admin.stackVersions.version.upgrade.alertsWarning}}</div>
</div>
{{/if}}
@@ -90,14 +90,12 @@
{{t admin.stackVersions.version.upgrade.upgradeOptions.loading}}
</div>
</div>
- {{#if view.upgradeShow}}
<div class="text tolerance-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.tolerance}}
- <i class="icon-question-sign failure-tolerance-tooltip" data-toggle="tooltip"></i>
- <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipSCFailures"}}
- {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2}}</label>
- <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipComponentFailures"}}
- {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1}}</label>
- </div>
- <div class="alert alert-warning">{{t admin.stackVersions.version.upgrade.alertsWarning}}</div>
+ <i class="icon-question-sign failure-tolerance-tooltip" data-toggle="tooltip"></i>
+ <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipSCFailures"}}
+ {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2}}</label>
+ <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipComponentFailures"}}
+ {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1}}</label>
+ </div>
+ <div class="alert alert-warning">{{t admin.stackVersions.version.upgrade.alertsWarning}}</div>
{{/if}}
-{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/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 39e0d6b..252e7b0 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
@@ -125,23 +125,39 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
processForDisplay: function (content) {
var upgradeMethods = this.get('upgradeMethods');
- return arrayUtils.flatten(content.map(item => {
- const versions = item.get('versions');
- const method = upgradeMethods.findProperty('type', item.get('upgradeType'));
- return Object.keys(versions).map(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
- };
- });
- }));
+ var repoVersions = App.RepositoryVersion.find();
+ return content.map(function(item) {
+ var versions = item.get('versions');
+ var repoVersion = repoVersions.findProperty('repositoryVersion', item.get('associatedVersion'));
+ var method = upgradeMethods.findProperty('type', item.get('upgradeType'));
+ return {
+ idHref: '#' + item.get('upgradeId'),
+ id: item.get('upgradeId'),
+ repositoryName: repoVersion.get('displayName'),
+ repositoryType: repoVersion.get('type').toLowerCase().capitalize(),
+ 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,
+ services: this.getRepoServicesForDisplay(versions)
+ };
+ }, this);
+ },
+
+ getRepoServicesForDisplay: function(versions) {
+ return Object.keys(versions).map(function(serviceName) {
+ var fromVersion = App.RepositoryVersion.find(versions[serviceName].from_repository_id);
+ var toVersion = App.RepositoryVersion.find(versions[serviceName].to_repository_id);
+ return {
+ name: serviceName,
+ displayName: fromVersion.get('stackServices').findProperty('name', serviceName).get('displayName'),
+ fromVersion: fromVersion.get('stackServices').findProperty('name', serviceName).get('latestVersion'),
+ toVersion: toVersion.get('stackServices').findProperty('name', serviceName).get('latestVersion')
+ }
+ });
},
paginationLeftClass: function () {
@@ -191,6 +207,9 @@ App.MainAdminStackUpgradeHistoryView = App.TableView.extend(App.TableServerViewM
didInsertElement: function () {
this.observesCategories();
+ this.$(".accordion").on("show hide", function (e) {
+ $(e.target).siblings(".accordion-heading").find("i.accordion-toggle").toggleClass('icon-caret-right icon-caret-down');
+ });
},
observesCategories: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/84ab2eb4/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 de60c74..0de24f9 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
@@ -94,9 +94,11 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
describe("#didInsertElement()", function() {
beforeEach(function () {
sinon.stub(view, 'observesCategories', Em.K);
+ sinon.stub(view, '$').returns({on: Em.K});
});
afterEach(function () {
view.observesCategories.restore();
+ view.$.restore();
});
it("observesCategories is called once", function() {
view.didInsertElement();
@@ -169,61 +171,6 @@ 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;
@@ -231,14 +178,18 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
var content = [
Em.Object.create({
direction: 'UPGRADE',
+ upgradeId: 1,
upgradeType: 'ROLLING',
+ associatedVersion: '1.1',
startTime: timestamp,
endTime: timestamp + 3600 * 1000,
versions: {s1: {}}
}),
Em.Object.create({
direction: 'DOWNGRADE',
+ upgradeId: 2,
upgradeType: 'HOST_ORDERED',
+ associatedVersion: '1.1',
startTime: timestamp,
endTime: timestamp + 3600 * 1000 * 2,
versions: {s1: {}}
@@ -247,16 +198,24 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
var expected = [
Em.Object.create({
+ idHref: '#1',
+ id: 1,
+ repositoryName: 'hdp-1.1',
+ repositoryType: 'Type1',
+ services: [],
directionLabel: Em.I18n.t('common.upgrade'),
upgradeTypeLabel: Em.I18n.t('common.rolling'),
- duration: '1.00 hours',
- serviceName: 'S1'
+ duration: '1.00 hours'
}),
Em.Object.create({
+ idHref: '#2',
+ id: 1,
+ repositoryName: 'hdp-1.1',
+ repositoryType: 'Type1',
+ services: [],
directionLabel: Em.I18n.t('common.downgrade'),
upgradeTypeLabel: Em.I18n.t('common.hostOrdered'),
- duration: '2.00 hours',
- serviceName: 'S1'
+ duration: '2.00 hours'
})
];
@@ -265,6 +224,14 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
var processedContent;
beforeEach(function () {
+ sinon.stub(view, 'getRepoServicesForDisplay').returns([]);
+ sinon.stub(App.RepositoryVersion, 'find').returns([
+ Em.Object.create({
+ repositoryVersion: '1.1',
+ displayName: 'hdp-1.1',
+ type: 'TYPE1'
+ })
+ ]);
sinon.stub(App, 'dateTimeWithTimeZone', function (ts) {
return ts - 3600 * 1000 * 2
});
@@ -273,11 +240,13 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
afterEach(function () {
App.dateTimeWithTimeZone.restore();
+ view.getRepoServicesForDisplay.restore();
+ App.RepositoryVersion.find.restore();
});
it('2 items mapped', function () {
expect(processedContent.length).to.be.equal(2);
- })
+ });
expected.forEach(function (item, index) {
@@ -295,9 +264,47 @@ describe('App.MainAdminStackUpgradeHistoryView', function () {
it('End Time for upgrade in progress is `Not finished`', function () {
- processedContent = view.processForDisplay([Em.Object.create({endTime: -1, versions: {s1:{}}})]);
+ processedContent = view.processForDisplay([Em.Object.create({
+ endTime: -1,
+ versions: {s1: {}},
+ associatedVersion: '1.1'
+ })]);
expect(processedContent[0].endTimeLabel).to.be.equal('Not finished');
});
});
+ describe('#getRepoServicesForDisplay', function() {
+ beforeEach(function() {
+ sinon.stub(App.RepositoryVersion, 'find').returns(Em.Object.create({
+ stackServices: [
+ Em.Object.create({
+ name: 'S1',
+ displayName: 's1',
+ latestVersion: '1.1'
+ })
+ ]
+ }));
+ });
+ afterEach(function() {
+ App.RepositoryVersion.find.restore();
+ });
+
+ it('should return services with versions', function() {
+ var versions = {
+ S1: {
+ from_repository_id: 1,
+ to_repository_id: 2
+ }
+ };
+ expect(view.getRepoServicesForDisplay(versions)).to.be.eql([
+ {
+ name: 'S1',
+ displayName: 's1',
+ fromVersion: '1.1',
+ toVersion: '1.1'
+ }
+ ]);
+ });
+ });
+
});