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.