Puppet提供程序更改(rabbitmq模块)

时间:2016-08-04 19:46:59

标签: rabbitmq puppet

我正在进行一些更改: https://github.com/puppetlabs/puppetlabs-rabbitmq/ 我对rspec或木偶类型/提供者没有太多帮助,所以它进展缓慢。 Haven通过他们的票务系统或Github有很多输入,所以只是想在设计变更方面得到一些建议。

基本上,该模块目前不支持使用相同的源/目标/ vhost组合进行多个绑定,但支持不同的路由密钥。

我有一个(大部分)工作修复,它向后兼容,包括使routing_key作为字符串或数组工作(https://tickets.puppetlabs.com/browse/MODULES-3679

然而,这并没有太好用,因为现有的提供者期望资源是唯一的,并且似乎假设资源的标题与

之间存在可预测的映射。

我曾想过让标题和名称属性彼此不同,甚至从必须唯一的属性中完全抽象名称/标题:

  rabbitmq_binding { 'exchange1@queue1@host3-1':
    name             => 'exchange1@queue1@host3',
    destination_type => 'queue',
    routing_key      => 'routingkey1',
    ensure           => present,
  }

  rabbitmq_binding { 'exchange1@queue1@host3-2':
    name             => 'exchange1@queue1@host3',
    destination_type => 'queue',
    routing_key      => 'routingkey2',
    ensure           => present,
  }

self.instances为每个vhost收集的实际rabbitmqctl输出(在一个示例中,相同的源/ dest / vhost组合有两个路由键(在此示例中没有vhost),如下所示:

foo.bar.exchange    exchange        axs.bar.baz.queue       queue   axs.bar.baz.key       []
foo.bar.exchange    exchange        axs.bar.baz.queue       queue   axs.bar.baz.published.key       []

我宁愿不尝试在资源的title / name属性中编码路由密钥,但是有可能将routing_key也绑定到资源(可能是通过更新exists?方法以及self .instances)?在单元测试中检查的最好的东西是什么(我已经有验收测试),如何修改lib / puppet / provider / rabbitmq_binding / rabbitmqadmin.rb来支持这个?

或者我只需要在名称中对路由键进行编码,这看起来真的很难看,并且还会使向后兼容性变得更加困难?

rabbitmq_binding {' exchange1 @ queue1 @ host3 @ routingkey':

rabbitmq_binding {' exchange1 @ queue1 @ /#routingkey':

0 个答案:

没有答案