def _add_subject_details(event, metric, varmap): obj = lookup(metric) if obj: try: varmap['subject'] = "{table}:{pk}".format( table=getattr(obj, '_meta').db_table, pk=obj.pk) except AttributeError: pass # probably wasn't a Django model object, fuhgeddaboutit if isinstance(obj, Netbox): event.netbox = obj else: try: event.netbox = obj.netbox except AttributeError: pass try: event.device = obj.device except AttributeError: try: event.device = obj.netbox.device except AttributeError: pass if isinstance(obj, Interface): varmap['interface'] = obj.ifname elif isinstance(obj, Sensor): varmap['sensor'] = obj.name
def get_sensor_meta(metric_path): """ Returns meta information for drawing a Sensor metric graph annotated with the correct yUnits, among other things. """ from nav.models.manage import Sensor from nav.metrics.lookup import lookup sensor = lookup(metric_path) if not sensor: return dict() assert isinstance(sensor, Sensor) alias = ( sensor.human_readable.replace("\n", " ") if sensor.human_readable else sensor.name ) meta = dict(alias=alias) scale = ( sensor.get_data_scale_display() if sensor.data_scale != sensor.SCALE_UNITS else None ) or '' uom = ( sensor.unit_of_measurement if sensor.unit_of_measurement != sensor.UNIT_OTHER else None ) or '' meta['unit'] = scale + uom return meta
def _add_subject_details(event, metric, varmap): obj = lookup(metric) if obj: varmap['subject'] = "{table}:{pk}".format( table=getattr(obj, '_meta').db_table, pk=obj.pk) if isinstance(obj, Netbox): event.netbox = obj else: try: event.netbox = obj.netbox except AttributeError: pass try: event.device = obj.device except AttributeError: try: event.device = obj.netbox.device except AttributeError: pass if isinstance(obj, Interface): varmap['interface'] = obj.ifname elif isinstance(obj, Sensor): varmap['sensor'] = obj.name
def __init__(self, event): self.event = event ruleid, self.metric = event.subid.split(':', 1) klass = models.get_model('models', 'ThresholdRule') try: self.rule = klass.objects.get(pk=ruleid) except klass.DoesNotExist: self.rule = None from nav.metrics.lookup import lookup self.subject = lookup(self.metric)
def get_metric_maximum(metric): """ Returns the maximum value of a metric, if one can be determined. Otherwise returns None. """ obj = lookup(metric) if isinstance(obj, Interface): counter = metric.split('.')[-1] if 'octets' in counter.lower(): # Making an unsafe assumption that interface traffic # numbers are always retrieved in bits/s maximum = obj.speed * MEGA if maximum: return maximum
def __init__(self, event): self.event = event try: ruleid, self.metric = event.subid.split(':', 1) except ValueError: ruleid = event.subid self.metric = None klass = models.get_model('models', 'ThresholdRule') try: self.rule = klass.objects.get(pk=ruleid) except (klass.DoesNotExist, ValueError): self.rule = None if self.metric: from nav.metrics.lookup import lookup self.subject = lookup(self.metric) else: self.subject = None
def get_sensor_meta(metric_path): """ Returns meta information for drawing a Sensor metric graph annotated with the correct yUnits, among other things. """ from nav.models.manage import Sensor from nav.metrics.lookup import lookup sensor = lookup(metric_path) if not sensor: return dict() assert isinstance(sensor, Sensor) meta = dict(alias=sensor.human_readable.replace("\n", " ") or sensor.name) scale = (sensor.get_data_scale_display() if sensor.data_scale != sensor.SCALE_UNITS else None) or '' uom = (sensor.unit_of_measurement if sensor.unit_of_measurement != sensor.UNIT_OTHER else None) or '' meta['unit'] = scale + uom return meta
def get_metric_lookups(self): """Return a mapping of metric -> object""" return {x: lookup(x) for x in self.get_graph_metrics()}