
Change the client to use Pod IP instead of host alias to talk to notification services Refactor client according to Single Responsibility Principle: 1,extract broker state management logic from daemon module to broker_state_manager 2,extract broker connection management logic from daemon module to broker_connection_manager 3,extract notification handling logic from daemon module to notification_handler 4,move NotificationWorker from daemon module to notification_worker module 5,change broker endpoint from host alias to IP which removes dependency to /etc/hosts 6,add logic to re-setup the broker connection in case of notificationservice pod IP changes Partial-Bug: 1924198 Signed-off-by: Bin Yang <bin.yang@windriver.com> Change-Id: Ifc9a16912f5ccebe0426a0d4e72c0f13dcbabcd7
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
#
|
|
# Copyright (c) 2021 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
import logging
|
|
|
|
import multiprocessing as mp
|
|
|
|
from notificationclientsdk.common.helpers import rpc_helper
|
|
from notificationclientsdk.model.dto.rpc_endpoint import RpcEndpointInfo
|
|
from notificationclientsdk.client.locationservice import LocationServiceClient
|
|
from notificationclientsdk.services.notification_worker import NotificationWorker
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
from notificationclientsdk.common.helpers import log_helper
|
|
log_helper.config_logger(LOG)
|
|
|
|
'''Entry point of Default Process Worker'''
|
|
def ProcessWorkerDefault(event, subscription_event, daemon_context):
|
|
worker = NotificationWorker(event, subscription_event, daemon_context)
|
|
worker.run()
|
|
return
|
|
|
|
|
|
class DaemonControl(object):
|
|
|
|
def __init__(self, daemon_context, process_worker = None):
|
|
self.daemon_context = daemon_context
|
|
self.residing_node_name = daemon_context['THIS_NODE_NAME']
|
|
self.event = mp.Event()
|
|
self.subscription_event = mp.Event()
|
|
self.registration_endpoint = RpcEndpointInfo(daemon_context['REGISTRATION_TRANSPORT_ENDPOINT'])
|
|
self.registration_transport = rpc_helper.get_transport(self.registration_endpoint)
|
|
self.locationservice_client = LocationServiceClient(self.registration_endpoint.TransportEndpoint)
|
|
|
|
if not process_worker:
|
|
process_worker = ProcessWorkerDefault
|
|
|
|
self.mpinstance = mp.Process( target=process_worker, args=(
|
|
self.event, self.subscription_event, daemon_context))
|
|
self.mpinstance.start()
|
|
# initial update
|
|
self.refresh()
|
|
pass
|
|
|
|
def refresh(self):
|
|
self.subscription_event.set()
|
|
self.event.set()
|