diff --git a/src/kpi_manager/service/__main__.py b/src/kpi_manager/service/__main__.py index 50b5048679e6b45a57187f2e4fbfca154a63280a..132a152194adb7780f35550483e14a2414df1cf8 100644 --- a/src/kpi_manager/service/__main__.py +++ b/src/kpi_manager/service/__main__.py @@ -29,35 +29,6 @@ def signal_handler(signal, frame): # pylint: disable=redefined-outer-name LOGGER.warning('Terminate signal received') terminate.set() -# def start_kpi_manager(name_mapping : NameMapping): -# LOGGER.info('Start Kpi Manager...',) - -# events_collector = EventsDeviceCollector(name_mapping) -# events_collector.start() - -# # TODO: redesign this method to be more clear and clean - -# # Iterate while terminate is not set -# while not terminate.is_set(): -# list_new_kpi_ids = events_collector.listen_events() - -# # Monitor Kpis -# if bool(list_new_kpi_ids): -# for kpi_id in list_new_kpi_ids: -# # Create Monitor Kpi Requests -# monitor_kpi_request = monitoring_pb2.MonitorKpiRequest() -# monitor_kpi_request.kpi_id.CopyFrom(kpi_id) -# monitor_kpi_request.monitoring_window_s = 86400 -# monitor_kpi_request.sampling_rate_s = 10 -# events_collector._monitoring_client.MonitorKpi(monitor_kpi_request) - -# time.sleep(0.5) # let other tasks run; do not overload CPU -# else: -# # Terminate is set, looping terminates -# LOGGER.warning("Stopping execution...") - -# events_collector.start() - def main(): global LOGGER # pylint: disable=global-statement @@ -77,21 +48,11 @@ def main(): LOGGER.debug('Starting...') - # Start metrics server - metrics_port = get_metrics_port() - start_http_server(metrics_port) - name_mapping = NameMapping() - # Starting monitoring service - # grpc_service = MonitoringService(name_mapping) - # grpc_service.start() - # start_monitoring(name_mapping) grpc_service = KpiManagerService(name_mapping) grpc_service.start() - # start_kpi_manager(name_mapping) - # Wait for Ctrl+C or termination signal while not terminate.wait(timeout=1.0): pass diff --git a/src/kpi_value_api/service/__main__.py b/src/kpi_value_api/service/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..1a8707112601f317ab111ff19329d00620ad3284 --- /dev/null +++ b/src/kpi_value_api/service/__main__.py @@ -0,0 +1,55 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (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 logging, signal, sys, threading, time +from prometheus_client import start_http_server +from common.Settings import get_log_level +from .NameMapping import NameMapping # import updated +from .KpiValueApiService import KpiValueApiService + +terminate = threading.Event() +LOGGER = None + +def signal_handler(signal, frame): # pylint: disable=redefined-outer-name + LOGGER.warning('Terminate signal received') + terminate.set() + +def main(): + global LOGGER # pylint: disable=global-statement + + log_level = get_log_level() + logging.basicConfig(level=log_level) + LOGGER = logging.getLogger(__name__) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + LOGGER.debug('Starting...') + + name_mapping = NameMapping() + + grpc_service = KpiValueApiService(name_mapping) + grpc_service.start() + + # Wait for Ctrl+C or termination signal + while not terminate.wait(timeout=1.0): pass + + LOGGER.debug('Terminating...') + grpc_service.stop() + + LOGGER.debug('Bye') + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/kpi_value_writer/service/__main__.py b/src/kpi_value_writer/service/__main__.py index 9085bc4683ba159bb64043e7b82173442f0a5bdd..3e1d8989f4492c47f1e78e57a107ccb033d3f4c0 100644 --- a/src/kpi_value_writer/service/__main__.py +++ b/src/kpi_value_writer/service/__main__.py @@ -12,16 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, signal, sys, threading, time +import logging, signal, sys, threading from prometheus_client import start_http_server -from common.Constants import ServiceNameEnum -from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, - wait_for_environment_variables) -from common.proto import monitoring_pb2 -from monitoring.service.EventTools import EventsDeviceCollector # import updated -from monitoring.service.NameMapping import NameMapping # import updated -from .KpiManagerService import KpiManagerService +from .NameMapping import NameMapping # import updated +from .KpiValueWriter import KpiValueWriter +from common.Settings import get_log_level, get_metrics_port terminate = threading.Event() LOGGER = None @@ -30,35 +25,6 @@ def signal_handler(signal, frame): # pylint: disable=redefined-outer-name LOGGER.warning('Terminate signal received') terminate.set() -def start_kpi_manager(name_mapping : NameMapping): - LOGGER.info('Start Monitoring...',) - - events_collector = EventsDeviceCollector(name_mapping) - events_collector.start() - - # TODO: redesign this method to be more clear and clean - - # Iterate while terminate is not set - while not terminate.is_set(): - list_new_kpi_ids = events_collector.listen_events() - - # Monitor Kpis - if bool(list_new_kpi_ids): - for kpi_id in list_new_kpi_ids: - # Create Monitor Kpi Requests - monitor_kpi_request = monitoring_pb2.MonitorKpiRequest() - monitor_kpi_request.kpi_id.CopyFrom(kpi_id) - monitor_kpi_request.monitoring_window_s = 86400 - monitor_kpi_request.sampling_rate_s = 10 - events_collector._monitoring_client.MonitorKpi(monitor_kpi_request) - - time.sleep(0.5) # let other tasks run; do not overload CPU - else: - # Terminate is set, looping terminates - LOGGER.warning("Stopping execution...") - - events_collector.start() - def main(): global LOGGER # pylint: disable=global-statement @@ -66,40 +32,25 @@ def main(): logging.basicConfig(level=log_level) LOGGER = logging.getLogger(__name__) - wait_for_environment_variables([ - get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), - get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_HOST ), - get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - ]) - signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) - LOGGER.info('Starting...') + LOGGER.debug('Starting...') - # Start metrics server - metrics_port = get_metrics_port() - start_http_server(metrics_port) + start_http_server(get_metrics_port) # add Prometheus client port name_mapping = NameMapping() - # Starting monitoring service - # grpc_service = MonitoringService(name_mapping) - # grpc_service.start() - # start_monitoring(name_mapping) - grpc_service = KpiManagerService(name_mapping) + grpc_service = KpiValueWriter(name_mapping) grpc_service.start() - start_kpi_manager(name_mapping) - # Wait for Ctrl+C or termination signal while not terminate.wait(timeout=1.0): pass - LOGGER.info('Terminating...') + LOGGER.debug('Terminating...') grpc_service.stop() - LOGGER.info('Bye') + LOGGER.debug('Bye') return 0 if __name__ == '__main__':