You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2018/03/01 18:23:21 UTC
[ambari] branch branch-feature-AMBARI-14714-ui updated:
[AMBARI-23006] upgrade admin (#471)
This is an automated email from the ASF dual-hosted git repository.
jonathanhurley pushed a commit to branch branch-feature-AMBARI-14714-ui
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714-ui by this push:
new 37a7f14 [AMBARI-23006] upgrade admin (#471)
37a7f14 is described below
commit 37a7f14afb5a8d1695a57975c36a2af0bf345be9
Author: Jason Golieb <j...@golieb.net>
AuthorDate: Thu Mar 1 13:23:18 2018 -0500
[AMBARI-23006] upgrade admin (#471)
---
.../main/admin/serviceGroups_controller.js | 118 ++++++++++++---
ambari-web/app/messages.js | 23 +--
ambari-web/app/styles/application.less | 168 ++++++++++++++++-----
ambari-web/app/templates.js | 1 +
ambari-web/app/templates/common/dashrow.hbs | 2 +-
.../app/templates/common/mpackComparison.hbs | 39 +++++
.../app/templates/main/admin/serviceGroups.hbs | 16 +-
.../{body.hbs => serviceGroupBody.hbs} | 0
.../{header.hbs => serviceGroupHeader.hbs} | 0
.../{menu.hbs => serviceGroupMenu.hbs} | 0
.../main/admin/serviceGroups/startUpgradePlan.hbs | 18 +--
.../{body.hbs => upgradeStatusBody.hbs} | 44 +++---
.../{body.hbs => upgradeStatusHeader.hbs} | 36 ++---
.../{menu.hbs => upgradeStatusMenu.hbs} | 6 +-
ambari-web/app/views.js | 11 +-
ambari-web/app/views/common/dashrow_view.js | 3 +
.../main/admin/serviceGroups/serviceGroup_view.js | 6 +-
.../main/admin/serviceGroups/upgradeStatus_view.js | 73 +++++++++
.../app/views/main/admin/serviceGroups_view.js | 42 ++++--
19 files changed, 456 insertions(+), 150 deletions(-)
diff --git a/ambari-web/app/controllers/main/admin/serviceGroups_controller.js b/ambari-web/app/controllers/main/admin/serviceGroups_controller.js
index 431b2c4..d4ff2ef 100644
--- a/ambari-web/app/controllers/main/admin/serviceGroups_controller.js
+++ b/ambari-web/app/controllers/main/admin/serviceGroups_controller.js
@@ -18,12 +18,6 @@
var App = require('app');
-const VersionType = {
- HOTFIX: 'hotfix',
- PATCH: 'patch',
- RELEASE: 'release'
-}
-
App.MainAdminServiceGroupsController = Em.Controller.extend(App.LocalStorage, {
name: 'mainAdminServiceGroupsController',
@@ -162,24 +156,98 @@ App.MainAdminServiceGroupsController = Em.Controller.extend(App.LocalStorage, {
}
],
- // /**
- // * data to load from local storage
- // */
- // dbPropsToLoad: [ ],
-
- // init: function () {
- // this.initDBProperties();
- // },
+ // upgrade: null,
+ upgrade: {
+ id: "upgrade-1",
+ currentStep: "prerequisites", //can be "prerequisites", "install", or "upgrade"
+ //currentStep: "install", //can be "prerequisites", "install", or "upgrade"
+ //currentStep: "upgrade", //can be "prerequisites", "install", or "upgrade"
+ history: [
+ {
+ name: "Event 1",
+ user: "Jason",
+ date: new Date(2018,1,1)
+ },
+ {
+ name: "Event 2",
+ user: "Jason",
+ date: new Date(2018,2,1)
+ },
+ {
+ name: "Event 3",
+ user: "Jason",
+ date: new Date(2017,3,1)
+ },
+ {
+ name: "Event 4",
+ user: "Jason",
+ date: new Date(2017,4,1)
+ },
+ {
+ name: "Event 5",
+ user: "Jason",
+ date: new Date(2017,5,1)
+ }
+ ],
+ mpacks: [
+ {
+ name: "Hortonworks Data Platform Core",
+ currentVersion: "2.6",
+ newVersion: "2.7",
+ services: [
+ {
+ name: "HDFS",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "Zookeeper",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "Zookeeper Client",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "MapReduce",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ }
+ ]
+ },
+ {
+ name: "Data Science and Machine Learning",
+ currentVersion: "2.1",
+ newVersion: "2.2",
+ services: [
+ {
+ name: "HDFS",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "Zookeeper",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "Zookeeper Client",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ },
+ {
+ name: "MapReduce",
+ currentVersion: "2.6",
+ newVersion: "3.0"
+ }
+ ]
+ }
+ ]
+ },
- // /**
- // * restore data from localStorage
- // */
- // initDBProperties: function () {
- // var props = this.getDBProperties(this.get('dbPropsToLoad'));
- // Em.keys(props).forEach(function (k) {
- // if (!Em.isNone(props[k])) {
- // this.set(k, props[k]);
- // }
- // }, this);
- // },
+ createPlan: function () { },
+ editPlan: function () { },
+ discardPlan: function () {}
});
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 057d9ba..d55cb46 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -90,6 +90,7 @@ Em.I18n.translations = {
'common.access':'Access',
'common.action':'Action',
'common.actions': 'Actions',
+ 'common.activity': 'Activity',
'common.add': 'Add',
'common.additional': 'Additional',
'common.advanced': 'Advanced',
@@ -129,6 +130,7 @@ Em.I18n.translations = {
'common.custom': 'Custom',
'common.dataNode':'DataNode',
'common.dataSet': 'Data Set',
+ 'common.date': 'Date',
'common.days': "Days",
'common.decommission':'Decommission',
'common.default':'Default',
@@ -235,7 +237,8 @@ Em.I18n.translations = {
'common.noHostsFound': 'No Hosts found.',
'common.na': 'n/a',
'common.name':'Name',
- 'common.next':'Next',
+ 'common.new': 'New',
+ 'common.next': 'Next',
'common.noData': 'No Data',
'common.noLink': 'No Links',
'common.notAvailable': 'Not Available',
@@ -1977,16 +1980,16 @@ Em.I18n.translations = {
'admin.serviceGroups.removeOldVersions': "Remove Old Versions",
'admin.serviceGroups.startUpgradePlan.title': "Upgrade Process",
'admin.serviceGroups.startUpgradePlan.description': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.",
- 'admin.serviceGroups.startUpgradePlan.step1Title': "Upgrade Plan",
- 'admin.serviceGroups.startUpgradePlan.step1Description': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
- 'admin.serviceGroups.startUpgradePlan.step2Title': "Prerequisites",
- 'admin.serviceGroups.startUpgradePlan.step2Description': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
- 'admin.serviceGroups.startUpgradePlan.step3Title': "Install",
- 'admin.serviceGroups.startUpgradePlan.step3Description': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
- 'admin.serviceGroups.startUpgradePlan.step4Title': "Upgrade",
- 'admin.serviceGroups.startUpgradePlan.step4Description': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
+ 'admin.serviceGroups.upgradePlan': "Upgrade Plan",
+ 'admin.serviceGroups.startUpgradePlan.upgradePlanDescription': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
+ 'admin.serviceGroups.startUpgradePlan.prerequisitesDescription': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
+ 'admin.serviceGroups.startUpgradePlan.installDescription': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
+ 'admin.serviceGroups.startUpgradePlan.upgradeDescription': "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.",
'admin.serviceGroups.startUpgradePlan.buttonLabel': 'Create Upgrade Plan',
-
+ 'admin.serviceGroups.upgradeStatus.button.prerequisites': 'Review Prerequisites',
+ 'admin.serviceGroups.upgradeStatus.button.install': 'Install Products',
+ 'admin.serviceGroups.upgradeStatus.button.upgrade': 'Perform Upgrade',
+
'admin.stackUpgrade.downgrade.proceed': "Proceed with Downgrade",
'admin.stackUpgrade.downgrade.body': "Are you sure you wish to abort the upgrade process and downgrade to <b>{0}</b>?",
'admin.stackUpgrade.downgrade.retry.body': "Are you sure you wish to retry downgrade to <b>{0}</b>?",
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index 5239708..2acfcba 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -2573,6 +2573,7 @@ a.abort-icon:hover {
border-radius: 12px;
border: none;
outline: none;
+ white-space: nowrap;
&:hover {
background-color: #ccc;
@@ -2699,6 +2700,15 @@ td .no-data {
}
}
+.doc-icon {
+ padding-left: 5px;
+ &:after {
+ content: '\f02d';
+ font-family: 'FontAwesome';
+ color: #666;
+ }
+}
+
.tooltip {
font-family: 'Roboto';
font-size: 10px;
@@ -2912,54 +2922,144 @@ td .no-data {
margin-right: auto;
color: #999;
}
+}
- ol {
- display: flex;
- justify-content: space-around;
- margin: 40px auto;
- counter-reset: items;
-
- li {
- list-style-type: none;
- width: 225px;
- margin: 20px 15px;
- margin-bottom: 0;
- color: #999;
+.upgrade-steps {
+ display: flex;
+ justify-content: space-around;
+ margin: 40px auto;
+ counter-reset: items;
+
+ li {
+ list-style-type: none;
+ width: 225px;
+ margin: 20px 15px;
+ margin-bottom: 0;
+ color: #999;
+ text-align: center;
+ border-color: #999;
+
+ h4 {
+ color: inherit;
+ }
+
+ &:before {
+ display: block;
+ position: relative;
+ left: 50%;
+ transform: translateX(-50%);
+ bottom: 20px;
+ height: 30px;
+ width: 30px;
+ counter-increment: items;
+ content: counter(items);
+ border-color: inherit;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 100%;
+ font-size: 20px;
+ line-height: 28px;
+ }
+
+ &:not(:last-child):after {
+ width: ~"calc(100% + 1px)";
+ height: 1px;
+ background-color: #999;
+ content: "";
+ position: relative;
+ display: block;
+ bottom: 138px;
+ left: 123px;
+ }
+
+ &.active {
+ color: #3fae2a;
+ border-color: #3fae2a;
+
+ &:before {
+ color: #fff;
+ background-color: #3fae2a;
+ }
+ }
+
+ &.complete {
+ color: #3fae2a;
+ border-color: #3fae2a;
h4 {
color: #333;
}
&:before {
- display: block;
- position: relative;
- left: 50%;
- transform: translateX(-50%);
- bottom: 20px;
- height: 30px;
- width: 30px;
- counter-increment: items;
- content: counter(items);
- border: #999 1px solid;
- border-radius: 100%;
- font-size: 20px;
- line-height: 28px;
+ color: inherit;
+ font-family: "Glyphicons Halflings";
+ content: "\e013";
+ font-size: 18px;
}
- &:not(:last-child):after {
- width: ~"calc(100% + 1px)";
- height: 1px;
- background-color: #999;
- content: "";
- position: relative;
- display: block;
- bottom: 138px;
- left: 123px;
+ &:after {
+ background-color: #3fae2a;
}
}
}
}
+#upgrade-status {
+ .upgrade-steps {
+ margin: 0 -45px;
+ padding: 0;
+
+ li {
+ margin: 0 15px;
+
+ h4 {
+ margin-bottom: 0;
+ }
+
+ &:before {
+ bottom: 0;
+ }
+
+ &:not(:last-child):after {
+ bottom: 44px;
+ left: 127px;
+ }
+ }
+ }
+}
+
+#upgrade-status-header {
+ display: flex;
+ align-items: center;
+
+ button {
+ width: 200px;
+ }
+}
+
+#upgrade-status-body {
+ margin: 0 -15px;
+ display: flex;
+
+ > * {
+ //width: ~"calc(50% - 32px)";
+ margin: 0 15px;
+ //float: left;
+ }
+
+ #plan-history {
+ flex: 2 1 60%;
+ }
+
+ #plan-mpacks {
+ flex-grow: 1 1 40%;
+ }
+
+ table {
+ background: inherit;
+ }
+}
+
.btn-lg {
text-transform: uppercase;
outline: none;
diff --git a/ambari-web/app/templates.js b/ambari-web/app/templates.js
index b18cc73..8df1fdb 100644
--- a/ambari-web/app/templates.js
+++ b/ambari-web/app/templates.js
@@ -22,6 +22,7 @@
require('templates/main/service/info/summary/base');
require('templates/common/progress');
+require('templates/common/mpackComparison');
require('templates/main/alerts/alert_instance/status');
require("templates/main/service/widgets/create/step2_number");
require("templates/main/service/widgets/create/step2_template");
diff --git a/ambari-web/app/templates/common/dashrow.hbs b/ambari-web/app/templates/common/dashrow.hbs
index 822a7c7..8071c49 100644
--- a/ambari-web/app/templates/common/dashrow.hbs
+++ b/ambari-web/app/templates/common/dashrow.hbs
@@ -44,7 +44,7 @@
{{/if}}
<button class="collapse-button" type="button" data-toggle="collapse" {{bindAttr data-target="view.collapseTarget" aria-controls="view.collapseId"}} aria-expanded="false"></button>
</div>
- <div {{bindAttr id="view.collapseId"}} class="panel-collapse collapse">
+ <div {{bindAttr id="view.collapseId" class=":panel-collapse :collapse view.collapsed::in"}}>
<div class="panel-body">
{{#if view.bodyClass}}
{{view view.bodyClass}}
diff --git a/ambari-web/app/templates/common/mpackComparison.hbs b/ambari-web/app/templates/common/mpackComparison.hbs
new file mode 100644
index 0000000..4e95aee
--- /dev/null
+++ b/ambari-web/app/templates/common/mpackComparison.hbs
@@ -0,0 +1,39 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+
+<div class="mpack-comparison">
+ <h4>{{mpack.name}} {{mpack.currentVersion}} <i class="icon-arrow-right"></i> <span class="new-version">{{mpack.newVersion}}</span><span class="doc-icon"></span></h4>
+ <table class="table">
+ <thead>
+ <tr>
+ <th>{{t common.service}}</th>
+ <th class="text-center">{{t common.current}} {{t common.version}}</th>
+ <th class="text-center">{{t common.new}} {{t common.version}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each service in mpack.services}}
+ <tr>
+ <td><span class="capsule">{{service.name}}</span></td>
+ <td class="text-center">{{service.currentVersion}}</td>
+ <td class="text-center"><span class="new-version">{{service.newVersion}}</span></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+</div>
\ No newline at end of file
diff --git a/ambari-web/app/templates/main/admin/serviceGroups.hbs b/ambari-web/app/templates/main/admin/serviceGroups.hbs
index 911a472..9bb4b97 100644
--- a/ambari-web/app/templates/main/admin/serviceGroups.hbs
+++ b/ambari-web/app/templates/main/admin/serviceGroups.hbs
@@ -32,7 +32,7 @@
<div class="dropdown pull-right">
<button class="btn btn-primary dropdown-toggle" type="button" id="actions-menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Actions <span class="caret"></span></button>
<ul class="dropdown-menu" aria-labelledby="actions-menu">
- <li><a href="#" {{action handleCreateUpgradePlan target="view"}}><i class="icon-arrow-up"></i> {{t admin.serviceGroups.createUpgradePlan}}</a></li>
+ <li><a href="#" {{bindAttr class="view.canCreatePlan::disabled"}} {{action handleCreateUpgradePlan target="view"}}><i class="icon-arrow-up"></i> {{t admin.serviceGroups.createUpgradePlan}}</a></li>
<li><a href="#"><i class="icon-plus"></i> {{t admin.serviceGroups.addServiceGroup}}</a></li>
<li><a href="#"><i class="icon-trash"></i> {{t admin.serviceGroups.removeOldVersions}}</a></li>
<li><a href="#"><i class="icon-book"></i> {{t common.documentation}}</a></li>
@@ -45,9 +45,17 @@
<div class="col-xs-12">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="mpacks">
- {{#each serviceGroup in controller.serviceGroups}}
- {{view App.ServiceGroupView serviceGroupBinding="serviceGroup"}}
- {{/each}}
+ <div id="serviceGroups">
+ {{#each serviceGroup in controller.serviceGroups}}
+ {{view App.ServiceGroupView serviceGroupBinding="serviceGroup"}}
+ {{/each}}
+ </div>
+ {{#if controller.upgrade}}
+ <div id="upgrade-status">
+ <h3>{{t common.upgrade}}</h3>
+ {{view App.UpgradeStatusView upgradeBinding="controller.upgrade"}}
+ </div>
+ {{/if}}
</div>
<div role="tabpanel" class="tab-pane" id="history">
<div class="panel panel-default">
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/body.hbs b/ambari-web/app/templates/main/admin/serviceGroups/serviceGroupBody.hbs
similarity index 100%
copy from ambari-web/app/templates/main/admin/serviceGroups/body.hbs
copy to ambari-web/app/templates/main/admin/serviceGroups/serviceGroupBody.hbs
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/header.hbs b/ambari-web/app/templates/main/admin/serviceGroups/serviceGroupHeader.hbs
similarity index 100%
rename from ambari-web/app/templates/main/admin/serviceGroups/header.hbs
rename to ambari-web/app/templates/main/admin/serviceGroups/serviceGroupHeader.hbs
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/menu.hbs b/ambari-web/app/templates/main/admin/serviceGroups/serviceGroupMenu.hbs
similarity index 100%
copy from ambari-web/app/templates/main/admin/serviceGroups/menu.hbs
copy to ambari-web/app/templates/main/admin/serviceGroups/serviceGroupMenu.hbs
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/startUpgradePlan.hbs b/ambari-web/app/templates/main/admin/serviceGroups/startUpgradePlan.hbs
index 3ccdf1e..7197982 100644
--- a/ambari-web/app/templates/main/admin/serviceGroups/startUpgradePlan.hbs
+++ b/ambari-web/app/templates/main/admin/serviceGroups/startUpgradePlan.hbs
@@ -20,22 +20,22 @@
<div id="start-upgrade-plan">
<h3>{{t admin.serviceGroups.startUpgradePlan.title}}</h3>
<p id="description">{{t admin.serviceGroups.startUpgradePlan.description}}</p>
- <ol>
+ <ol class="upgrade-steps">
<li>
- <h4>{{t admin.serviceGroups.startUpgradePlan.step1Title}}</h4>
- <p>{{t admin.serviceGroups.startUpgradePlan.step1Description}}</p>
+ <h4>{{t admin.serviceGroups.upgradePlan}}</h4>
+ <p>{{t admin.serviceGroups.startUpgradePlan.upgradePlanDescription}}</p>
</li>
<li>
- <h4>{{t admin.serviceGroups.startUpgradePlan.step2Title}}</h4>
- <p>{{t admin.serviceGroups.startUpgradePlan.step2Description}}</p>
+ <h4>{{t common.prerequisites}}</h4>
+ <p>{{t admin.serviceGroups.startUpgradePlan.prerequisitesDescription}}</p>
</li>
<li>
- <h4>{{t admin.serviceGroups.startUpgradePlan.step3Title}}</h4>
- <p>{{t admin.serviceGroups.startUpgradePlan.step3Description}}</p>
+ <h4>{{t common.install}}</h4>
+ <p>{{t admin.serviceGroups.startUpgradePlan.installDescription}}</p>
</li>
<li>
- <h4>{{t admin.serviceGroups.startUpgradePlan.step4Title}}</h4>
- <p>{{t admin.serviceGroups.startUpgradePlan.step4Description}}</p>
+ <h4>{{t common.upgrade}}</h4>
+ <p>{{t admin.serviceGroups.startUpgradePlan.upgradeDescription}}</p>
</li>
</ol>
<button type="button" class="btn-lg btn-primary" {{action createUpgradePlan target="view"}}>{{t admin.serviceGroups.startUpgradePlan.buttonLabel}}</button>
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/body.hbs b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusBody.hbs
similarity index 54%
copy from ambari-web/app/templates/main/admin/serviceGroups/body.hbs
copy to ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusBody.hbs
index ddb6c5c..a8a024d 100644
--- a/ambari-web/app/templates/main/admin/serviceGroups/body.hbs
+++ b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusBody.hbs
@@ -16,24 +16,30 @@
* limitations under the License.
}}
-<h4>{{t common.services}}</h4>
-<div>
- <p>{{t common.installed}}:
- {{#each service in view.installedServices}}
- <button class="capsule capsule-selected">
- {{service.name}} {{service.version}} <i class="icon icon-ok"></i>
- </button>
+<div id="upgrade-status-body">
+ <div id="plan-history">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>{{t common.activity}}</th>
+ <th>{{t common.user}}</th>
+ <th>{{t common.date}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each event in view.history}}
+ <tr>
+ <td>{{event.name}}</td>
+ <td>{{event.user}}</td>
+ <td>{{formatDate event.date format="D MMM YYYY"}}</td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ <div id="plan-mpacks">
+ {{#each mpack in view.mpacks}}
+ {{template "templates/common/mpackComparison" mpackBinding="mpack"}}
{{/each}}
- </p>
- <p>{{t common.others}}:
- {{#each service in view.otherServices}}
- <button class="capsule">
- {{service.name}} {{service.version}} <i class="icon icon-plus"></i>
- </button>
- {{/each}}
- </p>
-</div>
-<div>
- <h4>{{t common.version}} {{t common.history}}</h4>
- {{view App.Timeline eventsBinding="view.history"}}
+ </div>
</div>
\ No newline at end of file
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/body.hbs b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusHeader.hbs
similarity index 54%
rename from ambari-web/app/templates/main/admin/serviceGroups/body.hbs
rename to ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusHeader.hbs
index ddb6c5c..87f10d6 100644
--- a/ambari-web/app/templates/main/admin/serviceGroups/body.hbs
+++ b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusHeader.hbs
@@ -16,24 +16,20 @@
* limitations under the License.
}}
-<h4>{{t common.services}}</h4>
-<div>
- <p>{{t common.installed}}:
- {{#each service in view.installedServices}}
- <button class="capsule capsule-selected">
- {{service.name}} {{service.version}} <i class="icon icon-ok"></i>
- </button>
- {{/each}}
- </p>
- <p>{{t common.others}}:
- {{#each service in view.otherServices}}
- <button class="capsule">
- {{service.name}} {{service.version}} <i class="icon icon-plus"></i>
- </button>
- {{/each}}
- </p>
-</div>
-<div>
- <h4>{{t common.version}} {{t common.history}}</h4>
- {{view App.Timeline eventsBinding="view.history"}}
+<div id="upgrade-status-header">
+ <ol class="upgrade-steps">
+ <li class="complete">
+ <h4>{{t admin.serviceGroups.upgradePlan}}</h4>
+ </li>
+ <li {{bindAttr class="view.isPrerequisitesActive:active view.isPrerequisitesComplete:complete"}}>
+ <h4>{{t common.prerequisites}}</h4>
+ </li>
+ <li {{bindAttr class="view.isInstallActive:active view.isInstallComplete:complete"}}>
+ <h4>{{t common.install}}</h4>
+ </li>
+ <li {{bindAttr class="view.isUpgradeActive:active"}}>
+ <h4>{{t common.upgrade}}</h4>
+ </li>
+ </ol>
+ <button class="btn btn-secondary" {{action handleNextStep target="view"}}>{{view.label}}</button>
</div>
\ No newline at end of file
diff --git a/ambari-web/app/templates/main/admin/serviceGroups/menu.hbs b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusMenu.hbs
similarity index 66%
rename from ambari-web/app/templates/main/admin/serviceGroups/menu.hbs
rename to ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusMenu.hbs
index faa041d..ad9f9ba 100644
--- a/ambari-web/app/templates/main/admin/serviceGroups/menu.hbs
+++ b/ambari-web/app/templates/main/admin/serviceGroups/upgradeStatusMenu.hbs
@@ -17,8 +17,6 @@
}}
<ul class="dropdown-menu dropdown-menu-right">
- <li><a href="#"><i class="icon-arrow-up"></i> {{t admin.serviceGroups.createUpgradePlan}}</a></li>
- <li><a href="#"><i class="icon-plus"></i> {{t admin.serviceGroups.addServiceGroup}}</a></li>
- <li><a href="#"><i class="icon-trash"></i> {{t admin.serviceGroups.removeOldVersions}}</a></li>
- <li><a href="#"><i class="icon-book"></i> {{t common.documentation}}</a></li>
+ <li><a {{action handleEditPlan target="view"}} {{bindAttr class="view.canModifyPlan::disabled"}}><i class="icon-pencil"></i> {{t common.edit}} {{t admin.serviceGroups.upgradePlan}}</a></li>
+ <li><a {{action handleDiscardPlan target="view"}} {{bindAttr class="view.canModifyPlan::disabled"}}><i class="icon-trash"></i> {{t common.discard}} {{t admin.serviceGroups.upgradePlan}}</a></li>
</ul>
\ No newline at end of file
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index f89133b..1aa9b443 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -100,29 +100,29 @@ require('views/common/configs/widgets/label_config_widget_view');
require('views/common/configs/widgets/test_db_connection_widget_view');
require('views/common/configs/widgets/overrides/config_widget_override_view');
require('views/common/configs/service_config_layout_tab_view');
-require('views/common/dashrow_view');
require('views/common/configs/service_config_layout_tab_compare_view');
+require('views/common/configs/controls_view');
+require('views/common/assign_master_components_view');
require('views/common/filter_combobox');
require('views/common/filter_combo_cleanable');
require('views/common/pagination_view');
require('views/common/table_view');
require('views/common/progress_bar_view');
require('views/common/controls_view');
-require('views/common/configs/controls_view');
+require('views/common/chosen_plugin');
+require('views/common/export_metrics_menu_view');
+require('views/common/dashrow_view');
require('views/common/widget/graph_widget_view');
require('views/common/widget/template_widget_view');
require('views/common/widget/gauge_widget_view');
require('views/common/widget/number_widget_view');
require('views/common/widget/heatmap_widget_view');
-require('views/common/assign_master_components_view');
require('views/common/helpers/format_date_view');
require('views/common/helpers/format_word_break_view');
require('views/common/helpers/format_null_view');
require('views/common/helpers/format_role_view');
require('views/common/helpers/pluralize_view');
require('views/common/helpers/status_icon_view');
-require('views/common/chosen_plugin');
-require('views/common/export_metrics_menu_view');
require('views/login');
require('views/main');
require('views/main/menu');
@@ -226,6 +226,7 @@ require('views/main/admin/highAvailability/rangerAdmin/step3_view');
require('views/main/admin/highAvailability/rangerAdmin/step4_view');
require('views/main/admin/serviceAccounts_view');
require('views/main/admin/serviceGroups_view');
+require('views/main/admin/serviceGroups/upgradeStatus_view');
require('views/main/admin/serviceGroups/serviceGroup_view');
require('views/main/admin/stack_upgrade/upgrade_wizard_view');
require('views/main/admin/stack_upgrade/upgrade_version_box_view');
diff --git a/ambari-web/app/views/common/dashrow_view.js b/ambari-web/app/views/common/dashrow_view.js
index 1fb602d..8354d77 100644
--- a/ambari-web/app/views/common/dashrow_view.js
+++ b/ambari-web/app/views/common/dashrow_view.js
@@ -42,6 +42,9 @@ App.DashRow = Ember.View.extend({
//Define a property named headerClass which extends Ember.View to use an arbitrary Handlebars template as the header.
+ //specifies initial collapsed state
+ collapsed: true,
+
//set this to provide an id for the collapsible part
//so it can be targeted by the Bootstrap collapse plugin
collapseId: null,
diff --git a/ambari-web/app/views/main/admin/serviceGroups/serviceGroup_view.js b/ambari-web/app/views/main/admin/serviceGroups/serviceGroup_view.js
index 5940392..b607cb8 100644
--- a/ambari-web/app/views/main/admin/serviceGroups/serviceGroup_view.js
+++ b/ambari-web/app/views/main/admin/serviceGroups/serviceGroup_view.js
@@ -25,17 +25,17 @@ App.ServiceGroupView = App.DashRow.extend({
collapseId: Em.computed.alias('serviceGroup.id'),
// menuClass: Em.View.extend({
- // templateName: require('templates/main/admin/serviceGroups/menu')
+ // templateName: require('templates/main/admin/serviceGroups/serviceGroupMenu')
// }),
headerClass: Em.View.extend({
- templateName: require('templates/main/admin/serviceGroups/header'),
+ templateName: require('templates/main/admin/serviceGroups/serviceGroupHeader'),
name: Em.computed.alias('parentView.serviceGroup.name'),
version: Em.computed.alias('parentView.serviceGroup.version'),
}),
bodyClass: Em.View.extend({
- templateName: require('templates/main/admin/serviceGroups/body'),
+ templateName: require('templates/main/admin/serviceGroups/serviceGroupBody'),
installedServices: Em.computed.alias('parentView.serviceGroup.installedServices'),
otherServices: Em.computed.alias('parentView.serviceGroup.otherServices'),
history: Em.computed.alias('parentView.serviceGroup.history')
diff --git a/ambari-web/app/views/main/admin/serviceGroups/upgradeStatus_view.js b/ambari-web/app/views/main/admin/serviceGroups/upgradeStatus_view.js
new file mode 100644
index 0000000..972ad19
--- /dev/null
+++ b/ambari-web/app/views/main/admin/serviceGroups/upgradeStatus_view.js
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+App.UpgradeStatusView = App.DashRow.extend({
+ //bound from template
+ upgrade: null,
+
+ collapsed: false,
+
+ collapseId: Em.computed.alias('upgrade.id'),
+
+ menuClass: Em.View.extend({
+ templateName: require('templates/main/admin/serviceGroups/upgradeStatusMenu'),
+ canModifyPlan: Em.computed.equal('parentView.upgrade.currentStep', 'prerequisites'),
+ handleEditPlan: function () {
+ if (this.get('canModifyPlan')) {
+ this.get('parentView.controller').editPlan();
+ };
+ },
+ handleDiscardPlan: function () {
+ if (this.get('canModifyPlan')) {
+ this.get('parentView.controller').discardPlan();
+ };
+ }
+ }),
+
+ headerClass: Em.View.extend({
+ templateName: require('templates/main/admin/serviceGroups/upgradeStatusHeader'),
+ isUpgradeActive: Em.computed.equal('parentView.upgrade.currentStep', 'upgrade'),
+ isInstallComplete: Em.computed.alias('isUpgradeActive'),
+ isInstallActive: Em.computed.equal('parentView.upgrade.currentStep', 'install'),
+ isPrerequisitesComplete: Em.computed.or('isInstallActive', 'isUpgradeActive'),
+ isPrerequisitesActive: Em.computed.equal('parentView.upgrade.currentStep', 'prerequisites'),
+ label: function () {
+ switch (this.get('parentView.upgrade.currentStep')) {
+ case 'prerequisites':
+ return Em.I18n.t('admin.serviceGroups.upgradeStatus.button.prerequisites');
+ break;
+ case 'install':
+ return Em.I18n.t('admin.serviceGroups.upgradeStatus.button.install');
+ break;
+ case 'upgrade':
+ return Em.I18n.t('admin.serviceGroups.upgradeStatus.button.upgrade');
+ break;
+ }
+ }.property('parentView.upgrade.currentStep'),
+ action: Em.computed.alias('parentView.upgrade.currentAction')
+ }),
+
+ bodyClass: Em.View.extend({
+ templateName: require('templates/main/admin/serviceGroups/upgradeStatusBody'),
+ history: Em.computed.alias('parentView.upgrade.history'),
+ mpacks: Em.computed.alias('parentView.upgrade.mpacks'),
+ })
+});
+
diff --git a/ambari-web/app/views/main/admin/serviceGroups_view.js b/ambari-web/app/views/main/admin/serviceGroups_view.js
index a2a06b7..0e8fd80 100644
--- a/ambari-web/app/views/main/admin/serviceGroups_view.js
+++ b/ambari-web/app/views/main/admin/serviceGroups_view.js
@@ -18,24 +18,34 @@
var App = require('app');
-App.MainAdminServiceGroupsView = App.DashRow.extend({
+App.MainAdminServiceGroupsView = Ember.View.extend({
templateName: require('templates/main/admin/serviceGroups'),
+ canCreatePlan: function () {
+ if (this.get('controller.upgrade')) {
+ return false;
+ }
+ return true;
+ }.property('controller.upgrade'),
handleCreateUpgradePlan: function () {
- App.ModalPopup.show({
- modalWrapperClasses: [ "wide-modal" ],
- showHeader: false,
- showFooter: false,
- bodyClass: Ember.View.extend({
- templateName: require('templates/main/admin/serviceGroups/startUpgradePlan'),
- close: function () {
- this.get('parentView').hide();
- },
- createUpgradePlan: function () {
- this.get('parentView').hide();
- App.router.transitionTo();
- }
- })
- });
+ const canCreatePlan = this.get('canCreatePlan');
+
+ if (canCreatePlan) {
+ App.ModalPopup.show({
+ modalWrapperClasses: ["wide-modal"],
+ showHeader: false,
+ showFooter: false,
+ bodyClass: Ember.View.extend({
+ templateName: require('templates/main/admin/serviceGroups/startUpgradePlan'),
+ close: function () {
+ this.get('parentView').hide();
+ },
+ createUpgradePlan: function () {
+ this.get('parentView').hide();
+ App.router.transitionTo();
+ }
+ })
+ });
+ }
}
});
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
jonathanhurley@apache.org.