+
+
+class VropsBackend(OpenstackBackend):
+ def __init__(self, vim_account: dict):
+ self.vrops = vROPS_Helper(
+ vrops_site=vim_account["config"]["vrops_site"],
+ vrops_user=vim_account["config"]["vrops_user"],
+ vrops_password=vim_account["config"]["vrops_password"],
+ )
+
+ def collect_metrics(self, metrics_list: List[Dict]):
+ # Fetch the list of all known resources from vROPS.
+ resource_list = self.vrops.get_vm_resource_list_from_vrops()
+
+ vdu_mappings = {}
+ extended_metrics = []
+ for metric in metrics_list:
+ vim_id = metric["vm_id"]
+ # Map the vROPS instance id to the vim-id so we can look it up.
+ for resource in resource_list:
+ for resourceIdentifier in resource["resourceKey"][
+ "resourceIdentifiers"
+ ]:
+ if (
+ resourceIdentifier["identifierType"]["name"]
+ == "VMEntityInstanceUUID"
+ ):
+ if resourceIdentifier["value"] != vim_id:
+ continue
+ vdu_mappings[vim_id] = resource["identifier"]
+ if vim_id in vdu_mappings:
+ metric["vrops_id"] = vdu_mappings[vim_id]
+ extended_metrics.append(metric)
+
+ if len(extended_metrics) != 0:
+ return self.vrops.get_metrics(extended_metrics)
+ else:
+ return []