+ #this removes the complete metric, all labels...\r
+ #REGISTRY.unregister(self.prom_metrics[metric_dict['metric_key']])\r
+ #self.registry.unregister(self.prom_metrics[metric_dict['metric_key']])\r
+\r
+ for collector in self.registry._collectors :\r
+ logging.info('name:{0} labels:{1} metrics:{2}'.format(collector._name, collector._labelnames, collector._metrics))\r
+ """\r
+ INFO:root:name:sonemu_rx_count_packets\r
+ labels:('vnf_name', 'vnf_interface')\r
+ metrics:{(u'tsrc', u'output'): < prometheus_client.core.Gauge\r
+ object\r
+ at\r
+ 0x7f353447fd10 >}\r
+ """\r
+ logging.info('{0}'.format(collector._metrics.values()))\r
+ #if self.prom_metrics[metric_dict['metric_key']]\r
+ if (vnf_name, vnf_interface) in collector._metrics:\r
+ logging.info('2 name:{0} labels:{1} metrics:{2}'.format(collector._name, collector._labelnames,\r
+ collector._metrics))\r
+ #collector._metrics = {}\r
+ collector.remove(vnf_name, vnf_interface)\r
+\r
+ # set values to NaN, prometheus api currently does not support removal of metrics\r
+ #self.prom_metrics[metric_dict['metric_key']].labels(vnf_name, vnf_interface).set(float('nan'))\r
+\r
+ # this removes the complete metric, all labels...\r
+ # 1 single monitor job for all metrics of the SDN controller\r
+ # we can only remove from the pushgateway grouping keys(labels) which we have defined for the add_to_pushgateway\r
+ # we can not specify labels from the metrics to be removed\r
+ # if we need to remove the metrics seperatelty, we need to give them a separate grouping key, and probably a diffferent registry also\r
+ delete_from_gateway(self.pushgateway, job='sonemu-SDNcontroller')\r
+\r
+ self.monitor_lock.release()\r
+\r
+ logging.info('Stopped monitoring: {2} on {0}:{1}'.format(vnf_name, vnf_interface, metric))\r
+ return 'Stopped monitoring: {2} on {0}:{1}'.format(vnf_name, vnf_interface, metric)\r
+\r
+\r
+ # get all metrics defined in the list and export it to Prometheus\r