Пример #1
0
 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
Пример #2
0
    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.")