docker/services/rightsizer_application_service.py (29 lines of code) (raw):

from modular_sdk.models.application import Application from modular_sdk.services.application_service import ApplicationService from modular_sdk.services.customer_service import CustomerService from pynamodb.attributes import MapAttribute from models.application_attributes import ApplicationMeta class RightSizerApplicationService(ApplicationService): def __init__(self, customer_service: CustomerService): self._excess_attributes_cache = {} super().__init__(customer_service=customer_service) def get_application_meta(self, application: Application) -> ApplicationMeta: meta: MapAttribute = application.meta if meta: meta_dict = meta.as_dict() allowed_keys = list(ApplicationMeta._attributes.keys()) excess_attributes = {} meta_dict_filtered = {} for key, value in meta_dict.items(): if key not in allowed_keys: excess_attributes[key] = value else: meta_dict_filtered[key] = value if excess_attributes: self._excess_attributes_cache[application.application_id] = \ excess_attributes application_meta_obj = ApplicationMeta(**meta_dict_filtered) else: application_meta_obj = ApplicationMeta() return application_meta_obj