in dusty/models/config.py [0:0]
def _process_depots(self, current_context_config): # pylint: disable=R0912
context_config = current_context_config
# Check depot config section sanity
if "depots" not in context_config["settings"]:
context_config["settings"]["depots"] = dict()
depot_sections = ["secret", "object", "state"]
for depot_section in depot_sections:
if depot_section not in context_config["settings"]["depots"]:
context_config["settings"]["depots"][depot_section] = dict()
# Support legacy depot configuration
legacy_depot_names = [
item for item in list(
context_config["settings"].get("depots", dict())
) if item not in depot_sections
]
legacy_section_map = {
SecretDepotModel: "secret",
ObjectDepotModel: "object",
StateDepotModel: "state"
}
for depot_name in legacy_depot_names:
try:
depot_class = importlib.import_module(
f"dusty.tools.depots.{depot_name}.depot"
).Depot
for depot_type in legacy_section_map:
if issubclass(depot_class, depot_type):
depot_section = legacy_section_map[depot_type]
context_config["settings"]["depots"][depot_section][depot_name] = \
context_config["settings"]["depots"][depot_name]
log.info("Legacy depot %s added to section %s", depot_name, depot_section)
context_config["settings"]["depots"].pop(depot_name)
except:
log.exception("Failed to process legacy depot %s", depot_name)
# Make depot instances
for depot_section in depot_sections:
for depot_name in list(context_config["settings"]["depots"][depot_section]):
try:
depot_class = importlib.import_module(
f"dusty.tools.depots.{depot_name}.depot"
).Depot
if depot_class.get_name() in self.context.depots[depot_section]:
continue # Depot already enabled in first iteration
depot = depot_class(
self.context,
context_config["settings"]["depots"][depot_section][depot_name]
)
self.context.depots[depot_section][depot.get_name()] = depot
log.info("Enabled %s depot %s", depot_section, depot_name)
if isinstance(depot, SecretDepotModel):
self.context.set_meta("depots_resolved_secrets", 0)
context_config = self._depot_substitution(context_config)
log.info(
"Resolved %d secrets from depots",
self.context.get_meta("depots_resolved_secrets", 0)
)
except ModuleNotFoundError:
log.warning(
"Depot %s is not enabled, probably needed module is not loaded yet",
depot_name
)
except:
log.exception("Failed to enable depot %s", depot_name)
#
return context_config