You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2014/11/11 18:28:32 UTC
ambari git commit: AMBARI-8280 Create mock for Admin Web: Stack
Versions: Version Detail page. (ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/trunk 6b98cfc08 -> fc0cda879
AMBARI-8280 Create mock for Admin Web: Stack Versions: Version Detail page. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fc0cda87
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fc0cda87
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fc0cda87
Branch: refs/heads/trunk
Commit: fc0cda8793c740838074500e6941e6ee9c9715bd
Parents: 6b98cfc
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Tue Nov 11 19:18:50 2014 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Tue Nov 11 19:21:49 2014 +0200
----------------------------------------------------------------------
.../data/stack_versions/stack_version_all.json | 268 ++-----------------
ambari-web/app/assets/test/tests.js | 1 +
ambari-web/app/controllers.js | 1 +
.../stack_version_details_controller.js | 33 +++
ambari-web/app/mappers/stack_version_mapper.js | 4 +-
ambari-web/app/messages.js | 11 +
ambari-web/app/models/stack_version/version.js | 4 +-
ambari-web/app/routes/main.js | 22 +-
ambari-web/app/styles/application.less | 34 +++
.../stack_versions/stack_version_details.hbs | 102 +++++++
.../admin/stack_versions/stack_versions.hbs | 6 +-
ambari-web/app/views.js | 1 +
ambari-web/app/views/main/admin.js | 2 +-
.../stack_version_details_view.js | 102 +++++++
.../admin/stack_versions/stack_version_view.js | 6 +-
ambari-web/app/views/main/menu.js | 4 +-
.../stack_version/stack_version_details_test.js | 94 +++++++
17 files changed, 432 insertions(+), 263 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/assets/data/stack_versions/stack_version_all.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/stack_versions/stack_version_all.json b/ambari-web/app/assets/data/stack_versions/stack_version_all.json
index c2651ea..15e1415 100644
--- a/ambari-web/app/assets/data/stack_versions/stack_version_all.json
+++ b/ambari-web/app/assets/data/stack_versions/stack_version_all.json
@@ -2,50 +2,10 @@
"items": [
{
"StackVersion": {
- "name": "HDP 2.2.0.0",
- "version": "2.2.0.10",
- "installed_hosts": 0,
- "current_hosts": 0,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- },
- {
- "os": "ubuntu12",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
"name": "HDP 2.2.0.1",
- "version": "2.2.0.12",
- "installed_hosts": 2,
- "current_hosts": 3,
+ "version": "HDP-2.2.2",
+ "installed_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
+ "current_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
"repositories": [
{
"os": "redhat6",
@@ -53,12 +13,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
}
@@ -68,9 +28,9 @@
{
"StackVersion": {
"name": "HDP 2.2.0.2",
- "version": "2.2.0.11",
- "installed_hosts": 5,
- "current_hosts": 5,
+ "version": "HDP-2.2.3",
+ "installed_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
+ "current_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
"repositories": [
{
"os": "redhat6",
@@ -78,12 +38,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
}
@@ -94,8 +54,8 @@
"StackVersion": {
"name": "HDP 2.2.0.0",
"version": "2.2.0.1",
- "installed_hosts": 0,
- "current_hosts": 0,
+ "installed_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
+ "current_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com"],
"repositories": [
{
"os": "redhat6",
@@ -103,12 +63,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
},
@@ -118,12 +78,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
}
@@ -134,8 +94,8 @@
"StackVersion": {
"name": "HDP 2.2.0.1",
"version": "2.2.0.2",
- "installed_hosts": 2,
- "current_hosts": 3,
+ "installed_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com", "dev03.hortonworks.com"],
+ "current_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com", "dev03.hortonworks.com"],
"repositories": [
{
"os": "redhat6",
@@ -143,12 +103,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
}
@@ -159,188 +119,8 @@
"StackVersion": {
"name": "HDP 2.2.0.2",
"version": "2.2.0.3",
- "installed_hosts": 5,
- "current_hosts": 5,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.0",
- "version": "2.2.0.4",
- "installed_hosts": 0,
- "current_hosts": 0,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- },
- {
- "os": "ubuntu12",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.1",
- "version": "2.2.0.5",
- "installed_hosts": 2,
- "current_hosts": 3,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.2",
- "version": "2.2.0.6",
- "installed_hosts": 5,
- "current_hosts": 5,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.0",
- "version": "2.2.0.7",
- "installed_hosts": 0,
- "current_hosts": 0,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- },
- {
- "os": "ubuntu12",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.1",
- "version": "2.2.0.8",
- "installed_hosts": 2,
- "current_hosts": 3,
- "repositories": [
- {
- "os": "redhat6",
- "baseurls": [
- {
- "id": "HDP-2.2.0.1-885",
- "type": "HDP",
- "baseurl": "http://host1/hdp"
- },
- {
- "id": "HDP-UTILS-1.0.0.20",
- "type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
- }
- ]
- }
- ]
- }
- },
- {
- "StackVersion": {
- "name": "HDP 2.2.0.2",
- "version": "2.2.0.9",
- "installed_hosts": 5,
- "current_hosts": 5,
+ "installed_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com", "dev03.hortonworks.com"],
+ "current_hosts": ["dev01.hortonworks.com", "dev02.hortonworks.com", "dev03.hortonworks.com"],
"repositories": [
{
"os": "redhat6",
@@ -348,12 +128,12 @@
{
"id": "HDP-2.2.0.1-885",
"type": "HDP",
- "baseurl": "http://host1/hdp"
+ "baseurl": "http://dev01.hortonworks.com/hdp"
},
{
"id": "HDP-UTILS-1.0.0.20",
"type": "HDP-UTILS",
- "baseurl": "http://host1/hdp-utils"
+ "baseurl": "http://dev01.hortonworks.com/hdp-utils"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 2752a0c..93c61dd 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -145,6 +145,7 @@ var files = ['test/init_model_test',
'test/views/common/configs/config_history_flow_test',
'test/views/main/dashboard_test',
'test/views/main/menu_test',
+ '/test/views/main/admin/stack_version/stack_version_details_test',
'test/views/main/dashboard/config_history_view_test',
'test/views/main/dashboard/widget_test',
'test/views/main/dashboard/widgets_test',
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/controllers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js
index 3e4e0da..89187e2 100644
--- a/ambari-web/app/controllers.js
+++ b/ambari-web/app/controllers.js
@@ -54,6 +54,7 @@ require('controllers/main/admin/highAvailability/resourceManager/step4_controlle
require('controllers/main/admin/repositories');
require('controllers/main/admin/stack_upgrade_controller');
require('controllers/main/admin/stack_upgrade/stack_versions_controller');
+require('controllers/main/admin/stack_upgrade/stack_version_details_controller');
require('controllers/main/admin/serviceAccounts_controller');
require('controllers/main/admin/advanced');
require('utils/polling');
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/controllers/main/admin/stack_upgrade/stack_version_details_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_upgrade/stack_version_details_controller.js b/ambari-web/app/controllers/main/admin/stack_upgrade/stack_version_details_controller.js
new file mode 100644
index 0000000..365b171
--- /dev/null
+++ b/ambari-web/app/controllers/main/admin/stack_upgrade/stack_version_details_controller.js
@@ -0,0 +1,33 @@
+/**
+ * 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.MainStackVersionsDetailsController = Em.Controller.extend({
+ name: 'mainStackVersionsDetailsController',
+
+ content: null,
+
+ totalHostCount: function() {
+ return App.get('allHostNames.length');
+ }.property('App.allHostNames.length'),
+
+ //TODO method that will perform stack upgrade on host
+ installStackVersion: Em.K
+
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/mappers/stack_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/stack_version_mapper.js b/ambari-web/app/mappers/stack_version_mapper.js
index 856bccb..b07865e 100644
--- a/ambari-web/app/mappers/stack_version_mapper.js
+++ b/ambari-web/app/mappers/stack_version_mapper.js
@@ -31,8 +31,8 @@ App.stackVersionMapper = App.QuickDataMapper.create({
operating_systems: {
item: 'id'
},
- installed_hosts_count: 'installed_hosts',
- current_hosts_count: 'current_hosts'
+ installed_hosts: 'installed_hosts',
+ current_hosts: 'current_hosts'
},
modelOS: {
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index f01f9c2..773fa6b 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -154,6 +154,7 @@ Em.I18n.translations = {
'common.cluster':'Cluster',
'common.repositories':'Repositories',
'common.stack.versions':'Stack Versions',
+ 'common.versions':'Versions',
'common.serviceAccounts': 'Service Accounts',
'common.add': 'Add',
'common.edit': 'Edit',
@@ -1177,6 +1178,16 @@ Em.I18n.translations = {
'admin.stackVersions.table.header.installed': "Installed on",
'admin.stackVersions.table.header.current': "Current on",
+ 'admin.stackVersions.datails.versionName': "Version Name",
+ 'admin.stackVersions.datails.installed.on': "Installed On",
+ 'admin.stackVersions.datails.current.on': "Current On",
+ 'admin.stackVersions.datails.base.url': "Base Url",
+
+ 'admin.stackVersions.datails.hosts.btn.install': "Install to {0} hosts",
+ 'admin.stackVersions.datails.hosts.btn.installing': "Installing...",
+ 'admin.stackVersions.datails.hosts.btn.nothing': "Nothing to Install",
+ 'admin.stackVersions.datails.hosts.btn.na': "Status not available",
+
'services.service.start':'Start',
'services.service.stop':'Stop',
'services.service.metrics':'Service Metrics',
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/models/stack_version/version.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_version/version.js b/ambari-web/app/models/stack_version/version.js
index b7ede22..fb0d4f7 100644
--- a/ambari-web/app/models/stack_version/version.js
+++ b/ambari-web/app/models/stack_version/version.js
@@ -22,8 +22,8 @@ App.StackVersion = DS.Model.extend({
id: DS.attr('string'),
name: DS.attr('string'),
version: DS.attr('string'),
- installedHostsCount: DS.attr('number'),
- currentHostsCount: DS.attr('number'),
+ installedHosts: DS.attr('array'),
+ currentHosts: DS.attr('array'),
operatingSystems: DS.hasMany('App.OS')
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/routes/main.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/main.js b/ambari-web/app/routes/main.js
index 76c46a5..e66fde3 100644
--- a/ambari-web/app/routes/main.js
+++ b/ambari-web/app/routes/main.js
@@ -493,11 +493,25 @@ module.exports = Em.Route.extend({
adminStackVersions: Em.Route.extend({
route: '/versions',
connectOutlets: function (router) {
- if(App.get('supports.stackUpgrade')) {
- router.set('mainAdminController.category', "stackVersions");
- router.get('mainAdminController').connectOutlet('mainStackVersions');
+ if (App.get('supports.stackUpgrade')) {
+ router.get('mainStackVersionsController').load();
}
- }
+ },
+ index: Em.Route.extend({
+ route: '/',
+ connectOutlets: function (router) {
+ if(App.get('supports.stackUpgrade')) {
+ router.set('mainAdminController.category', "stackVersions");
+ router.get('mainAdminController').connectOutlet('mainStackVersions');
+ }
+ }
+ }),
+ version: Em.Route.extend({
+ route: '/:stack_version_id',
+ connectOutlets: function (router, stackVersion) {
+ router.get('mainAdminController').connectOutlet('mainStackVersionsDetails', stackVersion);
+ }
+ })
}),
adminAdvanced: Em.Route.extend({
route: '/advanced',
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index df43c1a..d955e15 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -5037,6 +5037,40 @@ ul.inline li {
padding-left: 13px;
}
}
+
+#stack-version-details {
+ padding-top: 10px;
+ .box {
+ margin-top:20px;
+ }
+ .version-content {
+ padding: 10px 15px;
+ }
+ table.stack-version-repos {
+ width: 100%;
+ text-align: left;
+ .table {
+ td:first-child,
+ th:first-child,
+ td:first-child + td,
+ th:first-child + th {
+ width: 20%;
+ }
+ td:first-child + td + td,
+ th:first-child + th + th{
+ width: 60%;
+ }
+ }
+ input {
+ width: 100%;
+ }
+ }
+ .stack-status-button {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ width: 250px;
+ }
+}
.one-story-bar {
margin-bottom: 60px;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
new file mode 100644
index 0000000..a76631e
--- /dev/null
+++ b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
@@ -0,0 +1,102 @@
+{{!
+* 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 id="stack-version-details">
+ <a href="#/main/admin/versions">{{t common.versions}}</a><span> > {{content.version}}</span>
+
+ <div class="box">
+ <div class="box-header">
+ <h4>{{t common.details}}</h4>
+ </div>
+ <div class="version-content">
+ <div class="row-fluid">
+ <div class="span3">{{t common.stack}}</div>
+ <div class="span6">{{content.name}}</div>
+ </div>
+ <div class="row-fluid">
+ <div class="span3">{{t admin.stackVersions.datails.versionName}}</div>
+ <div class="span6">{{content.version}}</div>
+ </div>
+ </div>
+ </div>
+
+ <div class="box">
+ <div class="box-header">
+ <h4>{{t common.status}}</h4>
+ </div>
+ <div class="version-content">
+ <div class="row-fluid">
+ <div class="span8">
+ <div class="row-fluid">
+ <div class="span3">{{t admin.stackVersions.datails.installed.on}}</div>
+ <div class="span6">{{content.installedHosts.length}}/{{totalHostCount}}</div>
+ </div>
+ <div class="row-fluid">
+ <div class="span3">{{t admin.stackVersions.datails.current.on}}</div>
+ <div class="span6">{{content.currentHosts.length}}/{{totalHostCount}}</div>
+ </div>
+ </div>
+ <div class="span4">
+ <a {{bindAttr class="view.statusClass :btn :stack-status-button"}} {{action installStackVersion target="controller"}}>
+ <i {{bindAttr class="view.installInProgress:icon-cog"}}> </i>{{view.stackTextStatus}}
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="box">
+ <div class="box-header">
+ <h4>{{t common.repositories}}</h4>
+ </div>
+ <div class="version-content">
+ <table class="stack-version-repos">
+ <thead>
+ <tr>
+ <th>
+ {{t common.os}}
+ </th>
+ <th>
+ {{t common.name}}
+ </th>
+ <th>
+ {{t admin.stackVersions.datails.base.url}}
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each os in content.operatingSystems}}
+ {{#each repo in os.repositories}}
+ <tr>
+ <td>
+ {{os.name}}
+ </td>
+ <td>
+ {{repo.type}}
+ </td>
+ <td>
+ {{view Ember.TextField valueBinding="repo.baseurl" className="disabled"}}
+ </td>
+ </tr>
+ {{/each}}
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs b/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
index 15eba7b..2fb3e0b 100644
--- a/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
+++ b/ambari-web/app/templates/main/admin/stack_versions/stack_versions.hbs
@@ -40,7 +40,7 @@
{{#each item in view.pageContent}}
{{#view view.StackVersionView contentBinding="item"}}
<td class="first">
- <span class="stack-name">{{view.content.name}}</span>
+ <a href="#/main/admin/versions/{{unbound view.content.id}}" class="stack-name">{{view.content.name}}</a>
</td>
<td>
<span class="stack-version">{{view.content.version}}</span>
@@ -56,10 +56,10 @@
</div>
</td>
<td>
- <span>{{view.content.installedHostsCount}}</span>
+ <span>{{view.content.installedHosts.length}}</span>
</td>
<td>
- <span>{{view.content.currentHostsCount}}</span>
+ <span>{{view.content.currentHosts.length}}</span>
</td>
{{/view}}
{{/each}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 842596b..ff40a9f 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -96,6 +96,7 @@ require('views/main/admin/repositories');
require('views/main/admin/serviceAccounts_view');
require('views/main/admin/stack_upgrade');
require('views/main/admin/stack_versions/stack_version_view');
+require('views/main/admin/stack_versions/stack_version_details_view');
require('views/main/admin/advanced');
require('views/main/admin/advanced/password');
require('views/main/admin/audit');
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/views/main/admin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin.js b/ambari-web/app/views/main/admin.js
index 7c00ed8..7e14946 100644
--- a/ambari-web/app/views/main/admin.js
+++ b/ambari-web/app/views/main/admin.js
@@ -31,7 +31,7 @@ App.MainAdminView = Em.View.extend({
if (App.get('supports.stackUpgrade')) {
items.push({
name: 'stackVersions',
- url: 'adminStackVersions',
+ url: 'adminStackVersions.index',
label: Em.I18n.t('common.stack.versions')
});
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
new file mode 100644
index 0000000..9889fc8
--- /dev/null
+++ b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
@@ -0,0 +1,102 @@
+/**
+ * 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.MainStackVersionsDetailsView = Em.View.extend({
+
+ templateName: require('templates/main/admin/stack_versions/stack_version_details'),
+ /**
+ * list of hostsStackVersions objects for current config version
+ * {Array}
+ */
+ hostStackVersions: function() {
+ return App.HostStackVersion.find().filterProperty('version', this.get('controller.content.version'));
+ }.property('controller.content.version'),
+
+ /**
+ * list of hosts on which this stack version is not installed
+ * {Array}
+ */
+ notInstalledHosts: function() {
+ return this.get('hostStackVersions').filterProperty('installEnabled');
+ }.property('hostStackVersions'),
+
+ /**
+ * true if install stack version is in progress at least on 1 host
+ * {Boolean}
+ */
+ installInProgress: function() {
+ return this.get('hostStackVersions').someProperty('status', 'INSTALLING');
+ }.property('hostStackVersions'),
+
+ /**
+ * installation status of stack version on hosts
+ * {String}
+ */
+ status: function() {
+ if (this.get('installInProgress')) {
+ return 'INSTALLING'
+ } else if (this.get('notInstalledHosts.length') == 0) {
+ return 'ALL_INSTALLED';
+ } else if (this.get('notInstalledHosts.length') > 0) {
+ return 'INSTALL';
+ } else {
+ return 'UNDEFINED';
+ }
+ }.property('notInstalledHosts.length'),
+
+ /**
+ * text on install buttons
+ * {String}
+ */
+ stackTextStatus: function() {
+ switch(this.get('status')) {
+ case 'INSTALL':
+ return Em.I18n.t('admin.stackVersions.datails.hosts.btn.install').format(this.get('notInstalledHosts.length'));
+ break;
+ case 'INSTALLING':
+ return Em.I18n.t('admin.stackVersions.datails.hosts.btn.installing');
+ break;
+ case 'ALL_INSTALLED':
+ return Em.I18n.t('admin.stackVersions.datails.hosts.btn.nothing');
+ break;
+ default:
+ return Em.I18n.t('admin.stackVersions.datails.hosts.btn.na');
+ break;
+ }
+ }.property('status', 'notInstalledHosts'),
+
+ /**
+ * class on install buttons
+ * {String}
+ */
+ statusClass: function() {
+ switch (this.get('status')) {
+ case 'INSTALL':
+ return 'btn-success';
+ break;
+ case 'INSTALLING':
+ return 'btn-primary disabled';
+ break;
+ default:
+ return 'disabled';
+ }
+ }.property('status')
+
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js b/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
index b0793b0..fd805fc 100644
--- a/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
+++ b/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
@@ -149,10 +149,6 @@ App.MainStackVersionsView = App.TableView.extend({
labels: function() {
return this.get('content.operatingSystems').getEach('name').join("<br />");
}.property('content.operatingSystems.length')
- }),
-
- didInsertElement: function () {
- this.get('controller').load();
- }
+ })
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/app/views/main/menu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/menu.js b/ambari-web/app/views/main/menu.js
index 5ab6375..1988d02 100644
--- a/ambari-web/app/views/main/menu.js
+++ b/ambari-web/app/views/main/menu.js
@@ -140,8 +140,8 @@ App.MainMenuView = Em.CollectionView.extend({
});
if(App.get('supports.stackUpgrade')) {
categories.push({
- name: 'stackVersions',
- url: 'versions/',
+ name: 'adminStackVersions',
+ url: 'versions',
label: Em.I18n.t('common.stack.versions')
});
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fc0cda87/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js b/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
new file mode 100644
index 0000000..3710733
--- /dev/null
+++ b/ambari-web/test/views/main/admin/stack_version/stack_version_details_test.js
@@ -0,0 +1,94 @@
+/**
+ * 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');
+require('views/main/admin/stack_versions/stack_version_view');
+var mainStackVersionsDetailsView;
+
+describe('App.MainStackVersionsDetailsView', function () {
+ var hostStackVersions = [
+ {
+ installEnabled: true,
+ status: "INIT"
+ },
+ {
+ installEnabled: true,
+ status: "INSTALL_FAILED"
+ },
+ {
+ installEnabled: false,
+ status: "INSTALLED"
+ }
+ ];
+ beforeEach(function () {
+ mainStackVersionsDetailsView = App.MainStackVersionsDetailsView.create({hostStackVersions: hostStackVersions});
+ });
+
+ describe('#notInstalledHosts', function () {
+ it("list on host without current config version", function() {
+ var notInstalled = [
+ {
+ installEnabled: true,
+ status: "INIT"
+ },
+ {
+ installEnabled: true,
+ status: "INSTALL_FAILED"
+ }
+ ];
+ expect(mainStackVersionsDetailsView.get('notInstalledHosts')).to.eql(notInstalled);
+ });
+ });
+
+ describe('#installInProgress', function () {
+ it("stack version install is not in progress", function() {
+ expect(mainStackVersionsDetailsView.get('installInProgress')).to.be.false;
+ });
+ it("stack version install is in progress", function() {
+ mainStackVersionsDetailsView.get('hostStackVersions').pushObject({
+ installEnabled: false,
+ status: "INSTALLING"
+ });
+ expect(mainStackVersionsDetailsView.get('installInProgress')).to.be.true;
+ });
+ });
+
+
+ describe('#statusClass', function () {
+ var tests = [
+ {
+ status: "ALL_INSTALLED",
+ buttonClass: 'disabled'
+ },
+ {
+ status: "INSTALL",
+ buttonClass: 'btn-success'
+ },
+ {
+ status: "INSTALLING",
+ buttonClass: 'btn-primary disabled'
+ }
+ ].forEach(function(t) {
+ it("status is " + t.status + " class is " + t.buttonClass, function() {
+ mainStackVersionsDetailsView.reopen({'status': t.status});
+ expect(mainStackVersionsDetailsView.get('statusClass')).to.equal(t.buttonClass);
+ });
+ });
+ });
+});