Fix bug 1535 to allow url option for onos_vpls SDNC 37/10937/1
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Mon, 17 May 2021 16:17:36 +0000 (18:17 +0200)
committerpalsus <subhankar.pal@aricent.com>
Wed, 2 Jun 2021 09:42:05 +0000 (11:42 +0200)
Change-Id: I81445d4fff17141beeb350ed4161baa8a0f1c9e9
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
(cherry picked from commit 90938904e566366535283e518b0bcc1dd9f8e366)

osm_mon/collector/infra_collectors/onos.py

index ccd66d5..1798f8b 100644 (file)
@@ -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: