Source code for lambdas.application_dependencies
import logging
import os
from pymorri.util.serverless_utils import resolve_env
[docs]class ApplicationDependencies:
product_queue_name = None
product_availability_queue_name = None
picks_table = None
ttl = None
[docs] def __init__(self, config):
"""
This class will load all the dependencies needed for the application to run.
This can cause exceptions if the configuration is not set up properly.
Args:
config (Dictionary): Contains key value pairs for configuration of the google tables
"""
self.__load_dependencies(config)
def __load_dependencies(self, config):
"""
Private Method to load all the dependencies of the application, sort of a dependency injection simulation
Raises:
Exception
"""
try:
logging.basicConfig(level=logging.INFO)
logging.info("Application starting, loading configurations.....")
self.product_queue_name = resolve_env(config["PRODUCT_SQS_NAME"])
self.product_availability_queue_name = resolve_env(config["AVAILABILITY_SQS_NAME"])
self.product_capping_queue_name = resolve_env(config["CAPPING_SQS_NAME"])
self.priority_two_queue_name = resolve_env(config["PRIORITY_TWO_SQS_NAME"])
self.priority_one_queue_name = resolve_env(config["PRIORITY_ONE_SQS_NAME"])
self.product_dynamodb_table = resolve_env(config["PRODUCT_DYNAMODB_TABLE"])
self.product_cap_dynamodb_table = resolve_env(config["PRODUCT_CAP_DYNAMODB_TABLE"])
self.product_masking_dynamodb_table = resolve_env(config["PRODUCT_MASKING_DYNAMODB_TABLE"])
self.bulk_upload_dynamodb_table = resolve_env(config["BULK_UPLOAD_DYNAMODB_TABLE"])
self.audit_dynamodb_table = resolve_env(config["AUDIT_DYNAMODB_TABLE"])
self.user_role_dynamodb_table = resolve_env(config["USER_ROLES_DYNAMODB_TABLE"])
self.orders_dynamodb_table = resolve_env(config["ORDERS_DYNAMODB_TABLE"])
self.s3_bucket_name = resolve_env(config["S3_BUCKET_NAME"])
self.s3_product_import_path = resolve_env(config["S3_PRODUCT_IMPORT_PATH"])
self.s3_product_capping_path = resolve_env(config["S3_PRODUCT_CAPPING_PATH"])
self.ttl = config["DYNAMO_TTL"]
self.file_types = config["FILE_TYPES"]
self.sqs_msg_limit = config["SQS_MSG_LIMIT"]
self.database = config["DATABASE"]
self.kafka_broker = config["KAFKA_BROKER"]
local_credential = os.environ.get("local_cred")
if local_credential:
self.kafka_broker = os.environ.get("kafka_broker")
self.kafka_topic_masking = resolve_env(config['KAFKA_TOPIC_MASKING'])
self.kafka_topic_capping = resolve_env(config['KAFKA_TOPIC_CAPPING'])
except Exception as ex:
logging.error(f"Exception while loading configs {ex}")
raise ex
[docs] def get_bootstrap_server(self):
return self.kafka_broker
[docs] def get_kafka_masking_topic(self):
return self.kafka_topic_masking
[docs] def get_kafka_capping_topic(self):
return self.kafka_topic_capping
[docs] def get_product_dynamodb_table(self):
return self.product_dynamodb_table
[docs] def get_masking_dynamodb_table(self):
return self.product_masking_dynamodb_table
[docs] def get_audit_dynamodb_table(self):
return self.audit_dynamodb_table
[docs] def get_bulk_dynamodb_table(self):
return self.bulk_upload_dynamodb_table
[docs] def get_product_queue_name(self):
return self.product_queue_name
[docs] def get_sqs_msg_limit(self):
return self.sqs_msg_limit
[docs] def get_product_availability_queue_name(self):
return self.product_availability_queue_name
[docs] def get_priority_two_queue_name(self):
return self.priority_two_queue_name
[docs] def get_product_capping_queue_name(self):
return self.product_capping_queue_name
[docs] def get_priority_one_queue_name(self):
return self.priority_one_queue_name