Merge remote-tracking branch 'upstream/master'
authorstevenvanrossem <steven.vanrossem@intec.ugent.be>
Tue, 30 Aug 2016 08:57:08 +0000 (10:57 +0200)
committerstevenvanrossem <steven.vanrossem@intec.ugent.be>
Tue, 30 Aug 2016 08:57:08 +0000 (10:57 +0200)
src/emuvim/dcemulator/monitoring.py

index b5f0204..9cf2a3b 100755 (executable)
@@ -248,7 +248,6 @@ class DCNetworkMonitor():
             network_metric['metric_key'] = metric\r
 \r
             self.monitor_lock.acquire()\r
-\r
             self.network_metrics.append(network_metric)\r
             self.monitor_lock.release()\r
 \r
@@ -333,9 +332,6 @@ class DCNetworkMonitor():
         return 'Error stopping monitoring metric: {0} on {1}:{2}'.format(metric, vnf_name, vnf_interface)\r
 \r
 \r
-\r
-\r
-\r
 # get all metrics defined in the list and export it to Prometheus\r
     def get_flow_metrics(self):\r
         while self.start_monitoring:\r
@@ -429,11 +425,10 @@ class DCNetworkMonitor():
                     metric_dict['previous_measurement'] = int(port_stat[metric_key])\r
                     metric_dict['previous_monitor_time'] = port_uptime\r
                     # do first measurement\r
-                    time.sleep(1)\r
-                    self.monitor_lock.release()\r
-\r
-                    metric_rate = self.get_network_metrics()\r
-                    return metric_rate\r
+                    #time.sleep(1)\r
+                    #self.monitor_lock.release()\r
+                    # rate cannot be calculated yet (need a first measurement)\r
+                    metric_rate = None\r
 \r
                 else:\r
                     time_delta = (port_uptime - metric_dict['previous_monitor_time'])\r
@@ -441,9 +436,11 @@ class DCNetworkMonitor():
 \r
                 metric_dict['previous_measurement'] = this_measurement\r
                 metric_dict['previous_monitor_time'] = port_uptime\r
-                return metric_rate\r
+                return\r
 \r
         logging.exception('metric {0} not found on {1}:{2}'.format(metric_key, vnf_name, vnf_interface))\r
+        logging.exception('monport:{0}, dpid:{1}'.format(mon_port, switch_dpid))\r
+        logging.exception('port dict:{0}'.format(port_stat_dict))\r
         return 'metric {0} not found on {1}:{2}'.format(metric_key, vnf_name, vnf_interface)\r
 \r
     def set_flow_metric(self, metric_dict, flow_stat_dict):\r
@@ -463,8 +460,9 @@ class DCNetworkMonitor():
             elif 'packet' in metric_key:\r
                 counter += flow_stat['packet_count']\r
 \r
-        flow_stat = flow_stat_dict[str(switch_dpid)][0]\r
-        flow_uptime = flow_stat['duration_sec'] + flow_stat['duration_nsec'] * 10 ** (-9)\r
+        # flow_uptime disabled for now (can give error)\r
+        #flow_stat = flow_stat_dict[str(switch_dpid)][0]\r
+        #flow_uptime = flow_stat['duration_sec'] + flow_stat['duration_nsec'] * 10 ** (-9)\r
 \r
         self.prom_metrics[metric_dict['metric_key']]. \\r
             labels({'vnf_name': vnf_name, 'vnf_interface': vnf_interface, 'flow_id': cookie}). \\r
@@ -495,6 +493,7 @@ class DCNetworkMonitor():
                "-d",\r
                "-p", "{0}:9091".format(port),\r
                "--name", "pushgateway",\r
+               "--label", 'com.containernet=""',\r
                "prom/pushgateway"\r
                ]\r
 \r
@@ -511,6 +510,7 @@ class DCNetworkMonitor():
                "--volume=/var/lib/docker/:/var/lib/docker:ro",\r
                "--publish={0}:8080".format(port),\r
                "--name=cadvisor",\r
+               "--label",'com.containernet=""',\r
                "google/cadvisor:latest"\r
                ]\r
         logging.info('Start cAdvisor container {0}'.format(cmd))\r
@@ -532,14 +532,14 @@ class DCNetworkMonitor():
         '''\r
         if self.pushgateway_process is not None:\r
             logging.info('stopping pushgateway container')\r
-            self.pushgateway_process.terminate()\r
-            self.pushgateway_process.kill()\r
+            #self.pushgateway_process.terminate()\r
+            #self.pushgateway_process.kill()\r
             self._stop_container('pushgateway')\r
 \r
         if self.cadvisor_process is not None:\r
             logging.info('stopping cadvisor container')\r
-            self.cadvisor_process.terminate()\r
-            self.cadvisor_process.kill()\r
+            #self.cadvisor_process.terminate()\r
+            #self.cadvisor_process.kill()\r
             self._stop_container('cadvisor')\r
 \r
     def switch_tx_rx(self,metric=''):\r
@@ -553,13 +553,10 @@ class DCNetworkMonitor():
         return metric\r
 \r
     def _stop_container(self, name):\r
-        cmd = ["docker",\r
-               "stop",\r
-               name]\r
-        Popen(cmd).wait()\r
 \r
         cmd = ["docker",\r
                "rm",\r
+               "-f",\r
                name]\r
         Popen(cmd).wait()\r
 \r