def _add_top_level_metrics_and_dimensions_to_metrics_group( self, top_level_metrics_map, top_level_dimensions_map, metrics_type_map, metrics_group, dimension_was_empty): """ Add all top-level metrics and dimensions in the provided maps to the provided metrics_group. Args: top_level_metrics_map: The top level metrics map with values to add to the provided metrics_group. top_level_dimensions_map: The top level dimensions map with values to add to the provided metrics_group. metrics_type_map: The map containing the type values for each metric. metrics_group: The metrics_group to which to add metrics and dimensions. dimension_was_empty: Boolean representing whether an empty dimension has been found. Returns: The updated metrics_group and dimension_was_empty boolean. """ for metric in top_level_metrics_map: metrics_group.add_metric( metrics.PanoptesMetric(metric, top_level_metrics_map[metric], metrics_type_map[metric])) # "top_level" metrics don't have indices, so only non-indexed dimensions can be added for dimension, value in list(top_level_dimensions_map.items()): metrics_group, dimension_was_empty = self._add_dimension_to_metrics_group_if_not_empty( dimension, value, metrics_group, dimension_was_empty) return metrics_group, dimension_was_empty
def _process_metrics(self): """ If values for the provided oids in the enrichment configuration have been found, then form and populate metrics groups and add to the plugin's PanoptesMetricsGroupSet. """ if self._oid_maps or self._snmpget_oid_map: for metrics_group_map in self._config[u"metrics_groups"]: dimension_was_empty = False metrics_group_name = metrics_group_map[u"group_name"] metrics_map, metrics_type_map, top_level_metrics_map = self._process_metrics_or_dimensions( targets_type=u"metrics", metrics_group_map=metrics_group_map) dimensions_map, _, top_level_dimensions_map = self._process_metrics_or_dimensions( targets_type=u"dimensions", metrics_group_map=metrics_group_map) if len(metrics_map) > 0: for index in metrics_map: metrics_group = metrics.PanoptesMetricsGroup( self._device, metrics_group_name, self._execute_frequency) for metric, value in list(metrics_map[index].items()): if metric in metrics_type_map: metrics_group.add_metric( metrics.PanoptesMetric( metric, value, metrics_type_map[metric])) if index in dimensions_map: for dimension, value in list( dimensions_map[index].items()): metrics_group, dimension_was_empty = \ self._add_dimension_to_metrics_group_if_not_empty(dimension, value, metrics_group, dimension_was_empty) for dimension, value in list( top_level_dimensions_map.items()): metrics_group, dimension_was_empty = self._add_dimension_to_metrics_group_if_not_empty( dimension, value, metrics_group, dimension_was_empty) if self._enrichment_schema_version == u"0.2": # "top level" metrics if len(top_level_metrics_map) > 0: metrics_group, dimension_was_empty = \ self._add_top_level_metrics_and_dimensions_to_metrics_group( top_level_metrics_map, top_level_dimensions_map, metrics_type_map, metrics_group, dimension_was_empty) if self._enrichment_schema_version == u"0.1": if len(metrics_group.metrics) > 0: self._add_metrics_group_if_allowed( metrics_group, metrics_group_map, metrics_group_name, dimension_was_empty) else: self._add_metrics_group_if_allowed( metrics_group, metrics_group_map, metrics_group_name, dimension_was_empty) if self._enrichment_schema_version == u"0.1": metrics_group = metrics.PanoptesMetricsGroup( self._device, metrics_group_name, self._execute_frequency) if len(top_level_metrics_map) > 0: metrics_group, dimension_was_empty = \ self._add_top_level_metrics_and_dimensions_to_metrics_group(top_level_metrics_map, top_level_dimensions_map, metrics_type_map, metrics_group, dimension_was_empty) if len(metrics_group.metrics) > 0: self._add_metrics_group_if_allowed( metrics_group, metrics_group_map, metrics_group_name, dimension_was_empty) else: # Add only "top level" metrics for a given metrics group # "top level" metrics metrics_group = metrics.PanoptesMetricsGroup( self._device, metrics_group_name, self._execute_frequency) if len(top_level_metrics_map) > 0: metrics_group, dimension_was_empty = \ self._add_top_level_metrics_and_dimensions_to_metrics_group(top_level_metrics_map, top_level_dimensions_map, metrics_type_map, metrics_group, dimension_was_empty) if self._enrichment_schema_version == u"0.1": if len(metrics_group.metrics) > 0: self._add_metrics_group_if_allowed( metrics_group, metrics_group_map, metrics_group_name, dimension_was_empty) else: self._add_metrics_group_if_allowed( metrics_group, metrics_group_map, metrics_group_name, dimension_was_empty) else: raise ValueError( u"self._oid_maps and self._snmpget_oid_map are empty or None.")