Commit e4e1401d authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Pre-merge code cleanup

parent 89d60b34
Loading
Loading
Loading
Loading

src/service/service/monitoring.py

deleted100644 → 0
+0 −148
Original line number Diff line number Diff line
import uuid
from common.proto import kpi_manager_pb2
from common.proto.kpi_sample_types_pb2 import KpiSampleType
from kpi_manager.client.KpiManagerClient import KpiManagerClient
import logging
import pytest
from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList

import uuid
from common.proto import kpi_manager_pb2
from common.proto.kpi_sample_types_pb2 import KpiSampleType
from src.telemetry.backend.service.collectors.gnmi_oc.KPI import KPI

from telemetry.backend.service.collectors.gnmi_oc.GnmiOpenConfigCollector import GNMIOpenConfigCollector


LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)


@pytest.fixture(scope='session')
def kpi_manager_client():
    LOGGER.info('Starting KpiManagerClient...')
    _client = KpiManagerClient(host="10.152.183.91")
    _client.connect()
    LOGGER.info('Yielding Connected KpiManagerClient...')
    yield _client
    LOGGER.info('Closed KpiManagerClient...')
    _client.close()



def create_kpi_descriptor_request(descriptor_name: str = "optical_monitoring"):
    _create_kpi_request                                    = kpi_manager_pb2.KpiDescriptor()
    #_create_kpi_request.kpi_id.kpi_id.uuid                 = str(uuid.uuid4())
    _create_kpi_request.kpi_id.kpi_id.uuid                 = "6e22f180-ba28-4641-b190-2287bf448888"
    # _create_kpi_request.kpi_id.kpi_id.uuid                 = "f974b6cc-095f-4767-b8c1-3457b383fb99"
    _create_kpi_request.kpi_description                    = descriptor_name
    _create_kpi_request.kpi_sample_type                    = KpiSampleType.KPISAMPLETYPE_OPTICAL_POWER_TOTAL_INPUT
    #_create_kpi_request.device_id.device_uuid.uuid         = str(uuid.uuid4())
    _create_kpi_request.device_id.device_uuid.uuid         = "5dc3f5d7-d3a9-5057-a9a0-8af943a5461c"
    _create_kpi_request.service_id.service_uuid.uuid       = 'SERV2'
    _create_kpi_request.slice_id.slice_uuid.uuid           = 'SLC1'
    #_create_kpi_request.endpoint_id.endpoint_uuid.uuid     = str(uuid.uuid4())
    _create_kpi_request.endpoint_id.endpoint_uuid.uuid     = "decb9c95-7298-5ec8-a4b6-7f276f595106"
    _create_kpi_request.connection_id.connection_uuid.uuid = 'CON1' 
    _create_kpi_request.link_id.link_uuid.uuid             = 'LNK1' 
    return _create_kpi_request


'''
def test_SetKpiDescriptor(kpi_manager_client):
    LOGGER.info(" >>> test_SetKpiDescriptor: START <<< ")
    response = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request())
    LOGGER.info("Response gRPC message object: {:}".format(response))
    assert isinstance(response, KpiId)
'''    

'''
def test_GetKpiDescriptor(kpi_manager_client):
    LOGGER.info(" >>> test_GetKpiDescriptor: START <<< ")
    # adding KPI
    response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request())
    # get KPI
    response = kpi_manager_client.GetKpiDescriptor(response_id)
    LOGGER.info("Response gRPC message object: {:}".format(response))
    assert isinstance(response, KpiDescriptor)
'''    

# Test device connection parameters
devices = {
    'device1': {
        'host': '172.17.254.22',
        'port': '50061',
        'username': 'admin',
        'password': 'admin',
        'insecure': True,
    }
}

def create_basic_sub_request_parameters(
        resource: str = 'components',
        endpoint: str = 'port-1-in',   # 'Ethernet1',
        kpi: KPI = KPI.KPISAMPLETYPE_OPTICAL_POWER_TOTAL_INPUT, # It should be KPI Id not name? Need to be replaced with KPI id.
) -> dict:

    device = devices['device1']
    return {
        'target'            : (device['host'], device['port']),
        'username'          : device['username'],
        'password'          : device['password'],
        'connect_timeout'   : 15,
        'insecure'          : device['insecure'],
        'mode'              : 'sample',            # Subscription internal mode posibly: on_change, poll, sample
        'sample_interval_ns': '3s',  
        'sample_interval'   : '10s',
        'kpi'               : kpi,
        'resource'          : resource,
        'endpoint'          : endpoint,
    }


@pytest.fixture
def sub_parameters():
    """Fixture to provide subscription parameters."""
    return create_basic_sub_request_parameters()


@pytest.fixture
def collector(sub_parameters):
    """Fixture to create and connect GNMI collector."""
    collector = GNMIOpenConfigCollector(
        username = sub_parameters['username'],
        password = sub_parameters['password'],
        insecure = sub_parameters['insecure'],
        address  = sub_parameters['target'][0],
        port     = sub_parameters['target'][1],
    )
    collector.Connect()
    yield collector
    collector.Disconnect()


@pytest.fixture
def subscription_data(sub_parameters):
    """Fixture to provide subscription data."""
    # It should return a list of tuples with subscription parameters.
    return [
        (
            "sub_id_123",
            {
                "kpi"      : sub_parameters['kpi'],
                "endpoint" : sub_parameters['endpoint'],
                "resource" : sub_parameters['resource'],
            },
            float(10.0),
            float(5.0),
        ),
    ]


def test_collector_connection(collector):
    """Test collector connection."""
    LOGGER.info("----- Testing GNMI OpenConfig Collector Connection -----")
    assert collector.connected is True
    LOGGER.debug("Collector connected: %s", collector.connected)