diff --git a/proto/analytics_frontend.proto b/proto/analytics_frontend.proto new file mode 100644 index 0000000000000000000000000000000000000000..6af761ae51f332fc5df849e431663acd46b7888f --- /dev/null +++ b/proto/analytics_frontend.proto @@ -0,0 +1,49 @@ +syntax = "proto3"; +package device; + +import "context.proto"; +import "kpi_manager.proto"; +import "kpi_sample_types.proto"; + +service AnalyticsFrontendService { + rpc StartAnalyzer (Analyzer ) returns (AnalyzerId ) {} + rpc StopAnalyzer (AnalyzerId ) returns (context.Empty) {} + rpc SelectAnalyzers(AnalyzerFilter) returns (AnalyzerList ) {} +} + +message AnalyzerId { + context.Uuid analyzer_id = 1; +} + +enum AnalyzerMode { + ANALYZERMODE_BATCH = 0; + ANALYZERMODE_STRAMING = 1; +} + +message Analyzer { + repeated kpi_manager.KpiId kpi_id = 1; // The KPI Ids to be processed by the analyzer + AnalyzerMode mode = 2; // Operation mode of the analyzer + float batch_min_duration_s = 3; // In batch mode, min duration to collect before executing batch + float batch_max_duration_s = 4; // In batch mode, max duration collected to execute the batch + uint batch_min_size = 5; // In batch mode, min number of samples to collect before executing batch + uint batch_max_size = 6; // In batch mode, max number of samples collected to execute the batch +} + +message AnalyzerFilter { + // Analyzer that fulfill the filter are those that match ALL the following fields. + // An empty list means: any value is accepted. + // All fields empty means: list all Analyzers + repeated AnalyzerId analyzer_id = 1; + repeated kpi_manager.KpiId kpi_id = 2; + repeated kpi_sample_types.KpiSampleType kpi_sample_type = 3; + repeated context.DeviceId device_id = 4; + repeated context.EndPointId endpoint_id = 5; + repeated context.ServiceId service_id = 6; + repeated context.SliceId slice_id = 7; + repeated context.ConnectionId connection_id = 8; + repeated context.LinkId link_id = 9; +} + +message AnalyzerList { + repeated Analyzer analyzer_list = 1; +}