From f6651156ee2c0e8c23c20eee8826b4558e315d80 Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Tue, 20 Jan 2026 14:10:11 +0100 Subject: [PATCH 1/4] Fixed booleans for classes in augments Ticket: ENT-13303 Signed-off-by: Victor Moene --- libenv/sysinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libenv/sysinfo.c b/libenv/sysinfo.c index b72f5de1d1..d6420e55cf 100644 --- a/libenv/sysinfo.c +++ b/libenv/sysinfo.c @@ -1067,6 +1067,7 @@ static void BuiltinClasses(EvalContext *ctx) char vbuff[CF_BUFSIZE]; EvalContextClassPutHard(ctx, "any", "source=agent"); /* This is a reserved word / wildcard */ + EvalContextClassPutHard(ctx, "true", "source=agent"); snprintf(vbuff, CF_BUFSIZE, "cfengine_%s", CanonifyName(Version())); CreateHardClassesFromCanonification(ctx, vbuff, "inventory,attribute_name=none,source=agent"); From 556c19abcddbf90bdbb5bedc17665d9ec27cef6b Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Tue, 20 Jan 2026 14:40:26 +0100 Subject: [PATCH 2/4] Added tests to augments classes from booleans Signed-off-by: Victor Moene --- .../00_basics/def.json/class_from_classexpression.cf | 2 ++ .../00_basics/def.json/class_from_classexpression.cf.json | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/acceptance/00_basics/def.json/class_from_classexpression.cf b/tests/acceptance/00_basics/def.json/class_from_classexpression.cf index 80531c1716..ca1598d62a 100644 --- a/tests/acceptance/00_basics/def.json/class_from_classexpression.cf +++ b/tests/acceptance/00_basics/def.json/class_from_classexpression.cf @@ -29,6 +29,8 @@ bundle agent main "augments_class_from_classexpression_not", "augments_class_from_classexpression_or", "augments_class_from_classexpression_complex", + "augments_class_from_true", + not("augments_class_from_false") }; diff --git a/tests/acceptance/00_basics/def.json/class_from_classexpression.cf.json b/tests/acceptance/00_basics/def.json/class_from_classexpression.cf.json index cdbb1484eb..e7ae376103 100644 --- a/tests/acceptance/00_basics/def.json/class_from_classexpression.cf.json +++ b/tests/acceptance/00_basics/def.json/class_from_classexpression.cf.json @@ -6,6 +6,8 @@ "augments_class_from_classexpression_and": [ "cfengine.cfengine_3::" ], "augments_class_from_classexpression_not": [ "!MISSING::" ], "augments_class_from_classexpression_or": [ "cfengine|cfengine_3::" ], - "augments_class_from_classexpression_complex": [ "(cfengine|cfengine_3).!MISSING::" ] + "augments_class_from_classexpression_complex": [ "(cfengine|cfengine_3).!MISSING::" ], + "augments_class_from_true": [ true ], + "augments_class_from_false": [ false ] } } From 5da338068b8a5589d7f39cc609b3340c5bede7c5 Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Tue, 20 Jan 2026 14:11:47 +0100 Subject: [PATCH 3/4] Fixed incorrect logging Signed-off-by: Victor Moene --- libpromises/generic_agent.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libpromises/generic_agent.c b/libpromises/generic_agent.c index 1995536703..0e1f3e3f0e 100644 --- a/libpromises/generic_agent.c +++ b/libpromises/generic_agent.c @@ -406,7 +406,8 @@ static bool LoadAugmentsData(EvalContext *ctx, const char *filename, const JsonE if (!(StringEqual(key, "vars") || StringEqual(key, "classes") || StringEqual(key, "inputs") || - StringEqual(key, "augments"))) + StringEqual(key, "augments") || + StringEqual(key, "variables"))) { Log(LOG_LEVEL_VERBOSE, "Unknown augments key '%s' in file '%s', skipping it", key, filename); From 657aa1d47e938ca7070ebf234757e66ac13c92f6 Mon Sep 17 00:00:00 2001 From: Victor Moene Date: Tue, 20 Jan 2026 14:12:42 +0100 Subject: [PATCH 4/4] Removed redundant code Signed-off-by: Victor Moene --- libpromises/generic_agent.c | 2 -- libpromises/logic_expressions.c | 4 ---- 2 files changed, 6 deletions(-) diff --git a/libpromises/generic_agent.c b/libpromises/generic_agent.c index 0e1f3e3f0e..f92c67d6dd 100644 --- a/libpromises/generic_agent.c +++ b/libpromises/generic_agent.c @@ -1591,8 +1591,6 @@ void GenericAgentInitialize(EvalContext *ctx, GenericAgentConfig *config) OpenLog(default_facility); SetSyslogFacility(default_facility); - EvalContextClassPutHard(ctx, "any", "source=agent"); - GenericAgentAddEditionClasses(ctx); // May set "enterprise_edition" class const Class *enterprise_edition = EvalContextClassGet(ctx, "default", "enterprise_edition"); diff --git a/libpromises/logic_expressions.c b/libpromises/logic_expressions.c index c98533ff51..f63a87fd16 100644 --- a/libpromises/logic_expressions.c +++ b/libpromises/logic_expressions.c @@ -250,10 +250,6 @@ ExpressionValue EvalExpression(const Expression *expr, { return EXPRESSION_VALUE_ERROR; } - else if (strcmp("true", name) == 0) - { - ret = EXPRESSION_VALUE_TRUE; - } else if (strcmp("false", name) == 0) { ret = EXPRESSION_VALUE_FALSE;