123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- /**
- * 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');
- var stringUtils = require('utils/string_utils');
- App.componentsStateMapper = App.QuickDataMapper.create({
- model: App.Service,
- clientModel: App.ClientComponent,
- clientMap: {
- id: 'ServiceComponentInfo.component_name',
- service_id: 'ServiceComponentInfo.service_name',
- stack_info_id: 'ServiceComponentInfo.component_name',
- component_name: 'ServiceComponentInfo.component_name',
- service_name: 'ServiceComponentInfo.service_name',
- installed_count: 'ServiceComponentInfo.installed_count',
- started_count: 'ServiceComponentInfo.started_count',
- total_count: 'ServiceComponentInfo.total_count'
- },
- slaveModel: App.SlaveComponent,
- paths: {
- INSTALLED_PATH: 'ServiceComponentInfo.installed_count',
- STARTED_PATH: 'ServiceComponentInfo.started_count',
- TOTAL_PATH: 'ServiceComponentInfo.total_count'
- },
- configMap: {
- 'DATANODE': {
- data_nodes_started: 'STARTED_PATH',
- data_nodes_installed: 'INSTALLED_PATH',
- data_nodes_total: 'TOTAL_PATH'
- },
- 'NODEMANAGER': {
- node_managers_started: 'STARTED_PATH',
- node_managers_installed: 'INSTALLED_PATH',
- node_managers_total: 'TOTAL_PATH'
- },
- 'TASKTRACKER': {
- task_trackers_started: 'STARTED_PATH',
- task_trackers_installed: 'INSTALLED_PATH',
- task_trackers_total: 'TOTAL_PATH'
- },
- 'HBASE_REGIONSERVER': {
- region_servers_started: 'STARTED_PATH',
- region_servers_installed: 'INSTALLED_PATH',
- region_servers_total: 'TOTAL_PATH'
- },
- 'GANGLIA_MONITOR': {
- ganglia_monitors_started: 'STARTED_PATH',
- ganglia_monitors_installed: 'INSTALLED_PATH',
- ganglia_monitors_total: 'TOTAL_PATH'
- },
- 'SUPERVISOR': {
- super_visors_started: 'STARTED_PATH',
- super_visors_installed: 'INSTALLED_PATH',
- super_visors_total: 'TOTAL_PATH'
- },
- 'MAPREDUCE2_CLIENT': {
- map_reduce2_clients: 'INSTALLED_PATH'
- },
- 'TEZ_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'HIVE_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'FALCON_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'OOZIE_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'ZOOKEEPER_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'PIG': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'SQOOP': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'YARN_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'HDFS_CLIENT': {
- installed_clients: 'INSTALLED_PATH'
- },
- 'FLUME_HANDLER': {
- flume_handlers_total: 'TOTAL_PATH'
- }
- },
- /**
- * get formatted component config
- * @param componentName
- * @return {Object}
- */
- getComponentConfig: function (componentName) {
- var config = {};
- var componentConfig = this.get('configMap')[componentName];
- var paths = this.get('paths');
- for (var property in componentConfig) {
- if (paths[componentConfig[property]]) {
- config[property] = paths[componentConfig[property]];
- }
- }
- return config;
- },
- /**
- * get service extended model if it has one
- * @param serviceName
- * @return {Object|null}
- */
- getExtendedModel: function (serviceName) {
- if (App[App.Service.extendedModel[serviceName]]) {
- return App[App.Service.extendedModel[serviceName]].find(serviceName);
- }
- return null;
- },
- map: function (json) {
- console.time('App.componentsStateMapper execution time');
- var clients = [];
- var slaves = [];
- if (json.items) {
- json.items.forEach(function (item) {
- var componentConfig = this.getComponentConfig(item.ServiceComponentInfo.component_name);
- var parsedItem = this.parseIt(item, componentConfig);
- var service = App.Service.find(item.ServiceComponentInfo.service_name);
- var extendedModel = this.getExtendedModel(item.ServiceComponentInfo.service_name);
- var cacheService = App.cache['services'].findProperty('ServiceInfo.service_name', item.ServiceComponentInfo.service_name);
- if (item.ServiceComponentInfo.category === 'CLIENT') {
- clients.push(this.parseIt(item, this.clientMap));
- }
- if (item.ServiceComponentInfo.category === 'SLAVE') {
- // for now map for slaves and clients are equal but it may vary in future.
- slaves.push(this.parseIt(item, this.clientMap));
- }
- cacheService.client_components = clients.filterProperty('service_name', cacheService.ServiceInfo.service_name).mapProperty('component_name');
- cacheService.slave_components = slaves.filterProperty('service_name', cacheService.ServiceInfo.service_name).mapProperty('component_name');
- for (var i in parsedItem) {
- if (service.get('isLoaded')) {
- cacheService[i] = parsedItem[i];
- service.set(stringUtils.underScoreToCamelCase(i), parsedItem[i]);
- if (extendedModel) {
- extendedModel.set(stringUtils.underScoreToCamelCase(i), parsedItem[i]);
- }
- }
- }
- }, this)
- }
- App.store.loadMany(this.clientModel, clients);
- App.store.loadMany(this.slaveModel, slaves);
- console.timeEnd('App.componentsStateMapper execution time');
- }
- });
|