diff --git a/src/rest/connector/libs/nso/implementation.py b/src/rest/connector/libs/nso/implementation.py index 2c8a874..d1a2510 100644 --- a/src/rest/connector/libs/nso/implementation.py +++ b/src/rest/connector/libs/nso/implementation.py @@ -118,7 +118,7 @@ def connect(self, ip=ip, port=port) - self.login_url = '{f}/api'.format(f=self.base_url) + self.login_urls = ['{f}/api'.format(f=self.base_url),'{f}/restconf'.format(f=self.base_url)] log.info("Connecting to '{d}' with alias " "'{a}'".format(d=self.device.name, a=self.alias)) @@ -129,10 +129,14 @@ def connect(self, self.session.auth = (username, password) # Connect to the device via requests - response = self.session.get(self.login_url, timeout=timeout) + for login_url in self.login_urls: + response = self.session.get(login_url, timeout=timeout) + log.debug("Response: {c} {r}, headers: {h}".format(c=response.status_code, + r=response.reason, h=response.headers)) + if response.status_code == requests.codes.ok: + self.login_url = login_url + break output = response.text - log.debug("Response: {c} {r}, headers: {h}".format(c=response.status_code, - r=response.reason, h=response.headers)) if verbose: log.info("Response text:\n%s" % output) diff --git a/src/rest/connector/tests/test_nso.py b/src/rest/connector/tests/test_nso.py index 3204a3c..61ef477 100644 --- a/src/rest/connector/tests/test_nso.py +++ b/src/rest/connector/tests/test_nso.py @@ -40,6 +40,21 @@ def test_connect(self, **kwargs): self.assertEqual(output, response_text) return connection + def test_connect_restconf(self, **kwargs): + connection = Rest(device=self.device, alias='rest', via='rest') + + response_text ="""\ + + + + 2019-01-04 + +""" + + kwargs['mock'].get('http://198.51.100.2:8080/restconf', text=response_text) + output = connection.connect(verbose=True).text + self.assertEqual(output, response_text) + return connection def test_get(self, **kwargs): connection = self.test_connect()