Loading src/device/service/drivers/transport_api/Tools.py +14 −7 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ # limitations under the License. import json, logging, requests from requests.auth import HTTPBasicAuth from typing import Optional from device.service.driver_api._Driver import RESOURCE_ENDPOINTS LOGGER = logging.getLogger(__name__) Loading @@ -28,11 +30,13 @@ def find_key(resource, key): return json.loads(resource[1])[key] def config_getter(root_url, resource_key, timeout): def config_getter( root_url : str, resource_key : str, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None ): url = '{:s}/restconf/data/tapi-common:context'.format(root_url) result = [] try: response = requests.get(url, timeout=timeout) response = requests.get(url, timeout=timeout, verify=False, auth=auth) except requests.exceptions.Timeout: LOGGER.exception('Timeout connecting {:s}'.format(url)) except Exception as e: # pylint: disable=broad-except Loading Loading @@ -63,8 +67,10 @@ def config_getter(root_url, resource_key, timeout): return result def create_connectivity_service( root_url, timeout, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier): root_url, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None ): url = '{:s}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context'.format(root_url) headers = {'content-type': 'application/json'} Loading Loading @@ -105,7 +111,8 @@ def create_connectivity_service( results = [] try: LOGGER.info('Connectivity service {:s}: {:s}'.format(str(uuid), str(data))) response = requests.post(url=url, data=json.dumps(data), timeout=timeout, headers=headers) response = requests.post( url=url, data=json.dumps(data), timeout=timeout, headers=headers, verify=False, auth=auth) LOGGER.info('TAPI response: {:s}'.format(str(response))) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception creating ConnectivityService(uuid={:s}, data={:s})'.format(str(uuid), str(data))) Loading @@ -117,12 +124,12 @@ def create_connectivity_service( results.append(response.status_code in HTTP_OK_CODES) return results def delete_connectivity_service(root_url, timeout, uuid): def delete_connectivity_service(root_url, uuid, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None): url = '{:s}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={:s}' url = url.format(root_url, uuid) results = [] try: response = requests.delete(url=url, timeout=timeout) response = requests.delete(url=url, timeout=timeout, verify=False, auth=auth) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception deleting ConnectivityService(uuid={:s})'.format(str(uuid))) results.append(e) Loading src/device/service/drivers/transport_api/TransportApiDriver.py +13 −6 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ # limitations under the License. import logging, requests, threading from requests.auth import HTTPBasicAuth from typing import Any, Iterator, List, Optional, Tuple, Union from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method from common.type_checkers.Checkers import chk_string, chk_type Loading @@ -29,7 +30,11 @@ class TransportApiDriver(_Driver): self.__lock = threading.Lock() self.__started = threading.Event() self.__terminate = threading.Event() self.__tapi_root = 'http://' + address + ':' + str(port) username = settings.get('username') password = settings.get('password') self.__auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None scheme = settings.get('scheme', 'http') self.__tapi_root = '{:s}://{:s}:{:d}'.format(scheme, address, int(port)) self.__timeout = int(settings.get('timeout', 120)) def Connect(self) -> bool: Loading @@ -37,7 +42,7 @@ class TransportApiDriver(_Driver): with self.__lock: if self.__started.is_set(): return True try: requests.get(url, timeout=self.__timeout) requests.get(url, timeout=self.__timeout, verify=False, auth=self.__auth) except requests.exceptions.Timeout: LOGGER.exception('Timeout connecting {:s}'.format(str(self.__tapi_root))) return False Loading Loading @@ -67,7 +72,8 @@ class TransportApiDriver(_Driver): for i, resource_key in enumerate(resource_keys): str_resource_name = 'resource_key[#{:d}]'.format(i) chk_string(str_resource_name, resource_key, allow_empty=False) results.extend(config_getter(self.__tapi_root, resource_key, self.__timeout)) results.extend(config_getter( self.__tapi_root, resource_key, timeout=self.__timeout, auth=self.__auth)) return results @metered_subclass_method(METRICS_POOL) Loading @@ -89,8 +95,8 @@ class TransportApiDriver(_Driver): direction = find_key(resource, 'direction') data = create_connectivity_service( self.__tapi_root, self.__timeout, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier) self.__tapi_root, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier, timeout=self.__timeout, auth=self.__auth) results.extend(data) return results Loading @@ -102,7 +108,8 @@ class TransportApiDriver(_Driver): for resource in resources: LOGGER.info('resource = {:s}'.format(str(resource))) uuid = find_key(resource, 'uuid') results.extend(delete_connectivity_service(self.__tapi_root, self.__timeout, uuid)) results.extend(delete_connectivity_service( self.__tapi_root, uuid, timeout=self.__timeout, auth=self.__auth)) return results @metered_subclass_method(METRICS_POOL) Loading Loading
src/device/service/drivers/transport_api/Tools.py +14 −7 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ # limitations under the License. import json, logging, requests from requests.auth import HTTPBasicAuth from typing import Optional from device.service.driver_api._Driver import RESOURCE_ENDPOINTS LOGGER = logging.getLogger(__name__) Loading @@ -28,11 +30,13 @@ def find_key(resource, key): return json.loads(resource[1])[key] def config_getter(root_url, resource_key, timeout): def config_getter( root_url : str, resource_key : str, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None ): url = '{:s}/restconf/data/tapi-common:context'.format(root_url) result = [] try: response = requests.get(url, timeout=timeout) response = requests.get(url, timeout=timeout, verify=False, auth=auth) except requests.exceptions.Timeout: LOGGER.exception('Timeout connecting {:s}'.format(url)) except Exception as e: # pylint: disable=broad-except Loading Loading @@ -63,8 +67,10 @@ def config_getter(root_url, resource_key, timeout): return result def create_connectivity_service( root_url, timeout, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier): root_url, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None ): url = '{:s}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context'.format(root_url) headers = {'content-type': 'application/json'} Loading Loading @@ -105,7 +111,8 @@ def create_connectivity_service( results = [] try: LOGGER.info('Connectivity service {:s}: {:s}'.format(str(uuid), str(data))) response = requests.post(url=url, data=json.dumps(data), timeout=timeout, headers=headers) response = requests.post( url=url, data=json.dumps(data), timeout=timeout, headers=headers, verify=False, auth=auth) LOGGER.info('TAPI response: {:s}'.format(str(response))) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception creating ConnectivityService(uuid={:s}, data={:s})'.format(str(uuid), str(data))) Loading @@ -117,12 +124,12 @@ def create_connectivity_service( results.append(response.status_code in HTTP_OK_CODES) return results def delete_connectivity_service(root_url, timeout, uuid): def delete_connectivity_service(root_url, uuid, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None): url = '{:s}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={:s}' url = url.format(root_url, uuid) results = [] try: response = requests.delete(url=url, timeout=timeout) response = requests.delete(url=url, timeout=timeout, verify=False, auth=auth) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception deleting ConnectivityService(uuid={:s})'.format(str(uuid))) results.append(e) Loading
src/device/service/drivers/transport_api/TransportApiDriver.py +13 −6 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ # limitations under the License. import logging, requests, threading from requests.auth import HTTPBasicAuth from typing import Any, Iterator, List, Optional, Tuple, Union from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method from common.type_checkers.Checkers import chk_string, chk_type Loading @@ -29,7 +30,11 @@ class TransportApiDriver(_Driver): self.__lock = threading.Lock() self.__started = threading.Event() self.__terminate = threading.Event() self.__tapi_root = 'http://' + address + ':' + str(port) username = settings.get('username') password = settings.get('password') self.__auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None scheme = settings.get('scheme', 'http') self.__tapi_root = '{:s}://{:s}:{:d}'.format(scheme, address, int(port)) self.__timeout = int(settings.get('timeout', 120)) def Connect(self) -> bool: Loading @@ -37,7 +42,7 @@ class TransportApiDriver(_Driver): with self.__lock: if self.__started.is_set(): return True try: requests.get(url, timeout=self.__timeout) requests.get(url, timeout=self.__timeout, verify=False, auth=self.__auth) except requests.exceptions.Timeout: LOGGER.exception('Timeout connecting {:s}'.format(str(self.__tapi_root))) return False Loading Loading @@ -67,7 +72,8 @@ class TransportApiDriver(_Driver): for i, resource_key in enumerate(resource_keys): str_resource_name = 'resource_key[#{:d}]'.format(i) chk_string(str_resource_name, resource_key, allow_empty=False) results.extend(config_getter(self.__tapi_root, resource_key, self.__timeout)) results.extend(config_getter( self.__tapi_root, resource_key, timeout=self.__timeout, auth=self.__auth)) return results @metered_subclass_method(METRICS_POOL) Loading @@ -89,8 +95,8 @@ class TransportApiDriver(_Driver): direction = find_key(resource, 'direction') data = create_connectivity_service( self.__tapi_root, self.__timeout, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier) self.__tapi_root, uuid, input_sip, output_sip, direction, capacity_value, capacity_unit, layer_protocol_name, layer_protocol_qualifier, timeout=self.__timeout, auth=self.__auth) results.extend(data) return results Loading @@ -102,7 +108,8 @@ class TransportApiDriver(_Driver): for resource in resources: LOGGER.info('resource = {:s}'.format(str(resource))) uuid = find_key(resource, 'uuid') results.extend(delete_connectivity_service(self.__tapi_root, self.__timeout, uuid)) results.extend(delete_connectivity_service( self.__tapi_root, uuid, timeout=self.__timeout, auth=self.__auth)) return results @metered_subclass_method(METRICS_POOL) Loading