Merge "Bugfix: ha test case criteria pass when sla not pass"
[yardstick.git] / yardstick / network_services / nfvi / resource.py
index 48bcd31..055fdba 100644 (file)
@@ -35,7 +35,7 @@ CONF = cfg.CONF
 ZMQ_OVS_PORT = 5567
 ZMQ_POLLING_TIME = 12000
 LIST_PLUGINS_ENABLED = ["amqp", "cpu", "cpufreq", "intel_rdt", "memory",
-                        "hugepages", "dpdkstat", "virt", "ovs_stats"]
+                        "hugepages", "dpdkstat", "virt", "ovs_stats", "intel_pmu"]
 
 
 class ResourceProfile(object):
@@ -109,6 +109,10 @@ class ResourceProfile(object):
     def parse_ovs_stats(cls, key, value):
         return cls.parse_simple_resource(key, value)
 
+    @classmethod
+    def parse_intel_pmu_stats(cls, key, value):
+        return {''.join(key): value.split(":")[1]}
+
     def parse_collectd_result(self, metrics, core_list):
         """ convert collectd data into json"""
         result = {
@@ -118,6 +122,7 @@ class ResourceProfile(object):
             "dpdkstat": {},
             "virt": {},
             "ovs_stats": {},
+            "intel_pmu": {},
         }
         testcase = ""
 
@@ -148,6 +153,9 @@ class ResourceProfile(object):
             elif "ovs_stats" in res_key0:
                 result["ovs_stats"].update(self.parse_ovs_stats(key_split, value))
 
+            elif "intel_pmu-all" in res_key0:
+                result["intel_pmu"].update(self.parse_intel_pmu_stats(res_key1, value))
+
         result["timestamp"] = testcase
 
         return result
@@ -192,10 +200,10 @@ class ResourceProfile(object):
             "loadplugin": loadplugin,
             "dpdk_interface": interfaces,
         }
-
         self._provide_config_file(bin_path, 'collectd.conf', kwargs)
 
     def _start_collectd(self, connection, bin_path):
+        LOG.debug("Starting collectd to collect NFVi stats")
         connection.execute('sudo pkill -9 collectd')
         bin_path = get_nsb_option("bin_path")
         collectd_path = os.path.join(bin_path, "collectd", "collectd")
@@ -222,6 +230,12 @@ class ResourceProfile(object):
         connection.execute("sudo rabbitmqctl start_app")
         connection.execute("sudo service rabbitmq-server restart")
 
+        LOG.debug("Creating amdin user for rabbitmq in order to collect data from collectd")
+        connection.execute("sudo rabbitmqctl delete_user guest")
+        connection.execute("sudo rabbitmqctl add_user admin admin")
+        connection.execute("sudo rabbitmqctl authenticate_user admin admin")
+        connection.execute("sudo rabbitmqctl set_permissions -p / admin \".*\" \".*\" \".*\"")
+
         LOG.debug("Start collectd service.....")
         connection.execute("sudo %s" % collectd_path)
         LOG.debug("Done")