change cadvisor startup args
[osm/vim-emu.git] / src / emuvim / dcemulator / monitoring.py
index 269a7e0..3774df4 100755 (executable)
@@ -34,7 +34,7 @@ import time
 from prometheus_client import start_http_server, Summary, Histogram, Gauge, Counter, REGISTRY, CollectorRegistry, \\r
     pushadd_to_gateway, push_to_gateway, delete_from_gateway\r
 import threading\r
-from subprocess import Popen\r
+from subprocess import Popen, check_call\r
 import os\r
 import docker\r
 import json\r
@@ -202,7 +202,7 @@ class DCNetworkMonitor():
         network_metric = {}\r
 \r
         # check if port is specified (vnf:port)\r
-        if vnf_interface is None:\r
+        if vnf_interface is None or vnf_interface == '':\r
             # take first interface by default\r
             connected_sw = self.net.DCNetwork_graph.neighbors(vnf_name)[0]\r
             link_dict = self.net.DCNetwork_graph[vnf_name][connected_sw]\r
@@ -404,8 +404,10 @@ class DCNetworkMonitor():
         previous_measurement = metric_dict['previous_measurement']\r
         previous_monitor_time = metric_dict['previous_monitor_time']\r
         mon_port = metric_dict['mon_port']\r
-\r
         for port_stat in port_stat_dict[str(switch_dpid)]:\r
+            # ovs output also gives back 'LOCAL' port\r
+            if port_stat['port_no'] == 'LOCAL':\r
+                continue\r
             if int(port_stat['port_no']) == int(mon_port):\r
                 port_uptime = port_stat['duration_sec'] + port_stat['duration_nsec'] * 10 ** (-9)\r
                 this_measurement = int(port_stat[metric_key])\r
@@ -502,7 +504,10 @@ class DCNetworkMonitor():
                "--publish={0}:8080".format(port),\r
                "--name=cadvisor",\r
                "--label",'com.containernet=""',\r
-               "google/cadvisor:latest"\r
+               "google/cadvisor:latest",\r
+               "--storage_duration=1m0s",\r
+               "--allow_dynamic_housekeeping=true",\r
+               #"--housekeeping_interval=1s",\r
                ]\r
         logging.info('Start cAdvisor container {0}'.format(cmd))\r
         return Popen(cmd)\r
@@ -535,8 +540,15 @@ class DCNetworkMonitor():
 \r
     def _stop_container(self, name):\r
 \r
-        container = self.dockercli.containers.get(name)\r
-        container.remove(force=True)\r
+        #container = self.dockercli.containers.get(name)\r
+        #container.stop()\r
+        #container.remove(force=True)\r
+\r
+        # the only robust way to stop these containers is via Popen, it seems\r
+        time.sleep(1)\r
+        cmd = ['docker', 'rm', '-f', name]\r
+        Popen(cmd)\r
+\r
 \r
     def update_skewmon(self, vnf_name, resource_name, action):\r
 \r