diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index c8c1867..c4d2b79 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -1,4 +1,5 @@ import kubernetes +from django.core.cache import cache from django.core.exceptions import ValidationError from django.db import models from django.utils.functional import cached_property @@ -334,10 +335,17 @@ class ServiceOfferingControlPlane(models.Model): @cached_property def resource_schema(self): + cache_key = f"servala:crd:schema:{self.pk}" + if result := cache.get(cache_key): + return result + version = self.service_definition.api_definition["version"] for v in self.resource_definition.spec.versions: if v.name == version: - return v.schema.open_apiv3_schema.to_dict() + result = v.schema.open_apiv3_schema.to_dict() + timeout_seconds = 60 * 60 * 24 + cache.set(cache_key, result, timeout=timeout_seconds) + return result @cached_property def django_model(self):