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

Puppet提供程序更改(rabbitmq模块),rabbitmq,puppet,Rabbitmq,Puppet,我正在对以下内容进行一些更改: 我没有与rspec或puppet类型/提供者进行过太多的合作,因此进展缓慢。通过他们的票务系统或Github并没有太多输入,所以只想获得一些关于设计更改的建议 基本上,该模块目前不支持具有相同源/目标/vhost组合的多个绑定,但支持不同的路由键 我有一个(大部分)向后兼容的工作修复程序,涉及将路由_键作为字符串或数组() 但是,这并不能很好地工作,因为现有的提供者期望资源是唯一的,并且似乎假定资源的标题和主题之间存在可预测的映射 我曾考虑过使title和name

我正在对以下内容进行一些更改: 我没有与rspec或puppet类型/提供者进行过太多的合作,因此进展缓慢。通过他们的票务系统或Github并没有太多输入,所以只想获得一些关于设计更改的建议

基本上,该模块目前不支持具有相同源/目标/vhost组合的多个绑定,但支持不同的路由键

我有一个(大部分)向后兼容的工作修复程序,涉及将路由_键作为字符串或数组()

但是,这并不能很好地工作,因为现有的提供者期望资源是唯一的,并且似乎假定资源的标题和主题之间存在可预测的映射

我曾考虑过使title和name属性彼此不同,甚至从必须唯一的属性中完全抽象出name/title:

  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输出(在一个示例中,同一个source/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属性中对路由键进行编码,但是否可以将路由键也绑定到资源(可能是通过更新exists?方法以及self.instances)?在单元测试中对此进行检查的最佳方法是什么(我已经有了验收测试),如何修改lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb以支持此功能

或者我只需要在名称中对路由密钥进行编码,这看起来非常难看,而且会使向后兼容性更加困难

rabbitmq_绑定{'exchange1@queue1@host3@routingkey“:


rabbitmq_绑定{'exchange1@queue1@/#routingkey':

那么这是一个新类型或对该类型的修改,并且它与默认提供程序冲突?我正在尝试适应具有相同名称/主机/vhost(但不同的路由密钥)的多个绑定。即使您将“$title”设置为某个唯一的值(与$name相比),该模块似乎也无法做到这一点。我不确定它是否冲突到如此程度,因为我不确定a)允许用户使用相同的名称指定多个绑定的最干净、中断最少的方式是什么(user@queue@vhost)组合,以及b)如何影响对现有类型/提供程序(lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb/lib/puppet/type/rabbitmq_binding.rb)的更改好的,让我再试一次。我对RabbitMQ一无所知,但我知道如何为Puppet类型和提供程序编写代码。就纯Puppet代码扩展而言,您在这里想做什么?同时,我可以盯着您的代码猜一猜。如果我的解释难以理解,那么很抱歉模块定义了一个当前正在运行的资源关键在于x@y@z、 假设只有一个x@y@z“绑定”资源。我想添加对>1的支持x@y@z、 通常,您只需将$title设置为唯一,并将$name设置为与>1个资源相同即可…但是,收集系统上的资源以与上的键进行比较的代码x@y@z、 因此,支持这一点还需要改变模块思考或命名资源的方式这在更一般的意义上有帮助吗?所以现在对于这个资源,我假设
$title
被别名为
$name
,所以您担心是否可以将模块重构到允许唯一的
$title
。是的,这将取决于模块维护者,听起来他们好像没有返回给您,这样它可能会被放弃。那么这是一个新类型或对该类型的修改,并且它与默认提供程序冲突?我正在尝试容纳具有相同名称/host/vhost(但不同的路由键)的多个绑定。即使您将“$title”设置为唯一的,该模块似乎也无法实现这一点(vs.$name)。我不确定它是否冲突到如此程度,以至于我不确定a)允许用户使用相同的名称指定多个绑定是最干净、破坏性最小的方法(user@queue@vhost)组合,以及b)如何影响现有类型/提供程序中的更改(lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb/lib/puppet/type/rabbitmq_binding.rb)好的,让我再试一次。我对RabbitMQ一无所知,但我知道如何为Puppet类型和提供程序编写代码。就纯Puppet代码扩展而言,您在这里想做什么?同时,我可以盯着您的代码猜一猜。如果我的解释难以理解,那么很抱歉模块定义了一个当前正在运行的资源关键在于x@y@z、 假设只有一个x@y@z“绑定”资源。我想添加对>1的支持x@y@z、 通常,您只需将$title设置为唯一,并将$name设置为与>1个资源相同即可…但是,收集系统上的资源以与上的键进行比较的代码x@y@z、 因此,支持这一点还需要改变模块思考或命名资源的方式这在更一般的意义上有帮助吗?所以现在对于这个资源,我假设
$title
被别名为
$name
,所以您担心是否可以将模块重构到允许唯一的
$title
。是的,这将取决于模块维护者,听起来他们好像没有我会回复你的,这样它可能会被放弃。