Fix 2188: Added config parameter to disable vms status check
[osm/MON.git] / osm_mon / collector / infra_collectors / base_osinfra.py
index 1b5531d..018aa9a 100644 (file)
@@ -65,36 +65,41 @@ class BaseOpenStackInfraCollector(BaseVimInfraCollector):
         vim_status_metric = Metric(vim_tags, "vim_status", vim_status)
         metrics.append(vim_status_metric)
         vnfrs = self.common_db.get_vnfrs(vim_account_id=self.vim_account["_id"])
-        for vnfr in vnfrs:
-            nsr_id = vnfr["nsr-id-ref"]
-            ns_name = self.common_db.get_nsr(nsr_id)["name"]
-            vnf_member_index = vnfr["member-vnf-index-ref"]
-            if vnfr["_admin"]["projects_read"]:
-                vnfr_project_id = vnfr["_admin"]["projects_read"][0]
-            else:
-                vnfr_project_id = ""
-            for vdur in vnfr["vdur"]:
-                if "vim-id" not in vdur:
-                    log.debug("Field vim-id is not present in vdur")
-                    continue
-                resource_uuid = vdur["vim-id"]
-                tags = {
-                    "vim_account_id": self.vim_account["_id"],
-                    "resource_uuid": resource_uuid,
-                    "ns_id": nsr_id,
-                    "ns_name": ns_name,
-                    "vnf_member_index": vnf_member_index,
-                    "vdu_name": vdur.get("name", ""),
-                    "project_id": vnfr_project_id,
-                }
-                try:
-                    vm = self.nova.servers.get(resource_uuid)
-                    vm_status = (0 if (vm.status == 'ERROR') else 1)
-                    vm_status_metric = Metric(tags, "vm_status", vm_status)
-                except Exception as e:
-                    log.warning("VM status is not OK: %s" % e)
-                    vm_status_metric = Metric(tags, "vm_status", 0)
-                metrics.append(vm_status_metric)
+        if self.conf.get("collector", "vm_infra_metrics"):
+            vm_infra_metrics_enabled = str(self.conf.get("collector", "vm_infra_metrics")).lower() in ("yes", "true", "1")
+        else:
+            vm_infra_metrics_enabled = True
+        if vm_infra_metrics_enabled:
+            for vnfr in vnfrs:
+                nsr_id = vnfr["nsr-id-ref"]
+                ns_name = self.common_db.get_nsr(nsr_id)["name"]
+                vnf_member_index = vnfr["member-vnf-index-ref"]
+                if vnfr["_admin"]["projects_read"]:
+                    vnfr_project_id = vnfr["_admin"]["projects_read"][0]
+                else:
+                    vnfr_project_id = ""
+                for vdur in vnfr["vdur"]:
+                    if "vim-id" not in vdur:
+                        log.debug("Field vim-id is not present in vdur")
+                        continue
+                    resource_uuid = vdur["vim-id"]
+                    tags = {
+                        "vim_account_id": self.vim_account["_id"],
+                        "resource_uuid": resource_uuid,
+                        "ns_id": nsr_id,
+                        "ns_name": ns_name,
+                        "vnf_member_index": vnf_member_index,
+                        "vdu_name": vdur.get("name", ""),
+                        "project_id": vnfr_project_id,
+                    }
+                    try:
+                        vm = self.nova.servers.get(resource_uuid)
+                        vm_status = (0 if (vm.status == 'ERROR') else 1)
+                        vm_status_metric = Metric(tags, "vm_status", vm_status)
+                    except Exception as e:
+                        log.warning("VM status is not OK: %s" % e)
+                        vm_status_metric = Metric(tags, "vm_status", 0)
+                    metrics.append(vm_status_metric)
 
         return metrics