Repository: ambari Updated Branches: refs/heads/branch-2.4 01b02b279 -> 342d392b6
AMBARI-17195. HiveServer2 Interactive UI Quicklink related issues (akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/342d392b Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/342d392b Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/342d392b Branch: refs/heads/branch-2.4 Commit: 342d392b686e6309e8ec0009843057094a5d921b Parents: 01b02b2 Author: Aleksandr Kovalenko <[email protected]> Authored: Mon Jun 13 17:36:02 2016 +0300 Committer: Aleksandr Kovalenko <[email protected]> Committed: Tue Jun 14 13:53:49 2016 +0300 ---------------------------------------------------------------------- ambari-web/app/controllers/global/cluster_controller.js | 9 +++++++++ ambari-web/app/mappers/components_state_mapper.js | 11 ++++++++++- ambari-web/app/mappers/service_metrics_mapper.js | 12 ++++++++++-- ambari-web/app/mixins/common/configs/configs_saver.js | 5 ++--- ambari-web/app/views/common/quick_view_link_view.js | 6 +++++- 5 files changed, 36 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/342d392b/ambari-web/app/controllers/global/cluster_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js index d8a3664..0d9d41d 100644 --- a/ambari-web/app/controllers/global/cluster_controller.js +++ b/ambari-web/app/controllers/global/cluster_controller.js @@ -49,6 +49,11 @@ App.ClusterController = Em.Controller.extend(App.ReloadPopupMixin, { isHostComponentMetricsLoaded: false, /** + * This counter used as event trigger to notify that quick links should be changed. + */ + quickLinksUpdateCounter: 0, + + /** * Ambari uses custom jdk. * @type {Boolean} */ @@ -488,5 +493,9 @@ App.ClusterController = Em.Controller.extend(App.ReloadPopupMixin, { name: 'cluster.load_last_upgrade', sender: this }); + }, + + triggerQuickLinksUpdate: function() { + this.incrementProperty('quickLinksUpdateCounter'); } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/342d392b/ambari-web/app/mappers/components_state_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/components_state_mapper.js b/ambari-web/app/mappers/components_state_mapper.js index eb9ebd5..3ad8e49 100644 --- a/ambari-web/app/mappers/components_state_mapper.js +++ b/ambari-web/app/mappers/components_state_mapper.js @@ -164,8 +164,13 @@ App.componentsStateMapper = App.QuickDataMapper.create({ var clients = []; var slaves = []; var masters = []; + var hasNewComponents = false; if (json.items) { + if (!App.isEmptyObject(Em.getWithDefault(App, 'cache.services', {}))) { + hasNewComponents = json.items.mapProperty('ServiceComponentInfo.total_count').reduce(Em.sum, 0) > + App.cache.services.mapProperty('host_components.length').reduce(Em.sum, 0); + } json.items.forEach(function (item) { var componentConfig = this.getComponentConfig(item.ServiceComponentInfo.component_name); var parsedItem = this.parseIt(item, componentConfig); @@ -198,12 +203,16 @@ App.componentsStateMapper = App.QuickDataMapper.create({ } } } - }, this) + }, this); } App.store.loadMany(this.clientModel, clients); App.store.loadMany(this.slaveModel, slaves); App.store.loadMany(this.masterModel, masters); + if (hasNewComponents) { + App.get('router.clusterController').triggerQuickLinksUpdate(); + } + console.timeEnd('App.componentsStateMapper execution time'); } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/342d392b/ambari-web/app/mappers/service_metrics_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/service_metrics_mapper.js b/ambari-web/app/mappers/service_metrics_mapper.js index d862df7..bf4fc91 100644 --- a/ambari-web/app/mappers/service_metrics_mapper.js +++ b/ambari-web/app/mappers/service_metrics_mapper.js @@ -180,6 +180,7 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ var hostComponents = []; var services = App.cache['services']; var previousComponentStatuses = App.cache['previousComponentStatuses']; + var lastKnownStatusesLength = Em.keys(previousComponentStatuses).length; var previousComponentPassiveStates = App.cache['previousComponentPassiveStates']; var result = []; var advancedHostComponents = []; @@ -199,8 +200,8 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ component.host_components.forEach(function (host_component) { var id = host_component.HostRoles.component_name + "_" + host_component.HostRoles.host_name; hostComponentIdsMap[id] = true; - previousComponentStatuses[host_component.id] = host_component.HostRoles.state; - previousComponentPassiveStates[host_component.id] = host_component.HostRoles.maintenance_state; + previousComponentStatuses[id] = host_component.HostRoles.state; + previousComponentPassiveStates[id] = host_component.HostRoles.maintenance_state; this.config3.ha_status = host_component.HostRoles.component_name == "HBASE_MASTER" ? 'metrics.hbase.master.IsActiveMaster' : 'HostRoles.ha_state'; var comp = this.parseIt(host_component, this.config3); @@ -252,6 +253,13 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ //load services to model App.store.loadMany(this.get('model'), result); + + // check for new components + if (lastKnownStatusesLength > 0) { + if (lastKnownStatusesLength < Em.keys(App.cache.previousComponentStatuses).length) { + App.get('router.clusterController').triggerQuickLinksUpdate(); + } + } } console.timeEnd('App.serviceMetricsMapper execution time'); }, http://git-wip-us.apache.org/repos/asf/ambari/blob/342d392b/ambari-web/app/mixins/common/configs/configs_saver.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/configs_saver.js b/ambari-web/app/mixins/common/configs/configs_saver.js index 8d2869c..f486180 100644 --- a/ambari-web/app/mixins/common/configs/configs_saver.js +++ b/ambari-web/app/mixins/common/configs/configs_saver.js @@ -690,9 +690,8 @@ App.ConfigsSaverMixin = Em.Mixin.create({ messageClass = 'alert alert-error'; value = result.value; } - if(currentService){ - App.QuickViewLinks.proto().set('content', currentService); - App.QuickViewLinks.proto().loadTags(); + if (currentService){ + App.get('router.clusterController').triggerQuickLinksUpdate(); } // update configs for service actions http://git-wip-us.apache.org/repos/asf/ambari/blob/342d392b/ambari-web/app/views/common/quick_view_link_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js index b5567c2..3ef68d5 100644 --- a/ambari-web/app/views/common/quick_view_link_view.js +++ b/ambari-web/app/views/common/quick_view_link_view.js @@ -109,7 +109,8 @@ App.QuickViewLinks = Em.View.extend({ 'App.currentStackVersionNumber', 'App.singleNodeInstall', 'App.router.clusterController.isServiceMetricsLoaded', - 'App.router.clusterController.isHostComponentMetricsLoaded' + 'App.router.clusterController.isHostComponentMetricsLoaded', + 'App.router.clusterController.quickLinksUpdateCounter' ), /** @@ -410,6 +411,9 @@ App.QuickViewLinks = Em.View.extend({ protocol = this.setProtocol(configProperties, link.protocol); } } + if (componentName && !hostNameForComponent) { + return; + } var newItem = this.getHostLink(link, publicHostName, protocol, configProperties, response); //quicklink generated for the hbs template if (!Em.isNone(newItem)) { quickLinks.push(newItem);
