Commit 35c0ee04 authored by Waleed Akbar's avatar Waleed Akbar
Browse files

Changes in gNMI-OC collector main file

- changes collector list name from COLLECTOR to COLLECTORS
- updated __init__ method signature to remove username, password and insecure parameters as they are already exists inside the **setting parameter
- updated connect() to return bool
- updated disconnect() to return bool
- remove old comments
parent d2f75e3a
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -17,10 +17,10 @@ from common.proto.context_pb2 import DeviceDriverEnum
from telemetry.backend.Config     import LOAD_ALL_DEVICE_DRIVERS
from ..collector_api.FilterFields import FilterFieldEnum

COLLECTOR = []
COLLECTORS = []

from .emulated.EmulatedCollector import EmulatedCollector # pylint: disable=wrong-import-position
COLLECTOR.append(
COLLECTORS.append(
    (EmulatedCollector, [
        # TODO: multi-filter is not working
        {
@@ -34,9 +34,11 @@ COLLECTOR.append(
        },
    ]))

# TODO: Import for gNMI OpenConfig Collector ...

if LOAD_ALL_DEVICE_DRIVERS:
    from .gnmi_oc.GnmiOpenConfigCollector import GNMIOpenConfigCollector # pylint: disable=wrong-import-position
    COLLECTOR.append(
    COLLECTORS.append(
        (GNMIOpenConfigCollector, [
            {
                # Real Packet Router, specifying GNMI Driver => use GnmiDriver
+16 −12
Original line number Diff line number Diff line
@@ -23,16 +23,17 @@ class GNMIOpenConfigCollector(_Collector):
    =========================
    Lightweight wrapper around *pygnmi* with subscribe / get / unsubscribe helpers.
    """
    def __init__(self,
                 username: str = 'admin', password: str = 'admin', insecure: bool = True,
                 address: str = '', port: int = -1, **setting 
                 ) -> None:
    def __init__(self, address: str = '', port: int = -1, **setting ) -> None:
        
        super().__init__('gNMI_openconfig_collector', address, port, **setting)
        self._subscriptions : Dict[str, Subscription] = {}
        self.username = username
        self.password = password
        self.insecure = insecure

        self.username = setting.get('username', 'admin')
        self.password = setting.get('password', 'admin')
        self.insecure = setting.get('insecure', True)
        # self.username = username
        # self.password = password
        # self.insecure = insecure

        self.connected = False          # To track connection state
        self.client: Optional[gNMIclient] = None
@@ -42,7 +43,7 @@ class GNMIOpenConfigCollector(_Collector):
        self.logger.debug("GNMICollector instantiated.")


    def Connect(self) -> None:
    def Connect(self) -> bool:
        """
        Connect to the gNMI target device.
        """
@@ -53,13 +54,16 @@ class GNMIOpenConfigCollector(_Collector):
                password=self.password,
                insecure=self.insecure
            )
            # self.logger.info("Connecting to gNMI target %s:%s with %s and %s", self.address, self.port, self.username, self.password)
            self.client.connect()           # type: ignore
            self.connected = True
            self.logger.info("Connected to gNMI target %s:%s", self.address, self.port)
            return True
        else:
            self.logger.warning("Already connected to gNMI target %s:%s", self.address, self.port)
            return True

    def Disconnect(self) -> None:
    def Disconnect(self) -> bool:
        """
        Disconnect from the gNMI target device.
        """
@@ -67,8 +71,10 @@ class GNMIOpenConfigCollector(_Collector):
            self.client.close()
            self.connected = False
            self.logger.info("Disconnected from gNMI target %s:%s", self.address, self.port)
            return True
        else:
            self.logger.warning("Not connected to any gNMI target.")
            return True

    def SubscribeState(self, subscriptions: List[Tuple[str, dict, float, float]]
                  ) -> List[Union[bool, Exception]]:
@@ -88,9 +94,7 @@ class GNMIOpenConfigCollector(_Collector):
                    raise KeyError("Endpoint dictionary must contain 'kpi' key.")
                if sub_endpoint.get('resource') is None:
                    raise KeyError("Endpoint dictionary must contain 'resource' key.")
                # Convert KPI Id into name

                # kpi_name = KPI.get_kpi_name_by_value(sub_endpoint['kpi'])
                paths = PathMapper.build(
                                endpoint=sub_endpoint['endpoint'],
                                kpi=sub_endpoint['kpi'],