Commit 18add942 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Simap Connector:

- Fixed generation of xpath filters after dscovery of link details
parent 02517bc4
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@


import grpc, logging, sqlalchemy
from typing import List
from common.proto.context_pb2 import Empty
from common.proto.simap_connector_pb2 import Subscription, SubscriptionId
from common.proto.simap_connector_pb2_grpc import SimapConnectorServiceServicer
@@ -63,7 +62,7 @@ class SimapConnectorServiceServicerImpl(SimapConnectorServiceServicer):
        link_details : LinkDetails = discover_link_details(
            self._restconf_client, xpath_filter
        )
        xpath_filter = link_details.link.get_xpath_filter()
        xpath_filter = link_details.link.get_xpath_filter(add_simap_telemetry=True)

        parent_subscription_uuid, parent_subscription_id = subscription_set(
            self._db_engine, datastore, xpath_filter, period
@@ -72,11 +71,9 @@ class SimapConnectorServiceServicerImpl(SimapConnectorServiceServicer):
        aggregation_cache = AggregationCache()

        device_client = DeviceClient()
        sup_link_xpath_filters : List[str] = list()
        for supporting_link in link_details.supporting_links:
            controller_id = get_controller_id(supporting_link.network_id)
            sup_link_xpath_filter = supporting_link.get_xpath_filter()
            sup_link_xpath_filters.append(sup_link_xpath_filter)
            sup_link_xpath_filter = supporting_link.get_xpath_filter(add_simap_telemetry=True)

            if controller_id is None:
                collector_name = '{:d}:SIMAP:{:s}:{:s}'.format(
+7 −7
Original line number Diff line number Diff line
@@ -29,10 +29,8 @@ from device.client.DeviceClient import DeviceClient
LOGGER = logging.getLogger(__name__)


XPATH_LINK_TEMPLATE = (
    '/ietf-network:networks/network={:s}'
    '/ietf-network-topology:link={:s}/simap-telemetry:simap-telemetry'
)
XPATH_LINK_TEMPLATE = '/ietf-network:networks/network={:s}/ietf-network-topology:link={:s}'
SIMAP_TELEMETRY_SUFFIX = '/simap-telemetry:simap-telemetry'

RE_XPATH_LINK = re.compile(
    r'^/ietf-network:networks/network=([^/]+)/ietf-network-topology:link=([^/]+)/?.*$'
@@ -44,8 +42,10 @@ class Link:
    network_id : str
    link_id    : str

    def get_xpath_filter(self) -> str:
        return XPATH_LINK_TEMPLATE.format(self.network_id, self.link_id)
    def get_xpath_filter(self, add_simap_telemetry : bool = True) -> str:
        xpath_filter = XPATH_LINK_TEMPLATE.format(self.network_id, self.link_id)
        if add_simap_telemetry: xpath_filter += SIMAP_TELEMETRY_SUFFIX
        return xpath_filter


@dataclass
@@ -62,7 +62,7 @@ def discover_link_details(restconf_client : RestConfClient, xpath_filter : str)
    network_id, link_id = link_xpath_match.groups()
    link_details = LinkDetails(Link(network_id, link_id))

    xpath_filter = link_details.link.get_xpath_filter()
    xpath_filter = link_details.link.get_xpath_filter(add_simap_telemetry=False)
    xpath_data = restconf_client.get(xpath_filter)
    if not xpath_data:
        raise Exception('Resource({:s}) not found in SIMAP Server'.format(str(xpath_filter)))