From aa8d079ab00b6fee579bbeb5ab7c0dcef2ad4b36 Mon Sep 17 00:00:00 2001 From: David Kubek Date: Thu, 10 Oct 2024 10:38:18 +0200 Subject: [PATCH] Add configuration values to actor metadata --- leapp/utils/audit/__init__.py | 7 +++++-- leapp/workflows/__init__.py | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/leapp/utils/audit/__init__.py b/leapp/utils/audit/__init__.py index a333ca02a..2af4f1b38 100644 --- a/leapp/utils/audit/__init__.py +++ b/leapp/utils/audit/__init__.py @@ -637,7 +637,7 @@ def store_workflow_metadata(workflow): ent.store() -def store_actor_metadata(actor_definition, phase): +def store_actor_metadata(actor_definition, phase, config): """ Store the metadata of the given actor given as an ``actor_definition`` object into the database. @@ -655,8 +655,11 @@ def store_actor_metadata(actor_definition, phase): }) _metadata['phase'] = phase + # TODO(dkubek): Is configuration metadata? Does it make sense to include it here? + _metadata['config'] = config + actor_metadata_fields = ('class_name', 'name', 'description', 'phase', - 'tags', 'consumes', 'produces', 'config_schemas', 'path') + 'tags', 'consumes', 'produces', 'config_schemas', 'config', 'path') metadata = json.dumps({field: _metadata[field] for field in actor_metadata_fields}, sort_keys=True) metadata_hash_id = hashlib.sha256(metadata.encode('utf-8')).hexdigest() diff --git a/leapp/workflows/__init__.py b/leapp/workflows/__init__.py index 1b6fc9804..27fac7855 100644 --- a/leapp/workflows/__init__.py +++ b/leapp/workflows/__init__.py @@ -4,6 +4,7 @@ import sys import uuid +from leapp.actors.config import retrieve_config from leapp.dialogs import RawMessageDialog from leapp.exceptions import CommandError, MultipleConfigActorsError, WorkflowConfigNotAvailable from leapp.messaging.answerstore import AnswerStore @@ -301,7 +302,8 @@ def run(self, context=None, until_phase=None, until_actor=None, skip_phases_unti for phase in self._phase_actors: for stage in phase[1:]: for actor in stage.actors: - store_actor_metadata(actor, phase[0].name) + actor_config = retrieve_config(actor.config_schemas) + store_actor_metadata(actor, phase[0].name, actor_config) self._stop_after_phase_requested = False for phase in self._phase_actors: