Re: Re: abort_bundle_classe are not working...somwhat
Xander Cage <[email protected]> Tue, 30 Jul 2024 22:52:23 -0700 (PDT)
| Newsgroups | gmane.comp.sysutils.cfengine.general |
|---|---|
| Message-ID | <[email protected]> |
forget the previous message...the errors are logged... On Wednesday, July 31, 2024 at 7:47:55 AM UTC+2 Xander Cage wrote: > ok, while trying to get the parsing errors i found out they are not going > into the logging facilty but the agent spills it out on stderr or stdout... > not sure what this means... > > On Wednesday, July 31, 2024 at 7:38:49 AM UTC+2 Xander Cage wrote: > >> 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/b09ec4f8-5b96-43c0-bf03-f6359b6a6d5en%40googlegroups.com.