diff --git a/src/dbscanserving/client/DbscanServingClient.py b/src/dbscanserving/client/DbscanServingClient.py index 6f2556a82633dd608506fb1153e03cb9febb5b65..3116e9fe3b65d4c5ba37b3ebbfc9f4819b97ace3 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 5160515132864cc1e055fab7c1927ae210a92b80..d447859818a4f2d586b101bd4f39bd3965058a30 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 c9e9b0c73dc06c59ca7e5a3430f68dd5d4c457e0..cf6539f80826e1d2ed77485d2ef9831ed1871045 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)