From 8fd97caaf24825cd70866b688f496021deb1bf7a Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Thu, 2 Oct 2025 15:16:28 +0200 Subject: [PATCH 1/2] Added sys policy version variable Ticket: ENT-4043 Changelog: Title Signed-off-by: Victor Moene --- libenv/sysinfo.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libenv/sysinfo.c b/libenv/sysinfo.c index 4b877f8171..5019ccbcc6 100644 --- a/libenv/sysinfo.c +++ b/libenv/sysinfo.c @@ -3944,7 +3944,19 @@ static void SysPolicyReleaseId(EvalContext *ctx, Policy *policy) free(release_id); } +static void SysPolicyVersion(EvalContext *ctx) +{ + const char *version = EvalContextVariableControlCommonGet(ctx, COMMON_CONTROL_VERSION); + if (version != NULL) + { + EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "policy_version", version, CF_DATA_TYPE_STRING, + "inventory,source=agent,attribute_name=CFEngine policy version,derived-from=default:control_common.version"); + } +} + + void DetectEnvironmentFromPolicy(EvalContext *ctx, Policy *policy) { SysPolicyReleaseId(ctx, policy); + SysPolicyVersion(ctx); } From 6527962df9f59a7fcf6f325bbe554f0f0b5a7530 Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Mon, 13 Oct 2025 10:35:27 +0200 Subject: [PATCH 2/2] Added tests for sys.policy_version Signed-off-by: Victor Moene --- .../01_vars/01_basic/sys_policy_version.cf | 20 +++++++++++++++++++ .../01_basic/sys_policy_version_empty.cf | 16 +++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tests/acceptance/01_vars/01_basic/sys_policy_version.cf create mode 100644 tests/acceptance/01_vars/01_basic/sys_policy_version_empty.cf diff --git a/tests/acceptance/01_vars/01_basic/sys_policy_version.cf b/tests/acceptance/01_vars/01_basic/sys_policy_version.cf new file mode 100644 index 0000000000..4cef062ef5 --- /dev/null +++ b/tests/acceptance/01_vars/01_basic/sys_policy_version.cf @@ -0,0 +1,20 @@ +body common control +{ + bundlesequence => { "check" }; + version => "1.2.3"; +} + +bundle agent check +{ + classes: + "ok" + expression => and( + strcmp("$(sys.policy_version)", "$(default:control_common.version)"), + strcmp("$(sys.policy_version)", "1.2.3") + ); + reports: + ok:: + "$(this.promise_filename) Pass"; + !ok:: + "$(this.promise_filename) FAIL"; +} diff --git a/tests/acceptance/01_vars/01_basic/sys_policy_version_empty.cf b/tests/acceptance/01_vars/01_basic/sys_policy_version_empty.cf new file mode 100644 index 0000000000..183813da65 --- /dev/null +++ b/tests/acceptance/01_vars/01_basic/sys_policy_version_empty.cf @@ -0,0 +1,16 @@ +body common control +{ + bundlesequence => { "check" }; +} + +bundle agent check +{ + classes: + "ok" + expression => not(isvariable("sys.policy_version")); + reports: + ok:: + "$(this.promise_filename) Pass"; + !ok:: + "$(this.promise_filename) FAIL"; +}