Problem removing (ensure => 'absent') federation upstream
kriptor opened this issue · 1 comments
Affected Puppet, Ruby, OS and module versions/distributions
- Puppet: puppet-agent 5.5.19-1stretch
- Ruby: ruby 1:2.3.3
- Distribution: debian stretch
- Module version: Version 10.0.0 of https://forge.puppet.com/puppet/rabbitmq
How to reproduce (e.g Puppet code you use)
- create federation upstream (ensure: present) ... upstream gets created:
rabbitmq_parameter { 'nonprod_settlement_develop@/develop':
component_name => 'federation-upstream',
ensure => 'present',
value => {
'uri' => 'amqps://fed_user:fed_pass@upstream_server:5672/%2fdevelop',
'ack-mode' => 'on-confirm',
'max-hops' => '10',
'trust-user-id' => false,
},
}
- remove federation upstream (ensure: absent) ... you receive error removing inexistent shovel:
rabbitmq_parameter { 'nonprod_settlement_develop@/develop':
component_name => 'federation-upstream',
ensure => 'absent',
value => {
'uri' => 'amqps://fed_user:fed_pass@upstream_server:5672/%2fdevelop',
'ack-mode' => 'on-confirm',
'max-hops' => '10',
'trust-user-id' => false,
},
}
What are you seeing
It looks like the removal operation tries to remove shovel instead of federation upstream.
What behaviour did you expect instead
I expected federation upstream named 'nonprod_settlement_develop' inside vhost '/develop' to be removed from RabbitMQ cluster... and not observing an attempt to remove shovel with the same name inside the same vhost.
Output log
Error: Execution of '/usr/sbin/rabbitmqctl clear_parameter -p /develop shovel nonprod_settlement_develop' returned 69: Clearing runtime parameter "nonprod_settlement_develop" for component "shovel" on vhost "/develop" ...
Error:
Parameter does not exist
Error: /Stage[main]/Messagebroker::Rabbitmq/Rabbitmq_parameter[nonprod_settlement_develop@/develop]/ensure: change from 'present' to 'absent' failed: Execution of '/usr/sbin/rabbitmqctl clear_parameter -p /develop shovel nonprod_settlement_develop' returned 69: Clearing runtime parameter "nonprod_settlement_develop" for component "shovel" on vhost "/develop" ...
Error:
Parameter does not exist
Any additional information you'd like to impart
I have not one shovel defined anywhere. We use RabbitMQ 3.8.3 with Erlang 22.0.7.
The bug lies here
I suppose 'shovel' should be resource[:component_name]. Then there needs to be a test case here: https://github.com/voxpupuli/puppet-rabbitmq/blob/0bb4e33d8e35184c77a52ae910ea15955640e2cf/spec/unit/puppet/provider/rabbitmq_parameter/rabbitmqctl_spec.rb. I am not really fluent with Ruby but I can try to create some pull request.