From 4469b62267d9eb4eb6aac5e6d3838771b492cb1a Mon Sep 17 00:00:00 2001 From: Derek Graeber Date: Mon, 8 Apr 2024 13:10:18 -0400 Subject: [PATCH] adding conversion for metadata that is string wrapped json --- CHANGELOG.md | 1 + seedfarmer/mgmt/metadata_support.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 521bdb9b..077a7d3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Ch ### Changes ### Fixes +- metadata sourced from file to the os env cannot be parsed if not compliant json, adding code to check for this ## v3.3.0 (2024-04-01) diff --git a/seedfarmer/mgmt/metadata_support.py b/seedfarmer/mgmt/metadata_support.py index e68b2668..a5e7e127 100644 --- a/seedfarmer/mgmt/metadata_support.py +++ b/seedfarmer/mgmt/metadata_support.py @@ -82,11 +82,15 @@ def _read_metadata_file(mms: ModuleMetadataSupport) -> Dict[str, Any]: def _read_metadata_env_param(mms: ModuleMetadataSupport) -> Dict[str, Any]: p = mms.metadata_file_name() if p in os.environ: + env_data = os.getenv(p) try: - env_data = os.getenv(p) return cast(Dict[str, Any], json.loads(str(env_data))) - except Exception: - _logger.info("Cannot parse the file env metadata") + except ValueError: + # When echoing single quotes from env parameter, cannot convert to json. + # Poor man's fix + return cast(Dict[str, Any], json.loads(env_data.replace("'", '"'))) # type: ignore + except Exception as e: + _logger.info("Cannot parse the file env metadata %s due to %s", p, e) return {} else: _logger.info("Cannot find existing metadata env param at %s, moving on", p)