You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/01/05 00:05:27 UTC
[46/50] [abbrv] ambari git commit: AMBARI-19351. ambari-web action to
download all client configs of host. (jaimin)
AMBARI-19351. ambari-web action to download all client configs of host. (jaimin)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4253a617
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4253a617
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4253a617
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 4253a6173281ee896aa237b87904c64667878c2f
Parents: e96dee0
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Wed Jan 4 11:35:13 2017 -0800
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Wed Jan 4 11:48:17 2017 -0800
----------------------------------------------------------------------
ambari-web/app/controllers/main/host/details.js | 13 +++++-
ambari-web/app/controllers/main/service.js | 2 +-
ambari-web/app/controllers/main/service/item.js | 2 +-
ambari-web/app/messages.js | 1 +
.../details/support_client_configs_download.js | 49 +++++++++++++++-----
ambari-web/app/templates/main/host/details.hbs | 5 ++
.../main/service/all_services_actions.hbs | 2 +-
ambari-web/app/views/main/host/details.js | 2 +
.../test/controllers/main/host/details_test.js | 25 ++++++++--
.../test/controllers/main/service/item_test.js | 4 +-
10 files changed, 84 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/controllers/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js
index a8f6c75..4a7cce4 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -2592,7 +2592,18 @@ App.MainHostDetailsController = Em.Controller.extend(App.SupportClientConfigsDow
this.downloadClientConfigsCall({
hostName: event.context.get('hostName'),
componentName: event.context.get('componentName'),
- displayName: event.context.get('displayName')
+ resourceType: this.resourceTypeEnum.HOST_COMPONENT
+ });
+ },
+
+ /**
+ * This controller action is called from the template when user clicks to download configs for "All Clients On Host"
+ */
+ downloadAllClientConfigs: function () {
+ var self = this;
+ this.downloadClientConfigsCall({
+ hostName: self.get('content.hostName'),
+ resourceType: this.resourceTypeEnum.HOST
});
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/controllers/main/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service.js b/ambari-web/app/controllers/main/service.js
index e4d751d..6e68ec5 100644
--- a/ambari-web/app/controllers/main/service.js
+++ b/ambari-web/app/controllers/main/service.js
@@ -147,7 +147,7 @@ App.MainServiceController = Em.ArrayController.extend(App.SupportClientConfigsDo
* Download client configs for all services
*/
downloadAllClientConfigs: function() {
- this.downloadClientConfigsCall({downloadAll: true});
+ this.downloadClientConfigsCall({resourceType: this.resourceTypeEnum.CLUSTER});
},
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/controllers/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js
index 19b021b..8921e22 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -1093,7 +1093,7 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow
this.downloadClientConfigsCall({
serviceName: this.get('content.serviceName'),
componentName: (event && event.name) || component.get('componentName'),
- displayName: (event && event.label) || component.get('displayName')
+ resourceType: this.resourceTypeEnum.SERVICE_COMPONENT
});
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 0b0b78e..1e25b3a 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2655,6 +2655,7 @@ Em.I18n.translations = {
'host.host.details.installClients': 'Install clients',
'host.host.details.reinstallClients': 'Reinstall clients',
'host.host.details.checkHost': 'Check host',
+ 'host.host.details.downloadAllClients': 'All Clients On Host',
'host.host.componentFilter.master':'Master Components',
'host.host.componentFilter.slave':'Slave Components',
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/mixins/main/host/details/support_client_configs_download.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/main/host/details/support_client_configs_download.js b/ambari-web/app/mixins/main/host/details/support_client_configs_download.js
index 58460f0..0b880b4 100644
--- a/ambari-web/app/mixins/main/host/details/support_client_configs_download.js
+++ b/ambari-web/app/mixins/main/host/details/support_client_configs_download.js
@@ -20,34 +20,59 @@ var App = require('app');
App.SupportClientConfigsDownload = Em.Mixin.create({
/**
+ * This object is supposed to be used as an enum for resource types supported by ambari
+ */
+ resourceTypeEnum: Object.freeze({
+ CLUSTER: "ClusterResource",
+ HOST: "HostResource",
+ SERVICE: "ServiceResource",
+ SERVICE_COMPONENT: "ServiceComponentResource",
+ HOST_COMPONENT: "HostComponentResource"
+ }),
+
+ /**
*
- * @param {{hostName: string, componentName: string, displayName: string, serviceName: string}} data
+ * @param {{hostName: string, componentName: string, displayName: string, serviceName: string, resourceType: resourceTypeEnum}} data
*/
downloadClientConfigsCall: function (data) {
- var url = this._getUrl(data.hostName, data.serviceName, data.componentName, data.downloadAll);
+ var url = this._getUrl(data.hostName, data.serviceName, data.componentName, data.resourceType);
var newWindow = window.open(url);
newWindow.focus();
},
- _getDownloadAllUrl: function () {
- return App.get('apiPrefix') + '/clusters/' + App.router.getClusterName() + '/components?format=client_config_tar';
- },
/**
*
* @param {string|null} hostName
* @param {string} serviceName
* @param {string} componentName
+ * @param {string} resourceType
* @returns {string}
* @private
*/
- _getUrl: function (hostName, serviceName, componentName, downloadAll) {
- if (downloadAll) {
- return this._getDownloadAllUrl();
+ _getUrl: function (hostName, serviceName, componentName, resourceType) {
+ var result;
+ var prefix = App.get('apiPrefix') + '/clusters/' + App.router.getClusterName() + '/';
+
+ switch (resourceType) {
+ case this.resourceTypeEnum.SERVICE_COMPONENT:
+ result = prefix + 'services/' + serviceName + '/components/' + componentName;
+ break;
+ case this.resourceTypeEnum.HOST_COMPONENT:
+ result = prefix + 'hosts/' + hostName + '/host_components/' + componentName;
+ break;
+ case this.resourceTypeEnum.HOST:
+ result = prefix + 'hosts/' + hostName + '/host_components';
+ break;
+ case this.resourceTypeEnum.SERVICE:
+ result = prefix + 'services/' + serviceName + '/components';
+ break;
+ case this.resourceTypeEnum.CLUSTER:
+ default:
+ result = prefix + 'components';
}
- var isForHost = !Em.isNone(hostName);
- return App.get('apiPrefix') + '/clusters/' + App.router.getClusterName() + '/' +
- (isForHost ? 'hosts/' + hostName + '/host_components/' : 'services/' + serviceName + '/components/') +
- componentName + '?format=client_config_tar';
+
+ result += '?format=client_config_tar';
+ return result;
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/templates/main/host/details.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/host/details.hbs b/ambari-web/app/templates/main/host/details.hbs
index 630f0da..bd75f5c 100644
--- a/ambari-web/app/templates/main/host/details.hbs
+++ b/ambari-web/app/templates/main/host/details.hbs
@@ -51,6 +51,11 @@
<div class="dropdown-menu-wrap">
<ul class="dropdown-menu">
+ {{#if view.hasManyClientsWithConfigs}}
+ <li>
+ <a id="all-clients-on-host-link" {{action "downloadAllClientConfigs" target="controller" href=true}}>{{t host.host.details.downloadAllClients}}</a>
+ </li>
+ {{/if}}
{{#each client in view.clientsWithConfigs}}
<li>
<a {{action "downloadClientConfigs" client target="controller" href=true}}>{{client.displayName}}</a>
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/templates/main/service/all_services_actions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/all_services_actions.hbs b/ambari-web/app/templates/main/service/all_services_actions.hbs
index a185e4f..9756f01 100644
--- a/ambari-web/app/templates/main/service/all_services_actions.hbs
+++ b/ambari-web/app/templates/main/service/all_services_actions.hbs
@@ -59,7 +59,7 @@
</li>
{{/isAuthorized}}
<li>
- <a href="#"
+ <a href="#" id="all-clients-of-cluster-link"
{{action "downloadAllClientConfigs" target="view.serviceController"}}>
<i {{bindAttr class=":glyphicon :glyphicon-download-alt"}}></i>
{{t services.service.downloadAllClientConfigs}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/app/views/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/details.js b/ambari-web/app/views/main/host/details.js
index ba507a3..54e3a76 100644
--- a/ambari-web/app/views/main/host/details.js
+++ b/ambari-web/app/views/main/host/details.js
@@ -36,6 +36,8 @@ App.MainHostDetailsView = Em.View.extend({
});
}.property('content.hostComponents.@each'),
+ hasManyClientsWithConfigs: Em.computed.gt('clientsWithConfigs.length', 1),
+
isActive: Em.computed.equal('controller.content.passiveState', 'OFF'),
maintenance: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/test/controllers/main/host/details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/host/details_test.js b/ambari-web/test/controllers/main/host/details_test.js
index 2f4376f..a4cb177 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -2439,14 +2439,33 @@ describe('App.MainHostDetailsController', function () {
controller.downloadClientConfigs({
context: Em.Object.create({
componentName: 'name',
- hostName: 'host1',
- displayName: 'dName'
+ hostName: 'host1'
})
});
expect(controller.downloadClientConfigsCall.calledWith({
componentName: 'name',
hostName: 'host1',
- displayName: 'dName'
+ resourceType: controller.resourceTypeEnum.HOST_COMPONENT
+ })).to.be.true;
+ });
+ });
+
+ describe('#downloadAllClientConfigs', function () {
+
+ beforeEach(function () {
+ sinon.stub(controller, 'downloadClientConfigsCall', Em.K);
+ sinon.stub(controller, 'get').withArgs('content.hostName').returns('host1');
+ });
+ afterEach(function () {
+ controller.downloadClientConfigsCall.restore();
+ controller.get.restore();
+ });
+
+ it('should launch controller.downloadClientConfigsCall method', function () {
+ controller.downloadAllClientConfigs();
+ expect(controller.downloadClientConfigsCall.calledWith({
+ hostName: 'host1',
+ resourceType: controller.resourceTypeEnum.HOST
})).to.be.true;
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/4253a617/ambari-web/test/controllers/main/service/item_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/item_test.js b/ambari-web/test/controllers/main/service/item_test.js
index a22733f..4b3a419 100644
--- a/ambari-web/test/controllers/main/service/item_test.js
+++ b/ambari-web/test/controllers/main/service/item_test.js
@@ -1214,7 +1214,7 @@ describe('App.MainServiceItemController', function () {
expect(mainServiceItemController.downloadClientConfigsCall.calledWith({
serviceName: 'S1',
componentName: 'C1',
- displayName: 'd1'
+ resourceType: mainServiceItemController.resourceTypeEnum.SERVICE_COMPONENT
})).to.be.true;
});
it('should launch $.fileDownload method, event passed', function () {
@@ -1226,7 +1226,7 @@ describe('App.MainServiceItemController', function () {
expect(mainServiceItemController.downloadClientConfigsCall.calledWith({
serviceName: 'S1',
componentName: 'name1',
- displayName: 'label1'
+ resourceType: mainServiceItemController.resourceTypeEnum.SERVICE_COMPONENT
})).to.be.true;
});
});