X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcollector%2Finfra_collectors%2Fonos.py;h=1798f8b09290e1300131d2e800ff154ef005f077;hb=6bc26cffde19423a405bc0c7a95757afd37adfa2;hp=21ef85d5f6fdc4a82773e41a0c9f807f79ab8db9;hpb=f54d2e406bc443e1cd6c24bbd1e595b39602fbac;p=osm%2FMON.git diff --git a/osm_mon/collector/infra_collectors/onos.py b/osm_mon/collector/infra_collectors/onos.py index 21ef85d..1798f8b 100644 --- a/osm_mon/collector/infra_collectors/onos.py +++ b/osm_mon/collector/infra_collectors/onos.py @@ -39,29 +39,39 @@ class OnosInfraCollector(BaseSdncInfraCollector): self.common_db = CommonDbClient(config) self.sdnc = self.common_db.get_sdnc(sdnc_id) + def _obtain_url(self, sdnc_dict): + url = sdnc_dict.get("url") + if url: + return url + else: + if not sdnc_dict.get("ip") or not sdnc_dict.get("port"): + raise Exception("You must provide a URL to contact the SDN Controller") + else: + return "http://{}:{}/onos/v1/devices".format( + sdnc_dict["ip"], sdnc_dict["port"] + ) + def collect(self) -> List[Metric]: metrics = [] sdnc_status = self.is_sdnc_ok() - sdnc_project_id = self.sdnc['_admin']['projects_read'][0] - sdnc_tags = { - 'sdnc_id': self.sdnc['_id'], - 'project_id': sdnc_project_id - } - sdnc_status_metric = Metric(sdnc_tags, 'sdnc_status', sdnc_status) + if self.sdnc["_admin"]["projects_read"]: + sdnc_project_id = self.sdnc["_admin"]["projects_read"][0] + else: + sdnc_project_id = "" + sdnc_tags = {"sdnc_id": self.sdnc["_id"], "project_id": sdnc_project_id} + sdnc_status_metric = Metric(sdnc_tags, "sdnc_status", sdnc_status) metrics.append(sdnc_status_metric) return metrics def is_sdnc_ok(self) -> bool: try: - ip = self.sdnc['ip'] - port = self.sdnc['port'] - user = self.sdnc['user'] - password = self.common_db.decrypt_sdnc_password(self.sdnc['password'], - self.sdnc['schema_version'], - self.sdnc['_id']) - # TODO: Add support for https - url = 'http://{}:{}/onos/v1/devices'.format(ip, port) + url = self._obtain_url(self.sdnc) + user = self.sdnc["user"] + password = self.common_db.decrypt_sdnc_password( + self.sdnc["password"], self.sdnc["schema_version"], self.sdnc["_id"] + ) + requests.get(url, auth=HTTPBasicAuth(user, password)) return True except Exception: