Hello,
I am trying to realize users and am not getting what I expect with multiple
!= test.
Here is a simplified version that I have tested with puppet gem 4.2.2 and
4.6.2 (results were the same for all tests):
cat t.ppt.pp (common to all tests):
@notify {'This is a test 1':
tag => 'one'
}
@notify {'This is a test 2':
tag => 'two'
}
@notify {'This is a test 3':
tag => ['one', 'two']
}
@notify {'This is a test 4':
tag => 'three'
}
Notify <| test_goes_here |>
First 3 expected:
tail -1 t.pp
Notify <| tag == 'one' or tag == 'two' |>
puppet apply t.pp
Notice: Compiled catalog for defiant.cequintecid.com in environment
production in 0.70 seconds
Notice: This is a test 1
Notice: /Stage[main]/Main/Notify[This is a test 1]/message: defined
'message' as 'This is a test 1'
Notice: This is a test 2
Notice: /Stage[main]/Main/Notify[This is a test 2]/message: defined
'message' as 'This is a test 2'
Notice: This is a test 3
Notice: /Stage[main]/Main/Notify[This is a test 3]/message: defined
'message' as 'This is a test 3'
Notice: Applied catalog in 0.02 seconds
Test 3 only, as expected:
tail -1 t.pp
Notify <| tag == 'one' and tag == 'two' |>
puppet apply t.pp
Notice: Compiled catalog for defiant.cequintecid.com in environment
production in 0.47 seconds
Notice: This is a test 3
Notice: /Stage[main]/Main/Notify[This is a test 3]/message: defined
'message' as 'This is a test 3'
Notice: Applied catalog in 0.02 seconds
Now we get to the '!=' tests.
with a single tag it works as expected so I wont take space here to show
that.
With multiple tags, it does not work as expected
Since tags is a hash that contains lots of things, including all explicit
tag's set on a resource. The == and != operators are supposed to act like
contains and !contains functions (or so I thought)
Here I expect to only get test 4. 1 and 2 are filtered because one of the
and'ed tests is false.
3 should fail too because both test are false: tags contains both 'one' and
'two'.
tail -1 t.pp
Notify <| tag != 'one' and tag != 'two' |>
puppet apply t.pp
Notice: Compiled catalog for defiant.cequintecid.com in environment
production in 0.48 seconds
Notice: This is a test 3
Notice: /Stage[main]/Main/Notify[This is a test 3]/message: defined
'message' as 'This is a test 3'
Notice: This is a test 4
Notice: /Stage[main]/Main/Notify[This is a test 4]/message: defined
'message' as 'This is a test 4'
Notice: Applied catalog in 0.01 seconds
Frankly, I also expect that 3 should be filtered from the or version too
because neither of the tests should be true if this is a contains function
and not one that tests against each hash value.
tail -1 t.pp
Notify <| tag != 'one' or tag != 'two' |>
puppet apply t.pp
Notice: Compiled catalog for defiant.cequintecid.com in environment
production in 0.58 seconds
Notice: This is a test 1
Notice: /Stage[main]/Main/Notify[This is a test 1]/message: defined
'message' as 'This is a test 1'
Notice: This is a test 2
Notice: /Stage[main]/Main/Notify[This is a test 2]/message: defined
'message' as 'This is a test 2'
Notice: This is a test 3
Notice: /Stage[main]/Main/Notify[This is a test 3]/message: defined
'message' as 'This is a test 3'
Notice: This is a test 4
Notice: /Stage[main]/Main/Notify[This is a test 4]/message: defined
'message' as 'This is a test 4'
Notice: Applied catalog in 0.02 seconds
Two boolean falses dont make a true do they?
Im confused :(
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" 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/puppet-users/e31573bc-b306-482b-bf64-762a0ba9dfca%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.