X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcollector%2Finfra_collectors%2Fonos.py;fp=osm_mon%2Fcollector%2Finfra_collectors%2Fonos.py;h=1798f8b09290e1300131d2e800ff154ef005f077;hb=6bc26cffde19423a405bc0c7a95757afd37adfa2;hp=ccd66d5278304fbe7be68e923d34ad43699c8fd4;hpb=781ce45317c076553221ed5415b428db7a90cfb4;p=osm%2FMON.git diff --git a/osm_mon/collector/infra_collectors/onos.py b/osm_mon/collector/infra_collectors/onos.py index ccd66d5..1798f8b 100644 --- a/osm_mon/collector/infra_collectors/onos.py +++ b/osm_mon/collector/infra_collectors/onos.py @@ -39,6 +39,18 @@ 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() @@ -54,14 +66,12 @@ class OnosInfraCollector(BaseSdncInfraCollector): def is_sdnc_ok(self) -> bool: try: - ip = self.sdnc["ip"] - port = self.sdnc["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"] ) - # TODO: Add support for https - url = "http://{}:{}/onos/v1/devices".format(ip, port) + requests.get(url, auth=HTTPBasicAuth(user, password)) return True except Exception: