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 2018/05/02 16:16:37 UTC
[ambari] branch trunk updated: AMBARI-23728 Group HDFS components
into the components section of the ambari service summary page.
(ababiichuk)
This is an automated email from the ASF dual-hosted git repository.
ababiichuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new 1ab8001 AMBARI-23728 Group HDFS components into the components section of the ambari service summary page. (ababiichuk)
1ab8001 is described below
commit 1ab8001adf30a50bfe76c661d2ae0a66780285cd
Author: ababiichuk <ab...@hortonworks.com>
AuthorDate: Wed May 2 16:03:24 2018 +0300
AMBARI-23728 Group HDFS components into the components section of the ambari service summary page. (ababiichuk)
---
ambari-web/app/assets/test/tests.js | 1 +
.../main/service/info/summary/hdfs/slaves.hbs | 141 +++++++++++++++++++++
.../main/service/info/summary/hdfs/widgets.hbs | 4 +
.../service/info/summary/master_components.hbs | 7 +-
.../app/templates/main/service/services/hdfs.hbs | 128 +------------------
ambari-web/app/views.js | 1 +
.../main/service/info/components_list_view.js | 3 +
ambari-web/app/views/main/service/info/summary.js | 3 +-
.../views/main/service/info/summary/hdfs/slaves.js | 63 +++++++++
.../main/service/info/summary/hdfs/widgets.js | 5 +
ambari-web/app/views/main/service/services/hdfs.js | 41 +-----
.../main/service/info/summary/hdfs/slaves_test.js | 79 ++++++++++++
.../test/views/main/service/services/hdfs_test.js | 40 ------
13 files changed, 311 insertions(+), 205 deletions(-)
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 8da6044..482f046 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -353,6 +353,7 @@ var files = [
'test/views/main/service/info/component_list_view_test',
'test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test',
'test/views/main/service/info/metrics/flume/flume_agent_metrics_section_test',
+ 'test/views/main/service/info/summary/hdfs/slaves_test',
'test/views/main/service/services/hdfs_test',
'test/views/main/service/services/hbase_test',
'test/views/main/service/services/ranger_test',
diff --git a/ambari-web/app/templates/main/service/info/summary/hdfs/slaves.hbs b/ambari-web/app/templates/main/service/info/summary/hdfs/slaves.hbs
new file mode 100644
index 0000000..5ce4cc9
--- /dev/null
+++ b/ambari-web/app/templates/main/service/info/summary/hdfs/slaves.hbs
@@ -0,0 +1,141 @@
+{{!
+* 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="col-md-12">
+ <div class="col-md-2">
+ {{#if view.showTitle}}
+ {{t dashboard.services.hdfs.summary.components}}
+ {{/if}}
+ </div>
+ <div class="col-md-10">
+ {{! Data Nodes }}
+ {{#if view.isDataNodeCreated}}
+ <div {{bindAttr class=":row :component :col-md-3 view.dataNodeComponent.componentName"}}>
+ <div class="summary-value main-info">
+ {{#if App.router.clusterController.isServiceContentFullyLoaded}}
+ <span>
+ {{#view App.ComponentLiveTextView liveComponentsBinding="view.service.dataNodesStarted" totalComponentsBinding="view.service.dataNodesTotal"}}
+ {{view.liveComponents}}/{{view.totalComponents}}
+ {{/view}}
+ </span>
+ {{t common.started}}
+ {{else}}
+ {{t common.loading.eclipses}}
+ {{/if}}
+ </div>
+ <div class="summary-label">
+ <a href="#" {{action filterHosts view.dataNodeComponent}}>{{t dashboard.services.hdfs.datanodes}}</a>
+ </div>
+ </div>
+ {{/if}}
+ {{! JournalNodes }}
+ {{#if view.isJournalNodeCreated}}
+ <div {{bindAttr class=":row :component :col-md-3 view.journalNodeComponent.componentName"}}>
+ <div class="summary-value main-info">
+ {{#if App.router.clusterController.isComponentsStateLoaded}}
+ <span>
+ {{#view App.ComponentLiveTextView liveComponentsBinding="view.journalNodesLive" totalComponentsBinding="view.journalNodesTotal"}}
+ {{view.liveComponents}}/{{view.totalComponents}}
+ {{/view}}
+ </span>
+ <span> {{t common.live}} </span>
+ {{else}}
+ {{t common.loading.eclipses}}
+ {{/if}}
+ </div>
+ <div class="summary-label">
+ <a
+ href="#" {{action filterHosts view.journalNodeComponent}}>{{t dashboard.services.hdfs.journalnodes}}</a>
+ </div>
+ </div>
+ {{/if}}
+ {{! NFS Gateway }}
+ {{#if view.isNfsInStack}}
+ <div {{bindAttr class=":row :component :col-md-3 view.nfsGatewayComponent.componentName"}}>
+ <div class="summary-value main-info">
+ {{#if App.router.clusterController.isServiceContentFullyLoaded}}
+ <span>
+ {{#view App.ComponentLiveTextView liveComponentsBinding="view.service.nfsGatewaysStarted" totalComponentsBinding="view.service.nfsGatewaysTotal"}}
+ {{view.liveComponents}}/{{view.totalComponents}}
+ {{/view}}
+ </span>
+ {{t common.started}}
+ {{else}}
+ {{t common.loading.eclipses}}
+ {{/if}}
+ </div>
+ <div class="summary-label">
+ <a href="#" {{action filterHosts view.nfsGatewayComponent}}>{{t dashboard.services.hdfs.nfsgateways}}</a>
+ </div>
+ </div>
+ {{/if}}
+ {{! indent next row}}
+ <div class="row"></div>
+ {{! Data Node Counts live }}
+ <div class="row datanode-count-live col-md-3">
+ <div class="summary-value">
+ {{#if view.service.metricsNotAvailable}}
+ <div class="main-info">
+ {{t services.service.summary.notAvailable}}
+ </div>
+ {{else}}
+ <span class="main-info" rel="tooltip"
+ {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.live" }}>
+ {{view.service.liveDataNodes.length}}
+ </span>
+ <div class="info-desc">{{t dashboard.services.hdfs.nodes.live}}</div>
+ {{/if}}
+ </div>
+ <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
+ </div>
+ {{! Data Node Counts dead }}
+ <div class="row datanode-count-dead col-md-3">
+ <div class="summary-value">
+ {{#if view.service.metricsNotAvailable}}
+ <div class="main-info">
+ {{t services.service.summary.notAvailable}}
+ </div>
+ {{else}}
+ <span class="main-info" rel="tooltip"
+ {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.dead" }}>
+ {{view.service.deadDataNodes.length}}
+ </span>
+ <div class="info-desc">{{t dashboard.services.hdfs.nodes.dead}}</div>
+ {{/if}}
+ </div>
+ <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
+ </div>
+ {{! Data Node Counts decommission }}
+ <div class="row datanode-count-decommission col-md-3">
+ <div class="summary-value">
+ {{#if view.service.metricsNotAvailable}}
+ <div class="main-info">
+ {{t services.service.summary.notAvailable}}
+ </div>
+ {{else}}
+ <span class="main-info" rel="tooltip"
+ {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.decommission" }}>
+ {{view.service.decommissionDataNodes.length}}
+ </span>
+ <div class="info-desc">{{t dashboard.services.hdfs.nodes.decom}}</div>
+ {{/if}}
+ </div>
+ <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
+ </div>
+ </div>
+</div>
diff --git a/ambari-web/app/templates/main/service/info/summary/hdfs/widgets.hbs b/ambari-web/app/templates/main/service/info/summary/hdfs/widgets.hbs
index 0c59549..58e9814 100644
--- a/ambari-web/app/templates/main/service/info/summary/hdfs/widgets.hbs
+++ b/ambari-web/app/templates/main/service/info/summary/hdfs/widgets.hbs
@@ -34,6 +34,10 @@
</div>
</div>
+{{#if view.showSlaveComponents}}
+ {{view view.slaveComponentsView summaryViewBinding="view.parentView.summaryView"}}
+{{/if}}
+
{{! Service Metrics Section }}
<div {{bindAttr class=":col-md-12 :metrics-summary view.isNonFederatedHDFS::multiple-master-groups"}}>
<div class="col-md-2">
diff --git a/ambari-web/app/templates/main/service/info/summary/master_components.hbs b/ambari-web/app/templates/main/service/info/summary/master_components.hbs
index 7549caf..f604e40 100644
--- a/ambari-web/app/templates/main/service/info/summary/master_components.hbs
+++ b/ambari-web/app/templates/main/service/info/summary/master_components.hbs
@@ -32,8 +32,9 @@
{{#each comp in group.components}}
<div {{bindAttr class="comp.isSubComponent:component-small :component :col-md-3 comp.componentName :row"}}>
<div {{bindAttr class=":summary-value comp.summaryValueClassName"}}>
- <span rel='SummaryComponentHealthTooltip'
- {{bindAttr class="comp.statusClass comp.statusIconClass" data-original-title="comp.passiveTooltip"}}></span>
+ <span rel='SummaryComponentHealthTooltip'
+ {{bindAttr class="comp.statusClass comp.statusIconClass"
+ data-original-title="comp.passiveTooltip"}}></span>
<span class="main-info">{{comp.componentTextStatus}}</span>
{{#if comp.alertsCount}}
<span {{action "showServiceAlertsPopup" comp target="controller"}}
@@ -57,7 +58,7 @@
</div>
</div>
{{#if group.componentWidgetsView}}
- {{view group.componentWidgetsView}}
+ {{view group.componentWidgetsView slaveComponentsViewBinding="view.slaveComponentsView"}}
{{/if}}
{{/if}}
{{/each}}
diff --git a/ambari-web/app/templates/main/service/services/hdfs.hbs b/ambari-web/app/templates/main/service/services/hdfs.hbs
index 1b11143..d3a5a62 100644
--- a/ambari-web/app/templates/main/service/services/hdfs.hbs
+++ b/ambari-web/app/templates/main/service/services/hdfs.hbs
@@ -19,129 +19,9 @@
<div class="row">
{{! Component Section }}
<div class="component-summary">
- {{view view.dashboardMasterComponentView}}
- <div class="col-md-12">
- <div class="col-md-2">
- {{#if view.hasMultipleMasterGroups}}
- {{t dashboard.services.hdfs.summary.components}}
- {{/if}}
- </div>
- <div class="col-md-10">
- {{! Data Nodes }}
- {{#if view.isDataNodeCreated}}
- <div {{bindAttr class=":row :component :col-md-3 view.dataNodeComponent.componentName"}}>
- <div class="summary-value main-info">
- {{#if App.router.clusterController.isServiceContentFullyLoaded}}
- <span>
- {{#view App.ComponentLiveTextView liveComponentsBinding="view.service.dataNodesStarted" totalComponentsBinding="view.service.dataNodesTotal"}}
- {{view.liveComponents}}/{{view.totalComponents}}
- {{/view}}
- </span>
- {{t common.started}}
- {{else}}
- {{t common.loading.eclipses}}
- {{/if}}
- </div>
- <div class="summary-label">
- <a href="#" {{action filterHosts view.dataNodeComponent}}>{{t dashboard.services.hdfs.datanodes}}</a>
- </div>
- </div>
- {{/if}}
- {{! JournalNodes }}
- {{#if view.isJournalNodeCreated}}
- <div {{bindAttr class=":row :component :col-md-3 view.journalNodeComponent.componentName"}}>
- <div class="summary-value main-info">
- {{#if App.router.clusterController.isComponentsStateLoaded}}
- <span>
- {{#view App.ComponentLiveTextView liveComponentsBinding="view.journalNodesLive" totalComponentsBinding="view.journalNodesTotal"}}
- {{view.liveComponents}}/{{view.totalComponents}}
- {{/view}}
- </span>
- <span> {{t common.live}} </span>
- {{else}}
- {{t common.loading.eclipses}}
- {{/if}}
- </div>
- <div class="summary-label">
- <a
- href="#" {{action filterHosts view.journalNodeComponent}}>{{t dashboard.services.hdfs.journalnodes}}</a>
- </div>
- </div>
- {{/if}}
- {{! NFS Gateway }}
- {{#if view.isNfsInStack}}
- <div {{bindAttr class=":row :component :col-md-3 view.nfsGatewayComponent.componentName"}}>
- <div class="summary-value main-info">
- {{#if App.router.clusterController.isServiceContentFullyLoaded}}
- <span>
- {{#view App.ComponentLiveTextView liveComponentsBinding="view.service.nfsGatewaysStarted" totalComponentsBinding="view.service.nfsGatewaysTotal"}}
- {{view.liveComponents}}/{{view.totalComponents}}
- {{/view}}
- </span>
- {{t common.started}}
- {{else}}
- {{t common.loading.eclipses}}
- {{/if}}
- </div>
- <div class="summary-label">
- <a href="#" {{action filterHosts view.nfsGatewayComponent}}>{{t dashboard.services.hdfs.nfsgateways}}</a>
- </div>
- </div>
- {{/if}}
- {{! indent next row}}
- <div class="row"></div>
- {{! Data Node Counts live }}
- <div class="row datanode-count-live col-md-3">
- <div class="summary-value">
- {{#if view.service.metricsNotAvailable}}
- <div class="main-info">
- {{t services.service.summary.notAvailable}}
- </div>
- {{else}}
- <span class="main-info" rel="tooltip"
- {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.live" }}>
- {{view.service.liveDataNodes.length}}
- </span>
- <div class="info-desc">{{t dashboard.services.hdfs.nodes.live}}</div>
- {{/if}}
- </div>
- <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
- </div>
- {{! Data Node Counts dead }}
- <div class="row datanode-count-dead col-md-3">
- <div class="summary-value">
- {{#if view.service.metricsNotAvailable}}
- <div class="main-info">
- {{t services.service.summary.notAvailable}}
- </div>
- {{else}}
- <span class="main-info" rel="tooltip"
- {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.dead" }}>
- {{view.service.deadDataNodes.length}}
- </span>
- <div class="info-desc">{{t dashboard.services.hdfs.nodes.dead}}</div>
- {{/if}}
- </div>
- <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
- </div>
- {{! Data Node Counts decommission }}
- <div class="row datanode-count-decommission col-md-3">
- <div class="summary-value">
- {{#if view.service.metricsNotAvailable}}
- <div class="main-info">
- {{t services.service.summary.notAvailable}}
- </div>
- {{else}}
- <span class="main-info" rel="tooltip"
- {{translateAttr data-original-title="dashboard.services.hdfs.datanode.status.tooltip.decommission" }}>
- {{view.service.decommissionDataNodes.length}}
- </span>
- <div class="info-desc">{{t dashboard.services.hdfs.nodes.decom}}</div>
- {{/if}}
- </div>
- <div class="summary-label">{{t dashboard.services.hdfs.datanodecounts}}</div>
- </div>
- </div>
- </div>
+ {{view view.dashboardMasterComponentView slaveComponentsViewBinding="view.slaveComponentsView" summaryViewBinding="view"}}
+ {{#if view.hasMultipleMasterGroups}}
+ {{view view.slaveComponentsView slaveComponentsViewBinding="view.slaveComponentsView" summaryViewBinding="view" showTitle=true}}
+ {{/if}}
</div>
</div>
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 8af9edd..59094d3 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -312,6 +312,7 @@ require('views/main/service/reconfigure');
require('views/main/service/info/components_list_view');
require('views/main/service/info/menu');
require('views/main/service/info/summary');
+require('views/main/service/info/summary/hdfs/slaves');
require('views/main/service/info/summary/hdfs/widgets');
require('views/main/service/info/configs');
require('views/main/service/info/metric_graphs_view');
diff --git a/ambari-web/app/views/main/service/info/components_list_view.js b/ambari-web/app/views/main/service/info/components_list_view.js
index 524be23..9d0f6c4 100644
--- a/ambari-web/app/views/main/service/info/components_list_view.js
+++ b/ambari-web/app/views/main/service/info/components_list_view.js
@@ -21,6 +21,9 @@ var App = require('app');
App.SummaryMasterComponentsView = Em.View.extend({
templateName: require('templates/main/service/info/summary/master_components'),
+ // should be bound to App.MainDashboardServiceHdfsView instance
+ summaryView: null,
+
mastersComp: [
{
components: []
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index 35f0486..df7dc91 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -462,7 +462,8 @@ App.MainServiceInfoSummaryView = Em.View.extend({
groups.push({
components: [],
componentWidgetsView: App.HDFSSummaryWidgetsView.extend({
- nameSpace: component.get('haNameSpace') || 'default'
+ nameSpace: component.get('haNameSpace') || 'default',
+ showSlaveComponents: true
})
});
}
diff --git a/ambari-web/app/views/main/service/info/summary/hdfs/slaves.js b/ambari-web/app/views/main/service/info/summary/hdfs/slaves.js
new file mode 100644
index 0000000..176a624
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/summary/hdfs/slaves.js
@@ -0,0 +1,63 @@
+/**
+ * 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.
+ */
+
+App.HDFSSlaveComponentsView = Em.View.extend({
+ templateName: require('templates/main/service/info/summary/hdfs/slaves'),
+
+ showTitle: false,
+
+ // should be bound to App.MainDashboardServiceHdfsView instance
+ summaryView: null,
+
+ dataNodeComponent: Em.Object.create({
+ componentName: 'DATANODE'
+ }),
+
+ journalNodeComponent: Em.Object.create({
+ componentName: 'JOURNALNODE'
+ }),
+
+ nfsGatewayComponent: Em.Object.create({
+ componentName: 'NFS_GATEWAY'
+ }),
+
+ service: Em.computed.alias('summaryView.service'),
+
+ isDataNodeCreated: function () {
+ return this.get('summaryView') ? this.get('summaryView').isServiceComponentCreated('DATANODE') : false;
+ }.property('App.router.clusterController.isComponentsStateLoaded'),
+
+ isJournalNodeCreated: function () {
+ return this.get('summaryView') ? this.get('summaryView').isServiceComponentCreated('JOURNALNODE') : false;
+ }.property('App.router.clusterController.isComponentsStateLoaded'),
+
+ journalNodesLive: function () {
+ return this.get('service.journalNodes').filterProperty('workStatus', 'STARTED').get('length');
+ }.property('service.journalNodes.@each.workStatus'),
+
+ journalNodesTotal: Em.computed.alias('service.journalNodes.length'),
+
+ /**
+ * Define if NFS_GATEWAY is present in the installed stack
+ * @type {Boolean}
+ */
+ isNfsInStack: function () {
+ return App.StackServiceComponent.find().someProperty('componentName', 'NFS_GATEWAY');
+ }.property()
+});
+
diff --git a/ambari-web/app/views/main/service/info/summary/hdfs/widgets.js b/ambari-web/app/views/main/service/info/summary/hdfs/widgets.js
index ae6fbab..4e03db9 100644
--- a/ambari-web/app/views/main/service/info/summary/hdfs/widgets.js
+++ b/ambari-web/app/views/main/service/info/summary/hdfs/widgets.js
@@ -53,6 +53,11 @@ App.HDFSSummaryWidgetsView = Em.View.extend(App.NameNodeWidgetMixin, {
subGroupId: Em.computed.alias('nameSpace'),
+ showSlaveComponents: false,
+
+ // should be bound to App.HDFSSlaveComponentsView instance
+ slaveComponentsView: null,
+
nodeUptime: function () {
const uptime = this.get('model.nameNodeStartTimeValues')[this.get('hostName')];
if (uptime && uptime > 0) {
diff --git a/ambari-web/app/views/main/service/services/hdfs.js b/ambari-web/app/views/main/service/services/hdfs.js
index bce9690..485e448 100644
--- a/ambari-web/app/views/main/service/services/hdfs.js
+++ b/ambari-web/app/views/main/service/services/hdfs.js
@@ -17,11 +17,14 @@
var App = require('app');
var date = require('utils/date/date');
+require('views/main/service/info/summary/hdfs/slaves');
App.MainDashboardServiceHdfsView = App.MainDashboardServiceView.extend({
templateName: require('templates/main/service/services/hdfs'),
serviceName: 'HDFS',
+ slaveComponentsView: App.HDFSSlaveComponentsView.extend(),
+
metricsNotAvailableObserver: function () {
if(!this.get("service.metricsNotAvailable")) {
App.tooltip($("[rel='tooltip']"));
@@ -30,41 +33,5 @@ App.MainDashboardServiceHdfsView = App.MainDashboardServiceView.extend({
willDestroyElement: function() {
$("[rel='tooltip']").tooltip('destroy');
- },
-
- dataNodesDead: Em.computed.alias('service.dataNodesInstalled'),
-
- journalNodesLive: function () {
- return this.get('service.journalNodes').filterProperty("workStatus", "STARTED").get("length");
- }.property("service.journalNodes.@each.workStatus"),
-
- journalNodesTotal: Em.computed.alias('service.journalNodes.length'),
-
- dataNodeComponent: Em.Object.create({
- componentName: 'DATANODE'
- }),
-
- nfsGatewayComponent: Em.Object.create({
- componentName: 'NFS_GATEWAY'
- }),
-
- /**
- * Define if NFS_GATEWAY is present in the installed stack
- * @type {Boolean}
- */
- isNfsInStack: function () {
- return App.StackServiceComponent.find().someProperty('componentName', 'NFS_GATEWAY');
- }.property(),
-
- journalNodeComponent: Em.Object.create({
- componentName: 'JOURNALNODE'
- }),
-
- isDataNodeCreated: function () {
- return this.isServiceComponentCreated('DATANODE');
- }.property('App.router.clusterController.isComponentsStateLoaded'),
-
- isJournalNodeCreated: function () {
- return this.isServiceComponentCreated('JOURNALNODE');
- }.property('App.router.clusterController.isComponentsStateLoaded')
+ }
});
diff --git a/ambari-web/test/views/main/service/info/summary/hdfs/slaves_test.js b/ambari-web/test/views/main/service/info/summary/hdfs/slaves_test.js
new file mode 100644
index 0000000..cb780ae
--- /dev/null
+++ b/ambari-web/test/views/main/service/info/summary/hdfs/slaves_test.js
@@ -0,0 +1,79 @@
+/**
+ * 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/service/info/summary/hdfs/slaves');
+
+function getView(options) {
+ return App.HDFSSlaveComponentsView.create(options || {});
+}
+
+describe('App.HDFSSlaveComponentsView', function () {
+ var view;
+
+ beforeEach(function () {
+ view = getView({
+ service: Em.Object.create()
+ });
+ });
+
+ App.TestAliases.testAsComputedAlias(getView(), 'journalNodesTotal', 'service.journalNodes.length', 'number');
+
+ describe('#journalNodesLive', function () {
+
+ it('should return live journal nodes count', function () {
+ view.set('service', Em.Object.create({
+ journalNodes: [
+ Em.Object.create({
+ workStatus: 'STARTED'
+ }),
+ Em.Object.create()
+ ]
+ }));
+ view.propertyDidChange('journalNodesLive');
+ expect(view.get('journalNodesLive')).to.be.equal(1);
+ });
+ });
+
+ describe('#isNfsInStack', function () {
+
+ beforeEach(function () {
+ this.mock = sinon.stub(App.StackServiceComponent, 'find');
+ });
+ afterEach(function () {
+ this.mock.restore();
+ });
+
+ it('no NFS_GATEWAY component', function () {
+ this.mock.returns([]);
+ view.propertyDidChange('isNfsInStack');
+ expect(view.get('isNfsInStack')).to.be.false;
+ });
+
+ it('NFS_GATEWAY component present', function () {
+ this.mock.returns([
+ {
+ componentName: 'NFS_GATEWAY'
+ }
+ ]);
+ view.propertyDidChange('isNfsInStack');
+ expect(view.get('isNfsInStack')).to.be.true;
+ });
+ });
+
+});
diff --git a/ambari-web/test/views/main/service/services/hdfs_test.js b/ambari-web/test/views/main/service/services/hdfs_test.js
index 21fefb9..d2814fa 100644
--- a/ambari-web/test/views/main/service/services/hdfs_test.js
+++ b/ambari-web/test/views/main/service/services/hdfs_test.js
@@ -31,10 +31,6 @@ describe('App.MainDashboardServiceHdfsView', function () {
view = getView({service: Em.Object.create()});
});
- App.TestAliases.testAsComputedAlias(getView(), 'dataNodesDead', 'service.dataNodesInstalled', 'boolean');
-
- App.TestAliases.testAsComputedAlias(getView(), 'journalNodesTotal', 'service.journalNodes.length', 'number');
-
describe("#metricsNotAvailableObserver()", function() {
beforeEach(function() {
@@ -72,40 +68,4 @@ describe('App.MainDashboardServiceHdfsView', function () {
});
});
- describe("#journalNodesLive", function() {
-
- it("should return live journal nodes count", function() {
- view.set('service', Em.Object.create({
- journalNodes: [
- Em.Object.create({workStatus: 'STARTED'}),
- Em.Object.create()
- ]
- }));
- view.propertyDidChange('journalNodesLive');
- expect(view.get('journalNodesLive')).to.be.equal(1);
- });
- });
-
- describe("#isNfsInStack", function() {
-
- beforeEach(function() {
- this.mock = sinon.stub(App.StackServiceComponent, 'find');
- });
- afterEach(function() {
- this.mock.restore();
- });
-
- it("no NFS_GATEWAY component", function() {
- this.mock.returns([]);
- view.propertyDidChange('isNfsInStack');
- expect(view.get('isNfsInStack')).to.be.false;
- });
-
- it("NFS_GATEWAY component present", function() {
- this.mock.returns([{componentName: 'NFS_GATEWAY'}]);
- view.propertyDidChange('isNfsInStack');
- expect(view.get('isNfsInStack')).to.be.true;
- });
- });
-
});
--
To stop receiving notification emails like this one, please contact
ababiichuk@apache.org.