Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
TFS
controller
Compare revisions
3a00a55c67a4105fcadc6e9944bf8f598b6ed1b9...843c37fbf969fcc2261b72a1171ad1c0bfd675e0
Commits (6)
Added new message (KpiDescriptorFilter) and updated method name
· 7a342bb6
Waleed Akbar
authored
Apr 16, 2024
7a342bb6
Update method names
· 2a3ddf38
Waleed Akbar
authored
Apr 16, 2024
2a3ddf38
update method name
· bb54d7a4
Waleed Akbar
authored
Apr 16, 2024
bb54d7a4
New method "create_kpi_filter_request" is added
· 4720cbc7
Waleed Akbar
authored
Apr 16, 2024
4720cbc7
comments were removed
· 44158d34
Waleed Akbar
authored
Apr 16, 2024
44158d34
function calls were updated according to name method names
· 843c37fb
Waleed Akbar
authored
Apr 16, 2024
843c37fb
Hide whitespace changes
Inline
Side-by-side
proto/kpi_manager.proto
View file @
843c37fb
...
...
@@ -19,27 +19,41 @@ import "context.proto";
import
"kpi_sample_types.proto"
;
service
KpiManagerService
{
rpc
SetKpi
(
KpiDescriptor
)
returns
(
KpiId
)
{}
// Stable not final
rpc
DeleteKpi
(
KpiId
)
returns
(
context.Empty
)
{}
// Stable and final
rpc
GetKpiDescriptor
(
KpiId
)
returns
(
KpiDescriptor
)
{}
// Stable and final
rpc
GetKpiDescriptorList
(
context.Empty
)
returns
(
KpiDescriptorList
)
{}
// Stable and final
rpc
SetKpiDescriptor
(
KpiDescriptor
)
returns
(
KpiId
)
{}
// Stable not final
rpc
DeleteKpiDescriptor
(
KpiId
)
returns
(
context.Empty
)
{}
// Stable and final
rpc
GetKpiDescriptor
(
KpiId
)
returns
(
KpiDescriptor
)
{}
// Stable and final
rpc
SelectKpiDescriptor
(
KpiDescriptorFilter
)
returns
(
KpiDescriptorList
)
{}
// Stable and final
}
message
KpiId
{
context.Uuid
kpi_id
=
1
;
}
message
KpiDescriptor
{
KpiId
kpi_id
=
1
;
string
kpi_description
=
2
;
repeated
KpiId
kpi_id_list
=
3
;
kpi_sample_types.KpiSampleType
kpi_sample_type
=
4
;
context.DeviceId
device_id
=
5
;
context.EndPointId
endpoint_id
=
6
;
context.ServiceId
service_id
=
7
;
context.SliceId
slice_id
=
8
;
context.ConnectionId
connection_id
=
9
;
context.LinkId
link_id
=
10
;
kpi_sample_types.KpiSampleType
kpi_sample_type
=
3
;
context.DeviceId
device_id
=
4
;
context.EndPointId
endpoint_id
=
5
;
context.ServiceId
service_id
=
6
;
context.SliceId
slice_id
=
7
;
context.ConnectionId
connection_id
=
8
;
context.LinkId
link_id
=
9
;
}
message
KpiId
{
context.Uuid
kpi_id
=
1
;
message
KpiDescriptorFilter
{
// KPI Descriptors 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 KPI Descriptors
repeated
KpiId
kpi_id
=
1
;
repeated
kpi_sample_types.KpiSampleType
kpi_sample_type
=
2
;
repeated
context.DeviceId
device_id
=
3
;
repeated
context.EndPointId
endpoint_id
=
4
;
repeated
context.ServiceId
service_id
=
5
;
repeated
context.SliceId
slice_id
=
6
;
repeated
context.ConnectionId
connection_id
=
7
;
repeated
context.LinkId
link_id
=
8
;
}
message
KpiDescriptorList
{
...
...
src/kpi_manager/client/KpiManagerClient.py
View file @
843c37fb
...
...
@@ -19,7 +19,7 @@ from common.Settings import get_service_host, get_service_port_grpc
from
common.tools.client.RetryDecorator
import
retry
,
delay_exponential
from
common.tools.grpc.Tools
import
grpc_message_to_json_string
from
common.proto.context_pb2
import
Empty
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorList
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorFilter
,
KpiDescriptorList
from
common.proto.kpi_manager_pb2_grpc
import
KpiManagerServiceStub
LOGGER
=
logging
.
getLogger
(
__name__
)
...
...
@@ -29,8 +29,8 @@ RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION,
class
KpiManagerClient
:
def
__init__
(
self
,
host
=
None
,
port
=
None
):
if
not
host
:
host
=
get_service_host
(
ServiceNameEnum
.
KPIMANAGER
)
# update enum
if
not
port
:
port
=
get_service_port_grpc
(
ServiceNameEnum
.
KPIMANAGER
)
# update enum
if
not
host
:
host
=
get_service_host
(
ServiceNameEnum
.
KPIMANAGER
)
if
not
port
:
port
=
get_service_port_grpc
(
ServiceNameEnum
.
KPIMANAGER
)
self
.
endpoint
=
'{:s}:{:s}'
.
format
(
str
(
host
),
str
(
port
))
LOGGER
.
debug
(
'Creating channel to {:s}...'
.
format
(
str
(
self
.
endpoint
)))
self
.
channel
=
None
...
...
@@ -48,17 +48,17 @@ class KpiManagerClient:
self
.
stub
=
None
@RETRY_DECORATOR
def
SetKpi
(
self
,
request
:
KpiDescriptor
)
->
KpiId
:
LOGGER
.
debug
(
'SetKpi: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
SetKpi
(
request
)
LOGGER
.
debug
(
'SetKpi result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
def
SetKpi
Descriptor
(
self
,
request
:
KpiDescriptor
)
->
KpiId
:
LOGGER
.
debug
(
'SetKpi
Descriptor
: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
SetKpi
Descriptor
(
request
)
LOGGER
.
debug
(
'SetKpi
Descriptor
result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
@RETRY_DECORATOR
def
DeleteKpi
(
self
,
request
:
KpiId
)
->
Empty
:
LOGGER
.
debug
(
'DeleteKpi: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
DeleteKpi
(
request
)
LOGGER
.
info
(
'DeleteKpi result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
def
DeleteKpi
Descriptor
(
self
,
request
:
KpiId
)
->
Empty
:
LOGGER
.
debug
(
'DeleteKpi
Descriptor
: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
DeleteKpi
Descriptor
(
request
)
LOGGER
.
info
(
'DeleteKpi
Descriptor
result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
@RETRY_DECORATOR
...
...
@@ -69,8 +69,8 @@ class KpiManagerClient:
return
response
@RETRY_DECORATOR
def
Ge
tKpiDescriptor
List
(
self
,
request
:
Empty
)
->
KpiDescriptorList
:
LOGGER
.
debug
(
'
Ge
tKpiDescriptor
List
: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
Ge
tKpiDescriptor
List
(
request
)
LOGGER
.
debug
(
'
Ge
tKpiDescriptor
List
result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
def
Selec
tKpiDescriptor
(
self
,
request
:
KpiDescriptorFilter
)
->
KpiDescriptorList
:
LOGGER
.
debug
(
'
Selec
tKpiDescriptor: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
Selec
tKpiDescriptor
(
request
)
LOGGER
.
debug
(
'
Selec
tKpiDescriptor result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
\ No newline at end of file
src/kpi_manager/service/KpiManagerServiceServicerImpl.py
View file @
843c37fb
...
...
@@ -16,7 +16,7 @@ import logging, grpc
from
common.method_wrappers.Decorator
import
MetricsPool
,
safe_and_metered_rpc_method
from
common.proto.context_pb2
import
Empty
from
common.proto.kpi_manager_pb2_grpc
import
KpiManagerServiceServicer
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorList
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorFilter
,
KpiDescriptorList
from
monitoring.service.NameMapping
import
NameMapping
from
monitoring.service
import
ManagementDBTools
...
...
@@ -34,7 +34,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer):
LOGGER
.
info
(
'MetricsDB initialized --- KPI Manager Service'
)
@safe_and_metered_rpc_method
(
METRICS_POOL
,
LOGGER
)
def
SetKpi
(
def
SetKpi
Descriptor
(
self
,
request
:
KpiDescriptor
,
grpc_context
:
grpc
.
ServicerContext
)
->
KpiId
:
response
=
KpiId
()
...
...
@@ -57,7 +57,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer):
return
response
@safe_and_metered_rpc_method
(
METRICS_POOL
,
LOGGER
)
def
DeleteKpi
(
self
,
request
:
KpiId
,
grpc_context
:
grpc
.
ServicerContext
)
->
Empty
:
def
DeleteKpi
Descriptor
(
self
,
request
:
KpiId
,
grpc_context
:
grpc
.
ServicerContext
)
->
Empty
:
kpi_id
=
int
(
request
.
kpi_id
.
uuid
)
kpi
=
self
.
management_db
.
get_KPI
(
kpi_id
)
if
kpi
:
...
...
@@ -85,7 +85,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer):
return
kpiDescriptor
@safe_and_metered_rpc_method
(
METRICS_POOL
,
LOGGER
)
def
Ge
tKpiDescriptor
List
(
self
,
request
:
Empty
,
grpc_context
:
grpc
.
ServicerContext
)
->
KpiDescriptorList
:
def
Selec
tKpiDescriptor
(
self
,
request
:
KpiDescriptorFilter
,
grpc_context
:
grpc
.
ServicerContext
)
->
KpiDescriptorList
:
kpi_descriptor_list
=
KpiDescriptorList
()
data
=
self
.
management_db
.
get_KPIS
()
LOGGER
.
debug
(
f
"data:
{
data
}
"
)
...
...
src/kpi_manager/tests/test_messages.py
View file @
843c37fb
...
...
@@ -24,46 +24,62 @@ def create_kpi_request(kpi_id_str):
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV'
+
str
(
kpi_id_str
)
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV'
+
str
(
kpi_id_str
)
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV'
+
str
(
kpi_id_str
)
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC'
+
str
(
kpi_id_str
)
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END'
+
str
(
kpi_id_str
)
_create_kpi_request
.
connection_id
.
connection_uuid
.
uuid
=
'CON'
+
str
(
kpi_id_str
)
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC'
+
str
(
kpi_id_str
)
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END'
+
str
(
kpi_id_str
)
_create_kpi_request
.
connection_id
.
connection_uuid
.
uuid
=
'CON'
+
str
(
kpi_id_str
)
return
_create_kpi_request
def
create_kpi_request_b
():
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END2'
# pylint: disable=maybe-no-member
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END2'
# pylint: disable=maybe-no-member
_create_kpi_request
.
connection_id
.
connection_uuid
.
uuid
=
'CON2'
# pylint: disable=maybe-no-member
return
_create_kpi_request
def
create_kpi_request_c
():
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END3'
# pylint: disable=maybe-no-member
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END3'
# pylint: disable=maybe-no-member
_create_kpi_request
.
connection_id
.
connection_uuid
.
uuid
=
'CON3'
# pylint: disable=maybe-no-member
return
_create_kpi_request
def
create_kpi_request_d
():
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END4'
# pylint: disable=maybe-no-member
_create_kpi_request
=
kpi_manager_pb2
.
KpiDescriptor
()
_create_kpi_request
.
kpi_description
=
'KPI Description Test'
_create_kpi_request
.
kpi_sample_type
=
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
_create_kpi_request
.
device_id
.
device_uuid
.
uuid
=
'DEV4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
service_id
.
service_uuid
.
uuid
=
'SERV4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
slice_id
.
slice_uuid
.
uuid
=
'SLC4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
endpoint_id
.
endpoint_uuid
.
uuid
=
'END4'
# pylint: disable=maybe-no-member
_create_kpi_request
.
connection_id
.
connection_uuid
.
uuid
=
'CON4'
# pylint: disable=maybe-no-member
return
_create_kpi_request
def
kpi_descriptor_list
():
_kpi_descriptor_list
=
kpi_manager_pb2
.
KpiDescriptorList
()
return
_kpi_descriptor_list
\ No newline at end of file
return
_kpi_descriptor_list
def
create_kpi_filter_request
():
_create_kpi_filter_request
=
kpi_manager_pb2
.
KpiDescriptorFilter
()
_create_kpi_filter_request
.
kpi_sample_type
.
append
(
KpiSampleType
.
KPISAMPLETYPE_PACKETS_RECEIVED
)
new_device_id
=
_create_kpi_filter_request
.
device_id
.
add
()
new_device_id
.
device_uuid
.
uuid
=
'DEV1'
new_service_id
=
_create_kpi_filter_request
.
service_id
.
add
()
new_service_id
.
service_uuid
.
uuid
=
'SERV1'
new_slice_id
=
_create_kpi_filter_request
.
slice_id
.
add
()
new_slice_id
.
slice_uuid
.
uuid
=
'SLC1'
new_endpoint_id
=
_create_kpi_filter_request
.
endpoint_id
.
add
()
new_endpoint_id
.
endpoint_uuid
.
uuid
=
'END1'
new_connection_id
=
_create_kpi_filter_request
.
connection_id
.
add
()
new_connection_id
.
connection_uuid
.
uuid
=
'CON1'
return
_create_kpi_filter_request
\ No newline at end of file
src/kpi_manager/tests/test_unitary.py
View file @
843c37fb
...
...
@@ -33,7 +33,7 @@ from common.tools.object_factory.Context import json_context, json_context_id
from
common.tools.object_factory.Topology
import
json_topology
,
json_topology_id
# from common.proto.monitoring_pb2 import KpiId, KpiDescriptor, SubsDescriptor, SubsList, AlarmID, \
# AlarmDescriptor, AlarmList, KpiDescriptorList, SubsResponse, AlarmResponse, RawKpiTable #, Kpi, KpiList
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorList
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorFilter
,
KpiDescriptorList
from
common.tools.service.GenericGrpcService
import
GenericGrpcService
from
context.client.ContextClient
import
ContextClient
...
...
@@ -43,7 +43,7 @@ from device.service.driver_api.DriverInstanceCache import DriverInstanceCache
from
device.service.DeviceService
import
DeviceService
from
device.client.DeviceClient
import
DeviceClient
from
kpi_manager.tests.test_messages
import
create_kpi_request
,
create_kpi_request_b
,
create_kpi_request_c
,
create_kpi_request_d
from
kpi_manager.tests.test_messages
import
create_kpi_request
,
create_kpi_request_b
,
create_kpi_request_c
,
create_kpi_request_d
,
create_kpi_filter_request
# from monitoring.service.MonitoringService import MonitoringService
from
kpi_manager.service.KpiManagerService
import
KpiManagerService
# from monitoring.client.MonitoringClient import MonitoringClient
...
...
@@ -256,7 +256,7 @@ def test_set_kpi(kpi_manager_client): # pylint: disable=redefined-outer-name
# make call to server
LOGGER
.
warning
(
'test_create_kpi requesting'
)
for
i
in
range
(
3
):
response
=
kpi_manager_client
.
SetKpi
(
create_kpi_request
(
str
(
i
+
1
)))
response
=
kpi_manager_client
.
SetKpi
Descriptor
(
create_kpi_request
(
str
(
i
+
1
)))
LOGGER
.
debug
(
str
(
response
))
assert
isinstance
(
response
,
KpiId
)
...
...
@@ -264,14 +264,14 @@ def test_set_kpi(kpi_manager_client): # pylint: disable=redefined-outer-name
def
test_delete_kpi
(
kpi_manager_client
):
# pylint: disable=redefined-outer-name
# make call to server
LOGGER
.
warning
(
'delete_kpi requesting'
)
response
=
kpi_manager_client
.
SetKpi
(
create_kpi_request
(
'4'
))
response
=
kpi_manager_client
.
DeleteKpi
(
response
)
response
=
kpi_manager_client
.
SetKpi
Descriptor
(
create_kpi_request
(
'4'
))
response
=
kpi_manager_client
.
DeleteKpi
Descriptor
(
response
)
LOGGER
.
debug
(
str
(
response
))
assert
isinstance
(
response
,
Empty
)
# Test case that makes use of client fixture to test server's GetKpiDescriptor method
def
test_
ge
t_kpi_descriptor
_list
(
kpi_manager_client
):
# pylint: disable=redefined-outer-name
LOGGER
.
warning
(
'test_
ge
tkpidescritor
_kpi
begin'
)
response
=
kpi_manager_client
.
Ge
tKpiDescriptor
List
(
Empty
())
def
test_
selec
t_kpi_descriptor
(
kpi_manager_client
):
# pylint: disable=redefined-outer-name
LOGGER
.
warning
(
'test_
selec
tkpidescritor begin'
)
response
=
kpi_manager_client
.
Selec
tKpiDescriptor
(
create_kpi_filter_request
())
LOGGER
.
debug
(
str
(
response
))
assert
isinstance
(
response
,
KpiDescriptorList
)