Re: Re: abort_bundle_classe are not working...somwhat
Xander Cage <[email protected]> Tue, 30 Jul 2024 22:38:49 -0700 (PDT)
| Newsgroups | gmane.comp.sysutils.cfengine.general |
|---|---|
| Message-ID | <[email protected]> |
i will attach a verbose output with parsing errors to https://northerntech.atlassian.net/browse/CFE-3411 On Wednesday, July 31, 2024 at 7:33:03 AM UTC+2 Xander Cage wrote: > i fired up your test policy, and no parsing errors are emited. hmm... > the only difference i can imagine is that i am using autorun in > production...maybe the errors are connectd to the autorun facility? > had other problems with autrorun in the past (policy syntax check not > working as expected for example) > > On Tuesday, July 30, 2024 at 5:31:06 PM UTC+2 [email protected] > wrote: > >> Hey there, >> >> I tried to make a self-contained example to try this out and am not >> having any troubles with parsing either with 3.21.5 or latest master >> (3.25.0a). >> >> Maybe you could send a complete verbose log of the smallest reproducer >> you can manage to the ticket? >> https://northerntech.atlassian.net/browse/CFE-3411 >> >> --- >> >> Here is my def.json, notice I removed some trailing commas you had. >> Probably not an issue but might be worth fixing. I used `jq` to validate it. >> >> { >> >> "variables": { >> >> "default:def.control_agent_abortclasses": { >> >> "value": [ >> >> "abort_.*" >> >> ] >> >> }, >> >> "default:def.control_agent_abortbundleclasses": { >> >> "value": [ >> >> "bundle_abort_.*" >> >> ] >> >> } >> >> } >> >> } >> >> >> the self contained policy: >> >> bundle common def >> >> { >> >> vars: >> >> "control_agent_abortclasses" >> >> slist => {}, >> >> if => not( isvariable( "default:def.control_agent_abortclasses" )); >> >> "control_agent_abortbundleclasses" >> >> slist => { "abortbundle" }, >> >> if => not( isvariable( >> "default:def.control_agent_abortbundleclasses" )); >> >> classes: >> >> "full_name_exists" expression => >> isvariable("default:def.control_agent_abortclasses"); >> >> "short_name_exists" expression => >> isvariable("control_agent_abortclasses"); >> >> } >> >> >> body agent control >> >> { >> >> abortclasses => { @(def.control_agent_abortclasses) }; >> >> >> abortbundleclasses => { @(def.control_agent_abortbundleclasses) }; >> >> } >> >> >> bundle agent main >> >> { >> >> reports: "hi"; >> >> "default:def.control_agent_abortclasses is >> $(default:def.control_agent_abortclasses)"; >> >> "default:def.control_agent_abortbundleclasses is >> $(default:def.control_agent_abortbundleclasses)"; >> >> default:full_name_exists:: >> >> "default:def.control_agent_abortclasses is a variable in the >> context of default:def bundle"; >> >> default:short_name_exists:: >> >> "control_agent_abortclasses is a variable in the context of >> default:def bundle"; >> >> } >> >> and the output: >> >> cf-agent -KIf ./t.cf >> >> R: hi >> >> R: default:def.control_agent_abortclasses is abort_.* >> >> R: default:def.control_agent_abortbundleclasses is bundle_abort_.* >> >> R: default:def.control_agent_abortclasses is a variable in the context of >> default:def bundle >> >> R: control_agent_abortclasses is a variable in the context of default:def >> bundle >> >> >> And I don't see any parse errors in verbose output: >> >> >> verbose: Setting abort classes from ... >> >> verbose: Setting abort bundle classes from ... >> >> verbose: >> ---------------------------------------------------------------- >> >> verbose: Begin policy/promise evaluation >> >> verbose: ---------------------------------------------------------------- >> On Tuesday, July 30, 2024 at 7:38:55 AM UTC-5 Xander Cage wrote: >> >>> i tested with 3.21.5... >>> >>> abort and abortbundleclasses defined in augments... >>> >>> "variables": { >>> >>> "default:def.control_agent_abortclasses": { >>> "value": [ >>> "abort_.*" >>> ], >>> } >>> >>> "default:def.control_agent_abortbundleclasses": { >>> "value": [ >>> "bundle_abort_.*" >>> ], >>> } >>> } >>> >>> still parsing errros... >>> >>> root@aixtest01: /var/cfengine/inputs # /var/cfengine/bin/cf-agent -KIv >>> | grep abort >>> verbose: Installing augments slist variable >>> 'default:def.control_agent_abortclasses' from file >>> '/var/cfengine/inputs/def.json' >>> verbose: Installing augments slist variable >>> 'default:def.control_agent_abortbundleclasses' from file >>> '/var/cfengine/inputs/def.json' >>> verbose: Skipping promise 'control_agent_abortclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortbundleclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortbundleclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortbundleclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortbundleclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> verbose: Skipping promise 'control_agent_abortbundleclasses' because >>> constraint 'if => not(isvariable("$(this.promiser)"))' is not met >>> >>> verbose: Setting abort classes from ... >>> verbose: Setting abort bundle classes from ... >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> error: Unable to parse class expression 'bundle_abort_.*' >>> >>> >>> as mentioned numerious time..this only occurs when the abortclasses are >>> defined in augments... >>> >>> when defining it in policy no error are emitted... >>> >>> body agent control >>> { >>> # List of regular expressions to match classes. When the class is >>> found to >>> # be defined, the agent will abort execution of the bundle. >>> # >>> https://docs.cfengine.com/docs/master/reference-components-cf-agent.html#abortbundleclasses >>> >>> # BUG: aborbundleclasses errors with regular expressions, wrongly. >>> # "abort_bundle_sys_host_not_match_sys_uqhost" >>> abortbundleclasses => { "abort_bundle.*" }; >>> } >>> bundle agent __main__ >>> { >>> >>> methods: >>> "bundle1"; >>> "bundle2"; >>> >>> reports: >>> "CFEngine: $(sys.cf_version)"; >>> } >>> bundle agent bundle1 >>> { >>> >>> classes: >>> "abort_bundle_sys_fqhost_matches_sys_uqhost" >>> expression => strcmp( $(sys.fqhost), $(sys.uqhost) ); >>> >>> methods: # More bundles, they wont be called because it aborts ... >>> reports: "$(this.bundle) here!"; >>> } >>> bundle agent bundle1_1 >>> { >>> >>> reports: "$(this.bundle) here!"; >>> } >>> bundle agent bundle2 >>> { >>> >>> classes: >>> >>> reports: "$(this.bundle) here!"; >>> } >>> >>> : >>> >>> On Friday, September 11, 2020 at 3:38:52 PM UTC+2 >>> [email protected] wrote: >>> >>>> Yes, I encountered the same error yesterday. If you use specific >>>> classes and not regular expressions it should work without emitting the >>>> errors about being unable to parse the class expression. >>>> >>>> I filed an issue for it yesterday: >>>> https://tracker.mender.io/browse/CFE-3411 >>>> >>>> On Friday, September 11, 2020 at 6:56:37 AM UTC-5 Xander Cage wrote: >>>> >>>>> i noticed one more little thing..since upgrade to the new mpf version >>>>> this error is printed. it >>>>> >>>>> verbose: C: BEGIN classes / conditions (pass 1) >>>>> >>>>> error: Unable to parse class expression 'ITSV_BUNDLE_ABORT.*' >>>>> verbose: C: + Private class: percent_of_runs >>>>> error: Unable to parse class expression 'ITSV_BUNDLE_ABORT.*' >>>>> >>>>> verbose: V: Computing value of 'tags' >>>>> verbose: A: Promise was KEPT >>>>> verbose: P: END meta promise (tags) >>>>> >>>>> >>>>> first i thouhgt this is caused by the downlevel binary, but 3.12.5 >>>>> makes no difference. seems that the wildcard class expression in def.json >>>>> is not playing very well. ('ITSV_BUNDLE_ABORT.*') >>>>> >>>>> On Friday, September 11, 2020 at 1:13:07 PM UTC+2, Xander Cage wrote: >>>>>> >>>>>> hi nick, >>>>>> >>>>>> you are absolutley right, after upgrading mpf to 3.12.5 everything >>>>>> works fine... >>>>>> >>>>>> verbose: >>>>>> ---------------------------------------------------------------- >>>>>> verbose: Begin policy/promise evaluation >>>>>> verbose: >>>>>> ---------------------------------------------------------------- >>>>>> info: Using command line specified bundlesequence >>>>>> verbose: Using bundlesequence => {"b0040abort_test"} >>>>>> verbose: B: >>>>>> ***************************************************************** >>>>>> verbose: B: BEGIN bundle b0040abort_test >>>>>> verbose: B: >>>>>> ***************************************************************** >>>>>> verbose: V: Computing value of 'tags' >>>>>> verbose: A: Promise was KEPT >>>>>> verbose: P: END meta promise (tags) >>>>>> verbose: V: >>>>>> ......................................................... >>>>>> verbose: V: BEGIN variables (pass 1) >>>>>> verbose: V: Computing value of 'userlist' >>>>>> verbose: C: >>>>>> ......................................................... >>>>>> verbose: C: BEGIN classes / conditions (pass 1) >>>>>> verbose: C: + Private class: ITSV_BUNDLE_ABORT_INVALID_USER >>>>>> error: Bundle 'b0040abort_test' aborted on defined class >>>>>> 'ITSV_BUNDLE_ABORT_INVALID_USER' >>>>>> verbose: A: ................................................... >>>>>> verbose: A: Bundle Accounting Summary for 'b0040abort_test' in >>>>>> namespace default >>>>>> verbose: A: Promises kept in 'b0040abort_test' = 2 >>>>>> verbose: A: Promises not kept in 'b0040abort_test' = 0 >>>>>> verbose: A: Promises repaired in 'b0040abort_test' = 0 >>>>>> verbose: A: Aggregate compliance (promises kept/repaired) for >>>>>> bundle 'b0040abort_test' = 100.0% >>>>>> verbose: A: ................................................... >>>>>> verbose: B: >>>>>> ***************************************************************** >>>>>> verbose: B: END bundle b0040abort_test >>>>>> verbose: B: >>>>>> ***************************************************************** >>>>>> verbose: No lock purging scheduled >>>>>> verbose: Logging total compliance, total 'Outcome of version >>>>>> CFEngine Promises.cf 3.12.5 (agent-0): Promises observed to be kept >>>>>> 100.00%, Promises repaired 0.00%, Promises not repaired 0.00%' >>>>>> >>>>>> >>>>>> thank you... >>>>>> >>>>>> chris >>>>>> >>>>>> >>>>>> On Thursday, September 10, 2020 at 6:52:14 PM UTC+2, Nick Anderson >>>>>> wrote: >>>>>>> >>>>>>> Xander Cage writes: >>>>>>> >>>>>>> i tested with an example policy, to reduce clutter… still no bundle >>>>>>>> abort… >>>>>>>> >>>>>>> Hi Christian, >>>>>>> >>>>>>> From your original post, I can see that you are running 3.12.2. >>>>>>> >>>>>>> verbose: Logging total compliance, total 'Outcome of version CFEngine Promises.cf 3.12.2 (agent-0): Promises observed to be kept 100.00%, Promises repaired 0.00%, Promises not repaired 0.00%' >>>>>>> >>>>>>> Are you running the MPF from 3.12.2 as well? >>>>>>> >>>>>>> I see that augments support for abortbundleclasses and abortclasses >>>>>>> were added in 3.12.3. >>>>>>> https://github.com/cfengine/masterfiles/commit/e2c4c1c57e51edcb46e80aa906048daea0b75192 >>>>>>> >>>>>>> What if you pull in controls/cf_agent.cf and controls/def.cf from >>>>>>> 3.12.3? >>>>>>> >>>>>>> >>>>>>> https://github.com/cfengine/masterfiles/blob/3.12.3/controls/cf_agent.cf >>>>>>> https://github.com/cfengine/masterfiles/blob/3.12.3/controls/def.cf >>>>>>> >>>>>>> Does it work then? >>>>>>> >>>>>>> – Nick Anderson | Doer of Things | (+1) 785-550-1767 >>>>>>> <(785)%20550-1767> | https://northern.tech >>>>>>> >>>>>> -- You received this message because you are subscribed to the Google Groups "help-cfengine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/help-cfengine/05f6b008-d79e-44ce-893e-75c26aa3b646n%40googlegroups.com.