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
843c37fbf969fcc2261b72a1171ad1c0bfd675e0...55deaf8425de3a736a5fbf574295a2477f9a793e
Commits (5)
Improvements in file formatting
· acf03e12
Waleed Akbar
authored
Apr 24, 2024
acf03e12
"Telemetry Frontend" Enum name and port added
· 86c1d4ea
Waleed Akbar
authored
Apr 24, 2024
86c1d4ea
improvements in file formatting and MAX_RETRIES changed to 10 from 15.
· f581f2e3
Waleed Akbar
authored
Apr 24, 2024
f581f2e3
Initial "Telemetry Frontend" client code
· 292df453
Waleed Akbar
authored
Apr 24, 2024
292df453
__init__.py added in "Telemetry Frontend" subdirectories.
· 55deaf84
Waleed Akbar
authored
Apr 24, 2024
55deaf84
Hide whitespace changes
Inline
Side-by-side
proto/telemetry_frontend.proto
View file @
55deaf84
...
...
@@ -16,10 +16,10 @@ message CollectorId {
}
message
Collector
{
CollectorId
collector_id
=
1
;
// The Collector ID
kpi_manager.KpiId
kpi_id
=
2
;
// The KPI Id to be associated to the collected samples
float
duration_s
=
3
;
// Terminate data collection after duration[seconds]; duration==0 means indefinitely
float
interval_s
=
4
;
// Interval between collected samples
CollectorId
collector_id
=
1
;
// The Collector ID
kpi_manager.KpiId
kpi_id
=
2
;
// The KPI Id to be associated to the collected samples
float
duration_s
=
3
;
// Terminate data collection after duration[seconds]; duration==0 means indefinitely
float
interval_s
=
4
;
// Interval between collected samples
}
message
CollectorFilter
{
...
...
src/common/Constants.py
View file @
55deaf84
...
...
@@ -44,6 +44,7 @@ class ServiceNameEnum(Enum):
POLICY
=
'policy'
MONITORING
=
'monitoring'
KPIMANAGER
=
'kpiManager'
TELEMETRYFRONTEND
=
'telemetryfrontend'
DLT
=
'dlt'
NBI
=
'nbi'
CYBERSECURITY
=
'cybersecurity'
...
...
@@ -75,6 +76,7 @@ DEFAULT_SERVICE_GRPC_PORTS = {
ServiceNameEnum
.
POLICY
.
value
:
6060
,
ServiceNameEnum
.
MONITORING
.
value
:
7070
,
ServiceNameEnum
.
KPIMANAGER
.
value
:
7071
,
ServiceNameEnum
.
TELEMETRYFRONTEND
.
value
:
7072
,
ServiceNameEnum
.
DLT
.
value
:
8080
,
ServiceNameEnum
.
NBI
.
value
:
9090
,
ServiceNameEnum
.
L3_CAD
.
value
:
10001
,
...
...
src/kpi_manager/client/KpiManagerClient.py
View file @
55deaf84
...
...
@@ -16,14 +16,14 @@ import grpc, logging
from
common.Constants
import
ServiceNameEnum
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
,
KpiDescriptorFilter
,
KpiDescriptorList
from
common.tools.grpc.Tools
import
grpc_message_to_json_string
from
common.tools.client.RetryDecorator
import
retry
,
delay_exponential
from
common.proto.kpi_manager_pb2_grpc
import
KpiManagerServiceStub
from
common.proto.kpi_manager_pb2
import
KpiId
,
KpiDescriptor
,
KpiDescriptorFilter
,
KpiDescriptorList
LOGGER
=
logging
.
getLogger
(
__name__
)
MAX_RETRIES
=
1
5
MAX_RETRIES
=
1
0
DELAY_FUNCTION
=
delay_exponential
(
initial
=
0.01
,
increment
=
2.0
,
maximum
=
5.0
)
RETRY_DECORATOR
=
retry
(
max_retries
=
MAX_RETRIES
,
delay_function
=
DELAY_FUNCTION
,
prepare_method_name
=
'connect'
)
...
...
src/telemetry_frontend/__init__.py
0 → 100644
View file @
55deaf84
...
src/telemetry_frontend/client/TelemetryFrontendClient.py
0 → 100644
View file @
55deaf84
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
grpc
,
logging
from
common.Constants
import
ServiceNameEnum
from
common.Settings
import
get_service_host
,
get_service_port_grpc
from
common.proto.context_pb2
import
Empty
from
common.tools.grpc.Tools
import
grpc_message_to_json_string
from
common.tools.client.RetryDecorator
import
retry
,
delay_exponential
from
common.proto.telemetry_frontend_pb2_grpc
import
TelemetryFrontendServiceStub
from
comment.proto.telemetry_frontend_pb2
import
Collector
,
CollectorId
,
CollectorFilter
,
CollectorList
LOGGER
=
logging
.
getLogger
(
__name__
)
MAX_RETRIES
=
10
DELAY_FUNCTION
=
delay_exponential
(
initial
=
0.01
,
increment
=
2.0
,
maximum
=
5.0
)
RETRY_DECORATOR
=
retry
(
max_retries
=
MAX_RETRIES
,
delay_function
=
DELAY_FUNCTION
,
prepare_method_name
=
'connect'
)
class
TelemetryFrontendClient
:
def
__init__
(
self
,
host
=
None
,
port
=
None
):
if
not
host
:
host
=
get_service_host
(
ServiceNameEnum
.
TELEMETRYFRONTEND
)
if
not
port
:
port
=
get_service_port_grpc
(
ServiceNameEnum
.
TELEMETRYFRONTEND
)
self
.
endpoint
=
'{:s}:{:s}'
.
format
(
str
(
host
),
str
(
port
))
LOGGER
.
debug
(
'Creating channel to {:s}...'
.
format
(
str
(
self
.
endpoint
)))
self
.
channel
=
None
self
.
stub
=
None
self
.
connect
()
LOGGER
.
debug
(
'Channel created'
)
def
connect
(
self
):
self
.
channel
=
grpc
.
insecure_channel
(
self
.
endpoint
)
self
.
stub
=
TelemetryFrontendServiceStub
(
self
.
channel
)
def
close
(
self
):
if
self
.
channel
is
not
None
:
self
.
channel
.
close
()
self
.
channel
=
None
self
.
stub
=
None
@RETRY_DECORATOR
def
StartCollector
(
self
,
request
:
Collector
)
-->
CollectorId
:
LOGGER
.
debug
(
'StartCollector: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
StartCollector
(
request
)
LOGGER
.
debug
(
'StartCollector result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
@RETRY_DECORATOR
def
StopCollector
(
self
,
request
:
CollectorId
)
-->
Empty
:
LOGGER
.
debug
(
'StopCollector: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
StopCollector
(
request
)
LOGGER
.
debug
(
'StopCollector result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
@RETRY_DECORATOR
def
SelectCollectors
(
self
,
request
:
CollectorFilter
)
-->
CollectorList
:
LOGGER
.
debug
(
'SelectCollectors: {:s}'
.
format
(
grpc_message_to_json_string
(
request
)))
response
=
self
.
stub
.
SelectCollectors
(
request
)
LOGGER
.
debug
(
'SelectCollectors result: {:s}'
.
format
(
grpc_message_to_json_string
(
response
)))
return
response
src/telemetry_frontend/client/__init__.py
0 → 100644
View file @
55deaf84
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
src/telemetry_frontend/service/__init__.py
0 → 100644
View file @
55deaf84