def run(self): """ Main execution method """ criteria = self.job.criteria if criteria.netprofiler_device == '': logger.debug('%s: No netprofiler device selected' % self.table) self.job.mark_error("No NetProfiler Device Selected") return False profiler = DeviceManager.get_device(criteria.netprofiler_device) report = ServiceLocationReport(profiler) tf = TimeFilter(start=criteria.starttime, end=criteria.endtime) logger.info( 'Running NetProfilerServiceByLocTable %d report for timeframe %s' % (self.table.id, str(tf))) with lock: report.run(timefilter=tf, sync=False) done = False logger.info("Waiting for report to complete") while not done: time.sleep(0.5) with lock: s = report.status() self.job.mark_progress(progress=int(s['percent'])) done = (s['status'] == 'completed') # Retrieve the data with lock: data = report.get_data() query = report.get_query_by_index(0) tz = criteria.starttime.tzinfo # Update criteria criteria.starttime = (datetime.datetime .utcfromtimestamp(query.actual_t0) .replace(tzinfo=tz)) criteria.endtime = (datetime.datetime .utcfromtimestamp(query.actual_t1) .replace(tzinfo=tz)) self.job.safe_update(actual_criteria=criteria) if len(data) == 0: return QueryComplete(None) # Add ephemeral columns for everything Column.create(self.job.table, 'location', 'Location', ephemeral=self.job, datatype='string') for k in data[0].keys(): if k == 'location': continue Column.create(self.job.table, k, k, ephemeral=self.job, datatype='string', formatter='rvbd.formatHealth') df = pandas.DataFrame(data) if self.job.table.options.rgb: state_map = {Service.SVC_NOT_AVAILABLE: 'gray', Service.SVC_DISABLED: 'gray', Service.SVC_INIT: 'gray', Service.SVC_NORMAL: 'green', Service.SVC_LOW: 'yellow', Service.SVC_MED: 'yellow', Service.SVC_HIGH: 'red', Service.SVC_NODATA: 'gray'} df = df.replace(state_map.keys(), state_map.values()) return QueryComplete(df)
#!/usr/bin/env python # Copyright (c) 2015 Riverbed Technology, Inc. # # This software is licensed under the terms and conditions of the MIT License # accompanying the software ("License"). This software is distributed "AS IS" # as set forth in the License. from steelscript.netprofiler.core.app import NetProfilerApp from steelscript.netprofiler.core.services import ServiceLocationReport from steelscript.netprofiler.core.filters import TimeFilter import pprint app = NetProfilerApp() app.run() # Create and run a traffic summary report of all server ports in use # by hosts in 10/8 report = ServiceLocationReport(app.netprofiler) # Run the report report.run(timefilter=TimeFilter.parse_range("last 1h")) # Retrieve and print data data = report.get_data() printer = pprint.PrettyPrinter(2) printer.pprint(data[:20])
# Copyright (c) 2015 Riverbed Technology, Inc. # # This software is licensed under the terms and conditions of the MIT License # accompanying the software ("License"). This software is distributed "AS IS" # as set forth in the License. from steelscript.netprofiler.core.app import NetProfilerApp from steelscript.netprofiler.core.services import ServiceLocationReport from steelscript.netprofiler.core.filters import TimeFilter import pprint app = NetProfilerApp() app.run() # Create and run a traffic summary report of all server ports in use # by hosts in 10/8 report = ServiceLocationReport(app.netprofiler) # Run the report report.run( timefilter=TimeFilter.parse_range("last 1h") ) # Retrieve and print data data = report.get_data() printer = pprint.PrettyPrinter(2) printer.pprint(data[:20])