111 lines
4.1 KiB
Python
111 lines
4.1 KiB
Python
import configparser
|
|
import os
|
|
|
|
"""
|
|
Convert configuration from properties file to an object.
|
|
"""
|
|
|
|
|
|
class AMQAdapter:
|
|
"""
|
|
configuration with prefix 'cm.amq-adapter'
|
|
"""
|
|
|
|
PREFIX: str = 'cm.amq-adapter.'
|
|
|
|
def __init__(self, config: configparser.ConfigParser):
|
|
"""
|
|
cm.amq-adapter.service-name=amq-adapter
|
|
cm.amq-adapter.generator-id=164
|
|
cm.amq-adapter.route-mapping=
|
|
|
|
:param config: config parser to read configuration values
|
|
"""
|
|
self.generator_id = config.getint('CleverMicro-AMQ', self.PREFIX + 'generator-id', fallback=164)
|
|
self.service_name = config.get('CleverMicro-AMQ', self.PREFIX + 'service-name',
|
|
fallback='amq-python-adapter-' + str(self.generator_id))
|
|
self.route_mapping = config.get('CleverMicro-AMQ', self.PREFIX + 'route-mapping', fallback=None)
|
|
|
|
def adapter_prefix(self) -> str:
|
|
return f"{self.service_name}-{self.generator_id}-"
|
|
|
|
|
|
class Dispatch:
|
|
"""
|
|
configuration with prefix 'cm.dispatch'
|
|
"""
|
|
|
|
PREFIX: str = 'cm.dispatch.'
|
|
|
|
def __init__(self, config: configparser.ConfigParser):
|
|
"""
|
|
cm.dispatch.use-dlq=true
|
|
cm.dispatch.use-confirms=false
|
|
cm.dispatch.amq-host=rabbitmq
|
|
cm.dispatch.amq-port=5672
|
|
cm.dispatch.amq-port-tls=5671
|
|
cm.dispatch.service-host=
|
|
cm.dispatch.service-port=8080
|
|
|
|
:param config: config parser to read configuration values
|
|
"""
|
|
self.use_dlq = config.getboolean('CleverMicro-AMQ', self.PREFIX + 'use-dlq', fallback=False)
|
|
self.use_confirms = config.getboolean('CleverMicro-AMQ', self.PREFIX + 'use-confirms', fallback=False)
|
|
self.amq_host = config.get('CleverMicro-AMQ', self.PREFIX + 'amq-host', fallback='rabbitmq')
|
|
self.amq_port = config.getint('CleverMicro-AMQ', self.PREFIX + 'amq-port', fallback=5672)
|
|
self.amq_port_tls = config.getint('CleverMicro-AMQ', self.PREFIX + 'amq-port-tls', fallback=5671)
|
|
self.service_host = config.get('CleverMicro-AMQ', self.PREFIX + 'service-host', fallback='localhost')
|
|
self.service_port = config.getint('CleverMicro-AMQ', self.PREFIX + 'service-port', fallback=8080)
|
|
self.rabbit_mq_user = os.getenv("RABBIT_MQ_USER", "springuser")
|
|
self.rabbit_mq_password = os.getenv("RABBIT_MQ_PASSWORD", "TheCleverWho")
|
|
|
|
|
|
class Backpressure:
|
|
"""
|
|
configuration with prefix 'cm.backpressure'
|
|
"""
|
|
|
|
PREFIX: str = 'cm.backpressure.'
|
|
|
|
def __init__(self, config: configparser.ConfigParser):
|
|
"""
|
|
cm.backpressure.threshold=20
|
|
cm.backpressure.time-window=3000
|
|
cm.backpressure.management-service-url=management-service:8080
|
|
|
|
:param config: config parser to read configuration values
|
|
"""
|
|
self.management_service_url = config.get('CleverMicro-AMQ', self.PREFIX + 'management-service-url', fallback='management-service:8080')
|
|
self.threshold = config.getint('CleverMicro-AMQ', self.PREFIX + 'threshold', fallback=20)
|
|
self.time_window = config.getint('CleverMicro-AMQ', self.PREFIX + 'time-window', fallback=3000)
|
|
|
|
|
|
DEFAULT_PROPERTIES_FILE = '/app/amqp/config/application.properties'
|
|
|
|
|
|
class AMQConfiguration:
|
|
"""
|
|
Top level configuration context holder / object
|
|
"""
|
|
def __init__(self):
|
|
config = configparser.ConfigParser()
|
|
# Read the application.properties file
|
|
if os.path.exists(DEFAULT_PROPERTIES_FILE):
|
|
config.read(DEFAULT_PROPERTIES_FILE)
|
|
else:
|
|
config.read('../config/application.properties.local')
|
|
|
|
# Override values with environment variables
|
|
for section in config.sections():
|
|
for option in config.options(section):
|
|
# env_var = f"{section.upper()}_{option.upper()}"
|
|
if option in os.environ:
|
|
config.set(section, option, os.environ[option])
|
|
|
|
#
|
|
# Add individual config areas
|
|
#
|
|
self.amq_adapter: AMQAdapter = AMQAdapter(config)
|
|
self.dispatch: Dispatch = Dispatch(config)
|
|
self.backpressure: Backpressure = Backpressure(config)
|