From b3fbed56e5f691a73024c83490abe7aea101e0a1 Mon Sep 17 00:00:00 2001 From: Carlos Natalino <carlos.natalino@chalmers.se> Date: Wed, 28 Sep 2022 13:08:29 +0200 Subject: [PATCH] Including the kpi insertion into the attack detection. --- src/dbscanserving/client/DbscanServingClient.py | 2 +- .../OpticalAttackDetectorServiceServicerImpl.py | 11 ++++++++++- src/opticalattackmanager/service/__main__.py | 8 ++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/dbscanserving/client/DbscanServingClient.py b/src/dbscanserving/client/DbscanServingClient.py index 6f2556a82..3116e9fe3 100644 --- a/src/dbscanserving/client/DbscanServingClient.py +++ b/src/dbscanserving/client/DbscanServingClient.py @@ -53,5 +53,5 @@ class DbscanServingClient: request.num_features )) response = self.stub.Detect(request) - LOGGER.debug('Detect result with {:s} cluster indices'.format(len(response.cluster_indices))) + LOGGER.debug('Detect result with {} cluster indices'.format(len(response.cluster_indices))) return response diff --git a/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py b/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py index 516051513..d44785981 100644 --- a/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py +++ b/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py @@ -13,6 +13,7 @@ # limitations under the License. import os, grpc, logging, random +from common.tools.timestamp.Converters import timestamp_utcnow_to_float from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method from context.client.ContextClient import ContextClient from monitoring.client.MonitoringClient import MonitoringClient @@ -25,7 +26,7 @@ from common.proto.context_pb2 import (Empty, Context, ContextId, ContextIdList, ContextList, Service, ServiceId, ServiceIdList, ServiceList ) -from common.proto.monitoring_pb2 import KpiList +from common.proto.monitoring_pb2 import Kpi from common.proto.optical_attack_detector_pb2_grpc import ( OpticalAttackDetectorServiceServicer) @@ -77,6 +78,14 @@ class OpticalAttackDetectorServiceServicerImpl(OpticalAttackDetectorServiceServi grpc_sample.features.append(random.uniform(5000., 6000.)) request.samples.append(grpc_sample) response: DetectionResponse = dbscanserving_client.Detect(request) + + # including KPI + kpi = Kpi() + kpi.kpi_id.kpi_id.uuid = "1" + kpi.timestamp.timestamp = timestamp_utcnow_to_float() + kpi.kpi_value.int32Val = response.cluster_indices[-1] + monitoring_client.IncludeKpi(kpi) + if -1 in response.cluster_indices: # attack detected attack = AttackDescription() attack.cs_id.uuid = service_id.service_uuid.uuid diff --git a/src/opticalattackmanager/service/__main__.py b/src/opticalattackmanager/service/__main__.py index c9e9b0c73..cf6539f80 100644 --- a/src/opticalattackmanager/service/__main__.py +++ b/src/opticalattackmanager/service/__main__.py @@ -32,12 +32,12 @@ async def detect_attack(endpoint, context_id, service_id): options=CHANNEL_OPTIONS) as channel: stub = OpticalAttackDetectorServiceStub(channel) - service_id = ServiceId() - service_id.context_id.context_uuid.uuid = context_id - service_id.service_uuid.uuid = str(service_id) + service = ServiceId() + service.context_id.context_uuid.uuid = context_id + service.service_uuid.uuid = str(service_id) # Timeout in seconds. # Please refer gRPC Python documents for more detail. https://grpc.io/grpc/python/grpc.html - await stub.DetectAttack(service_id, + await stub.DetectAttack(service, timeout=10) print("Greeter client received:", service_id) -- GitLab