def process(self, device, results, log): """ Must return one of : - None, changes nothing. Good in error cases. - A RelationshipMap, for the device to component information - An ObjectMap, for the device device information - A list of RelationshipMaps and ObjectMaps, both """ log.debug('SBA process results: {}'.format(results)) self.result_data = {} for success, result in results: if success: if result: content = json.loads(result[1]) else: content = {} self.result_data[result[0]] = content sba_data = self.result_data.get('sba', '') app_maps = [] rm = [] for app in sba_data: om_app = ObjectMap() app_label = app.get('name', '') app_name = app_label.lower().replace(' ', '_') app_id = app.get('id', '') om_app.id = self.prepId('app_{}_{}'.format(app_name, app_id)) om_app.applicationComponentID = om_app.id om_app.applicationName = app_label om_app.applicationNameID = self.prepId('{}_{}'.format( app_name, app_id)) om_app.componentName = '' # TODO: try to get rid of this, but info required for collectors om_app.applicationID = app_id mgmtURL = app.get('managementUrl', '') om_app.mgmtURL = mgmtURL om_app.healthURL = app.get('healthUrl', '') om_app.serviceURL = app.get('serviceUrl', '') r = re.match(r'^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$', mgmtURL) server = r.group(2) om_app.hostingServer = server om_app.title = '{} on {} ({})'.format(app_label, server, app_id) app_maps.append(om_app) # comp_app = 'springBootApplications/{}'.format(om_app.id) rm.append( RelationshipMap( relname='springBootApplications', modname='ZenPacks.fednot.Delivery.SpringBootApplication', compname='', objmaps=app_maps)) return rm
def process(self, device, results, log): """ Must return one of : - None, changes nothing. Good in error cases. - A RelationshipMap, for the device to component information - An ObjectMap, for the device device information - A list of RelationshipMaps and ObjectMaps, both """ # log.debug('SBA process results: {}'.format(results)) result_data = {} for success, result in results: if success: if result: content = json.loads(result[1]) else: content = {} result_data[result[0]] = content # sba_data = result_data.get('sba', '') log.debug('AAA result_data: {}'.format(result_data)) sba_maps = [] rm = [] rm_sba = [] rm_app = [] rm_comp = [] rm_jvm = [] for context, sba_data in result_data.iteritems(): # Modeling of SBA instances om_sba = ObjectMap() sba_label = 'Spring Boot Admin ({})'.format(context) om_sba.id = self.prepId('sba_{}'.format(context)) om_sba.title = sba_label om_sba.context = context if 'endpoints' in sba_data[0]: om_sba.sbaVersion = '2' else: om_sba.sbaVersion = '1' sba_maps.append(om_sba) component_sba = 'springBootAdmins/{}'.format(om_sba.id) app_maps = [] for app in sba_data: # Modeling of Applications if 'registration' not in app: # Spring Boot Admin v1 app_info = app else: # Spring Boot Admin v2 app_info = app.get('registration', '') om_app = ObjectMap() app_label = app_info.get('name', '') app_name = app_label.lower().replace(' ', '_') app_id = app.get('id', '') om_app.id = self.prepId('app_{}_{}'.format(app_name, app_id)) om_app.applicationComponentID = om_app.id # to be inherited om_app.applicationName = app_label om_app.applicationNameID = self.prepId('{}_{}'.format(app_name, app_id)) om_app.applicationID = app_id mgmtURL = app_info.get('managementUrl', '') om_app.mgmtURL = mgmtURL om_app.healthURL = app_info.get('healthUrl', '') om_app.serviceURL = app_info.get('serviceUrl', '') r = re.match(r'^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$', mgmtURL) server = r.group(2) om_app.hostingServer = server om_app.title = '{} on {} ({})'.format(app_label, server, app_id) app_maps.append(om_app) applicationNameID = '{}_{}'.format(app_label.lower().replace(' ', '_'), app_id) component_app = '{}/springBootApplications/{}'.format(component_sba, om_app.id) # Modeling of Application Components app_status = app.get('statusInfo', '') app_details = app_status.get('details', '') comp_maps = [] for comp_name in app_details: if comp_name == 'status': continue om_comp = ObjectMap() om_comp.id = self.prepId('comp_{}_{}'.format(applicationNameID, comp_name)) om_comp.title = '{} ({} on {})'.format(comp_name, app_label, server) om_comp.componentName = comp_name comp_maps.append(om_comp) rm_comp.append(RelationshipMap(relname='springBootComponents', modname='ZenPacks.fednot.SpringBootAdmin.SpringBootComponent', compname=component_app, objmaps=comp_maps)) # Modeling of Application JVM om_jvm = ObjectMap() om_jvm.id = self.prepId('jvm_{}'.format(applicationNameID)) om_jvm.title = 'JVM ({} on {})'.format(app_label, server) if om_sba.sbaVersion == '1': rm_jvm.append(RelationshipMap(relname='springBootJVMs', modname='ZenPacks.fednot.SpringBootAdmin.SpringBootJVM', compname=component_app, objmaps=[om_jvm])) elif om_sba.sbaVersion == '2': rm_jvm.append(RelationshipMap(relname='springBootJVM2s', modname='ZenPacks.fednot.SpringBootAdmin.SpringBootJVM2', compname=component_app, objmaps=[om_jvm])) rm_app.append(RelationshipMap(relname='springBootApplications', modname='ZenPacks.fednot.SpringBootAdmin.SpringBootApplication', compname=component_sba, objmaps=app_maps)) rm_sba.append(RelationshipMap(relname='springBootAdmins', modname='ZenPacks.fednot.SpringBootAdmin.SpringBootAdmin', compname='', objmaps=sba_maps)) rm.extend(rm_sba) rm.extend(rm_app) rm.extend(rm_comp) rm.extend(rm_jvm) return rm
def process(self, device, results, log): """ Must return one of : - None, changes nothing. Good in error cases. - A RelationshipMap, for the device to component information - An ObjectMap, for the device device information - A list of RelationshipMaps and ObjectMaps, both """ self.result_data = {} for success, result in results: if success: if result: content = json.loads(result[1]) else: content = {} self.result_data[result[0]] = content apps_data = self.result_data.get('apps', '') app_maps = [] rm = [] rm_comp = [] rm_job = [] rm_zip = [] rm_misc = [] for app in apps_data: # {u'mgmtURL': u'http://dvb-app-l01.dev.credoc.be:8105/delivery-service_v1/management', # u'healthURL': u'http://dvb-app-l01.dev.credoc.be:8105/delivery-service_v1/management/health', # u'id': u'app_Delivery Service_9ffe1d3e', u'hostingServer': u'dvb-app-l01.dev.credoc.be'} applicationName = app.get('applicationName', '') # Delivery Service # TODO: test whether it's a Delivery Service applicationID = app.get('applicationID', '') # 4fac876d applicationNameID = '{}_{}'.format( applicationName.lower().replace(' ', '_'), applicationID) app_id = app.get('id', '') # app_delivery_service_4fac876d comp_app = 'springBootApplications/{}'.format(app_id) comp_maps = [] health_data = self.result_data.get('{}_health'.format(app_id), '') if health_data: for comp_name, _ in health_data.items(): if comp_name == 'status': continue om_comp = ObjectMap() # TODO: Avoid space in component name om_comp.id = self.prepId('comp_{}_{}'.format( applicationNameID, comp_name)) om_comp.title = '{} ({} on {})'.format( comp_name, applicationName, app.get('hostingServer')) om_comp.applicationID = app_id om_comp.applicationName = applicationName om_comp.componentName = comp_name comp_maps.append(om_comp) rm_comp.append( RelationshipMap( relname='springBootComponents', modname='ZenPacks.fednot.Delivery.SpringBootComponent', compname=comp_app, objmaps=comp_maps)) job_maps = [] zip_maps = [] job_data = self.result_data.get('{}_metricsJob'.format(app_id), '') if job_data: jobs_list = set([d['jobName'] for d in job_data]) for job in jobs_list: om_job = ObjectMap() om_job.id = self.prepId('job_{}_{}'.format( applicationNameID, job)) om_job.title = '{} ({} on {})'.format( job, applicationName, app.get('hostingServer')) om_job.applicationID = app_id om_job.applicationName = applicationName om_job.jobName = job job_maps.append(om_job) zips_list = set([d['zipName'] for d in job_data]) for zipn in zips_list: if zipn is None: continue om_zip = ObjectMap() om_zip.id = self.prepId('zip_{}_{}'.format( applicationNameID, zipn)) om_zip.title = '{} ({} on {})'.format( zipn, applicationName, app.get('hostingServer')) om_zip.applicationID = app_id om_zip.applicationName = applicationName om_zip.zipName = zipn zip_maps.append(om_zip) rm_job.append( RelationshipMap( relname='springBootJobs', modname='ZenPacks.fednot.Delivery.SpringBootJob', compname=comp_app, objmaps=job_maps)) rm_zip.append( RelationshipMap( relname='springBootZips', modname='ZenPacks.fednot.Delivery.SpringBootZip', compname=comp_app, objmaps=zip_maps)) om_order = ObjectMap() om_order.id = self.prepId('order_{}'.format(applicationNameID)) om_order.title = 'Order ({} on {})'.format( applicationName, app.get('hostingServer')) om_order.applicationName = applicationName rm_misc.append( RelationshipMap( relname='springBootOrders', modname='ZenPacks.fednot.Delivery.SpringBootOrder', compname=comp_app, objmaps=[om_order])) om_jvm = ObjectMap() om_jvm.id = self.prepId('jvm_{}'.format(applicationNameID)) om_jvm.title = 'JVM ({} on {})'.format(applicationName, app.get('hostingServer')) om_jvm.applicationName = applicationName rm_misc.append( RelationshipMap( relname='springBootJVMs', modname='ZenPacks.fednot.Delivery.SpringBootJVM', compname=comp_app, objmaps=[om_jvm])) rm.extend(rm_comp) rm.extend(rm_job) rm.extend(rm_zip) rm.extend(rm_misc) return rm