Skip to content
Snippets Groups Projects
Commit b3fbed56 authored by Carlos Natalino Da Silva's avatar Carlos Natalino Da Silva
Browse files

Including the kpi insertion into the attack detection.

parent 86ca2f05
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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
......
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment