Expand ATVM coverage details with run options

This commit is contained in:
2026-03-27 17:32:22 -04:00
parent 9024d5cadb
commit 5432240525
5 changed files with 40 additions and 1 deletions
+11
View File
@@ -688,11 +688,20 @@ def infer_host_from_subrun_build(
def infer_metadata() -> Dict[str, object]:
try:
extra_options = json.loads(os.environ.get("ATVM_WATCHER_EXTRA_OPTIONS", "[]"))
except json.JSONDecodeError:
extra_options = []
if not isinstance(extra_options, list):
extra_options = []
extra_options = [value for value in extra_options if isinstance(value, str) and value]
return {
"template": os.environ.get("ATVM_WATCHER_TEMPLATE", "unknown"),
"config_family": os.environ.get("ATVM_WATCHER_CONFIG_FAMILY", "unknown"),
"config_file": os.environ.get("ATVM_WATCHER_CONFIG_FILE", "unknown"),
"migration_style": os.environ.get("ATVM_WATCHER_MIGRATION_STYLE", "ATVM automation validation"),
"integration_plugin": os.environ.get("ATVM_WATCHER_INTEGRATION_PLUGIN", "unknown"),
"extra_options": extra_options,
"scope_description": os.environ.get("ATVM_WATCHER_SCOPE_DESCRIPTION", "requested ATVM run scope"),
"categorized": os.environ.get("ATVM_WATCHER_CATEGORIZED", "false").lower() == "true",
}
@@ -791,8 +800,10 @@ def build_status_markdown(
"**COVERAGE:**",
f"- template: `{metadata['template']}`",
f"- datastore/config family: `{metadata['config_family']}`",
f"- config file: `{metadata.get('config_file', 'unknown')}`",
f"- migration style: {metadata['migration_style']}",
f"- integration/plugin path: `{metadata['integration_plugin']}`",
f"- run options: {', '.join(f'`{value}`' for value in metadata.get('extra_options', [])) or 'none'}",
f"- scope of this run: {metadata['scope_description']}",
"",
"**TEST FLOW:**",
@@ -10,8 +10,10 @@ Options:
--build-name <name>
--template <name>
--config-family <name>
--config-file <path>
--migration-style <text>
--integration-plugin <text>
--extra-option <text> Repeatable
--scope-description <text>
--categorize
--state-root <path> Default: /var/lib/atvm-run-watcher
@@ -21,8 +23,10 @@ EOF
BUILD_NAME=""
TEMPLATE=""
CONFIG_FAMILY=""
CONFIG_FILE=""
MIGRATION_STYLE=""
INTEGRATION_PLUGIN=""
EXTRA_OPTIONS=()
SCOPE_DESCRIPTION=""
WATCHER_CATEGORIZED="false"
STATE_ROOT="/var/lib/atvm-run-watcher"
@@ -32,8 +36,10 @@ while [[ $# -gt 0 ]]; do
--build-name) BUILD_NAME="${2:-}"; shift 2 ;;
--template) TEMPLATE="${2:-}"; shift 2 ;;
--config-family) CONFIG_FAMILY="${2:-}"; shift 2 ;;
--config-file) CONFIG_FILE="${2:-}"; shift 2 ;;
--migration-style) MIGRATION_STYLE="${2:-}"; shift 2 ;;
--integration-plugin) INTEGRATION_PLUGIN="${2:-}"; shift 2 ;;
--extra-option) EXTRA_OPTIONS+=("${2:-}"); shift 2 ;;
--scope-description) SCOPE_DESCRIPTION="${2:-}"; shift 2 ;;
--categorize) WATCHER_CATEGORIZED="true"; shift ;;
--state-root) STATE_ROOT="${2:-}"; shift 2 ;;
@@ -55,11 +61,20 @@ rm -rf "$RUN_DIR"
rm -f "$RUN_LOG"
mkdir -p "$RUN_DIR"
EXTRA_OPTIONS_JSON=$(python3 - <<'PY' "${EXTRA_OPTIONS[@]}"
import json
import sys
print(json.dumps(sys.argv[1:]))
PY
)
cat >"${RUN_DIR}/watch.env" <<EOF
ATVM_WATCHER_TEMPLATE=${TEMPLATE@Q}
ATVM_WATCHER_CONFIG_FAMILY=${CONFIG_FAMILY@Q}
ATVM_WATCHER_CONFIG_FILE=${CONFIG_FILE@Q}
ATVM_WATCHER_MIGRATION_STYLE=${MIGRATION_STYLE@Q}
ATVM_WATCHER_INTEGRATION_PLUGIN=${INTEGRATION_PLUGIN@Q}
ATVM_WATCHER_EXTRA_OPTIONS=${EXTRA_OPTIONS_JSON@Q}
ATVM_WATCHER_SCOPE_DESCRIPTION=${SCOPE_DESCRIPTION@Q}
ATVM_WATCHER_CATEGORIZED=${WATCHER_CATEGORIZED@Q}
EOF