From: Julien Cristau Date: Tue, 20 Nov 2018 20:49:05 +0000 (+0100) Subject: Revert "Update 3rdparty rabbitmq module" X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fdsa-puppet.git;a=commitdiff_plain;h=24caa46729f80fbba4be8b9b26ebcb3acc4cb0fb Revert "Update 3rdparty rabbitmq module" This reverts commit 921e69100a563cf143f56a3905d8362336d939ff. --- diff --git a/3rdparty/Puppetfile b/3rdparty/Puppetfile index fa2d4b282..4d1533eea 100644 --- a/3rdparty/Puppetfile +++ b/3rdparty/Puppetfile @@ -2,10 +2,9 @@ forge "http://forge.puppetlabs.com" mod 'puppetlabs/stdlib', '4.19.0' mod 'puppetlabs/concat', '4.0.1' +mod 'puppetlabs/rabbitmq', '5.2.1' mod 'puppetlabs-postgresql', '5.1.0' -mod 'puppet/rabbitmq', '8.4.0' - mod 'nanliu/staging', '1.0.3' # OpenStack diff --git a/3rdparty/modules/rabbitmq/CHANGELOG.md b/3rdparty/modules/rabbitmq/CHANGELOG.md index 1187d95aa..9800626d7 100644 --- a/3rdparty/modules/rabbitmq/CHANGELOG.md +++ b/3rdparty/modules/rabbitmq/CHANGELOG.md @@ -1,460 +1,19 @@ -# Changelog - -All notable changes to this project will be documented in this file. -Each new release typically also includes the latest modulesync defaults. -These should not affect the functionality of the module. - -## [v8.4.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.4.0) (2018-10-04) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.3.0...v8.4.0) - -**Implemented enhancements:** - -- Make restarting services optional [\#727](https://github.com/voxpupuli/puppet-rabbitmq/issues/727) -- Add service\_restart option to prevent automatic service reload [\#728](https://github.com/voxpupuli/puppet-rabbitmq/pull/728) ([spuder](https://github.com/spuder)) - -**Fixed bugs:** - -- Fix service name in systemd service limits config [\#726](https://github.com/voxpupuli/puppet-rabbitmq/pull/726) ([JayH5](https://github.com/JayH5)) - -**Closed issues:** - -- Allow Puppet 6.X [\#733](https://github.com/voxpupuli/puppet-rabbitmq/issues/733) -- tcp\_listen\_options is causing clients not to be able to connect [\#719](https://github.com/voxpupuli/puppet-rabbitmq/issues/719) - -**Merged pull requests:** - -- Add docs for config\_ranch parameter [\#725](https://github.com/voxpupuli/puppet-rabbitmq/pull/725) ([wyardley](https://github.com/wyardley)) - -## [v8.3.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.3.0) (2018-09-05) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.2.2...v8.3.0) - -**Implemented enhancements:** - -- Add loopback\_users parameter \(adds ability to allow guest user to login remotely\) [\#699](https://github.com/voxpupuli/puppet-rabbitmq/pull/699) ([jjuarez](https://github.com/jjuarez)) - -**Fixed bugs:** - -- no parameter named 'download\_option' [\#706](https://github.com/voxpupuli/puppet-rabbitmq/issues/706) -- Some boolean properties were being ignored when `false`. [\#712](https://github.com/voxpupuli/puppet-rabbitmq/pull/712) ([orium](https://github.com/orium)) - -**Closed issues:** - -- rabbitmq\_version fact fails on Ubuntu 18.04 [\#704](https://github.com/voxpupuli/puppet-rabbitmq/issues/704) -- Allow the remote connections with the guest user [\#698](https://github.com/voxpupuli/puppet-rabbitmq/issues/698) - -**Merged pull requests:** - -- Set lower limit for puppet-archive to 2.0.0 [\#721](https://github.com/voxpupuli/puppet-rabbitmq/pull/721) ([wyardley](https://github.com/wyardley)) -- Enable acceptance tests; Add debian 9 support [\#720](https://github.com/voxpupuli/puppet-rabbitmq/pull/720) ([bastelfreak](https://github.com/bastelfreak)) -- allow puppetlabs/stdlib 5.x, puppet/archive 3.x and puppetlabs/apt 6.x [\#716](https://github.com/voxpupuli/puppet-rabbitmq/pull/716) ([bastelfreak](https://github.com/bastelfreak)) -- Rebase of \#683 / mock systemd fact properly [\#715](https://github.com/voxpupuli/puppet-rabbitmq/pull/715) ([bastelfreak](https://github.com/bastelfreak)) -- Fixing puppet apt module requirement to \< 6.0.0 [\#714](https://github.com/voxpupuli/puppet-rabbitmq/pull/714) ([meltingrobot](https://github.com/meltingrobot)) -- Updated comment symbol on inetrc.erb [\#709](https://github.com/voxpupuli/puppet-rabbitmq/pull/709) ([covidium](https://github.com/covidium)) -- Ensure version fact does not throw an error for invalid match [\#705](https://github.com/voxpupuli/puppet-rabbitmq/pull/705) ([CTrox](https://github.com/CTrox)) -- Rely on beaker-hostgenerator for docker nodesets [\#702](https://github.com/voxpupuli/puppet-rabbitmq/pull/702) ([ekohl](https://github.com/ekohl)) - -## [v8.2.2](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.2.2) (2018-04-11) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.2.1...v8.2.2) - -**Fixed bugs:** - -- rabbitmq\_user\_permissions timing out [\#689](https://github.com/voxpupuli/puppet-rabbitmq/issues/689) -- Set default LC\_ALL =\> en\_US.UTF-8 \(\#671, \#689\) [\#694](https://github.com/voxpupuli/puppet-rabbitmq/pull/694) ([wyardley](https://github.com/wyardley)) - -**Closed issues:** - -- not working with rabbitmq-server 3.7 - Cannot parse invalid user line [\#671](https://github.com/voxpupuli/puppet-rabbitmq/issues/671) - -## [v8.2.1](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.2.1) (2018-04-03) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.2.0...v8.2.1) - -**Fixed bugs:** - -- Explicitly set LC\_ALL to C \(\#689\) [\#690](https://github.com/voxpupuli/puppet-rabbitmq/pull/690) ([wyardley](https://github.com/wyardley)) - -**Merged pull requests:** - -- bump puppet to latest supported version 4.10.0 [\#692](https://github.com/voxpupuli/puppet-rabbitmq/pull/692) ([bastelfreak](https://github.com/bastelfreak)) - -## [v8.2.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.2.0) (2018-03-24) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.1.0...v8.2.0) - -**Implemented enhancements:** - -- Add archive\_options parameter for Archive download of rabbitmqadmin [\#681](https://github.com/voxpupuli/puppet-rabbitmq/pull/681) ([paebersold](https://github.com/paebersold)) - -**Fixed bugs:** - -- puppet package install error when running on SLES 12 [\#684](https://github.com/voxpupuli/puppet-rabbitmq/issues/684) -- Allow dash as valid character for regex [\#687](https://github.com/voxpupuli/puppet-rabbitmq/pull/687) ([crazymind1337](https://github.com/crazymind1337)) -- Install package via title, not name \(\#684\) [\#686](https://github.com/voxpupuli/puppet-rabbitmq/pull/686) ([wyardley](https://github.com/wyardley)) - -**Closed issues:** - -- Failure to install rabbitmq admin via curl when proxy set [\#663](https://github.com/voxpupuli/puppet-rabbitmq/issues/663) - -**Merged pull requests:** - -- Fixes for Archlinux and modulesync 1.8 [\#685](https://github.com/voxpupuli/puppet-rabbitmq/pull/685) ([bastelfreak](https://github.com/bastelfreak)) - -## [v8.1.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.1.0) (2018-01-11) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v8.0.0...v8.1.0) - -**Implemented enhancements:** - -- Add options for ssl verify and 'fail\_if\_no\_peer\_cert' for the managem… [\#657](https://github.com/voxpupuli/puppet-rabbitmq/pull/657) ([paebersold](https://github.com/paebersold)) -- add ability to have array as package name [\#656](https://github.com/voxpupuli/puppet-rabbitmq/pull/656) ([tampakrap](https://github.com/tampakrap)) - -**Fixed bugs:** - -- Support policy format change in v3.7.0 - \#671 \(Replaces \#674\) [\#676](https://github.com/voxpupuli/puppet-rabbitmq/pull/676) ([fatmcgav](https://github.com/fatmcgav)) -- Remove `archive require` in rabbitmqadmin class [\#669](https://github.com/voxpupuli/puppet-rabbitmq/pull/669) ([lzecca78](https://github.com/lzecca78)) - -**Closed issues:** - -- Rabbitmq crashing with config\_ranch = true [\#668](https://github.com/voxpupuli/puppet-rabbitmq/issues/668) -- puppet/rabbitmq 8.0.0 - /etc/apt/sources.list.d/rabbitmq.list not updated/created [\#662](https://github.com/voxpupuli/puppet-rabbitmq/issues/662) -- rabbitmqadmin install has no way of continuing to use staging in environments using an incompatible archive module [\#659](https://github.com/voxpupuli/puppet-rabbitmq/issues/659) -- RabbitMQ Admin Package should work with Puppet-Archive module, or explicitly depend on camptocamp's archive module [\#658](https://github.com/voxpupuli/puppet-rabbitmq/issues/658) - -**Merged pull requests:** - -- Do not use defaultfor to choose the only existing provider [\#672](https://github.com/voxpupuli/puppet-rabbitmq/pull/672) ([mbaldessari](https://github.com/mbaldessari)) -- regenerate puppet-strings docs [\#667](https://github.com/voxpupuli/puppet-rabbitmq/pull/667) ([bastelfreak](https://github.com/bastelfreak)) -- Remove EOL operatingsystems [\#666](https://github.com/voxpupuli/puppet-rabbitmq/pull/666) ([ekohl](https://github.com/ekohl)) -- Update README to specify voxpupuli/archive dependency vs. staging [\#660](https://github.com/voxpupuli/puppet-rabbitmq/pull/660) ([wyardley](https://github.com/wyardley)) - -## [v8.0.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v8.0.0) (2017-10-18) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v7.1.0...v8.0.0) - -**Breaking changes:** - -- BREAKING: Remove deprecated manage\_repos parameter and disallow strings for integer parameters [\#649](https://github.com/voxpupuli/puppet-rabbitmq/pull/649) ([wyardley](https://github.com/wyardley)) - -**Implemented enhancements:** - -- allow installation of rabbitmqadmin via package [\#654](https://github.com/voxpupuli/puppet-rabbitmq/pull/654) ([bastelfreak](https://github.com/bastelfreak)) - -**Fixed bugs:** - -- Error on using puppet resource rabbitmq\_binding [\#650](https://github.com/voxpupuli/puppet-rabbitmq/issues/650) -- use correct datatype for $package\_gpg\_key [\#653](https://github.com/voxpupuli/puppet-rabbitmq/pull/653) ([bastelfreak](https://github.com/bastelfreak)) -- Fix 'puppet resource rabbitmq\_binding' and add tests \(\#650\) [\#651](https://github.com/voxpupuli/puppet-rabbitmq/pull/651) ([wyardley](https://github.com/wyardley)) - -**Closed issues:** - -- admin\_enable throws Server Error: no parameter named 'allow\_insecure' [\#646](https://github.com/voxpupuli/puppet-rabbitmq/issues/646) -- Add variable to rabbitmq.config [\#644](https://github.com/voxpupuli/puppet-rabbitmq/issues/644) - -**Merged pull requests:** - -- use correct datatype for port param in README.md [\#652](https://github.com/voxpupuli/puppet-rabbitmq/pull/652) ([bastelfreak](https://github.com/bastelfreak)) -- Make ldap\_user\_dn\_pattern optional [\#645](https://github.com/voxpupuli/puppet-rabbitmq/pull/645) ([sfhardman](https://github.com/sfhardman)) -- Add tags to metadata [\#643](https://github.com/voxpupuli/puppet-rabbitmq/pull/643) ([wyardley](https://github.com/wyardley)) - -## [v7.1.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v7.1.0) (2017-10-03) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v7.0.0...v7.1.0) - -**Implemented enhancements:** - -- Rework apt to use packagecloud repos as well \(\#640\) [\#641](https://github.com/voxpupuli/puppet-rabbitmq/pull/641) ([wyardley](https://github.com/wyardley)) -- Refactor rabbitmq\_user provider \(mpolenchuk\) [\#598](https://github.com/voxpupuli/puppet-rabbitmq/pull/598) ([wyardley](https://github.com/wyardley)) - -**Closed issues:** - -- Please switch to Package Cloud apt repository; rabbitmq.com's one becomes read-only in a few months [\#640](https://github.com/voxpupuli/puppet-rabbitmq/issues/640) - -**Merged pull requests:** - -- Switch back to "include foo" \(without leading colons\) syntax [\#639](https://github.com/voxpupuli/puppet-rabbitmq/pull/639) ([wyardley](https://github.com/wyardley)) -- Lower required Puppet version from 4.8.0 to 4.7.1 [\#637](https://github.com/voxpupuli/puppet-rabbitmq/pull/637) ([wyardley](https://github.com/wyardley)) - -## [v7.0.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v7.0.0) (2017-09-14) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v5.6.1...v7.0.0) - -**Breaking changes:** - -- BREAKING: Ensure python package \(adds manage\_python option\) [\#623](https://github.com/voxpupuli/puppet-rabbitmq/pull/623) ([wyardley](https://github.com/wyardley)) -- BREAKING: Adds config\_ranch parameter \(default: true\) to suppress config lines \(\#618\) [\#621](https://github.com/voxpupuli/puppet-rabbitmq/pull/621) ([wyardley](https://github.com/wyardley)) - -**Implemented enhancements:** - -- Add additional SSL configuration options \(original PR from xepa\) [\#632](https://github.com/voxpupuli/puppet-rabbitmq/pull/632) ([wyardley](https://github.com/wyardley)) -- Add support for max-length-bytes as an integer \(\#557\), patch by zhianliu [\#628](https://github.com/voxpupuli/puppet-rabbitmq/pull/628) ([wyardley](https://github.com/wyardley)) -- Add official support for Ubuntu 16.04 [\#624](https://github.com/voxpupuli/puppet-rabbitmq/pull/624) ([wyardley](https://github.com/wyardley)) -- Move examples and params to puppet strings style docs [\#562](https://github.com/voxpupuli/puppet-rabbitmq/pull/562) ([wyardley](https://github.com/wyardley)) - -**Fixed bugs:** - -- Resolve issue with "puppet resource rabbitmq\_user" failing \(\#147\) [\#629](https://github.com/voxpupuli/puppet-rabbitmq/pull/629) ([wyardley](https://github.com/wyardley)) -- Switch back to using rabbitmq-plugins from system path \(\#566\) [\#570](https://github.com/voxpupuli/puppet-rabbitmq/pull/570) ([wyardley](https://github.com/wyardley)) - -**Merged pull requests:** - -- Switch string to symbol for erl\_ssl\_path fact definition [\#631](https://github.com/voxpupuli/puppet-rabbitmq/pull/631) ([wyardley](https://github.com/wyardley)) -- Fix test cases for \#623 \(manage\_python\) [\#626](https://github.com/voxpupuli/puppet-rabbitmq/pull/626) ([wyardley](https://github.com/wyardley)) -- Add back a few examples removed in \#562 [\#625](https://github.com/voxpupuli/puppet-rabbitmq/pull/625) ([wyardley](https://github.com/wyardley)) -- Update 'require' statements and mock types to fix spec tests [\#620](https://github.com/voxpupuli/puppet-rabbitmq/pull/620) ([wyardley](https://github.com/wyardley)) -- Update fixtures to voxpupuli/archive \(from puppet-community\) [\#619](https://github.com/voxpupuli/puppet-rabbitmq/pull/619) ([wyardley](https://github.com/wyardley)) - -## [v5.6.1](https://github.com/voxpupuli/puppet-rabbitmq/tree/v5.6.1) (2017-09-14) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/v6.0.0...v5.6.1) - -**Fixed bugs:** - -- Extra newline in SSL section of rabbitmq.config [\#634](https://github.com/voxpupuli/puppet-rabbitmq/issues/634) -- Idempotency problems with rabbitmq 3.6.5 and puppet 4.8.2 [\#618](https://github.com/voxpupuli/puppet-rabbitmq/issues/618) -- Enabling new plugin fails [\#566](https://github.com/voxpupuli/puppet-rabbitmq/issues/566) -- Rabbitmq\_user\_permissions parser fails for empty string [\#172](https://github.com/voxpupuli/puppet-rabbitmq/issues/172) -- Error on using puppet resource rabbitmq\_user [\#147](https://github.com/voxpupuli/puppet-rabbitmq/issues/147) - -**Closed issues:** - -- Add support for max-length-bytes as a integer [\#557](https://github.com/voxpupuli/puppet-rabbitmq/issues/557) -- 'provider rabbitmqplugins not functional on this host' [\#150](https://github.com/voxpupuli/puppet-rabbitmq/issues/150) -- Doesn't require curl, fails when it isn't installed [\#145](https://github.com/voxpupuli/puppet-rabbitmq/issues/145) -- EPEL RPM does not install /usr/sbin/rabbitmq-plugins [\#134](https://github.com/voxpupuli/puppet-rabbitmq/issues/134) -- Parameter config\_mirrored\_queues has no effect [\#125](https://github.com/voxpupuli/puppet-rabbitmq/issues/125) - -## [v6.0.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/v6.0.0) (2017-09-07) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/5.6.0...v6.0.0) - -**Breaking changes:** - -- BREAKING: Drop Ruby 1.8 support. Rubocop auto-fixes in preparation for modulesync [\#575](https://github.com/voxpupuli/puppet-rabbitmq/pull/575) ([wyardley](https://github.com/wyardley)) -- BREAKING: Switch from 'UNSET' to undef, rename management\_ip to management\_ip\_address [\#559](https://github.com/voxpupuli/puppet-rabbitmq/pull/559) ([wyardley](https://github.com/wyardley)) -- BREAKING: Drop Puppet 3 support. Replace validate\_\* with datatypes [\#536](https://github.com/voxpupuli/puppet-rabbitmq/pull/536) ([bastelfreak](https://github.com/bastelfreak)) -- Updated app.pp to address deprecation warnings [\#497](https://github.com/voxpupuli/puppet-rabbitmq/pull/497) ([ilium007](https://github.com/ilium007)) -- BREAKING: manage\_repos is now repos\_ensure \(default false\), version is now unused, switch to RabbitMQ's "packagecloud" repos [\#493](https://github.com/voxpupuli/puppet-rabbitmq/pull/493) ([wyardley](https://github.com/wyardley)) - -**Implemented enhancements:** - -- Convert to use 'archive' instead of 'staging' for rabbitmqadmin install [\#604](https://github.com/voxpupuli/puppet-rabbitmq/pull/604) ([wyardley](https://github.com/wyardley)) -- Update dependencies, name, and required Puppet version [\#589](https://github.com/voxpupuli/puppet-rabbitmq/pull/589) ([wyardley](https://github.com/wyardley)) -- Add official archlinux support [\#583](https://github.com/voxpupuli/puppet-rabbitmq/pull/583) ([bastelfreak](https://github.com/bastelfreak)) -- Enable configuring SSL for Erlang distribution [\#574](https://github.com/voxpupuli/puppet-rabbitmq/pull/574) ([JAORMX](https://github.com/JAORMX)) -- Add FreeBSD support [\#567](https://github.com/voxpupuli/puppet-rabbitmq/pull/567) ([wyardley](https://github.com/wyardley)) -- Add options for IPv6 and inetrc [\#552](https://github.com/voxpupuli/puppet-rabbitmq/pull/552) ([jeckersb](https://github.com/jeckersb)) -- Extra ssl options to harden rabbitmq listener [\#547](https://github.com/voxpupuli/puppet-rabbitmq/pull/547) ([xepa](https://github.com/xepa)) -- \[MODULES-4555\] allow list values to ha-params when ha-mode=nodes [\#537](https://github.com/voxpupuli/puppet-rabbitmq/pull/537) ([eserte](https://github.com/eserte)) -- Add ssl\_depth and password params for configuration [\#530](https://github.com/voxpupuli/puppet-rabbitmq/pull/530) ([bostrowski13](https://github.com/bostrowski13)) -- Allow Configuring Management IP Binding [\#506](https://github.com/voxpupuli/puppet-rabbitmq/pull/506) ([naftulikay](https://github.com/naftulikay)) -- Support multiple routing keys for bindings using separate parameters [\#504](https://github.com/voxpupuli/puppet-rabbitmq/pull/504) ([wyardley](https://github.com/wyardley)) - -**Fixed bugs:** - -- Look into "error while resolving custom fact" error [\#614](https://github.com/voxpupuli/puppet-rabbitmq/issues/614) -- repos\_ensure and version on RHEL 7 [\#573](https://github.com/voxpupuli/puppet-rabbitmq/issues/573) -- Avoid error when rabbitmqctl is not present\), update spec syntax \(\#614\) [\#615](https://github.com/voxpupuli/puppet-rabbitmq/pull/615) ([wyardley](https://github.com/wyardley)) -- fix a couple of problems with erl\_ssl\_path fact [\#609](https://github.com/voxpupuli/puppet-rabbitmq/pull/609) ([costela](https://github.com/costela)) -- Switch $releasevar to ${::os\[release\]\[major\]} [\#577](https://github.com/voxpupuli/puppet-rabbitmq/pull/577) ([wyardley](https://github.com/wyardley)) -- Fix regex double escaping of rabbitmqctl list\_policies [\#561](https://github.com/voxpupuli/puppet-rabbitmq/pull/561) ([wyardley](https://github.com/wyardley)) -- Update file / directory permissions [\#560](https://github.com/voxpupuli/puppet-rabbitmq/pull/560) ([wyardley](https://github.com/wyardley)) -- Update regexp for rabbitmq\_nodename fact [\#545](https://github.com/voxpupuli/puppet-rabbitmq/pull/545) ([SergK](https://github.com/SergK)) -- \[Bugfix\] convert $ssl\_depth from string to integer [\#539](https://github.com/voxpupuli/puppet-rabbitmq/pull/539) ([bastelfreak](https://github.com/bastelfreak)) -- Extend rabbitmqadmin config template with SSL options. [\#526](https://github.com/voxpupuli/puppet-rabbitmq/pull/526) ([justahero](https://github.com/justahero)) -- \[MODULES-4223\] don't set NODE\_PORT and NODE\_IP\_ADDRESS if ssl\_only [\#524](https://github.com/voxpupuli/puppet-rabbitmq/pull/524) ([JAORMX](https://github.com/JAORMX)) -- \[MODULES-3733\] rabbitmq provider env\_path does not locate ruby gem installed puppet binary [\#517](https://github.com/voxpupuli/puppet-rabbitmq/pull/517) ([nzverev](https://github.com/nzverev)) - -**Closed issues:** - -- use of new 6.0.0 module on new installation fails [\#611](https://github.com/voxpupuli/puppet-rabbitmq/issues/611) -- Problem with erl\_ssl\_path fact on RHEL 7.x, erlang 18.3 [\#610](https://github.com/voxpupuli/puppet-rabbitmq/issues/610) -- Update to support puppet/staging 2 [\#587](https://github.com/voxpupuli/puppet-rabbitmq/issues/587) -- Update to support puppetlabs/apt 3 or 4 [\#586](https://github.com/voxpupuli/puppet-rabbitmq/issues/586) -- puppet resource rabbitmq\_exchange does not work [\#174](https://github.com/voxpupuli/puppet-rabbitmq/issues/174) -- exchanges will be recreated in every puppet run if the vhost is not / [\#173](https://github.com/voxpupuli/puppet-rabbitmq/issues/173) -- Illegal cluster node name [\#163](https://github.com/voxpupuli/puppet-rabbitmq/issues/163) -- version parameter does not work [\#154](https://github.com/voxpupuli/puppet-rabbitmq/issues/154) -- Error message when creating an exchange with rabbitmq\_exchange [\#137](https://github.com/voxpupuli/puppet-rabbitmq/issues/137) -- rabbitmqadmin fails with puppet 2.7.21 with master \(code from master branch\) [\#121](https://github.com/voxpupuli/puppet-rabbitmq/issues/121) -- Add support for exchanges [\#51](https://github.com/voxpupuli/puppet-rabbitmq/issues/51) -- invalid parameter provider [\#49](https://github.com/voxpupuli/puppet-rabbitmq/issues/49) - -**Merged pull requests:** - -- Replace 'anchor's with 'contain' in server.pp [\#616](https://github.com/voxpupuli/puppet-rabbitmq/pull/616) ([alexjfisher](https://github.com/alexjfisher)) -- Switch to 'contain' vs. anchor pattern, and use Class\['foo'\] vs Class\['::foo'\] [\#613](https://github.com/voxpupuli/puppet-rabbitmq/pull/613) ([wyardley](https://github.com/wyardley)) -- Fix typo \(.git =\> .github\) in README link [\#608](https://github.com/voxpupuli/puppet-rabbitmq/pull/608) ([wyardley](https://github.com/wyardley)) -- Update README, and remove old CONTRIBUTING.md [\#607](https://github.com/voxpupuli/puppet-rabbitmq/pull/607) ([wyardley](https://github.com/wyardley)) -- Ignore remaining multiple expectations warnings [\#602](https://github.com/voxpupuli/puppet-rabbitmq/pull/602) ([wyardley](https://github.com/wyardley)) -- Eliminate more "multiple expectations" warnings and remove some redundant specs [\#601](https://github.com/voxpupuli/puppet-rabbitmq/pull/601) ([wyardley](https://github.com/wyardley)) -- Migrate changelog [\#599](https://github.com/voxpupuli/puppet-rabbitmq/pull/599) ([alexjfisher](https://github.com/alexjfisher)) -- Move old CHANGELOG.md to HISTORY.md [\#597](https://github.com/voxpupuli/puppet-rabbitmq/pull/597) ([wyardley](https://github.com/wyardley)) -- update more lint warnings for relative classname inclusion in examples [\#595](https://github.com/voxpupuli/puppet-rabbitmq/pull/595) ([wyardley](https://github.com/wyardley)) -- Remove redundant specs, rework others to avoid multiple expectation warnings [\#594](https://github.com/voxpupuli/puppet-rabbitmq/pull/594) ([wyardley](https://github.com/wyardley)) -- move these tests to a context block, and use 'let\(:foo\)' syntax [\#593](https://github.com/voxpupuli/puppet-rabbitmq/pull/593) ([wyardley](https://github.com/wyardley)) -- Fix stdlib requirement [\#592](https://github.com/voxpupuli/puppet-rabbitmq/pull/592) ([alexjfisher](https://github.com/alexjfisher)) -- More Rubocop fixes and README.md badges [\#590](https://github.com/voxpupuli/puppet-rabbitmq/pull/590) ([alexjfisher](https://github.com/alexjfisher)) -- Typo in .fixtures.yml breaking unit tests [\#588](https://github.com/voxpupuli/puppet-rabbitmq/pull/588) ([TraGicCode](https://github.com/TraGicCode)) -- Rewrite the spec testing case [\#585](https://github.com/voxpupuli/puppet-rabbitmq/pull/585) ([ekohl](https://github.com/ekohl)) -- Fix namevar parameter documentation in types [\#584](https://github.com/voxpupuli/puppet-rabbitmq/pull/584) ([alexjfisher](https://github.com/alexjfisher)) -- Rubocop fixes: Update hash syntax and some formatting [\#582](https://github.com/voxpupuli/puppet-rabbitmq/pull/582) ([wyardley](https://github.com/wyardley)) -- Switch to rspec-puppet-facts [\#581](https://github.com/voxpupuli/puppet-rabbitmq/pull/581) ([ekohl](https://github.com/ekohl)) -- update various small warnings [\#580](https://github.com/voxpupuli/puppet-rabbitmq/pull/580) ([wyardley](https://github.com/wyardley)) -- switch to structured facts for os\* and rabbitmq\_version [\#579](https://github.com/voxpupuli/puppet-rabbitmq/pull/579) ([wyardley](https://github.com/wyardley)) -- move facter unit tests to the proper place [\#578](https://github.com/voxpupuli/puppet-rabbitmq/pull/578) ([wyardley](https://github.com/wyardley)) -- Switch to 'let\(:foo\)' syntax \(resolves rubocop warnings\) [\#576](https://github.com/voxpupuli/puppet-rabbitmq/pull/576) ([wyardley](https://github.com/wyardley)) -- removed package\_provider var from readme and added deprecation check … [\#571](https://github.com/voxpupuli/puppet-rabbitmq/pull/571) ([bostrowski13](https://github.com/bostrowski13)) -- don't "touch" hiera.yaml in spec\_helper\_acceptance [\#558](https://github.com/voxpupuli/puppet-rabbitmq/pull/558) ([wyardley](https://github.com/wyardley)) -- \(MODULES-5187\) mysnc puppet 5 and ruby 2.4 [\#554](https://github.com/voxpupuli/puppet-rabbitmq/pull/554) ([eputnam](https://github.com/eputnam)) -- \(MODULES-5144\) Prep for puppet 5 [\#553](https://github.com/voxpupuli/puppet-rabbitmq/pull/553) ([hunner](https://github.com/hunner)) -- Fix unit tests on \#535 [\#550](https://github.com/voxpupuli/puppet-rabbitmq/pull/550) ([hunner](https://github.com/hunner)) -- Fix error text in `rabbitmq\_vhost` provider [\#549](https://github.com/voxpupuli/puppet-rabbitmq/pull/549) ([hybby](https://github.com/hybby)) -- Improve distro fact handling in tests [\#548](https://github.com/voxpupuli/puppet-rabbitmq/pull/548) ([jeckersb](https://github.com/jeckersb)) -- Simplify "all\_vhosts" in rabbitmq\_queue provider [\#544](https://github.com/voxpupuli/puppet-rabbitmq/pull/544) ([KarolisL](https://github.com/KarolisL)) -- Upstream staging module released 2.2.0. Allow using it. [\#543](https://github.com/voxpupuli/puppet-rabbitmq/pull/543) ([vStone](https://github.com/vStone)) -- Scope config\_variables for Puppet 4 [\#541](https://github.com/voxpupuli/puppet-rabbitmq/pull/541) ([jarro2783](https://github.com/jarro2783)) -- \[msync\] 786266 Implement puppet-module-gems, a45803 Remove metadata.json from locales config [\#540](https://github.com/voxpupuli/puppet-rabbitmq/pull/540) ([wilson208](https://github.com/wilson208)) -- \[MODULES-4528\] Replace Puppet.version.to\_f version comparison from spec\_helper.rb [\#538](https://github.com/voxpupuli/puppet-rabbitmq/pull/538) ([wilson208](https://github.com/wilson208)) -- Systemd open files limit [\#535](https://github.com/voxpupuli/puppet-rabbitmq/pull/535) ([arteal](https://github.com/arteal)) -- \[MODULES-4450\] don't set ssl depth if undef [\#534](https://github.com/voxpupuli/puppet-rabbitmq/pull/534) ([JAORMX](https://github.com/JAORMX)) -- moved username:password to separate parameter [\#532](https://github.com/voxpupuli/puppet-rabbitmq/pull/532) ([vdmkenny](https://github.com/vdmkenny)) -- \(maint\) parallel\_spec maintenance: spec\_helper [\#531](https://github.com/voxpupuli/puppet-rabbitmq/pull/531) ([eputnam](https://github.com/eputnam)) -- \(MODULES-4098\) Sync the rest of the files [\#528](https://github.com/voxpupuli/puppet-rabbitmq/pull/528) ([hunner](https://github.com/hunner)) -- \(MODULES-4097\) Sync travis.yml [\#527](https://github.com/voxpupuli/puppet-rabbitmq/pull/527) ([hunner](https://github.com/hunner)) -- \(FM-5972\) gettext and spec.opts [\#525](https://github.com/voxpupuli/puppet-rabbitmq/pull/525) ([eputnam](https://github.com/eputnam)) -- \(FM-5939\) removes spec.opts [\#523](https://github.com/voxpupuli/puppet-rabbitmq/pull/523) ([eputnam](https://github.com/eputnam)) -- \(MODULES-3631\) msync Gemfile for 1.9 frozen strings [\#522](https://github.com/voxpupuli/puppet-rabbitmq/pull/522) ([hunner](https://github.com/hunner)) -- Designate former tests files as examples [\#521](https://github.com/voxpupuli/puppet-rabbitmq/pull/521) ([DavidS](https://github.com/DavidS)) -- Fixed lint on README.md snippets [\#520](https://github.com/voxpupuli/puppet-rabbitmq/pull/520) ([mvisonneau](https://github.com/mvisonneau)) -- \(MODULES-3704\) Update gemfile template to be identical [\#519](https://github.com/voxpupuli/puppet-rabbitmq/pull/519) ([hunner](https://github.com/hunner)) -- Fix sync [\#518](https://github.com/voxpupuli/puppet-rabbitmq/pull/518) ([hunner](https://github.com/hunner)) -- Allows deprecation errors [\#516](https://github.com/voxpupuli/puppet-rabbitmq/pull/516) ([pmcmaw](https://github.com/pmcmaw)) -- Bug fix for when queue names include spaces [\#512](https://github.com/voxpupuli/puppet-rabbitmq/pull/512) ([Bubbad](https://github.com/Bubbad)) -- Do not check cert when acquiring rabbitmqadmin with wget. [\#478](https://github.com/voxpupuli/puppet-rabbitmq/pull/478) ([modax](https://github.com/modax)) -- Cleanup void tcp options [\#464](https://github.com/voxpupuli/puppet-rabbitmq/pull/464) ([mpolenchuk](https://github.com/mpolenchuk)) - -## [5.6.0](https://github.com/voxpupuli/puppet-rabbitmq/tree/5.6.0) (2016-10-25) - -[Full Changelog](https://github.com/voxpupuli/puppet-rabbitmq/compare/5.5.0...5.6.0) - -**Implemented enhancements:** - -- Allow ha-sync-batch-size for rabbitmq\_policy definition to be integer [\#500](https://github.com/voxpupuli/puppet-rabbitmq/pull/500) ([mxftw](https://github.com/mxftw)) -- Ability to set management\_hostname in rabbitmqadmin.conf [\#498](https://github.com/voxpupuli/puppet-rabbitmq/pull/498) ([tampakrap](https://github.com/tampakrap)) - -**Merged pull requests:** - -- \(MODULES-3983\) Update parallel\_tests for ruby 2.0.0 moduleSync [\#514](https://github.com/voxpupuli/puppet-rabbitmq/pull/514) ([pmcmaw](https://github.com/pmcmaw)) -- \[FM-5719\] Release prep for unsupported release 5.6.0 [\#513](https://github.com/voxpupuli/puppet-rabbitmq/pull/513) ([wilson208](https://github.com/wilson208)) -- set $real\_package\_source to undef instead of empty [\#507](https://github.com/voxpupuli/puppet-rabbitmq/pull/507) ([bastelfreak](https://github.com/bastelfreak)) -- Update modulesync\_config \[a3fe424\] [\#501](https://github.com/voxpupuli/puppet-rabbitmq/pull/501) ([DavidS](https://github.com/DavidS)) -- use unless instead of if, and empty? instead of !='' [\#491](https://github.com/voxpupuli/puppet-rabbitmq/pull/491) ([wyardley](https://github.com/wyardley)) - -## 5.5.0 (2016-08-29) -### Summary -Adds some exciting new features (listed below) for a long awaited release! - -### Features -- Updates GPG signing key -- Now add additional config variables with the `config_additional_variable` parameter! -- Configure your management plugin with the new `collect_statistics_interval` parameter! -- Enjoy more robust tuning of your TCP configuration with: - - `tcp_backlog` - - `tcp_sndbuf` - - `tcp_recbuf` - -### Bugfixes -- MODULES-3740 - RabbitMQ template missing important config parameter - -## 5.4.0 (2016-05-11) -### Summary -Adds several new parameters, features, and lots of bugfixes - -#### Features -- Adds configuration for rabbitmq\_shovel plugin including static shovels -- (MODULE-2040) Add configuration of `auth_backends` -- Adds the `config_management_variables` parameter -- Adds `heartbeat` parameter -- Adds `rabbitmq_version` fact -- Adds ipv6 support to `rabbitmqadmin` -- MODULES-3148: Allow shards-per-node for rabbitmq\_policy definition to be integer -- Adds `rabbitmq_nodename` fact -- Allow passing architecture to `apt::source` - -#### Bugfixes -- MODULES-2252 - fix "Command execution expired" issue -- Fixes an issue with Puppet 4+ when run from a cron job -- Updates RedHat to use yum instead of rpm -- Fixes the `$file_limit` parameter to allow integers -- MODULES-2252 - fix "Could not prefetch rabbitmq\_exchange provider 'rabbitmqadmin': 757: unexpected token at 'fanout'" issue -- Improves error message when policy definition value is not a string -- MODULES-2645 add apt::update requirement for Debian -- Fixes pinning for apt on Debian based distros -- Updates install.pp to ensure that mnesia\_base directory exists -- Fixes rabbitmqadmin url -- Updates default `$package_gpg_key` to https -- Fixes `curl --noproxy` command to set host dynamically -- Ignore system umask when generating enabled\_plugins file -- Fix to skip federated queues in the output -- Updates module dependencies to use `puppet-staging` instead of `nanliu-staging` -- Fixes bug where `rabbitmq_management` block is created twice -- Fixes `rabbitmq_parameter` type check for `add-forward-headers` to require boolean. -- Fixes an issue when `$node_ip_address` is 'UNSET' -- Fixes package installation on OpenBSD -- Fixes bug that shows new user password changes on noop runs -- (MODULES-3295) Allow ssl => false without warning - -## 5.3.1 (2015-10-07) -### Summary -Adds a new resource type and a few ssl management parameters - -#### Features -- Add rabbitmq\_parameter type -- Add management\_ssl parameter to rabbitmq class -- Add stomp\_ssl\_only parameter to rabbitmq class - -#### Bugfixes -- file\_limit validation and el7 management -- Fix mnesia dir not getting wiped -- Fix message-ttl and max-length integer conversion in rabbitmq\_policy -- Allow managing erlang cookie without config\_cluster - -## 5.3.0 (2015-05-26) [YANKED] -### Summary -This is a deleted release. It did not follow semver. - -## 5.2.3 (2015-06-23) -### Summary -This is a patch release that updates the dependency requirements in the metadata. - -## 5.2.2 (2015-06-09) -### Summary -This is a bugfix to allow the rabbitmq\_exchange type's internal/durable/auto\_delete attributes work when they are not explicitly passed. - -### Bugfixes -- Fix rabbitmq\_exchange create when internal/durable/auto\_delete are not specified -- Start unit testing on puppet 4 -- Add default value to tcp\_listen\_options - -## 5.2.1 (2015-05-26) -### Summary +## 2015-05-26 - Version 5.2.1 +###Summary This release includes a fix for idempotency between puppet runs, as well as Readme updates -#### Features +####Features - Readme updates - Testing updates -#### Bugfixes +####Bugfixes - Ensure idempotency between Puppet runs -## 5.2.0 (2015-04-28) -### Summary +## 2015-04-28 - Version 5.2.0 +###Summary This release adds several new features for expanded configuration, support for SSL Ciphers, several bugfixes, and improved tests. -#### Features +####Features - New parameters to class `rabbitmq` - `ssl_ciphers` - New parameters to class `rabbitmq::config` @@ -468,7 +27,7 @@ This release adds several new features for expanded configuration, support for S - Adds support for SSL Ciphers - Adds `file_limit` support for RedHat platforms -#### Bugfixes +####Bugfixes - Will not create `rabbitmqadmin.conf` if admin is disabled - Fixes `check_password` - Fix to allow bindings and queues to be created when non-default management port is being used by rabbitmq. (MODULES-1856) @@ -476,14 +35,14 @@ This release adds several new features for expanded configuration, support for S - Updates apt key for full fingerprint compliance. - Adds a missing `routing_key` param to rabbitmqadmin absent binding call. -## 5.1.0 (2015-03-10) -### Summary +## 2015-03-10 - Version 5.1.0 +###Summary This release adds several features for greater flexibility in configuration of rabbitmq, includes a number of bug fixes, and bumps the minimum required version of puppetlabs-stdlib to 3.0.0. -#### Changes to defaults +####Changes to defaults - The default environment variables in `rabbitmq::config` have been renamed from `RABBITMQ_NODE_PORT` and `RABBITMQ_NODE_IP_ADDRESS` to `NODE_PORT` and `NODE_IP_ADDRESS` (MODULES-1673) -#### Features +####Features - New parameters to class `rabbitmq` - `file_limit` - `interface` @@ -497,7 +56,7 @@ This release adds several features for greater flexibility in configuration of r - Add `rabbitmq_queue` and `rabbitmq_binding` types - Update the providers to be able to retry commands -#### Bugfixes +####Bugfixes - Cleans up the formatting for rabbitmq.conf for readability - Update tag splitting in the `rabbitmqctl` provider for `rabbitmq_user` to work with comma or space separated tags - Do not enforce the source value for the yum provider (MODULES-1631) @@ -507,7 +66,7 @@ This release adds several features for greater flexibility in configuration of r - Fix issues in `rabbitmq_user` with tags not being sorted - Fix broken check for existing exchanges in `rabbitmq_exchange` -## 5.0.0 (2014-12-22) +## 2014-12-22 - Version 5.0.0 ### Summary This release fixes a longstanding security issue where the rabbitmq @@ -517,25 +76,25 @@ and fixes several bugs. #### Backwards-incompatible Changes -- Removed the rabbitmq\_erlang\_cookie fact and replaced the logic to +- Removed the rabbitmq_erlang_cookie fact and replaced the logic to manage that cookie with a provider. - Dropped official support for Puppet 2.7 (EOL 9/30/2014 https://groups.google.com/forum/#!topic/puppet-users/QLguMcLraLE ) -- Changed the default value of $rabbitmq::params::ldap\_user\_dn\_pattern +- Changed the default value of $rabbitmq::params::ldap_user_dn_pattern to not contain a variable -- Removed deprecated parameters: $rabbitmq::cluster\_disk\_nodes, - $rabbitmq::server::manage\_service, and - $rabbitmq::server::config\_mirrored\_queues +- Removed deprecated parameters: $rabbitmq::cluster_disk_nodes, + $rabbitmq::server::manage_service, and + $rabbitmq::server::config_mirrored_queues #### Features -- Add tcp\_keepalive parameter to enable TCP keepalive +- Add tcp_keepalive parameter to enable TCP keepalive - Use https to download rabbitmqadmin tool when $rabbitmq::ssl is true -- Add key\_content parameter for offline Debian package installations +- Add key_content parameter for offline Debian package installations - Use 16 character apt key to avoid potential collisions -- Add rabbitmq\_policy type, including support for rabbitmq <3.2.0 -- Add rabbitmq::ensure\_repo parameter -- Add ability to change rabbitmq\_user password +- Add rabbitmq_policy type, including support for rabbitmq <3.2.0 +- Add rabbitmq::ensure_repo parameter +- Add ability to change rabbitmq_user password - Allow disk as a valid cluster node type #### Bugfixes @@ -543,11 +102,11 @@ and fixes several bugs. - Avoid attempting to install rabbitmqadmin via a proxy (since it is downloaded from localhost) - Optimize check for RHEL GPG key -- Configure ssl\_listener in stomp only if using ssl +- Configure ssl_listener in stomp only if using ssl - Use rpm as default package provider for RedHat, bringing the module in line with the documented instructions to manage erlang separately and allowing the default version and source parameters to become meaningful -- Configure cacertfile only if verify\_none is not set +- Configure cacertfile only if verify_none is not set - Use -q flag for rabbitmqctl commands to avoid parsing inconsistent debug output - Use the -m flag for rabbitmqplugins commands, again to avoid parsing @@ -560,37 +119,37 @@ and fixes several bugs. - Add, update, and fix tests - Update docs -## 4.1.0 (2014-08-20) +## 2014-08-20 - Version 4.1.0 ### Summary This release adds several new features, fixes bugs, and improves tests and documentation. #### Features -- Autorequire the rabbitmq-server service in the rabbitmq\_vhost type +- Autorequire the rabbitmq-server service in the rabbitmq_vhost type - Add credentials to rabbitmqadmin URL -- Added $ssl\_only parameter to rabbitmq, rabbitmq::params, and +- Added $ssl_only parameter to rabbitmq, rabbitmq::params, and rabbitmq::config -- Added property tags to rabbitmq\_user provider +- Added property tags to rabbitmq_user provider #### Bugfixes - Fix erroneous commas in rabbitmq::config -- Use correct ensure value for the rabbitmq\_stomp rabbitmq\_plugin +- Use correct ensure value for the rabbitmq_stomp rabbitmq_plugin - Set HOME env variable to nil when leveraging rabbitmq to remove type error from Python script - Fix location for rabbitmq-plugins for RHEL -- Remove validation for package\_source to allow it to be set to false +- Remove validation for package_source to allow it to be set to false - Allow LDAP auth configuration without configuring stomp -- Added missing $ssl\_verify and $ssl\_fail\_if\_no\_peer\_cert to rabbitmq::config +- Added missing $ssl_verify and $ssl_fail_if_no_peer_cert to rabbitmq::config -## 4.0.0 (2014-05-16) +## 2014-05-16 - Version 4.0.0 ### Summary This release includes many new features and bug fixes. With the exception of erlang management this should be backwards compatible with 3.1.0. #### Backwards-incompatible Changes -- erlang\_manage was removed. You will need to manage erlang separately. See +- erlang_manage was removed. You will need to manage erlang separately. See the README for more information on how to configure this. #### Features @@ -609,17 +168,17 @@ the README for more information on how to configure this. - exchanges no longer recreated on each puppet run if non-default vhost is used - Allow port to be UNSET - Re-added rabbitmq::server class -- Deprecated previously unused manage\_service variable in favor of - service\_manage +- Deprecated previously unused manage_service variable in favor of + service_manage - Use correct key for rabbitmq apt::source -- config\_mirrored\_queues variable removed +- config_mirrored_queues variable removed - It previously did nothing, will now at least throw a warning if you try to use it - Remove unnecessary dependency on Class['rabbitmq::repo::rhel'] in rabbitmq::install -## 3.1.0 (2013-09-14) +## 2013-09-14 - Version 3.1.0 ### Summary This release focuses on a few small (but critical) bugfixes as well as extends @@ -631,12 +190,12 @@ the amount of custom RabbitMQ configuration you can do with the module. - ArchLinux support added. #### Fixes -- Make use of the user/password parameters in rabbitmq\_exchange{} -- Correct the read/write parameter order on set\_permissions/list\_permissions as +- Make use of the user/password parameters in rabbitmq_exchange{} +- Correct the read/write parameter order on set_permissions/list_permissions as they were reversed. - Make the module pull down 3.1.5 by default. -## 3.0.0 (2013-07-18) +## 2013-07-18 3.0.0 ### Summary This release heavily refactors the RabbitMQ and changes functionality in @@ -657,7 +216,7 @@ a 3.x release. - Refactor the module to fix RHEL support. All interaction with the module is now done through the main rabbitmq class. - Add support for mirrored queues (Only on Debian family distributions currently) -- Add rabbitmq\_exchange provider (using rabbitmqadmin) +- Add rabbitmq_exchange provider (using rabbitmqadmin) - Add new `rabbitmq` class parameters: - `manage_service`: Boolean to choose if Puppet should manage the service. (For pacemaker/HA setups) - Add SuSE support. @@ -667,39 +226,36 @@ is now done through the main rabbitmq class. - Rabbitmq::server has been removed and is now rabbitmq::config. You should not use this class directly, only via the main rabbitmq class. -## 2.1.0 (2013-04-11) +## 2013-04-11 2.1.0 - remove puppetversion from rabbitmq.config template - add cluster support - escape resource names in regexp -## 2.0.2 (2012-07-31) +## 2012-07-31 Jeff McCune 2.0.2 - Re-release 2.0.1 with $EDITOR droppings cleaned up -## 2.0.0 (2012-05-03) +## 2012-05-03 2.0.0 - added support for new-style admin users - added support for rabbitmq 2.7.1 -## 2.0.0rc1 (2011-06-14) +## 2011-06-14 Dan Bode 2.0.0rc1 - Massive refactor: - - added native types for user/vhost/user\_permissions - - added apt support for vendor packages - - added smoke tests +- added native types for user/vhost/user_permissions +- added apt support for vendor packages +- added smoke tests -## 1.0.4 (2011-04-08) +## 2011-04-08 Jeff McCune 1.0.4 - Update module for RabbitMQ 2.4.1 and rabbitmq-plugin-stomp package. -## 1.0.3 (2011-03-24) +## 2011-03-24 1.0.3 - Initial release to the forge. Reviewed by Cody. Whitespace is good. -## 1.0.2 (2011-03-22) +## 2011-03-22 1.0.2 - Whitespace only fix again... ack '\t' is my friend... -## 1.0.1 (2011-03-22) +## 2011-03-22 1.0.1 - Whitespace only fix. -## 1.0.0 (2011-03-22) +## 2011-03-22 1.0.0 - Initial Release. Manage the package, file and service. - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/3rdparty/modules/rabbitmq/CONTRIBUTING.md b/3rdparty/modules/rabbitmq/CONTRIBUTING.md new file mode 100644 index 000000000..f1cbde4bb --- /dev/null +++ b/3rdparty/modules/rabbitmq/CONTRIBUTING.md @@ -0,0 +1,220 @@ +Checklist (and a short version for the impatient) +================================================= + + * Commits: + + - Make commits of logical units. + + - Check for unnecessary whitespace with "git diff --check" before + committing. + + - Commit using Unix line endings (check the settings around "crlf" in + git-config(1)). + + - Do not check in commented out code or unneeded files. + + - The first line of the commit message should be a short + description (50 characters is the soft limit, excluding ticket + number(s)), and should skip the full stop. + + - Associate the issue in the message. The first line should include + the issue number in the form "(#XXXX) Rest of message". + + - The body should provide a meaningful commit message, which: + + - uses the imperative, present tense: "change", not "changed" or + "changes". + + - includes motivation for the change, and contrasts its + implementation with the previous behavior. + + - Make sure that you have tests for the bug you are fixing, or + feature you are adding. + + - Make sure the test suites passes after your commit: + `bundle exec rspec spec/acceptance` More information on [testing](#Testing) below + + - When introducing a new feature, make sure it is properly + documented in the README.md + + * Submission: + + * Pre-requisites: + + - Make sure you have a [GitHub account](https://github.com/join) + + - [Create a ticket](https://tickets.puppetlabs.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppetlabs.com/browse/) you are patching for. + + * Preferred method: + + - Fork the repository on GitHub. + + - Push your changes to a topic branch in your fork of the + repository. (the format ticket/1234-short_description_of_change is + usually preferred for this project). + + - Submit a pull request to the repository in the puppetlabs + organization. + +The long version +================ + + 1. Make separate commits for logically separate changes. + + Please break your commits down into logically consistent units + which include new or changed tests relevant to the rest of the + change. The goal of doing this is to make the diff easier to + read for whoever is reviewing your code. In general, the easier + your diff is to read, the more likely someone will be happy to + review it and get it into the code base. + + If you are going to refactor a piece of code, please do so as a + separate commit from your feature or bug fix changes. + + We also really appreciate changes that include tests to make + sure the bug is not re-introduced, and that the feature is not + accidentally broken. + + Describe the technical detail of the change(s). If your + description starts to get too long, that is a good sign that you + probably need to split up your commit into more finely grained + pieces. + + Commits which plainly describe the things which help + reviewers check the patch and future developers understand the + code are much more likely to be merged in with a minimum of + bike-shedding or requested changes. Ideally, the commit message + would include information, and be in a form suitable for + inclusion in the release notes for the version of Puppet that + includes them. + + Please also check that you are not introducing any trailing + whitespace or other "whitespace errors". You can do this by + running "git diff --check" on your changes before you commit. + + 2. Sending your patches + + To submit your changes via a GitHub pull request, we _highly_ + recommend that you have them on a topic branch, instead of + directly on "master". + It makes things much easier to keep track of, especially if + you decide to work on another thing before your first change + is merged in. + + GitHub has some pretty good + [general documentation](http://help.github.com/) on using + their site. They also have documentation on + [creating pull requests](http://help.github.com/send-pull-requests/). + + In general, after pushing your topic branch up to your + repository on GitHub, you can switch to the branch in the + GitHub UI and click "Pull Request" towards the top of the page + in order to open a pull request. + + + 3. Update the related GitHub issue. + + If there is a GitHub issue associated with the change you + submitted, then you should update the ticket to include the + location of your branch, along with any other commentary you + may wish to make. + +Testing +======= + +Getting Started +--------------- + +Our puppet modules provide [`Gemfile`](./Gemfile)s which can tell a ruby +package manager such as [bundler](http://bundler.io/) what Ruby packages, +or Gems, are required to build, develop, and test this software. + +Please make sure you have [bundler installed](http://bundler.io/#getting-started) +on your system, then use it to install all dependencies needed for this project, +by running + +```shell +% bundle install +Fetching gem metadata from https://rubygems.org/........ +Fetching gem metadata from https://rubygems.org/.. +Using rake (10.1.0) +Using builder (3.2.2) +-- 8><-- many more --><8 -- +Using rspec-system-puppet (2.2.0) +Using serverspec (0.6.3) +Using rspec-system-serverspec (1.0.0) +Using bundler (1.3.5) +Your bundle is complete! +Use `bundle show [gemname]` to see where a bundled gem is installed. +``` + +NOTE some systems may require you to run this command with sudo. + +If you already have those gems installed, make sure they are up-to-date: + +```shell +% bundle update +``` + +With all dependencies in place and up-to-date we can now run the tests: + +```shell +% rake spec +``` + +This will execute all the [rspec tests](http://rspec-puppet.com/) tests +under [spec/defines](./spec/defines), [spec/classes](./spec/classes), +and so on. rspec tests may have the same kind of dependencies as the +module they are testing. While the module defines in its [Modulefile](./Modulefile), +rspec tests define them in [.fixtures.yml](./fixtures.yml). + +Some puppet modules also come with [beaker](https://github.com/puppetlabs/beaker) +tests. These tests spin up a virtual machine under +[VirtualBox](https://www.virtualbox.org/)) with, controlling it with +[Vagrant](http://www.vagrantup.com/) to actually simulate scripted test +scenarios. In order to run these, you will need both of those tools +installed on your system. + +You can run them by issuing the following command + +```shell +% rake spec_clean +% rspec spec/acceptance +``` + +This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml), +install puppet, copy this module and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb) +and then run all the tests under [spec/acceptance](./spec/acceptance). + +Writing Tests +------------- + +XXX getting started writing tests. + +If you have commit access to the repository +=========================================== + +Even if you have commit access to the repository, you will still need to +go through the process above, and have someone else review and merge +in your changes. The rule is that all changes must be reviewed by a +developer on the project (that did not write the code) to ensure that +all changes go through a code review process. + +Having someone other than the author of the topic branch recorded as +performing the merge is the record that they performed the code +review. + + +Additional Resources +==================== + +* [Getting additional help](http://puppetlabs.com/community/get-help) + +* [Writing tests](http://projects.puppetlabs.com/projects/puppet/wiki/Development_Writing_Tests) + +* [Patchwork](https://patchwork.puppetlabs.com) + +* [General GitHub documentation](http://help.github.com/) + +* [GitHub pull request documentation](http://help.github.com/send-pull-requests/) + diff --git a/3rdparty/modules/rabbitmq/Gemfile b/3rdparty/modules/rabbitmq/Gemfile index 20f3df025..2b1b7cd8d 100644 --- a/3rdparty/modules/rabbitmq/Gemfile +++ b/3rdparty/modules/rabbitmq/Gemfile @@ -1,7 +1,7 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org" def location_for(place, fake_version = nil) - if place =~ /^(git[:@][^#]*)#(.*)/ + if place =~ /^(git:[^#]*)#(.*)/ [fake_version, { :git => $1, :branch => $2, :require => false }].compact elsif place =~ /^file:\/\/(.*)/ ['>= 0', { :path => File.expand_path($1), :require => false }] @@ -10,74 +10,38 @@ def location_for(place, fake_version = nil) end end -group :test do - gem 'puppetlabs_spec_helper', '~> 2.6', :require => false - gem 'rspec-puppet', '~> 2.5', :require => false - gem 'rspec-puppet-facts', :require => false - gem 'rspec-puppet-utils', :require => false - gem 'puppet-lint-leading_zero-check', :require => false - gem 'puppet-lint-trailing_comma-check', :require => false - gem 'puppet-lint-version_comparison-check', :require => false - gem 'puppet-lint-classes_and_types_beginning_with_digits-check', :require => false - gem 'puppet-lint-unquoted_string-check', :require => false - gem 'puppet-lint-variable_contains_upcase', :require => false - gem 'metadata-json-lint', :require => false - gem 'redcarpet', :require => false - gem 'rubocop', '~> 0.49.1', :require => false if RUBY_VERSION >= '2.3.0' - gem 'rubocop-rspec', '~> 1.15.0', :require => false if RUBY_VERSION >= '2.3.0' - gem 'mocha', '~> 1.4.0', :require => false - gem 'coveralls', :require => false - gem 'simplecov-console', :require => false - gem 'rack', '~> 1.0', :require => false if RUBY_VERSION < '2.2.2' - gem 'parallel_tests', :require => false -end - -group :development do - gem 'travis', :require => false - gem 'travis-lint', :require => false - gem 'guard-rake', :require => false - gem 'overcommit', '>= 0.39.1', :require => false +group :development, :unit_tests do + gem 'rspec-core', '3.1.7', :require => false + gem 'puppetlabs_spec_helper', :require => false + gem 'simplecov', :require => false + gem 'puppet_facts', :require => false + gem 'json', :require => false end group :system_tests do - gem 'winrm', :require => false if beaker_version = ENV['BEAKER_VERSION'] gem 'beaker', *location_for(beaker_version) - else - gem 'beaker', '>= 3.9.0', :require => false end if beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION'] gem 'beaker-rspec', *location_for(beaker_rspec_version) else gem 'beaker-rspec', :require => false end - gem 'serverspec', :require => false - gem 'beaker-hostgenerator', '>= 1.1.10', :require => false - gem 'beaker-docker', :require => false - gem 'beaker-puppet', :require => false - gem 'beaker-puppet_install_helper', :require => false - gem 'beaker-module_install_helper', :require => false - gem 'rbnacl', '>= 4', :require => false if RUBY_VERSION >= '2.2.6' - gem 'rbnacl-libsodium', :require => false if RUBY_VERSION >= '2.2.6' - gem 'bcrypt_pbkdf', :require => false -end - -group :release do - gem 'github_changelog_generator', :require => false, :git => 'https://github.com/github-changelog-generator/github-changelog-generator' if RUBY_VERSION >= '2.2.2' - gem 'puppet-blacksmith', :require => false - gem 'voxpupuli-release', :require => false, :git => 'https://github.com/voxpupuli/voxpupuli-release-gem' - gem 'puppet-strings', '>= 1.0', :require => false + gem 'serverspec', :require => false end if facterversion = ENV['FACTER_GEM_VERSION'] - gem 'facter', facterversion.to_s, :require => false, :groups => [:test] + gem 'facter', facterversion, :require => false else - gem 'facter', :require => false, :groups => [:test] + gem 'facter', :require => false end -ENV['PUPPET_VERSION'].nil? ? puppetversion = '~> 5.0' : puppetversion = ENV['PUPPET_VERSION'].to_s -gem 'puppet', puppetversion, :require => false, :groups => [:test] +if puppetversion = ENV['PUPPET_GEM_VERSION'] + gem 'puppet', puppetversion, :require => false +else + gem 'puppet', :require => false +end -# vim: syntax=ruby +# vim:ft=ruby diff --git a/3rdparty/modules/rabbitmq/HISTORY.md b/3rdparty/modules/rabbitmq/HISTORY.md deleted file mode 100644 index af15d71fe..000000000 --- a/3rdparty/modules/rabbitmq/HISTORY.md +++ /dev/null @@ -1,347 +0,0 @@ -## 5.5.0 (2016-08-29) -### Summary -Adds some exciting new features (listed below) for a long awaited release! - -### Features -- Updates GPG signing key -- Now add additional config variables with the `config_additional_variable` parameter! -- Configure your management plugin with the new `collect_statistics_interval` parameter! -- Enjoy more robust tuning of your TCP configuration with: - - `tcp_backlog` - - `tcp_sndbuf` - - `tcp_recbuf` - -### Bugfixes -- MODULES-3740 - RabbitMQ template missing important config parameter - -## 5.4.0 (2016-05-11) -### Summary -Adds several new parameters, features, and lots of bugfixes - -#### Features -- Adds configuration for rabbitmq\_shovel plugin including static shovels -- (MODULE-2040) Add configuration of `auth_backends` -- Adds the `config_management_variables` parameter -- Adds `heartbeat` parameter -- Adds `rabbitmq_version` fact -- Adds ipv6 support to `rabbitmqadmin` -- MODULES-3148: Allow shards-per-node for rabbitmq\_policy definition to be integer -- Adds `rabbitmq_nodename` fact -- Allow passing architecture to `apt::source` - -#### Bugfixes -- MODULES-2252 - fix "Command execution expired" issue -- Fixes an issue with Puppet 4+ when run from a cron job -- Updates RedHat to use yum instead of rpm -- Fixes the `$file_limit` parameter to allow integers -- MODULES-2252 - fix "Could not prefetch rabbitmq\_exchange provider 'rabbitmqadmin': 757: unexpected token at 'fanout'" issue -- Improves error message when policy definition value is not a string -- MODULES-2645 add apt::update requirement for Debian -- Fixes pinning for apt on Debian based distros -- Updates install.pp to ensure that mnesia\_base directory exists -- Fixes rabbitmqadmin url -- Updates default `$package_gpg_key` to https -- Fixes `curl --noproxy` command to set host dynamically -- Ignore system umask when generating enabled\_plugins file -- Fix to skip federated queues in the output -- Updates module dependencies to use `puppet-staging` instead of `nanliu-staging` -- Fixes bug where `rabbitmq_management` block is created twice -- Fixes `rabbitmq_parameter` type check for `add-forward-headers` to require boolean. -- Fixes an issue when `$node_ip_address` is 'UNSET' -- Fixes package installation on OpenBSD -- Fixes bug that shows new user password changes on noop runs -- (MODULES-3295) Allow ssl => false without warning - -## 5.3.1 (2015-10-07) -### Summary -Adds a new resource type and a few ssl management parameters - -#### Features -- Add rabbitmq\_parameter type -- Add management\_ssl parameter to rabbitmq class -- Add stomp\_ssl\_only parameter to rabbitmq class - -#### Bugfixes -- file\_limit validation and el7 management -- Fix mnesia dir not getting wiped -- Fix message-ttl and max-length integer conversion in rabbitmq\_policy -- Allow managing erlang cookie without config\_cluster - -## 5.3.0 (2015-05-26) [YANKED] -### Summary -This is a deleted release. It did not follow semver. - -## 5.2.3 (2015-06-23) -### Summary -This is a patch release that updates the dependency requirements in the metadata. - -## 5.2.2 (2015-06-09) -### Summary -This is a bugfix to allow the rabbitmq\_exchange type's internal/durable/auto\_delete attributes work when they are not explicitly passed. - -### Bugfixes -- Fix rabbitmq\_exchange create when internal/durable/auto\_delete are not specified -- Start unit testing on puppet 4 -- Add default value to tcp\_listen\_options - -## 5.2.1 (2015-05-26) -### Summary -This release includes a fix for idempotency between puppet runs, as well as Readme updates - -#### Features -- Readme updates -- Testing updates - -#### Bugfixes -- Ensure idempotency between Puppet runs - -## 5.2.0 (2015-04-28) -### Summary -This release adds several new features for expanded configuration, support for SSL Ciphers, several bugfixes, and improved tests. - -#### Features -- New parameters to class `rabbitmq` - - `ssl_ciphers` -- New parameters to class `rabbitmq::config` - - `interface` - - `ssl_interface` -- New parameters to type `rabbitmq_exchange` - - `internal` - - `auto_delete` - - `durable` -- Adds syncing with Modulesync -- Adds support for SSL Ciphers -- Adds `file_limit` support for RedHat platforms - -#### Bugfixes -- Will not create `rabbitmqadmin.conf` if admin is disabled -- Fixes `check_password` -- Fix to allow bindings and queues to be created when non-default management port is being used by rabbitmq. (MODULES-1856) -- `rabbitmq_policy` converts known parameters to integers -- Updates apt key for full fingerprint compliance. -- Adds a missing `routing_key` param to rabbitmqadmin absent binding call. - -## 5.1.0 (2015-03-10) -### Summary -This release adds several features for greater flexibility in configuration of rabbitmq, includes a number of bug fixes, and bumps the minimum required version of puppetlabs-stdlib to 3.0.0. - -#### Changes to defaults -- The default environment variables in `rabbitmq::config` have been renamed from `RABBITMQ_NODE_PORT` and `RABBITMQ_NODE_IP_ADDRESS` to `NODE_PORT` and `NODE_IP_ADDRESS` (MODULES-1673) - -#### Features -- New parameters to class `rabbitmq` - - `file_limit` - - `interface` - - `ldap_other_bind` - - `ldap_config_variables` - - `ssl_interface` - - `ssl_versions` - - `rabbitmq_group` - - `rabbitmq_home` - - `rabbitmq_user` -- Add `rabbitmq_queue` and `rabbitmq_binding` types -- Update the providers to be able to retry commands - -#### Bugfixes -- Cleans up the formatting for rabbitmq.conf for readability -- Update tag splitting in the `rabbitmqctl` provider for `rabbitmq_user` to work with comma or space separated tags -- Do not enforce the source value for the yum provider (MODULES-1631) -- Fix conditional around `$pin` -- Remove broken SSL option in rabbitmqadmin.conf (MODULES-1691) -- Fix issues in `rabbitmq_user` with admin and no tags -- Fix issues in `rabbitmq_user` with tags not being sorted -- Fix broken check for existing exchanges in `rabbitmq_exchange` - -## 5.0.0 (2014-12-22) -### Summary - -This release fixes a longstanding security issue where the rabbitmq -erlang cookie was exposed as a fact by managing the cookie with a -provider. It also drops support for Puppet 2.7, adds many features -and fixes several bugs. - -#### Backwards-incompatible Changes - -- Removed the rabbitmq\_erlang\_cookie fact and replaced the logic to - manage that cookie with a provider. -- Dropped official support for Puppet 2.7 (EOL 9/30/2014 - https://groups.google.com/forum/#!topic/puppet-users/QLguMcLraLE ) -- Changed the default value of $rabbitmq::params::ldap\_user\_dn\_pattern - to not contain a variable -- Removed deprecated parameters: $rabbitmq::cluster\_disk\_nodes, - $rabbitmq::server::manage\_service, and - $rabbitmq::server::config\_mirrored\_queues - -#### Features - -- Add tcp\_keepalive parameter to enable TCP keepalive -- Use https to download rabbitmqadmin tool when $rabbitmq::ssl is true -- Add key\_content parameter for offline Debian package installations -- Use 16 character apt key to avoid potential collisions -- Add rabbitmq\_policy type, including support for rabbitmq <3.2.0 -- Add rabbitmq::ensure\_repo parameter -- Add ability to change rabbitmq\_user password -- Allow disk as a valid cluster node type - -#### Bugfixes - -- Avoid attempting to install rabbitmqadmin via a proxy (since it is - downloaded from localhost) -- Optimize check for RHEL GPG key -- Configure ssl\_listener in stomp only if using ssl -- Use rpm as default package provider for RedHat, bringing the module in - line with the documented instructions to manage erlang separately and allowing - the default version and source parameters to become meaningful -- Configure cacertfile only if verify\_none is not set -- Use -q flag for rabbitmqctl commands to avoid parsing inconsistent - debug output -- Use the -m flag for rabbitmqplugins commands, again to avoid parsing - inconsistent debug output -- Strip backslashes from the rabbitmqctl output to avoid parsing issues -- Fix limitation where version parameter was ignored -- Add /etc/rabbitmq/rabbitmqadmin.conf to fix rabbitmqadmin port usage - when ssl is on -- Fix linter errors and warnings -- Add, update, and fix tests -- Update docs - -## 4.1.0 (2014-08-20) -### Summary - -This release adds several new features, fixes bugs, and improves tests and -documentation. - -#### Features -- Autorequire the rabbitmq-server service in the rabbitmq\_vhost type -- Add credentials to rabbitmqadmin URL -- Added $ssl\_only parameter to rabbitmq, rabbitmq::params, and -rabbitmq::config -- Added property tags to rabbitmq\_user provider - -#### Bugfixes -- Fix erroneous commas in rabbitmq::config -- Use correct ensure value for the rabbitmq\_stomp rabbitmq\_plugin -- Set HOME env variable to nil when leveraging rabbitmq to remove type error -from Python script -- Fix location for rabbitmq-plugins for RHEL -- Remove validation for package\_source to allow it to be set to false -- Allow LDAP auth configuration without configuring stomp -- Added missing $ssl\_verify and $ssl\_fail\_if\_no\_peer\_cert to rabbitmq::config - -## 4.0.0 (2014-05-16) -### Summary - -This release includes many new features and bug fixes. With the exception of -erlang management this should be backwards compatible with 3.1.0. - -#### Backwards-incompatible Changes -- erlang\_manage was removed. You will need to manage erlang separately. See -the README for more information on how to configure this. - -#### Features -- Improved SSL support -- Add LDAP support -- Add ability to manage RabbitMQ repositories -- Add ability to manage Erlang kernel configuration options -- Improved handling of user tags -- Use nanliu-staging module instead of hardcoded 'curl' -- Switch to yum or zypper provider instead of rpm -- Add ability to manage STOMP plugin installation. -- Allow empty permission fields -- Convert existing system tests to beaker acceptance tests. - -#### Bugfixes -- exchanges no longer recreated on each puppet run if non-default vhost is used -- Allow port to be UNSET -- Re-added rabbitmq::server class -- Deprecated previously unused manage\_service variable in favor of - service\_manage -- Use correct key for rabbitmq apt::source -- config\_mirrored\_queues variable removed - - It previously did nothing, will now at least throw a warning if you try to - use it -- Remove unnecessary dependency on Class['rabbitmq::repo::rhel'] in - rabbitmq::install - - -## 3.1.0 (2013-09-14) -### Summary - -This release focuses on a few small (but critical) bugfixes as well as extends -the amount of custom RabbitMQ configuration you can do with the module. - -#### Features -- You can now change RabbitMQ 'Config Variables' via the parameter `config_variables`. -- You can now change RabbitMQ 'Environment Variables' via the parameter `environment_variables`. -- ArchLinux support added. - -#### Fixes -- Make use of the user/password parameters in rabbitmq\_exchange{} -- Correct the read/write parameter order on set\_permissions/list\_permissions as - they were reversed. -- Make the module pull down 3.1.5 by default. - -## 3.0.0 (2013-07-18) -### Summary - -This release heavily refactors the RabbitMQ and changes functionality in -several key ways. Please pay attention to the new README.md file for -details of how to interact with the class now. Puppet 3 and RHEL are -now fully supported. The default version of RabbitMQ has changed to -a 3.x release. - -#### Bugfixes - -- Improve travis testing options. -- Stop reimporting the GPG key on every run on RHEL and Debian. -- Fix documentation to make it clear you don't have to set provider => each time. -- Reference the standard rabbitmq port in the documentation instead of a custom port. -- Fixes to the README formatting. - -#### Features -- Refactor the module to fix RHEL support. All interaction with the module -is now done through the main rabbitmq class. -- Add support for mirrored queues (Only on Debian family distributions currently) -- Add rabbitmq\_exchange provider (using rabbitmqadmin) -- Add new `rabbitmq` class parameters: - - `manage_service`: Boolean to choose if Puppet should manage the service. (For pacemaker/HA setups) -- Add SuSE support. - -#### Incompatible Changes - -- Rabbitmq::server has been removed and is now rabbitmq::config. You should -not use this class directly, only via the main rabbitmq class. - -## 2.1.0 (2013-04-11) - -- remove puppetversion from rabbitmq.config template -- add cluster support -- escape resource names in regexp - -## 2.0.2 (2012-07-31) -- Re-release 2.0.1 with $EDITOR droppings cleaned up - -## 2.0.0 (2012-05-03) -- added support for new-style admin users -- added support for rabbitmq 2.7.1 - -## 2.0.0rc1 (2011-06-14) -- Massive refactor: - - added native types for user/vhost/user\_permissions - - added apt support for vendor packages - - added smoke tests - -## 1.0.4 (2011-04-08) -- Update module for RabbitMQ 2.4.1 and rabbitmq-plugin-stomp package. - -## 1.0.3 (2011-03-24) -- Initial release to the forge. Reviewed by Cody. Whitespace is good. - -## 1.0.2 (2011-03-22) -- Whitespace only fix again... ack '\t' is my friend... - -## 1.0.1 (2011-03-22) -- Whitespace only fix. - -## 1.0.0 (2011-03-22) -- Initial Release. Manage the package, file and service. diff --git a/3rdparty/modules/rabbitmq/LICENSE b/3rdparty/modules/rabbitmq/LICENSE index d64569567..297f85cfa 100644 --- a/3rdparty/modules/rabbitmq/LICENSE +++ b/3rdparty/modules/rabbitmq/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -181,13 +180,13 @@ To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate + the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2013 Puppet Labs Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/3rdparty/modules/rabbitmq/MAINTAINERS.md b/3rdparty/modules/rabbitmq/MAINTAINERS.md deleted file mode 100644 index bbff6e531..000000000 --- a/3rdparty/modules/rabbitmq/MAINTAINERS.md +++ /dev/null @@ -1,6 +0,0 @@ -## Maintenance - -Maintainers: - - Puppet Forge Modules Team `forge-modules |at| puppet |dot| com` - -Tickets: https://tickets.puppet.com/browse/MODULES. Make sure to set component to `rabbitmq`. diff --git a/3rdparty/modules/rabbitmq/NOTICE b/3rdparty/modules/rabbitmq/NOTICE deleted file mode 100644 index ce5b07266..000000000 --- a/3rdparty/modules/rabbitmq/NOTICE +++ /dev/null @@ -1,15 +0,0 @@ -Puppet Module - puppetlabs-rabbitmq - -Copyright 2017 Puppet, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file diff --git a/3rdparty/modules/rabbitmq/README.md b/3rdparty/modules/rabbitmq/README.md index 4bfb30c8a..72c1ea03a 100644 --- a/3rdparty/modules/rabbitmq/README.md +++ b/3rdparty/modules/rabbitmq/README.md @@ -1,142 +1,121 @@ -# rabbitmq +#rabbitmq -[![License](https://img.shields.io/github/license/voxpupuli/puppet-rabbitmq.svg)](https://github.com/voxpupuli/puppet-rabbitmq/blob/master/LICENSE) -[![Build Status](https://travis-ci.org/voxpupuli/puppet-rabbitmq.svg?branch=master)](https://travis-ci.org/voxpupuli/puppet-rabbitmq) -[![Code Coverage](https://coveralls.io/repos/github/voxpupuli/puppet-rabbitmq/badge.svg?branch=master)](https://coveralls.io/github/voxpupuli/puppet-rabbitmq) -[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/rabbitmq.svg)](https://forge.puppetlabs.com/puppet/rabbitmq) -[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/rabbitmq.svg)](https://forge.puppetlabs.com/puppet/rabbitmq) -[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/rabbitmq.svg)](https://forge.puppetlabs.com/puppet/rabbitmq) -[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/rabbitmq.svg)](https://forge.puppetlabs.com/puppet/rabbitmq) - -#### Table of Contents +####Table of Contents 1. [Overview](#overview) 2. [Module Description - What the module does and why it is useful](#module-description) 3. [Setup - The basics of getting started with rabbitmq](#setup) * [What rabbitmq affects](#what-rabbitmq-affects) * [Setup requirements](#setup-requirements) + * [Beginning with rabbitmq](#beginning-with-rabbitmq) 4. [Usage - Configuration options and additional functionality](#usage) 5. [Reference - An under-the-hood peek at what the module is doing and how](#reference) 5. [Limitations - OS compatibility, etc.](#limitations) * [RedHat module dependencies](#redhat-module-dependecies) 6. [Development - Guide for contributing to the module](#development) -## Overview +##Overview This module manages RabbitMQ (www.rabbitmq.com) -## Module Description +##Module Description The rabbitmq module sets up rabbitmq and has a number of providers to manage everything from vhosts to exchanges after setup. -This module has been tested against 3.5.x and 3.6.x (as well as earlier -versions) and is known to not support all features against versions -prior to 2.7.1. +This module has been tested against 2.7.1 and is known to not support +all features against earlier versions. -## Setup +##Setup -### What rabbitmq affects +###What rabbitmq affects * rabbitmq repository files. * rabbitmq package. * rabbitmq configuration file. * rabbitmq service. -## Usage +###Beginning with rabbitmq -All options and configuration can be done through interacting with the parameters -on the main rabbitmq class. -These are now documented via [Puppet Strings](https://github.com/puppetlabs/puppet-strings) -For convenience, some examples are duplicated here: +```puppet +include '::rabbitmq' +``` + +##Usage + +All options and configuration can be done through interacting with the parameters +on the main rabbitmq class. These are documented below. -## rabbitmq class +##rabbitmq class To begin with the rabbitmq class controls the installation of rabbitmq. In here you can control many parameters relating to the package and service, such as disabling puppet support of the service: ```puppet -class { 'rabbitmq': +class { '::rabbitmq': service_manage => false, port => '5672', delete_guest_user => true, } ``` -For RabbitMQ versions < 3.6.0 (which don't use Ranch), you will need to -manually set `config_ranch` to `false`. - -### Environment Variables -To use RabbitMQ Environment Variables, use the parameters `environment_variables` e.g.: +Or such as offline installation from intranet or local mirrors: ```puppet -class { 'rabbitmq': - port => 5672, - environment_variables => { - 'NODENAME' => 'node01', - 'SERVICENAME' => 'RabbitMQ' - } +class { '::rabbitmq': + key_content => template('openstack/rabbit.pub.key'), + package_gpg_key => '/tmp/rabbit.pub.key', } ``` -### Variables Configurable in rabbitmq.config -To change RabbitMQ Config Variables in rabbitmq.config, use the parameters `config_variables` e.g.: +And this one will use external package key source for any (apt/rpm) package provider: ```puppet -class { 'rabbitmq': - port => 5672, - config_variables => { - 'hipe_compile' => true, - 'frame_max' => 131072, - 'log_levels' => "[{connection, info}]" - } +class { '::rabbitmq': + package_gpg_key => 'http://www.some_site.some_domain/some_key.pub.key', } ``` -To change Erlang Kernel Config Variables in rabbitmq.config, use the parameters -`config_kernel_variables` e.g.: +### Environment Variables +To use RabbitMQ Environment Variables, use the parameters `environment_variables` e.g.: ```puppet class { 'rabbitmq': - port => 5672, - config_kernel_variables => { - 'inet_dist_listen_min' => 9100, - 'inet_dist_listen_max' => 9105, + port => '5672', + environment_variables => { + 'NODENAME' => 'node01', + 'SERVICENAME' => 'RabbitMQ' } } ``` -To change Management Plugin Config Variables in rabbitmq.config, use the parameters -`config_management_variables` e.g.: +### Variables Configurable in rabbitmq.config +To change RabbitMQ Config Variables in rabbitmq.config, use the parameters `config_variables` e.g.: ```puppet class { 'rabbitmq': - config_management_variables => { - 'rates_mode' => 'basic', + port => '5672', + config_variables => { + 'hipe_compile' => true, + 'frame_max' => 131072, + 'log_levels' => "[{connection, info}]" } } ``` -### Additional Variables Configurable in rabbitmq.config -To change Additional Config Variables in rabbitmq.config, use the parameter -`config_additional_variables` e.g.: +To change Erlang Kernel Config Variables in rabbitmq.config, use the parameters +`config_kernel_variables` e.g.: ```puppet class { 'rabbitmq': - config_additional_variables => { - 'autocluster' => '[{consul_service, "rabbit"},{cluster_name, "rabbit"}]', - 'foo' => '[{bar, "baz"}]' + port => '5672', + config_kernel_variables => { + 'inet_dist_listen_min' => 9100, + 'inet_dist_listen_max' => 9105, } } ``` -This will result in the following config appended to the config file: -``` -% Additional config - {autocluster, [{consul_service, "rabbit"},{cluster_name, "rabbit"}]}, - {foo, [{bar, "baz"}]} -``` -(This is required for the [autocluster plugin](https://github.com/aweber/rabbitmq-autocluster) ### Clustering To use RabbitMQ clustering facilities, use the rabbitmq parameters @@ -152,11 +131,296 @@ class { 'rabbitmq': } ``` +##Reference + +##Classes + +* rabbitmq: Main class for installation and service management. +* rabbitmq::config: Main class for rabbitmq configuration/management. +* rabbitmq::install: Handles package installation. +* rabbitmq::params: Different configuration data for different systems. +* rabbitmq::service: Handles the rabbitmq service. +* rabbitmq::repo::apt: Handles apt repo for Debian systems. +* rabbitmq::repo::rhel: Handles rpm repo for Redhat systems. + +###Parameters + +####`admin_enable` + +Boolean, if enabled sets up the management interface/plugin for RabbitMQ. + +####`cluster_node_type` + +Choose between disk and ram nodes. + +####`cluster_nodes` + +An array of nodes for clustering. + +####`cluster_partition_handling` + +Value to set for `cluster_partition_handling` RabbitMQ configuration variable. + +####`config` + +The file to use as the rabbitmq.config template. + +####`config_cluster` + +Boolean to enable or disable clustering support. + +####`config_kernel_variables` + +Hash of Erlang kernel configuration variables to set (see [Variables Configurable in rabbitmq.config](#variables-configurable-in-rabbitmq.config)). + +####`config_mirrored_queues` + +DEPRECATED + +Configuring queue mirroring should be done by setting the according policy for +the queue. You can read more about it +[here](http://www.rabbitmq.com/ha.html#genesis) + +####`config_path` + +The path to write the RabbitMQ configuration file to. + +####`config_stomp` + +Boolean to enable or disable stomp. + +####`config_variables` + +To set config variables in rabbitmq.config + +####`default_user` + +Username to set for the `default_user` in rabbitmq.config. + +####`default_pass` + +Password to set for the `default_user` in rabbitmq.config. + +####`delete_guest_user` + +Boolean to decide if we should delete the default guest user. + +####`env_config` + +The template file to use for rabbitmq_env.config. + +####`env_config_path` + +The path to write the rabbitmq_env.config file to. + +####`environment_variables` + +RabbitMQ Environment Variables in rabbitmq_env.config + +####`erlang_cookie` + +The erlang cookie to use for clustering - must be the same between all nodes. +This value has no default and must be set explicitly if using clustering. + +####`file_limit` + +Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with +`$::osfamily == 'Debian'` or `$::osfamily == 'RedHat'`. + +####`key_content` + +Uses content method for Debian OS family. Should be a template for apt::source +class. Overrides `package_gpg_key` behavior, if enabled. Undefined by default. + +####`ldap_auth` + +Boolean, set to true to enable LDAP auth. + +####`ldap_server` + +LDAP server to use for auth. + +####`ldap_user_dn_pattern` + +User DN pattern for LDAP auth. + +####`ldap_other_bind` + +How to bind to the LDAP server. Defaults to 'anon'. + +####`ldap_config_variables` + +Hash of other LDAP config variables. + +####`ldap_use_ssl` + +Boolean, set to true to use SSL for the LDAP server. + +####`ldap_port` + +Numeric port for LDAP server. + +####`ldap_log` + +Boolean, set to true to log LDAP auth. + +####`manage_repos` + +Boolean, whether or not to manage package repositories. + +####`management_port` + +The port for the RabbitMQ management interface. + +####`node_ip_address` + +The value of NODE_IP_ADDRESS in rabbitmq_env.config + +####`package_ensure` + +Determines the ensure state of the package. Set to installed by default, but could +be changed to latest. + +####`package_gpg_key` + +RPM package GPG key to import. Uses source method. Should be a URL for Debian/RedHat +OS family, or a file name for RedHat OS family. +Set to http://www.rabbitmq.com/rabbitmq-signing-key-public.asc by default. +Note, that `key_content`, if specified, would override this parameter for Debian OS family. + +####`package_name` + +The name of the package to install. + +####`package_provider` + +What provider to use to install the package. + +####`package_source` + +Where should the package be installed from? + +On Debian- and Arch-based systems using the default package provider, +this parameter is ignored and the package is installed from the +rabbitmq repository, if enabled with manage_repo => true, or from the +system repository otherwise. If you want to use dpkg as the +package_provider, you must specify a local package_source. + +####`plugin_dir` + +Location of RabbitMQ plugins. + +####`port` + +The RabbitMQ port. + +####`service_ensure` + +The state of the service. + +####`service_manage` + +Determines if the service is managed. + +####`service_name` + +The name of the service to manage. + +####`ssl` + +Configures the service for using SSL. + +####`ssl_only` + +Configures the service to only use SSL. No cleartext TCP listeners will be created. +Requires that ssl => true and port => UNSET also + +####`ssl_cacert` + +CA cert path to use for SSL. + +####`ssl_cert` + +Cert to use for SSL. + +####`ssl_key` + +Key to use for SSL. + +####`ssl_management_port` + +SSL management port. + +####`ssl_stomp_port` + +SSL stomp port. + +####`ssl_verify` + +rabbitmq.config SSL verify setting. + +####`ssl_fail_if_no_peer_cert` + +rabbitmq.config `fail_if_no_peer_cert` setting. + +####`ssl_versions` + +Choose which SSL versions to enable. Example: `['tlsv1.2', 'tlsv1.1']`. + +Note that it is recommended to disable `sslv3` and `tlsv1` to prevent against POODLE and BEAST attacks. Please see the [RabbitMQ SSL](https://www.rabbitmq.com/ssl.html) documentation for more information. + +####`ssl_ciphers` + +Support only a given list of SSL ciphers. Example: `['dhe_rsa,aes_256_cbc,sha','dhe_dss,aes_256_cbc,sha','ecdhe_rsa,aes_256_cbc,sha']`. + +Supported ciphers in your install can be listed with: + rabbitmqctl eval 'ssl:cipher_suites().' +Functionality can be tested with cipherscan or similar tool: https://github.com/jvehent/cipherscan.git + +####`stomp_port` + +The port to use for Stomp. + +####`stomp_ensure` + +Boolean to install the stomp plugin. + +####`tcp_keepalive` + +Boolean to enable TCP connection keepalive for RabbitMQ service. + +####`version` + +Sets the version to install. + +On Debian- and Arch-based operating systems, the version parameter is +ignored and the latest version is installed from the rabbitmq +repository, if enabled with manage_repo => true, or from the system +repository otherwise. + +####`wipe_db_on_cookie_change` + +Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database. + +####`rabbitmq_user` + +String: OS dependent, default defined in param.pp. The system user the rabbitmq daemon runs as. + +####`rabbitmq_group` + +String: OS dependent, default defined in param.pp. The system group the rabbitmq daemon runs as. + +####`rabbitmq_home` + +String: OS dependent. default defined in param.pp. The home directory of the rabbitmq deamon. + +##Native Types + ### rabbitmq\_user query all current users: `$ puppet resource rabbitmq_user` -```puppet +``` rabbitmq_user { 'dan': admin => true, password => 'bar', @@ -172,6 +436,7 @@ rabbitmq_user { 'dan': } ``` + ### rabbitmq\_vhost query all current vhosts: `$ puppet resource rabbitmq_vhost` @@ -186,14 +451,14 @@ rabbitmq_vhost { 'myvhost': ```puppet rabbitmq_exchange { 'myexchange@myvhost': - ensure => present, - user => 'dan', - password => 'bar', - type => 'topic', - internal => false, + user => 'dan', + password => 'bar', + type => 'topic', + ensure => present, + internal => false, auto_delete => false, - durable => true, - arguments => { + durable => true, + arguments => { hash-header => 'message-distribution-hash' } } @@ -203,15 +468,15 @@ rabbitmq_exchange { 'myexchange@myvhost': ```puppet rabbitmq_queue { 'myqueue@myvhost': - ensure => present, user => 'dan', password => 'bar', durable => true, auto_delete => false, arguments => { - x-message-ttl => 123, + x-message-ttl => 123, x-dead-letter-exchange => 'other' }, + ensure => present, } ``` @@ -219,40 +484,13 @@ rabbitmq_queue { 'myqueue@myvhost': ```puppet rabbitmq_binding { 'myexchange@myqueue@myvhost': - ensure => present, user => 'dan', password => 'bar', destination_type => 'queue', routing_key => '#', arguments => {}, -} -``` - -```puppet -rabbitmq_binding { 'binding 1': - ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key1', - arguments => {}, -} - -rabbitmq_binding { 'binding 2': ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key2', - arguments => {}, } - ``` ### rabbitmq\_user\_permissions @@ -289,45 +527,32 @@ rabbitmq_plugin {'rabbitmq_stomp': } ``` -### rabbitmq\_parameter +### rabbitmq\_erlang\_cookie -```puppet - rabbitmq_parameter { 'documentumShovel@/': - component_name => '', - value => { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue', - }, - } +This is essentially a private type used by the rabbitmq::config class +to manage the erlang cookie. It replaces the rabbitmq_erlang_cookie fact +from earlier versions of this module. It manages the content of the cookie +usually located at "${rabbitmq_home}/.erlang.cookie", which includes +stopping the rabbitmq service and wiping out the database at +"${rabbitmq_home}/mnesia" if the user agrees to it. We don't recommend using +this type directly. - rabbitmq_parameter { 'documentumFed@/': - component_name => 'federation-upstream', - value => { - 'uri' => 'amqp://myserver', - 'expires' => '360000', - }, - } -``` +##Limitations -## Reference +This module has been built on and tested against Puppet 3.x. -## Classes +The module has been tested on: -* rabbitmq: Main class for installation and service management. -* rabbitmq::config: Main class for rabbitmq configuration/management. -* rabbitmq::install: Handles package installation. -* rabbitmq::params: Different configuration data for different systems. -* rabbitmq::service: Handles the rabbitmq service. -* rabbitmq::repo::apt: Handles apt repo for Debian systems. -* rabbitmq::repo::rhel: Handles rpm repo for Redhat systems. +* RedHat Enterprise Linux 5/6 +* Debian 6/7 +* CentOS 5/6 +* Ubuntu 12.04/14.04 + +Testing on other platforms has been light and cannot be guaranteed. ### Module dependencies -If running CentOS/RHEL, ensure the epel repo, or another repo containing a -suitable Erlang version, is present. On Debian systems, puppetlabs/apt -(>=2.0.0 < 5.0.0) is a soft dependency. +If running CentOS/RHEL, and using the yum provider, ensure the epel repo is present. To have a suitable erlang version installed on RedHat and Debian systems, you have to install another puppet module from http://forge.puppetlabs.com/garethr/erlang with: @@ -349,19 +574,36 @@ For Debian systems: ensure => 'latest', } -This module also depends on voxpupuli/archive to install rabbitmqadmin. +This module also depends on the excellent nanliu/staging module on the Forge: + + puppet module install nanliu-staging + +### Downgrade Issues + +Be advised that there were configuration file syntax and other changes made between RabbitMQ +versions 2 and 3. In order to downgrade from 3 to 2 (not that this is a terribly good idea) +you will need to manually remove all RabbitMQ configuration files (``/etc/rabbitmq``) and +the mnesia directory (usually ``/var/lib/rabbitmq/mnesia``). The latter action will delete +any and all messages stored to disk. + +Failure to do this will result in RabbitMQ failing to start with a cryptic error message about +"init terminating in do_boot", containing "rabbit_upgrade,maybe_upgrade_mnesia". + +##Development -## Development +Puppet Labs modules on the Puppet Forge are open projects, and community +contributions are essential for keeping them great. We can’t access the +huge number of platforms and myriad of hardware, software, and deployment +configurations that Puppet is intended to serve. -This module is maintained by [Vox Pupuli](https://voxpupuli.org/). Voxpupuli -welcomes new contributions to this module, especially those that include -documentation and rspec tests. We are happy to provide guidance if necessary. +We want to keep it as easy as possible to contribute changes so that our +modules work in your environment. There are a few guidelines that we need +contributors to follow so that we can have a chance of keeping on top of things. -Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for more details. +You can read the complete module contribution guide [on the Puppet Labs wiki.](http://projects.puppetlabs.com/projects/module-site/wiki/Module_contributing) ### Authors * Jeff McCune * Dan Bode * RPM/RHEL packages by Vincent Janelle * Puppetlabs Module Team -* Voxpupuli Team diff --git a/3rdparty/modules/rabbitmq/REFERENCE.md b/3rdparty/modules/rabbitmq/REFERENCE.md deleted file mode 100644 index 7afb665ae..000000000 --- a/3rdparty/modules/rabbitmq/REFERENCE.md +++ /dev/null @@ -1,1968 +0,0 @@ -# Reference - - -## Table of Contents - -**Classes** - -* [`rabbitmq`](#rabbitmq): A module to manage RabbitMQ -* [`rabbitmq::config`](#rabbitmqconfig): Class: rabbitmq::config Sets all the configuration values for RabbitMQ and creates the directories for config and ssl. -* [`rabbitmq::install`](#rabbitmqinstall): Class rabbitmq::install Ensures that rabbitmq-server exists -* [`rabbitmq::install::rabbitmqadmin`](#rabbitmqinstallrabbitmqadmin): -* [`rabbitmq::management`](#rabbitmqmanagement): -* [`rabbitmq::params`](#rabbitmqparams): OS Specific parameters and other settings -* [`rabbitmq::repo::apt`](#rabbitmqrepoapt): requires puppetlabs-apt puppetlabs-stdlib -* [`rabbitmq::repo::rhel`](#rabbitmqreporhel): Class: rabbitmq::repo::rhel Makes sure that the Packagecloud repo is installed -* [`rabbitmq::server`](#rabbitmqserver): Class: rabbitmq::server This module manages the installation and config of the rabbitmq server it has only been tested on certain version -* [`rabbitmq::service`](#rabbitmqservice): Class: rabbitmq::service This class manages the rabbitmq server service itself. Parameters: Actions: Requires: Sample Usage: - -**Resource types** - -* [`rabbitmq_binding`](#rabbitmq_binding): Native type for managing rabbitmq bindings rabbitmq_binding { 'binding 1': ensure => present, source => 'myexchange' -* [`rabbitmq_erlang_cookie`](#rabbitmq_erlang_cookie): Type to manage the rabbitmq erlang cookie securely This is essentially a private type used by the rabbitmq::config class to manage the erlan -* [`rabbitmq_exchange`](#rabbitmq_exchange): Native type for managing rabbitmq exchanges -* [`rabbitmq_parameter`](#rabbitmq_parameter): Type for managing rabbitmq parameters -* [`rabbitmq_plugin`](#rabbitmq_plugin): manages rabbitmq plugins -* [`rabbitmq_policy`](#rabbitmq_policy): Type for managing rabbitmq policies -* [`rabbitmq_queue`](#rabbitmq_queue): Native type for managing rabbitmq queue -* [`rabbitmq_user`](#rabbitmq_user): Native type for managing rabbitmq users -* [`rabbitmq_user_permissions`](#rabbitmq_user_permissions): Type for managing rabbitmq user permissions -* [`rabbitmq_vhost`](#rabbitmq_vhost): Native type for managing rabbitmq vhosts - -## Classes - -### rabbitmq - -rabbitmq - - @param $loopback_users. default defined in param.pp. This option configures a list of users to allow access via the loopback interfaces - -#### Examples - -##### Basic usage - -```puppet -include rabbitmq -``` - -##### rabbitmq class - -```puppet -class { 'rabbitmq': - service_manage => false, - port => '5672', - delete_guest_user => true, -} -``` - -##### Offline installation from local mirror: - -```puppet - -class { 'rabbitmq': - key_content => template('openstack/rabbit.pub.key'), - package_gpg_key => '/tmp/rabbit.pub.key', -} -``` - -##### Use external package key source for any (apt/rpm) package provider: - -```puppet -class { 'rabbitmq': - package_gpg_key => 'http://www.some_site.some_domain/some_key.pub.key', -} -``` - -##### To use RabbitMQ Environment Variables, use the parameters `environment_variables` e.g.: - -```puppet - -class { 'rabbitmq': - port => '5672', - environment_variables => { - 'NODENAME' => 'node01', - 'SERVICENAME' => 'RabbitMQ' - } -} -``` - -##### Change RabbitMQ Config Variables in rabbitmq.config: - -```puppet - -class { 'rabbitmq': - port => '5672', - config_variables => { - 'hipe_compile' => true, - 'frame_max' => 131072, - 'log_levels' => "[{connection, info}]" - } -} -``` - -##### Change Erlang Kernel Config Variables in rabbitmq.config - -```puppet -class { 'rabbitmq': - port => '5672', - config_kernel_variables => { - 'inet_dist_listen_min' => 9100, - 'inet_dist_listen_max' => 9105, - } -} -``` - -##### Change Management Plugin Config Variables in rabbitmq.config - -```puppet -class { 'rabbitmq': - config_management_variables => { - 'rates_mode' => 'basic', - } -} -``` - -##### Change Additional Config Variables in rabbitmq.config - -```puppet -class { 'rabbitmq': - config_additional_variables => { - 'autocluster' => '[{consul_service, "rabbit"},{cluster_name, "rabbit"}]', - 'foo' => '[{bar, "baz"}]' - } -} -This will result in the following config appended to the config file: -{autocluster, [{consul_service, "rabbit"},{cluster_name, "rabbit"}]}, - {foo, [{bar, "baz"}]} -(This is required for the [autocluster plugin](https://github.com/aweber/rabbitmq-autocluster) -``` - -##### Use RabbitMQ clustering facilities - -```puppet -class { 'rabbitmq': - config_cluster => true, - cluster_nodes => ['rabbit1', 'rabbit2'], - cluster_node_type => 'ram', - erlang_cookie => 'A_SECRET_COOKIE_STRING', - wipe_db_on_cookie_change => true, -} -``` - -#### Parameters - -The following parameters are available in the `rabbitmq` class. - -##### `admin_enable` - -Data type: `Boolean` - -If enabled sets up the management interface/plugin for RabbitMQ. - -Default value: $rabbitmq::params::admin_enable - -##### `auth_backends` - -Data type: `Optional[Array]` - -An array specifying authorization/authentication backend to use. Single quotes should be placed around array entries, ex. ['{foo, baz}', 'baz'] Defaults to [rabbit_auth_backend_internal], and if using LDAP defaults to [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]. - -Default value: `undef` - -##### `cluster_node_type` - -Data type: `Enum['ram', 'disk', 'disc']` - -Choose between disc and ram nodes. - -Default value: $rabbitmq::params::cluster_node_type - -##### `cluster_nodes` - -Data type: `Array` - -An array of nodes for clustering. - -Default value: $rabbitmq::params::cluster_nodes - -##### `cluster_partition_handling` - -Data type: `String` - -Value to set for `cluster_partition_handling` RabbitMQ configuration variable. - -Default value: $rabbitmq::params::cluster_partition_handling - -##### `collect_statistics_interval` - -Data type: `Optional[Integer]` - -Set the collect_statistics_interval in rabbitmq.config - -Default value: `undef` - -##### `config` - -Data type: `String` - -The file to use as the rabbitmq.config template. - -Default value: $rabbitmq::params::config - -##### `config_additional_variables` - -Data type: `Hash` - -Additional config variables in rabbitmq.config - -Default value: $rabbitmq::params::config_additional_variables - -##### `config_cluster` - -Data type: `Boolean` - -Enable or disable clustering support. - -Default value: $rabbitmq::params::config_cluster - -##### `config_kernel_variables` - -Data type: `Hash` - -Hash of Erlang kernel configuration variables to set (see [Variables Configurable in rabbitmq.config](#variables-configurable-in-rabbitmq.config)). - -Default value: $rabbitmq::params::config_kernel_variables - -##### `config_path` - -Data type: `Stdlib::Absolutepath` - -The path to write the RabbitMQ configuration file to. - -Default value: $rabbitmq::params::config_path - -##### `config_management_variables` - -Data type: `Hash` - -Hash of configuration variables for the [Management Plugin](https://www.rabbitmq.com/management.html). - -Default value: $rabbitmq::params::config_management_variables - -##### `config_stomp` - -Data type: `Boolean` - -Enable or disable stomp. - -Default value: $rabbitmq::params::config_stomp - -##### `config_shovel` - -Data type: `Boolean` - -Enable or disable shovel. - -Default value: $rabbitmq::params::config_shovel - -##### `config_shovel_statics` - -Data type: `Hash` - -Hash of static shovel configurations - -Default value: $rabbitmq::params::config_shovel_statics - -##### `config_variables` - -Data type: `Hash` - -To set config variables in rabbitmq.config - -Default value: $rabbitmq::params::config_variables - -##### `default_user` - -Data type: `String` - -Username to set for the `default_user` in rabbitmq.config. - -Default value: $rabbitmq::params::default_user - -##### `default_pass` - -Data type: `String` - -Password to set for the `default_user` in rabbitmq.config. - -Default value: $rabbitmq::params::default_pass - -##### `delete_guest_user` - -Data type: `Boolean` - -Controls whether default guest user is deleted. - -Default value: $rabbitmq::params::delete_guest_user - -##### `env_config` - -Data type: `String` - -The template file to use for rabbitmq_env.config. - -Default value: $rabbitmq::params::env_config - -##### `env_config_path` - -Data type: `Stdlib::Absolutepath` - -The path to write the rabbitmq_env.config file to. - -Default value: $rabbitmq::params::env_config_path - -##### `environment_variables` - -Data type: `Hash` - -RabbitMQ Environment Variables in rabbitmq_env.config - -Default value: $rabbitmq::params::environment_variables - -##### `erlang_cookie` - -Data type: `Optional[String]` - -The erlang cookie to use for clustering - must be the same between all nodes. This value has no default and must be -set explicitly if using clustering. If you run Pacemaker and you don't want to use RabbitMQ buildin cluster, you can set config_cluster -to 'False' and set 'erlang_cookie'. - -Default value: `undef` - -##### `file_limit` - -Data type: `Variant[Integer[-1],Enum['unlimited'],Pattern[/^(infinity|\d+(:(infinity|\d+))?)$/]]` - -Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with `$::osfamily == 'Debian'` or -`$::osfamily == 'RedHat'`. - -Default value: $rabbitmq::params::file_limit - -##### `heartbeat` - -Data type: `Optional[Integer]` - -Set the heartbeat timeout interval, default is unset which uses the builtin server defaults of 60 seconds. Setting this - -Default value: `undef` - -##### `inetrc_config` - -Data type: `String` - -Template to use for the inetrc config - -Default value: $rabbitmq::params::inetrc_config - -##### `inetrc_config_path` - -Data type: `Stdlib::Absolutepath` - -Path of the file to push the inetrc config to. - -Default value: $rabbitmq::params::inetrc_config_path - -##### `ipv6` - -Data type: `Boolean` - -Whether to listen on ipv6 - -Default value: $rabbitmq::params::ipv6 - -##### `interface` - -Data type: `Optional[String]` - -Interface to bind to (sets tcp_listeners parameter). By default, bind to all interfaces -to `0` will disable heartbeats. - -Default value: `undef` - -##### `key_content` - -Data type: `Optional[String]` - -Uses content method for Debian OS family. Should be a template for apt::source class. Overrides `package_gpg_key` -behavior, if enabled. Undefined by default. - -Default value: `undef` - -##### `ldap_auth` - -Data type: `Boolean` - -Set to true to enable LDAP auth. - -Default value: $rabbitmq::params::ldap_auth - -##### `ldap_server` - -Data type: `String` - -LDAP server to use for auth. - -Default value: $rabbitmq::params::ldap_server - -##### `ldap_user_dn_pattern` - -Data type: `Optional[String]` - -User DN pattern for LDAP auth. - -Default value: $rabbitmq::params::ldap_user_dn_pattern - -##### `ldap_other_bind` - -Data type: `String` - -How to bind to the LDAP server. Defaults to 'anon'. - -Default value: $rabbitmq::params::ldap_other_bind - -##### `ldap_config_variables` - -Data type: `Hash` - -Hash of other LDAP config variables. - -Default value: $rabbitmq::params::ldap_config_variables - -##### `ldap_use_ssl` - -Data type: `Boolean` - -Set to true to use SSL for the LDAP server. - -Default value: $rabbitmq::params::ldap_use_ssl - -##### `ldap_port` - -Data type: `Integer[1, 65535]` - -Numeric port for LDAP server. - -Default value: $rabbitmq::params::ldap_port - -##### `ldap_log` - -Data type: `Boolean` - -Set to true to log LDAP auth. - -Default value: $rabbitmq::params::ldap_log - -##### `manage_python` - -Data type: `Boolean` - -If enabled, on platforms that don't provide a Python 2 package by default, ensure that the python package is -installed (for rabbitmqadmin). This will only apply if `admin_enable` and `service_manage` are set. - -Default value: $rabbitmq::params::manage_python - -##### `management_hostname` - -Data type: `Optional[String]` - -The hostname for the RabbitMQ management interface. - -Default value: `undef` - -##### `management_port` - -Data type: `Integer[1, 65535]` - -The port for the RabbitMQ management interface. - -Default value: $rabbitmq::params::management_port - -##### `management_ip_address` - -Data type: `Optional[String]` - -Allows you to set the IP for management interface to bind to separately. Set to 127.0.0.1 to bind to -localhost only, or 0.0.0.0 to bind to all interfaces. - -Default value: `undef` - -##### `management_ssl` - -Data type: `Boolean` - -Enable/Disable SSL for the management port. Has an effect only if ssl => true. - -Default value: $rabbitmq::params::management_ssl - -##### `node_ip_address` - -Data type: `Optional[String]` - -Allows you to set the IP for RabbitMQ service to bind to. Set to 127.0.0.1 to bind to localhost only, or 0.0.0.0 -to bind to all interfaces. - -Default value: `undef` - -##### `package_apt_pin` - -Data type: `Optional[Variant[Numeric, String]]` - -Whether to pin the package to a particular source - -Default value: `undef` - -##### `package_ensure` - -Data type: `String` - -Determines the ensure state of the package. Set to installed by default, but could be changed to latest. - -Default value: $rabbitmq::params::package_ensure - -##### `package_gpg_key` - -Data type: `Optional[String]` - -RPM package GPG key to import. Uses source method. Should be a URL for Debian/RedHat OS family, or a file name for -RedHat OS family. Set to https://packagecloud.io/gpg.key by default. Note, that `key_content`, if specified, would override this -parameter for Debian OS family. - -Default value: $rabbitmq::params::package_gpg_key - -##### `package_name` - -Data type: `Variant[String, Array]` - -Name(s) of the package(s) to install - -Default value: $rabbitmq::params::package_name - -##### `port` - -Data type: `Integer` - -The RabbitMQ port. - -Default value: $rabbitmq::params::port - -##### `repos_ensure` - -Data type: `Boolean` - -Ensure that a repo with the official (and newer) RabbitMQ package is configured, along with its signing key. -Defaults to false (use system packages). This does not ensure that soft dependencies (like EPEL on RHEL systems) are present. - -Default value: $rabbitmq::params::repos_ensure - -##### `service_ensure` - -Data type: `Enum['running', 'stopped']` - -The state of the service. - -Default value: $rabbitmq::params::service_ensure - -##### `service_manage` - -Data type: `Boolean` - -Determines if the service is managed. - -Default value: $rabbitmq::params::service_manage - -##### `service_name` - -Data type: `String` - -The name of the service to manage. - -Default value: $rabbitmq::params::service_name - -##### `ssl` - -Data type: `Boolean` - -Configures the service for using SSL. -port => UNSET - -Default value: $rabbitmq::params::ssl - -##### `ssl_cacert` - -Data type: `Optional[Stdlib::Absolutepath]` - -CA cert path to use for SSL. - -Default value: `undef` - -##### `ssl_cert` - -Data type: `Optional[Stdlib::Absolutepath]` - -Cert to use for SSL. - -Default value: `undef` - -##### `ssl_cert_password` - -Data type: `Optional[String]` - -Password used when generating CSR. - -Default value: `undef` - -##### `ssl_depth` - -Data type: `Optional[Integer]` - -SSL verification depth. - -Default value: `undef` - -##### `ssl_dhfile` - -Data type: `Optional[Stdlib::Absolutepath]` - -Use this dhparam file [example: generate with `openssl dhparam -out /etc/rabbitmq/ssl/dhparam.pem 2048` - -Default value: `undef` - -##### `ssl_erl_dist` - -Data type: `Boolean` - -Whether to use the erlang package's SSL (relies on the ssl_erl_path fact) - -Default value: $rabbitmq::params::ssl_erl_dist - -##### `ssl_honor_cipher_order` - -Data type: `Boolean` - -Force use of server cipher order - -Default value: $rabbitmq::params::ssl_honor_cipher_order - -##### `ssl_interface` - -Data type: `Optional[String]` - -Interface for SSL listener to bind to - -Default value: `undef` - -##### `ssl_key` - -Data type: `Optional[Stdlib::Absolutepath]` - -Key to use for SSL. - -Default value: `undef` - -##### `ssl_only` - -Data type: `Boolean` - -Configures the service to only use SSL. No cleartext TCP listeners will be created. Requires that ssl => true and - -Default value: $rabbitmq::params::ssl_only - -##### `ssl_management_port` - -Data type: `Integer[1, 65535]` - -SSL management port. - -Default value: $rabbitmq::params::ssl_management_port - -##### `ssl_port` - -Data type: `Integer[1, 65535]` - -SSL port for RabbitMQ - -Default value: $rabbitmq::params::ssl_port - -##### `ssl_reuse_sessions` - -Data type: `Boolean` - -Reuse ssl sessions - -Default value: $rabbitmq::params::ssl_reuse_sessions - -##### `ssl_secure_renegotiate` - -Data type: `Boolean` - -Use ssl secure renegotiate - -Default value: $rabbitmq::params::ssl_secure_renegotiate - -##### `ssl_stomp_port` - -Data type: `Integer[1, 65535]` - -SSL stomp port. - -Default value: $rabbitmq::params::ssl_stomp_port - -##### `ssl_verify` - -Data type: `Enum['verify_none','verify_peer']` - -rabbitmq.config SSL verify setting. - -Default value: $rabbitmq::params::ssl_verify - -##### `ssl_fail_if_no_peer_cert` - -Data type: `Boolean` - -rabbitmq.config `fail_if_no_peer_cert` setting. - -Default value: $rabbitmq::params::ssl_fail_if_no_peer_cert - -##### `ssl_management_verify` - -Data type: `Enum['verify_none','verify_peer']` - -rabbitmq.config SSL verify setting for rabbitmq_management. - -Default value: $rabbitmq::params::ssl_management_verify - -##### `ssl_manaagement_fail_if_no_peer_cert` - -rabbitmq.config `fail_if_no_peer_cert` setting for rabbitmq_management. - -##### `ssl_versions` - -Data type: `Optional[Array]` - -Choose which SSL versions to enable. Example: `['tlsv1.2', 'tlsv1.1']` Note that it is recommended to disable `sslv3 -and `tlsv1` to prevent against POODLE and BEAST attacks. Please see the [RabbitMQ SSL](https://www.rabbitmq.com/ssl.html) documentation -for more information. - -Default value: `undef` - -##### `ssl_ciphers` - -Data type: `Array` - -Support only a given list of SSL ciphers. Example: `['dhe_rsa,aes_256_cbc,sha','dhe_dss,aes_256_cbc,sha', -'ecdhe_rsa,aes_256_cbc,sha']`. Supported ciphers in your install can be listed with: rabbitmqctl eval 'ssl:cipher_suites().' -Functionality can be tested with cipherscan or similar tool: https://github.com/jvehent/cipherscan.git - -Default value: $rabbitmq::params::ssl_ciphers - -##### `stomp_port` - -Data type: `Integer[1, 65535]` - -The port to use for Stomp. - -Default value: $rabbitmq::params::stomp_port - -##### `stomp_ssl_only` - -Data type: `Boolean` - -Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be created. Requires setting -ssl_stomp_port also. - -Default value: $rabbitmq::params::stomp_ssl_only - -##### `stomp_ensure` - -Data type: `Boolean` - -Enable to install the stomp plugin. - -Default value: $rabbitmq::params::stomp_ensure - -##### `tcp_backlog` - -Data type: `Integer` - -The size of the backlog on TCP connections. - -Default value: $rabbitmq::params::tcp_backlog - -##### `tcp_keepalive` - -Data type: `Boolean` - -Enable TCP connection keepalive for RabbitMQ service. - -Default value: $rabbitmq::params::tcp_keepalive - -##### `tcp_recbuf` - -Data type: `Optional[Integer]` - -Corresponds to recbuf in RabbitMQ `tcp_listen_options` - -Default value: `undef` - -##### `tcp_sndbuf` - -Data type: `Optional[Integer]` - -Integer, corresponds to sndbuf in RabbitMQ `tcp_listen_options` - -Default value: `undef` - -##### `wipe_db_on_cookie_change` - -Data type: `Boolean` - -Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database. - -Default value: $rabbitmq::params::wipe_db_on_cookie_change - -##### `rabbitmq_user` - -Data type: `String` - -OS dependent, default defined in param.pp. The system user the rabbitmq daemon runs as. - -Default value: $rabbitmq::params::rabbitmq_user - -##### `rabbitmq_group` - -Data type: `String` - -OS dependent, default defined in param.pp. The system group the rabbitmq daemon runs as. - -Default value: $rabbitmq::params::rabbitmq_group - -##### `rabbitmq_home` - -Data type: `Stdlib::Absolutepath` - -OS dependent. default defined in param.pp. The home directory of the rabbitmq deamon. - -Default value: $rabbitmq::params::rabbitmq_home - -##### `$rabbitmqadmin_package` - -OS dependent. default defined in param.pp. If undef: install rabbitmqadmin via archive, otherwise via package - -##### `$archive_options.` - -default defined in param.pp. Extra options to Archive resource to download rabbitmqadmin file - -##### `config_ranch` - -Data type: `Boolean` - - - -Default value: $rabbitmq::params::config_ranch - -##### `package_source` - -Data type: `Optional[String]` - - - -Default value: `undef` - -##### `package_provider` - -Data type: `Optional[String]` - - - -Default value: `undef` - -##### `ssl_management_fail_if_no_peer_cert` - -Data type: `Boolean` - - - -Default value: $rabbitmq::params::ssl_management_fail_if_no_peer_cert - -##### `rabbitmqadmin_package` - -Data type: `Optional[String]` - - - -Default value: $rabbitmq::params::rabbitmqadmin_package - -##### `archive_options` - -Data type: `Array` - - - -Default value: $rabbitmq::params::archive_options - -##### `loopback_users` - -Data type: `Array` - - - -Default value: $rabbitmq::params::loopback_users - -### rabbitmq::config - -Class: rabbitmq::config -Sets all the configuration values for RabbitMQ and creates the directories for -config and ssl. - -### rabbitmq::install - -Class rabbitmq::install -Ensures that rabbitmq-server exists - -### rabbitmq::install::rabbitmqadmin - -The rabbitmq::install::rabbitmqadmin class. - -### rabbitmq::management - -The rabbitmq::management class. - -### rabbitmq::params - -rabbitmq::params - -### rabbitmq::repo::apt - -requires - puppetlabs-apt - puppetlabs-stdlib - -#### Parameters - -The following parameters are available in the `rabbitmq::repo::apt` class. - -##### `location` - -Data type: `String` - - - -Default value: 'https://packagecloud.io/rabbitmq/rabbitmq-server' - -##### `repos` - -Data type: `String` - - - -Default value: 'main' - -##### `include_src` - -Data type: `Boolean` - - - -Default value: `false` - -##### `key` - -Data type: `String` - - - -Default value: '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB' - -##### `key_source` - -Data type: `String` - - - -Default value: $rabbitmq::package_gpg_key - -##### `key_content` - -Data type: `Optional[String]` - - - -Default value: $rabbitmq::key_content - -##### `architecture` - -Data type: `Optional[String]` - - - -Default value: `undef` - -### rabbitmq::repo::rhel - -Class: rabbitmq::repo::rhel -Makes sure that the Packagecloud repo is installed - -#### Parameters - -The following parameters are available in the `rabbitmq::repo::rhel` class. - -##### `location` - -Data type: `Any` - - - -Default value: "https://packagecloud.io/rabbitmq/rabbitmq-server/el/${facts['os'][release][major]}/\$basearch" - -##### `key_source` - -Data type: `String` - - - -Default value: $rabbitmq::package_gpg_key - -### rabbitmq::server - -Class: rabbitmq::server - -This module manages the installation and config of the rabbitmq server - it has only been tested on certain version of debian-ish systems -Parameters: - [*port*] - port where rabbitmq server is hosted - [*delete_guest_user*] - rather or not to delete the default user - [*version*] - deprecated -- does nothing - [*package_name*] - name of rabbitmq package - [*service_name*] - name of rabbitmq service - [*service_ensure*] - desired ensure state for service - [*stomp_port*] - port stomp should be listening on - [*node_ip_address*] - ip address for rabbitmq to bind to - [*config*] - contents of config file - [*env_config*] - contents of env-config file - [*config_cluster*] - whether to configure a RabbitMQ cluster - [*cluster_nodes*] - which nodes to cluster with (including the current one) - [*cluster_node_type*] - Type of cluster node (disc/disk or ram) - [*erlang_cookie*] - erlang cookie, must be the same for all nodes in a cluster - [*wipe_db_on_cookie_change*] - whether to wipe the RabbitMQ data if the specified - erlang_cookie differs from the current one. This is a sad parameter: actually, - if the cookie indeed differs, then wiping the database is the *only* thing you - can do. You're only required to set this parameter to true as a sign that you - realise this. -Requires: - stdlib -Sample Usage: - -This module is used as backward compability layer for modules -which require rabbitmq::server instead of rabbitmq class. -It's still common uasge in many modules. - - -[Remember: No empty lines between comments and class definition] - -#### Parameters - -The following parameters are available in the `rabbitmq::server` class. - -##### `port` - -Data type: `Any` - - - -Default value: $rabbitmq::params::port - -##### `delete_guest_user` - -Data type: `Any` - - - -Default value: $rabbitmq::params::delete_guest_user - -##### `package_name` - -Data type: `Any` - - - -Default value: $rabbitmq::params::package_name - -##### `service_name` - -Data type: `Any` - - - -Default value: $rabbitmq::params::service_name - -##### `service_ensure` - -Data type: `Any` - - - -Default value: $rabbitmq::params::service_ensure - -##### `service_manage` - -Data type: `Any` - - - -Default value: $rabbitmq::params::service_manage - -##### `config_stomp` - -Data type: `Any` - - - -Default value: $rabbitmq::params::config_stomp - -##### `stomp_port` - -Data type: `Any` - - - -Default value: $rabbitmq::params::stomp_port - -##### `config_cluster` - -Data type: `Any` - - - -Default value: $rabbitmq::params::config_cluster - -##### `cluster_nodes` - -Data type: `Any` - - - -Default value: $rabbitmq::params::cluster_nodes - -##### `cluster_node_type` - -Data type: `Any` - - - -Default value: $rabbitmq::params::cluster_node_type - -##### `node_ip_address` - -Data type: `Any` - - - -Default value: $rabbitmq::params::node_ip_address - -##### `config` - -Data type: `Any` - - - -Default value: $rabbitmq::params::config - -##### `env_config` - -Data type: `Any` - - - -Default value: $rabbitmq::params::env_config - -##### `erlang_cookie` - -Data type: `Any` - - - -Default value: $rabbitmq::params::erlang_cookie - -##### `wipe_db_on_cookie_change` - -Data type: `Any` - - - -Default value: $rabbitmq::params::wipe_db_on_cookie_change - -### rabbitmq::service - -Class: rabbitmq::service - - This class manages the rabbitmq server service itself. - -Parameters: - -Actions: - -Requires: - -Sample Usage: - -#### Parameters - -The following parameters are available in the `rabbitmq::service` class. - -##### `service_ensure` - -Data type: `Enum['running', 'stopped']` - - - -Default value: $rabbitmq::service_ensure - -##### `service_manage` - -Data type: `Boolean` - - - -Default value: $rabbitmq::service_manage - -##### `service_name` - -Data type: `Any` - - - -Default value: $rabbitmq::service_name - -## Resource types - -### rabbitmq_binding - -Native type for managing rabbitmq bindings - -rabbitmq_binding { 'binding 1': - ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key1', - arguments => {}, -} - -rabbitmq_binding { 'binding 2': - ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key2', - arguments => {}, -} - -#### Examples - -##### Create a rabbitmq_binding - -```puppet -rabbitmq_binding { 'myexchange@myqueue@myvhost': - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => '#', - arguments => {}, - ensure => present, -} -``` - -##### Create bindings with same source / destination / vhost but different routing key using individual parameters - -```puppet - -``` - -#### Properties - -The following properties are available in the `rabbitmq_binding` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -##### `source` - -Valid values: %r{^\S+$} - -namevar - -source of binding - -##### `destination` - -Valid values: %r{^\S+$} - -namevar - -destination of binding - -##### `vhost` - -Valid values: %r{^\S+$} - -namevar - -vhost - -Default value: / - -##### `routing_key` - -Valid values: %r{^\S*$} - -namevar - -binding routing_key - -##### `destination_type` - -Valid values: %r{queue|exchange} - -binding destination_type - -Default value: queue - -##### `arguments` - -binding arguments - -#### Parameters - -The following parameters are available in the `rabbitmq_binding` type. - -##### `name` - -namevar - -resource name, either source@destination@vhost or arbitrary name with params - -##### `user` - -Valid values: %r{^\S+$} - -The user to use to connect to rabbitmq - -Default value: guest - -##### `password` - -Valid values: %r{\S+} - -The password to use to connect to rabbitmq - -Default value: guest - -### rabbitmq_erlang_cookie - -Type to manage the rabbitmq erlang cookie securely - -This is essentially a private type used by the rabbitmq::config class -to manage the erlang cookie. It replaces the rabbitmq_erlang_cookie fact -from earlier versions of this module. It manages the content of the cookie -usually located at "${rabbitmq_home}/.erlang.cookie", which includes -stopping the rabbitmq service and wiping out the database at -"${rabbitmq_home}/mnesia" if the user agrees to it. We don't recommend using -this type directly. - -#### Properties - -The following properties are available in the `rabbitmq_erlang_cookie` type. - -##### `content` - -Valid values: %r{^\S+$} - -Content of cookie - -#### Parameters - -The following parameters are available in the `rabbitmq_erlang_cookie` type. - -##### `path` - - - -##### `force` - -Valid values: `true`, `false` - - - -Default value: `false` - -##### `rabbitmq_user` - - - -Default value: rabbitmq - -##### `rabbitmq_group` - - - -Default value: rabbitmq - -##### `rabbitmq_home` - - - -Default value: /var/lib/rabbitmq - -##### `service_name` - -Valid values: %r{^\S+$} - - - -### rabbitmq_exchange - -Native type for managing rabbitmq exchanges - -#### Examples - -##### Create a rabbitmq_exchange - -```puppet -rabbitmq_exchange { 'myexchange@myvhost': - user => 'dan', - password => 'bar', - type => 'topic', - ensure => present, - internal => false, - auto_delete => false, - durable => true, - arguments => { - hash-header => 'message-distribution-hash' - } -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_exchange` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -#### Parameters - -The following parameters are available in the `rabbitmq_exchange` type. - -##### `name` - -Valid values: %r{^\S*@\S+$} - -namevar - -Name of exchange - -##### `type` - -Valid values: %r{^\S+$} - -Exchange type to be set *on creation* - -##### `durable` - -Valid values: %r{^\S+$} - -Exchange durability to be set *on creation* - -Default value: `false` - -##### `auto_delete` - -Valid values: %r{^\S+$} - -Exchange auto delete option to be set *on creation* - -Default value: `false` - -##### `internal` - -Valid values: %r{^\S+$} - -Exchange internal option to be set *on creation* - -Default value: `false` - -##### `arguments` - -Exchange arguments example: {"hash-header": "message-distribution-hash"} - -##### `user` - -Valid values: %r{^\S+$} - -The user to use to connect to rabbitmq - -Default value: guest - -##### `password` - -Valid values: %r{\S+} - -The password to use to connect to rabbitmq - -Default value: guest - -### rabbitmq_parameter - -Type for managing rabbitmq parameters - -#### Examples - -##### Create some rabbitmq_parameter resources - -```puppet -rabbitmq_parameter { 'documentumShovel@/': - component_name => '', - value => { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue', - }, -} -rabbitmq_parameter { 'documentumFed@/': - component_name => 'federation-upstream', - value => { - 'uri' => 'amqp://myserver', - 'expires' => '360000', - }, -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_parameter` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -##### `component_name` - -The component_name to use when setting parameter, eg: shovel or federation - -##### `value` - -A hash of values to use with the component name you are setting - -#### Parameters - -The following parameters are available in the `rabbitmq_parameter` type. - -##### `name` - -Valid values: %r{^\S+@\S+$} - -namevar - -combination of name@vhost to set parameter for - -### rabbitmq_plugin - -manages rabbitmq plugins - -#### Examples - -##### query all currently enabled plugins - -```puppet -$ puppet resource rabbitmq_plugin -``` - -##### Ensure a rabbitmq_plugin resource - -```puppet -rabbitmq_plugin {'rabbitmq_stomp': - ensure => present, -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_plugin` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -#### Parameters - -The following parameters are available in the `rabbitmq_plugin` type. - -##### `name` - -Valid values: %r{^\S+$} - -namevar - -The name of the plugin to enable - -##### `umask` - -Sets the octal umask to be used while creating this resource - -Default value: 0022 - -### rabbitmq_policy - -Type for managing rabbitmq policies - -#### Examples - -##### Create a rabbitmq_policy - -```puppet -rabbitmq_policy { 'ha-all@myvhost': - pattern => '.*', - priority => 0, - applyto => 'all', - definition => { - 'ha-mode' => 'all', - 'ha-sync-mode' => 'automatic', - }, -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_policy` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -##### `pattern` - -policy pattern - -##### `applyto` - -Valid values: all, exchanges, queues - -policy apply to - -Default value: all - -##### `definition` - -policy definition - -##### `priority` - -Valid values: %r{^\d+$} - -policy priority - -Default value: 0 - -#### Parameters - -The following parameters are available in the `rabbitmq_policy` type. - -##### `name` - -Valid values: %r{^\S+@\S+$} - -namevar - -combination of policy@vhost to create policy for - -### rabbitmq_queue - -Native type for managing rabbitmq queue - -#### Examples - -##### Create a rabbitmq_queue - -```puppet -rabbitmq_queue { 'myqueue@myvhost': - ensure => present, - user => 'dan', - password => 'bar', - durable => true, - auto_delete => false, - arguments => { - x-message-ttl => 123, - x-dead-letter-exchange => 'other' - }, -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_queue` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -#### Parameters - -The following parameters are available in the `rabbitmq_queue` type. - -##### `name` - -Valid values: %r{^\S*@\S+$} - -namevar - -Name of queue - -##### `durable` - -Valid values: %r{true|false} - -Queue is durable - -Default value: `true` - -##### `auto_delete` - -Valid values: %r{true|false} - -Queue will be auto deleted - -Default value: `false` - -##### `arguments` - -Queue arguments example: {x-message-ttl => 60, x-expires => 10} - -##### `user` - -Valid values: %r{^\S+$} - -The user to use to connect to rabbitmq - -Default value: guest - -##### `password` - -Valid values: %r{\S+} - -The password to use to connect to rabbitmq - -Default value: guest - -### rabbitmq_user - -Native type for managing rabbitmq users - -#### Examples - -##### query all current users - -```puppet -$ puppet resource rabbitmq_user -``` - -##### Configure a user, dan - -```puppet -rabbitmq_user { 'dan': - admin => true, - password => 'bar', -} -``` - -##### Optional parameter tags will set further rabbitmq tags like monitoring, policymaker, etc. - -```puppet -To set the administrator tag use admin-flag. -rabbitmq_user { 'dan': - admin => true, - password => 'bar', - tags => ['monitoring', 'tag1'], -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_user` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -##### `password` - -User password to be set *on creation* and validated each run - -##### `admin` - -Valid values: %r{true|false} - -whether or not user should be an admin - -Default value: false - -##### `tags` - -additional tags for the user - -Default value: [] - -#### Parameters - -The following parameters are available in the `rabbitmq_user` type. - -##### `name` - -Valid values: %r{^\S+$} - -namevar - -Name of user - -### rabbitmq_user_permissions - -Type for managing rabbitmq user permissions - -#### Examples - -##### Define some rabbitmq_user_permissions - -```puppet -rabbitmq_user_permissions { 'dan@myvhost': - configure_permission => '.*', - read_permission => '.*', - write_permission => '.*', -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_user_permissions` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -##### `configure_permission` - -regexp representing configuration permissions - -##### `read_permission` - -regexp representing read permissions - -##### `write_permission` - -regexp representing write permissions - -#### Parameters - -The following parameters are available in the `rabbitmq_user_permissions` type. - -##### `name` - -Valid values: %r{^\S+@\S+$} - -namevar - -combination of user@vhost to grant privileges to - -### rabbitmq_vhost - -Native type for managing rabbitmq vhosts - -#### Examples - -##### query all current vhosts - -```puppet -$ puppet resource rabbitmq_vhost` -``` - -##### Create a rabbitmq_vhost - -```puppet -rabbitmq_vhost { 'myvhost': - ensure => present, -} -``` - -#### Properties - -The following properties are available in the `rabbitmq_vhost` type. - -##### `ensure` - -Valid values: present, absent - -The basic property that the resource should be in. - -Default value: present - -#### Parameters - -The following parameters are available in the `rabbitmq_vhost` type. - -##### `name` - -Valid values: %r{^\S+$} - -namevar - -The name of the vhost to add - diff --git a/3rdparty/modules/rabbitmq/Rakefile b/3rdparty/modules/rabbitmq/Rakefile index 279580ac6..181157e6e 100644 --- a/3rdparty/modules/rabbitmq/Rakefile +++ b/3rdparty/modules/rabbitmq/Rakefile @@ -1,92 +1,10 @@ require 'puppetlabs_spec_helper/rake_tasks' +require 'puppet-lint/tasks/puppet-lint' -# load optional tasks for releases -# only available if gem group releases is installed -begin - require 'puppet_blacksmith/rake_tasks' - require 'voxpupuli/release/rake_tasks' - require 'puppet-strings/tasks' -rescue LoadError -end - -PuppetLint.configuration.log_format = '%{path}:%{line}:%{check}:%{KIND}:%{message}' PuppetLint.configuration.fail_on_warnings = true PuppetLint.configuration.send('relative') -PuppetLint.configuration.send('disable_140chars') +PuppetLint.configuration.send('disable_80chars') PuppetLint.configuration.send('disable_class_inherits_from_params_class') PuppetLint.configuration.send('disable_documentation') PuppetLint.configuration.send('disable_single_quote_string_with_variables') - -exclude_paths = %w( - pkg/**/* - vendor/**/* - .vendor/**/* - spec/**/* -) -PuppetLint.configuration.ignore_paths = exclude_paths -PuppetSyntax.exclude_paths = exclude_paths - -desc 'Auto-correct puppet-lint offenses' -task 'lint:auto_correct' do - PuppetLint.configuration.fix = true - Rake::Task[:lint].invoke -end - -desc 'Run acceptance tests' -RSpec::Core::RakeTask.new(:acceptance) do |t| - t.pattern = 'spec/acceptance' -end - -desc 'Run tests metadata_lint, release_checks' -task test: [ - :metadata_lint, - :release_checks, -] - -desc "Run main 'test' task and report merged results to coveralls" -task test_with_coveralls: [:test] do - if Dir.exist?(File.expand_path('../lib', __FILE__)) - require 'coveralls/rake/task' - Coveralls::RakeTask.new - Rake::Task['coveralls:push'].invoke - else - puts 'Skipping reporting to coveralls. Module has no lib dir' - end -end - -desc "Print supported beaker sets" -task 'beaker_sets', [:directory] do |t, args| - directory = args[:directory] - - metadata = JSON.load(File.read('metadata.json')) - - (metadata['operatingsystem_support'] || []).each do |os| - (os['operatingsystemrelease'] || []).each do |release| - if directory - beaker_set = "#{directory}/#{os['operatingsystem'].downcase}-#{release}" - else - beaker_set = "#{os['operatingsystem'].downcase}-#{release}-x64" - end - - filename = "spec/acceptance/nodesets/#{beaker_set}.yml" - - puts beaker_set if File.exists? filename - end - end -end - -begin - require 'github_changelog_generator/task' - GitHubChangelogGenerator::RakeTask.new :changelog do |config| - version = (Blacksmith::Modulefile.new).version - config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/ - config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module." - config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog} - config.user = 'voxpupuli' - metadata_json = File.join(File.dirname(__FILE__), 'metadata.json') - metadata = JSON.load(File.read(metadata_json)) - config.project = metadata['name'] - end -rescue LoadError -end -# vim: syntax=ruby +PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"] diff --git a/3rdparty/modules/rabbitmq/TODO b/3rdparty/modules/rabbitmq/TODO new file mode 100644 index 000000000..8ae578e9e --- /dev/null +++ b/3rdparty/modules/rabbitmq/TODO @@ -0,0 +1,10 @@ +provider TODO - + - password should be a property and not a param + - what if we tried to log in as that user? + - can permissions from list_user_permissions contain whitespace? + - what about defaultfor :true? + - prefetching for performance + - rabbit plugin should require rabbitmq class + - rabbitmq class should be renamed server?? + - service name should default to -server + - cannot find stomp package diff --git a/3rdparty/modules/rabbitmq/checksums.json b/3rdparty/modules/rabbitmq/checksums.json index 6f8598bda..f228740cd 100644 --- a/3rdparty/modules/rabbitmq/checksums.json +++ b/3rdparty/modules/rabbitmq/checksums.json @@ -1,127 +1,105 @@ { - "CHANGELOG.md": "dbced2f287990d4a406450e2a564a4f7", - "Gemfile": "b41fa04d0bc0ae911416b54de5994f8a", - "HISTORY.md": "2dc7d0508d34c37cb41128d89e962e7d", - "LICENSE": "3b83ef96387f14655fc854ddc3c6bd57", - "MAINTAINERS.md": "1b0321bd01f2a6d4ce0515d57b834143", - "NOTICE": "a40e0f06a8c1b4a948b81f718c5602be", - "README.md": "b3f0a0400ce3244d6f27b31b4b0376da", - "REFERENCE.md": "e2055a34480a294f867fabd0813fd6c5", - "Rakefile": "3c6f218e7e63e1a6e24251f365423e49", - "examples/erlang_deps.pp": "3a9251d500fd2cd1147d1a2abc9bdc02", - "examples/full.pp": "33133b2d34a5291a7cdd998cd333e93c", - "examples/permissions/add.pp": "b53b627a4d5521af8cdcfd83d99d3824", - "examples/plugin.pp": "5fc1271d5684dd51fa94b67876179e63", - "examples/repo/apt.pp": "08f6497b6561f274a8d9e2ee5400e33e", - "examples/server.pp": "56dba93d20d5b716b66df2e0f4f693d6", - "examples/service.pp": "f06296b103daf449f9e7644fd9eee58b", - "examples/site.pp": "653334bf690768a8af42cd13e8e53ef2", - "examples/user/add.pp": "d9f051f1edc91114097b54f818729ea8", - "examples/vhosts/add.pp": "f054d84ac87dc206f586d779fc312fa6", + "CHANGELOG.md": "43cb464088dc5a6558ce1f2f119a0f48", + "CONTRIBUTING.md": "e2b8e8e433fc76b3798b7fe435f49375", + "Gemfile": "e62c96457cdaab2a09f1a37479ea6351", + "LICENSE": "6089b6bd1f0d807edb8bdfd76da0b038", + "README.md": "1babcf19c9f1f10e3a594b6b89620b49", + "Rakefile": "d953eb985f82600dc3b9ac6e1f2cfe64", + "TODO": "53cf21155ec1e83e3e167f711fd3ff9f", "files/README.markdown": "3d44458cc68d8513b51e3b56c604eec4", "files/plugins/amqp_client-2.3.1.ez": "543ec53b7208fdc2dc4eba3684868011", "files/plugins/rabbit_stomp-2.3.1.ez": "f552a986409a6d407a080b1aceb80d20", - "lib/facter/erl_ssl_path.rb": "23c959a454a56fb017caef2eff6823f2", - "lib/facter/rabbitmq_nodename.rb": "721ca655917a00c65ac6072ef8412a65", - "lib/facter/rabbitmq_version.rb": "988a843c931807f621d46e87008c9cd2", - "lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb": "a0480ad4b0ad5ebdb8197b56d85481de", - "lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb": "264998dd115e1bbd17851b34e7f0fafb", - "lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb": "08d3064cdc5823f78412981c0932d03e", - "lib/puppet/provider/rabbitmq_parameter/rabbitmqctl.rb": "4ad7618c9638cc5931e8f42d0db000c1", - "lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb": "6549134306d37ce581ddfd9c79e74f6f", - "lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb": "a38c72233e49e82553bc582147182ebe", - "lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb": "ef7541ad426595332389f9ef699bddf8", - "lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb": "261a25ad40f0609635dc563f91f4d31e", - "lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb": "e5c13c85d24f1b92211fbc19028a7f2b", - "lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb": "87966e7e56b60909b430f7f9a63754fd", - "lib/puppet/provider/rabbitmqctl.rb": "147cbe0a172658bcbbd6d4c2c5c77d3f", - "lib/puppet/type/rabbitmq_binding.rb": "28014dd738d8e15ec5fe909e1c0b7620", - "lib/puppet/type/rabbitmq_erlang_cookie.rb": "47c93fcedb7dd5fe3cf1b1392361071b", - "lib/puppet/type/rabbitmq_exchange.rb": "a227a2f924d715a0d4339acabf09db34", - "lib/puppet/type/rabbitmq_parameter.rb": "982080644db620c80a8c65379c1902ca", - "lib/puppet/type/rabbitmq_plugin.rb": "4bf11beeef4ca32f0d0b19e83cd6da5b", - "lib/puppet/type/rabbitmq_policy.rb": "9d451905ed900175e1b8777062641f4d", - "lib/puppet/type/rabbitmq_queue.rb": "3ab6475182e18e8d775dedc8cefa7980", - "lib/puppet/type/rabbitmq_user.rb": "e8aa82c32004db1929e19c54578b9b63", - "lib/puppet/type/rabbitmq_user_permissions.rb": "7aaa66091c3f9e4670e79aa299d7906b", - "lib/puppet/type/rabbitmq_vhost.rb": "8901580e183399ce561fbcb8057c3d51", - "locales/config.yaml": "827f30d1fc7f6dc606f2e513a7d0a60c", - "manifests/config.pp": "cd2b791dc962332f70c421d9720a8583", - "manifests/init.pp": "845efc28d87b5aca9412aecc821e8a93", - "manifests/install/rabbitmqadmin.pp": "fdcc018b1142ee0f446c019af2b6bdc7", - "manifests/install.pp": "7fb9f463a22ddcf033ac9f8138ba65ea", + "lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb": "1b7bd0bd9ce3e0303f52178487170f42", + "lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb": "80c99bb254471ed32e6ee25a9dcb6f73", + "lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb": "f79a7aab47e00a6d29910e09550f03d9", + "lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb": "393eac704e7f906052f4d1c285de364e", + "lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb": "ea39ffa45a616fcd755c8121338fcbcd", + "lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb": "b971f7ec8f5454623d82b35a6c178432", + "lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb": "eeddc61ef6c57e7225c818e494fc6e47", + "lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb": "35c1224ef9f1191c61cc577d7b496395", + "lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb": "3e4754621f03062a4620950134cb2042", + "lib/puppet/provider/rabbitmqctl.rb": "59d97156cab9dba9008426e650df17bc", + "lib/puppet/type/rabbitmq_binding.rb": "5c19f5f98247d4ee5286e16242a53441", + "lib/puppet/type/rabbitmq_erlang_cookie.rb": "ad082a425169634391888fcd9a2131bb", + "lib/puppet/type/rabbitmq_exchange.rb": "3ed3e62c8f85cc4e41a81cd07915727c", + "lib/puppet/type/rabbitmq_plugin.rb": "6a707d089d0e50a949ecf8fae114eab0", + "lib/puppet/type/rabbitmq_policy.rb": "6e421d709978675d36bd6e1e361be498", + "lib/puppet/type/rabbitmq_queue.rb": "653a5e3eaa69c6d0d29f477c40362c13", + "lib/puppet/type/rabbitmq_user.rb": "4cac856b77ccebff4e9fd63e71ccf611", + "lib/puppet/type/rabbitmq_user_permissions.rb": "2d12cd7d9c8bd2afd2e4a4b24a35b58b", + "lib/puppet/type/rabbitmq_vhost.rb": "ff6fc35bb9c22b1c493b84adf6bb3167", + "log/centos-6-x64-vcloud/2015-05-22_18_55_23/sut.log": "062a9bc8d4ae0dd97e5ee74784a26c9d", + "log/centos-6-x64-vcloud/2015-05-22_18_57_07/sut.log": "4b5085af02e0fba4e6ae0addee258ce1", + "log/debian-7-x64-vcloud/2015-05-22_18_35_45/sut.log": "b6c8b56197861c0e6c3a46fb730f3334", + "log/debian-7-x64-vcloud/2015-05-22_18_49_58/sut.log": "a4d4b5f2278e5cba66026ad9f0156de4", + "log/debian-7-x64-vcloud/2015-05-22_19_10_48/sut.log": "27d3e61d3a9d9da3b87501a49f49aece", + "log/debian-7-x64-vcloud/2015-05-22_19_11_31/sut.log": "ad6cbb9cbd128e0848c5f5bcfe3d494a", + "log/default/2015-05-22_18_35_28/sut.log": "d41d8cd98f00b204e9800998ecf8427e", + "manifests/config.pp": "df0d180fd482f63eb8b26ca2ca83febf", + "manifests/init.pp": "52b0931a4d2083e90e36c331d6450084", + "manifests/install/rabbitmqadmin.pp": "64a81e06996b5ecc147795e64f3c6e7b", + "manifests/install.pp": "0f700b158484bfdacb2ce3ec65b939c9", "manifests/management.pp": "93c41d238f2734fa7c5944b8f32f6cc4", - "manifests/params.pp": "156bb70f39201b34b8cd9e559537d0c0", - "manifests/repo/apt.pp": "2982cffe7f0eda1c67e714fd9ee44537", - "manifests/repo/rhel.pp": "5189fe3435ff5c20df1bc5af15f46d58", - "manifests/server.pp": "b94a24083f7314a3140e3edd4a7b9307", - "manifests/service.pp": "9e8c27c53dd35ea7a05dc90eebdd36ca", - "metadata.json": "279d17929cd7091ae4286e708e740bbf", + "manifests/params.pp": "260d40f1ece0f76e4a86079455e12c87", + "manifests/repo/apt.pp": "a5b1a06ac77526e8764bc754bc0718c4", + "manifests/repo/rhel.pp": "1c4cfcba993e0667b65ec3c5deafbac7", + "manifests/server.pp": "3bc67c2006c1144c50c3fc04394cd800", + "manifests/service.pp": "ec365148eec9e739ca06e24c972cd5de", + "metadata.json": "cfe09daeacab44586c336f6ea55d6aff", "spec/README.markdown": "32a1fc0121c28aff554ef5d422b8b51e", - "spec/acceptance/class_spec.rb": "672cacf8d2cdf5f18f05758b2f3cc5d7", - "spec/acceptance/clustering_spec.rb": "4955bd71da17a8204c7381346d4f7880", - "spec/acceptance/delete_guest_user_spec.rb": "a968fa68172e99ebcf2c3b79ac3436cb", - "spec/acceptance/nodesets/archlinux-2-x64.yml": "daafcfcb4c8c8766856f52cec6ae5e86", - "spec/acceptance/nodesets/centos-511-x64.yml": "ca8258bc835dd985a1754689d124cd66", - "spec/acceptance/nodesets/centos-6-x64.yml": "58065782a8d40780d9728257a23504cd", - "spec/acceptance/nodesets/centos-66-x64-pe.yml": "e68e03dc562bf58f7c5bba54a1a34619", - "spec/acceptance/nodesets/centos-7-x64.yml": "68d3556f670b8ac0a169a8270ff8c37a", - "spec/acceptance/nodesets/debian-78-x64.yml": "56af2760a64c13a0bccd59404435939c", - "spec/acceptance/nodesets/debian-8-x64.yml": "d2d2977900989f30086ad251a14a1f39", - "spec/acceptance/nodesets/debian-82-x64.yml": "26f2f696e6073549fe0a844f9a46f85b", - "spec/acceptance/nodesets/default.yml": "b42da5a1ea0c964567ba7495574b8808", - "spec/acceptance/nodesets/ec2/amazonlinux-2016091.yml": "b3dc2d81918fcc6d56855c88ba5b7ce8", - "spec/acceptance/nodesets/ec2/image_templates.yaml": "516f9c4c3407993a100090ce9e1a643c", - "spec/acceptance/nodesets/ec2/rhel-73-x64.yml": "e74670a1cb8eea32afc879a5d786f9bd", - "spec/acceptance/nodesets/ec2/sles-12sp2-x64.yml": "2506efcc9fb420132edc37bf88d6e21d", - "spec/acceptance/nodesets/ec2/ubuntu-1604-x64.yml": "87efd97ff1b073c3448f429a8ffc5a7c", - "spec/acceptance/nodesets/ec2/windows-2016-base-x64.yml": "e9db4dd16c60c52b433694130c2583a0", - "spec/acceptance/nodesets/fedora-24-x64.yml": "431cd85b87a65a55af193a360aa52f26", - "spec/acceptance/nodesets/fedora-25-x64.yml": "807fbf45f95fc7bc2af8c689d34e4160", - "spec/acceptance/nodesets/fedora-26-x64.yml": "e7ee1e18590548ff098192c2127c6697", - "spec/acceptance/nodesets/fedora-27-x64.yml": "326a10c4eb327ccd85775dfa0f76e5c1", - "spec/acceptance/nodesets/ubuntu-server-1204-x64.yml": "0dd7639bf95bfb18169ebba9a2bac163", - "spec/acceptance/nodesets/ubuntu-server-1404-x64.yml": "7455367b784060b921360b29a56cd74c", - "spec/acceptance/nodesets/ubuntu-server-1604-x64.yml": "37673118cc3bf052755d65fb5dd90226", - "spec/acceptance/parameter_spec.rb": "93a911a4a6e8a8f0631ab62388b64c5c", - "spec/acceptance/policy_spec.rb": "ef747d433d6ddb5ec481c234434e88ca", - "spec/acceptance/queue_spec.rb": "09dd18dab23da4246948327243d43c61", - "spec/acceptance/rabbitmqadmin_spec.rb": "507f5a99c6e1135259597cbc7faf62ab", - "spec/acceptance/server_spec.rb": "c56c19ce559cc73054a826b5b3ba1f5f", - "spec/acceptance/user_spec.rb": "5edc29d0a70e53d2314852d60ce61247", - "spec/acceptance/vhost_spec.rb": "bf2bf77189aed14f3708f74f1eea933e", - "spec/classes/coverage_spec.rb": "166c74e93a4e70e9de79ae69f3c10e1d", - "spec/classes/rabbitmq_spec.rb": "261fe9436cf15affa0556c31cc2e9eb6", - "spec/default_facts.yml": "3da74b0aff340a4fbcca9cc4eba104c1", - "spec/spec_helper.rb": "bca269769869ab77fd6cfe07b273fbc4", - "spec/spec_helper_acceptance.rb": "c499c18f6278e4b7d67c43075b084bd0", - "spec/spec_helper_local.rb": "17e95f1d20002b5f977414cc4b4b0253", - "spec/unit/facter/util/fact_erl_ssl_path_spec.rb": "984db897e37906c74cd420999e2e9498", - "spec/unit/facter/util/fact_rabbitmq_nodename_spec.rb": "7d9b5086247cf2b9589ce9279c7820f0", - "spec/unit/facter/util/fact_rabbitmq_version_spec.rb": "c112124c4fcea02745822209590aa1a5", - "spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb": "2aa2a11c23de6f333509625783be1283", - "spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb": "2b2ecbf2cef7164eb9576b36633d4337", - "spec/unit/puppet/provider/rabbitmq_parameter/rabbitmqctl_spec.rb": "2d25099152320ca64f0afd0314c29945", - "spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb": "bef1df43e8955ea9e1ecc2da9364df6e", - "spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb": "63ccc3f3fa09f7fae30d1bb9bda4cf16", - "spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb": "06adfd5487b4340ae5dac326227bdb68", - "spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb": "65c9c6fc4afe3fc2f02c888769f80bac", - "spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb": "f18827d229b2e15cc7c6a31c1dbd2a08", - "spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb": "72a45e92967d7854e1545a055ddde227", - "spec/unit/puppet/type/rabbitmq_binding_spec.rb": "348c9c04b96e87d76009686577be12dc", - "spec/unit/puppet/type/rabbitmq_exchange_spec.rb": "a5d489fe4aeb40db3b07e6119f3dec95", - "spec/unit/puppet/type/rabbitmq_parameter_spec.rb": "9650c694d3a0736e5bc9c2d2196224c0", - "spec/unit/puppet/type/rabbitmq_plugin_spec.rb": "a676e0083fe906502864a7dfe4a5f8cc", - "spec/unit/puppet/type/rabbitmq_policy_spec.rb": "0b6c51058459d535b9d4a152972cfc08", - "spec/unit/puppet/type/rabbitmq_queue_spec.rb": "90515dbddd104e594ea6e20eb26021a2", - "spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb": "20ad6006ae71e7370d89fd43f28305b8", - "spec/unit/puppet/type/rabbitmq_user_spec.rb": "f8f2ae38cc938f561e847c004e591dea", - "spec/unit/puppet/type/rabbitmq_vhost_spec.rb": "28b13add025d2b17b80d1d56df23a158", + "spec/acceptance/class_spec.rb": "26e9ed9f9391692419f110624c091390", + "spec/acceptance/clustering_spec.rb": "1aa359697551e1ddf2a030cac5b8f2f5", + "spec/acceptance/delete_guest_user_spec.rb": "7c5da810cf2a3a124943eb56c46cac83", + "spec/acceptance/nodesets/centos-59-x64.yml": "57eb3e471b9042a8ea40978c467f8151", + "spec/acceptance/nodesets/centos-6-x64-vcloud.yml": "aaa7352c8a5f5244a6f9008112918074", + "spec/acceptance/nodesets/centos-64-x64-pe.yml": "ec075d95760df3d4702abea1ce0a829b", + "spec/acceptance/nodesets/centos-65-x64.yml": "3e5c36e6aa5a690229e720f4048bb8af", + "spec/acceptance/nodesets/debian-7-x64-vcloud.yml": "83c1c189f46fced0a8d5ec27a3e12877", + "spec/acceptance/nodesets/default.yml": "d65958bdf25fb31eb4838fd984b555df", + "spec/acceptance/nodesets/ubuntu-server-10044-x64.yml": "75e86400b7889888dc0781c0ae1a1297", + "spec/acceptance/nodesets/ubuntu-server-12042-x64.yml": "d30d73e34cd50b043c7d14e305955269", + "spec/acceptance/nodesets/ubuntu-server-1404-x64.yml": "5f0aed10098ac5b78e4217bb27c7aaf0", + "spec/acceptance/policy_spec.rb": "28211810baf46a25e0e9dda0097ce2db", + "spec/acceptance/queue_spec.rb": "b7d54bd218982f191b8a909652d65d09", + "spec/acceptance/rabbitmqadmin_spec.rb": "7844ca3109ed35147ee8bcd2c8a045c6", + "spec/acceptance/server_spec.rb": "f88e85559c71afcf5d80b01ffd78877d", + "spec/acceptance/user_spec.rb": "1f560f25a45e249bafdae3964efabaf2", + "spec/acceptance/vhost_spec.rb": "75c867b618eae881b9f13272cffdc777", + "spec/acceptance/zz281_spec.rb": "56051cd811c1f2546bcdce2590860306", + "spec/classes/rabbitmq_spec.rb": "45725cd9e08e33a4ea809a7ec48ee2f8", + "spec/spec.opts": "a600ded995d948e393fbe2320ba8e51c", + "spec/spec_helper.rb": "0db89c9a486df193c0e40095422e19dc", + "spec/spec_helper_acceptance.rb": "9aa45d83b91ef209b17abeace32781bf", + "spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb": "f855af3424e3573b37f015f460b3f3f5", + "spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb": "3a909fddbe1019b6bf68d43408c5fa70", + "spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb": "430f9d204f9a0135772b90f10fb36c76", + "spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb": "9b9213cc615b7e164a5b2c754c57f2d0", + "spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb": "6f7664ce99673b73114ec17afa20febe", + "spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb": "b6835fdfed6719217325e36667e9b416", + "spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb": "7a16aee31dbf747d0226ded6ce8a3b45", + "spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb": "1f8d85c70d5f288a2ac803c99dc3eb72", + "spec/unit/puppet/type/rabbitmq_binding_spec.rb": "60bde85ca7075b0584bfd57bd86ebfd3", + "spec/unit/puppet/type/rabbitmq_exchange_spec.rb": "797b8a550f0620731efc2280a0f30a53", + "spec/unit/puppet/type/rabbitmq_policy_spec.rb": "387079c6a0235602c4ef18b456c2b282", + "spec/unit/puppet/type/rabbitmq_queue_spec.rb": "568f66963bd4392b91fe347b3e1baa45", + "spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb": "eb5b390edb76be3a2b8899e9b996d6e1", + "spec/unit/puppet/type/rabbitmq_user_spec.rb": "80e042c92f64e3a5f97a83bbbde85d42", + "spec/unit/puppet/type/rabbitmq_vhost_spec.rb": "162e29065eb5ce664842b66bcfa0ac34", "templates/README.markdown": "aada0a1952329e46b98695349dba6203", "templates/default.erb": "800642a1015e3eaa37f18100d1d63f41", - "templates/inetrc.erb": "398ffa94b5cfdd4ec423901746308170", "templates/limits.conf": "c5f991430be0bcb7446eb7291cf34bf8", - "templates/rabbitmq-env.conf.erb": "ecd1d32b26edf5d6ffb02eafae75dfba", - "templates/rabbitmq.config.erb": "a7fe2e4739a809ce42691e23003de989", - "templates/rabbitmqadmin.conf.erb": "428c661b4ad428e495bd01f1ad8604d0" + "templates/rabbitmq-env.conf.erb": "174bf40d6f7fed0cf29604e858cc96c4", + "templates/rabbitmq-server.service.d/limits.conf": "80655f98baca4c7bc673359c5f846690", + "templates/rabbitmq.config.erb": "1d0ed42cd32aa466b4f3c4d3efb252cb", + "templates/rabbitmqadmin.conf.erb": "df2a15c7ee621cced815916cb0c56a5f", + "tests/erlang_deps.pp": "4a2ac78d56802dee3a66e3246633b603", + "tests/full.pp": "fb1e9f59fe63846c60b402202152eeb0", + "tests/permissions/add.pp": "b53b627a4d5521af8cdcfd83d99d3824", + "tests/plugin.pp": "5fc1271d5684dd51fa94b67876179e63", + "tests/repo/apt.pp": "4ea43b4f8dcaf474ec11d796efef66a3", + "tests/server.pp": "56dba93d20d5b716b66df2e0f4f693d6", + "tests/service.pp": "f06296b103daf449f9e7644fd9eee58b", + "tests/site.pp": "653334bf690768a8af42cd13e8e53ef2", + "tests/user/add.pp": "d9f051f1edc91114097b54f818729ea8", + "tests/vhosts/add.pp": "f054d84ac87dc206f586d779fc312fa6" } \ No newline at end of file diff --git a/3rdparty/modules/rabbitmq/examples/erlang_deps.pp b/3rdparty/modules/rabbitmq/examples/erlang_deps.pp deleted file mode 100644 index 20cd6b5de..000000000 --- a/3rdparty/modules/rabbitmq/examples/erlang_deps.pp +++ /dev/null @@ -1,5 +0,0 @@ -# install first the garethr-erlang module. See README.md -include erlang - -class { 'erlang': epel_enable => true} -Class['erlang'] -> Class['rabbitmq'] diff --git a/3rdparty/modules/rabbitmq/examples/full.pp b/3rdparty/modules/rabbitmq/examples/full.pp deleted file mode 100644 index 2862ac8d2..000000000 --- a/3rdparty/modules/rabbitmq/examples/full.pp +++ /dev/null @@ -1,25 +0,0 @@ -class { 'rabbitmq::repo::apt': - pin => '900', -} - --> class { 'rabbitmq::server': - delete_guest_user => true, -# version => '2.4.1', -} - --> rabbitmq_user { 'dan': - admin => true, - password => 'pass', - provider => 'rabbitmqctl', -} - --> rabbitmq_vhost { 'myhost': - provider => 'rabbitmqctl', -} - -rabbitmq_user_permissions { 'dan@myhost': - configure_permission => '.*', - read_permission => '.*', - write_permission => '.*', - provider => 'rabbitmqctl', -} diff --git a/3rdparty/modules/rabbitmq/examples/permissions/add.pp b/3rdparty/modules/rabbitmq/examples/permissions/add.pp deleted file mode 100644 index fb71af143..000000000 --- a/3rdparty/modules/rabbitmq/examples/permissions/add.pp +++ /dev/null @@ -1,9 +0,0 @@ -rabbitmq_user { 'blah7': - password => 'foo', -} -rabbitmq_vhost { 'test5': } -rabbitmq_user_permissions { 'blah7@test5': - configure_permission => 'config2', - read_permission => 'ready', - #write_permission => 'ready', -} diff --git a/3rdparty/modules/rabbitmq/examples/plugin.pp b/3rdparty/modules/rabbitmq/examples/plugin.pp deleted file mode 100644 index 6c5605b9e..000000000 --- a/3rdparty/modules/rabbitmq/examples/plugin.pp +++ /dev/null @@ -1,11 +0,0 @@ -class { 'rabbitmq::server': - config_stomp => true, -} - -$rabbitmq_plugins = [ 'amqp_client', 'rabbitmq_stomp' ] - -rabbitmq_plugin { $rabbitmq_plugins: - ensure => present, - require => Class['rabbitmq::server'], - provider => 'rabbitmqplugins', -} diff --git a/3rdparty/modules/rabbitmq/examples/repo/apt.pp b/3rdparty/modules/rabbitmq/examples/repo/apt.pp deleted file mode 100644 index 936a75f48..000000000 --- a/3rdparty/modules/rabbitmq/examples/repo/apt.pp +++ /dev/null @@ -1,2 +0,0 @@ -# requires pupetlabs-apt -include ::rabbitmq::repo::apt diff --git a/3rdparty/modules/rabbitmq/examples/server.pp b/3rdparty/modules/rabbitmq/examples/server.pp deleted file mode 100644 index caea89377..000000000 --- a/3rdparty/modules/rabbitmq/examples/server.pp +++ /dev/null @@ -1,5 +0,0 @@ -class { 'rabbitmq::server': - port => '5672', - delete_guest_user => true, - version => 'latest', -} diff --git a/3rdparty/modules/rabbitmq/examples/service.pp b/3rdparty/modules/rabbitmq/examples/service.pp deleted file mode 100644 index 9a00d2b6d..000000000 --- a/3rdparty/modules/rabbitmq/examples/service.pp +++ /dev/null @@ -1 +0,0 @@ -class { 'rabbitmq::service': } diff --git a/3rdparty/modules/rabbitmq/examples/site.pp b/3rdparty/modules/rabbitmq/examples/site.pp deleted file mode 100644 index 75ebcfed3..000000000 --- a/3rdparty/modules/rabbitmq/examples/site.pp +++ /dev/null @@ -1,16 +0,0 @@ -node default { - - $rabbitmq_plugins = [ 'amqp_client', 'rabbitmq_stomp' ] - - class { 'rabbitmq::server': - config => '[ {rabbit_stomp, [{tcp_listeners, [1234]} ]} ].', - } - - # Required for MCollective - rabbitmq_plugin { $rabbitmq_plugins: - ensure => present, - require => Class['rabbitmq::server'], - provider => 'rabbitmqplugins', - } -} - diff --git a/3rdparty/modules/rabbitmq/examples/user/add.pp b/3rdparty/modules/rabbitmq/examples/user/add.pp deleted file mode 100644 index 2c3a87096..000000000 --- a/3rdparty/modules/rabbitmq/examples/user/add.pp +++ /dev/null @@ -1,4 +0,0 @@ -rabbitmq_user { ['blah2', 'blah3', 'blah4']: - password => 'phoey!', - #provider => 'rabbitmqctl', -} diff --git a/3rdparty/modules/rabbitmq/examples/vhosts/add.pp b/3rdparty/modules/rabbitmq/examples/vhosts/add.pp deleted file mode 100644 index d818a1923..000000000 --- a/3rdparty/modules/rabbitmq/examples/vhosts/add.pp +++ /dev/null @@ -1 +0,0 @@ -rabbitmq_vhost { ['fooey', 'blah']: } diff --git a/3rdparty/modules/rabbitmq/lib/facter/erl_ssl_path.rb b/3rdparty/modules/rabbitmq/lib/facter/erl_ssl_path.rb deleted file mode 100644 index c8f41f69b..000000000 --- a/3rdparty/modules/rabbitmq/lib/facter/erl_ssl_path.rb +++ /dev/null @@ -1,13 +0,0 @@ -# Fact to get the ssl path for the erlang distribution in the current -# system as described in the RabbitMQ docs [1]. -# -# [1] https://www.rabbitmq.com/clustering-ssl.html -Facter.add(:erl_ssl_path) do - setcode do - if Facter::Util::Resolution.which('erl') - data = Facter::Core::Execution.execute("erl -eval 'io:format(\"~p\", [code:lib_dir(ssl, ebin)]),halt().' -noshell") - # erl returns the string with quotes, strip them off - data.gsub!(%r{\A"|"\Z}, '') - end - end -end diff --git a/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_nodename.rb b/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_nodename.rb deleted file mode 100644 index 8dee93c43..000000000 --- a/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_nodename.rb +++ /dev/null @@ -1,8 +0,0 @@ -Facter.add(:rabbitmq_nodename) do - setcode do - if Facter::Util::Resolution.which('rabbitmqctl') - rabbitmq_nodename = Facter::Core::Execution.execute('rabbitmqctl status 2>&1') - %r{^Status of node '?([\w\.\-]+@[\w\.\-]+)'?}.match(rabbitmq_nodename)[1] - end - end -end diff --git a/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_version.rb b/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_version.rb deleted file mode 100644 index 5c5585c0c..000000000 --- a/3rdparty/modules/rabbitmq/lib/facter/rabbitmq_version.rb +++ /dev/null @@ -1,8 +0,0 @@ -Facter.add(:rabbitmq_version) do - setcode do - if Facter::Util::Resolution.which('rabbitmqadmin') - rabbitmq_version = Facter::Core::Execution.execute('rabbitmqadmin --version 2>&1') - %r{^rabbitmqadmin ([\w\.]+)}.match(rabbitmq_version).to_a[1] - end - end -end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb index e7f9345b3..e02c46685 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_binding/rabbitmqadmin.rb @@ -1,76 +1,73 @@ require 'json' require 'puppet' -require 'digest' - Puppet::Type.type(:rabbitmq_binding).provide(:rabbitmqadmin) do - has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' - end - has_command(:rabbitmqadmin, '/usr/local/bin/rabbitmqadmin') do - environment HOME: '/tmp' - end - confine feature: :posix - - # Without this, the composite namevar stuff doesn't work properly. - mk_resource_methods + if Puppet::PUPPETVERSION.to_f < 3 + commands :rabbitmqctl => 'rabbitmqctl' + commands :rabbitmqadmin => '/usr/local/bin/rabbitmqadmin' + else + has_command(:rabbitmqctl, 'rabbitmqctl') do + environment :HOME => "/tmp" + end + has_command(:rabbitmqadmin, '/usr/local/bin/rabbitmqadmin') do + environment :HOME => "/tmp" + end + end + defaultfor :feature => :posix def should_vhost if @should_vhost @should_vhost else - @should_vhost = resource[:vhost] + @should_vhost = resource[:name].split('@').last end end def self.all_vhosts vhosts = [] - rabbitmqctl('list_vhosts', '-q').split(%r{\n}).map do |vhost| + rabbitmqctl('list_vhosts', '-q').split(/\n/).collect do |vhost| vhosts.push(vhost) end vhosts end def self.all_bindings(vhost) - rabbitmqctl('list_bindings', '-q', '-p', vhost, 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments').split(%r{\n}) + rabbitmqctl('list_bindings', '-q', '-p', vhost, 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments').split(/\n/) end def self.instances resources = [] all_vhosts.each do |vhost| - all_bindings(vhost).map do |line| - source_name, destination_name, destination_type, routing_key, arguments = line.split(%r{\t}) + all_bindings(vhost).collect do |line| + source_name, destination_name, destination_type, routing_key, arguments = line.split(/\t/) # Convert output of arguments from the rabbitmqctl command to a json string. if !arguments.nil? - arguments = arguments.gsub(%r{^\[(.*)\]$}, '').gsub(%r{\{("(?:.|\\")*?"),}, '{\1:').gsub(%r{\},\{}, ',') - arguments = '{}' if arguments == '' + arguments = arguments.gsub(/^\[(.*)\]$/, "").gsub(/\{("(?:.|\\")*?"),/, '{\1:').gsub(/\},\{/, ",") + if arguments == "" + arguments = '{}' + end else arguments = '{}' end - hashed_name = Digest::SHA256.hexdigest format('%s@%s@%s@%s', source_name, destination_name, vhost, routing_key) - next if source_name.empty? - binding = { - source: source_name, - destination: destination_name, - vhost: vhost, - destination_type: destination_type, - routing_key: routing_key, - arguments: JSON.parse(arguments), - ensure: :present, - name: hashed_name - } - resources << new(binding) if binding[:name] + if (source_name != '') + binding = { + :destination_type => destination_type, + :routing_key => routing_key, + :arguments => JSON.parse(arguments), + :ensure => :present, + :name => "%s@%s@%s" % [source_name, destination_name, vhost], + } + resources << new(binding) if binding[:name] + end end end resources end - # see - # https://github.com/puppetlabs/puppetlabs-netapp/blob/d0a655665463c69c932f835ba8756be32417a4e9/lib/puppet/provider/netapp_qtree/sevenmode.rb#L66-L73 def self.prefetch(resources) - bindings = instances - resources.each do |name, res| - if (provider = bindings.find { |binding| binding.source == res[:source] && binding.destination == res[:destination] && binding.vhost == res[:vhost] && binding.routing_key == res[:routing_key] }) + packages = instances + resources.keys.each do |name| + if provider = packages.find{ |pkg| pkg.name == name } resources[name].provider = provider end end @@ -82,26 +79,34 @@ Puppet::Type.type(:rabbitmq_binding).provide(:rabbitmqadmin) do def create vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : '' + name = resource[:name].split('@').first + destination = resource[:name].split('@')[1] arguments = resource[:arguments] - arguments = {} if arguments.nil? + if arguments.nil? + arguments = {} + end rabbitmqadmin('declare', - 'binding', - vhost_opt, - "--user=#{resource[:user]}", - "--password=#{resource[:password]}", - '-c', - '/etc/rabbitmq/rabbitmqadmin.conf', - "source=#{resource[:source]}", - "destination=#{resource[:destination]}", - "arguments=#{arguments.to_json}", - "routing_key=#{resource[:routing_key]}", - "destination_type=#{resource[:destination_type]}") + 'binding', + vhost_opt, + "--user=#{resource[:user]}", + "--password=#{resource[:password]}", + '-c', + '/etc/rabbitmq/rabbitmqadmin.conf', + "source=#{name}", + "destination=#{destination}", + "arguments=#{arguments.to_json}", + "routing_key=#{resource[:routing_key]}", + "destination_type=#{resource[:destination_type]}" + ) @property_hash[:ensure] = :present end def destroy vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : '' - rabbitmqadmin('delete', 'binding', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf', "source=#{resource[:source]}", "destination_type=#{resource[:destination_type]}", "destination=#{resource[:destination]}", "properties_key=#{resource[:routing_key]}") + name = resource[:name].split('@').first + destination = resource[:name].split('@')[1] + rabbitmqadmin('delete', 'binding', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf', "source=#{name}", "destination_type=#{resource[:destination_type]}", "destination=#{destination}", "properties_key=#{resource[:routing_key]}") @property_hash[:ensure] = :absent end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb index 47dfdd348..58c8b3c96 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_erlang_cookie/ruby.rb @@ -1,7 +1,11 @@ require 'puppet' require 'set' Puppet::Type.type(:rabbitmq_erlang_cookie).provide(:ruby) do - confine feature: :posix + + defaultfor :feature => :posix + has_command(:puppet, 'puppet') do + environment :PATH => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin' + end def exists? # Hack to prevent the create method from being called. @@ -10,22 +14,25 @@ Puppet::Type.type(:rabbitmq_erlang_cookie).provide(:ruby) do end def content=(value) - raise('The current erlang cookie needs to change. In order to do this the RabbitMQ database needs to be wiped. Please set force => true to allow this to happen automatically.') unless resource[:force] == :true # Danger! - - Puppet::Type.type(:service).new(name: resource[:service_name]).provider.stop - FileUtils.rm_rf(resource[:rabbitmq_home] + File::SEPARATOR + 'mnesia') - File.open(resource[:path], 'w') do |cookie| - cookie.chmod(0o400) - cookie.write(value) + if resource[:force] == :true # Danger! + puppet('resource', 'service', resource[:service_name], 'ensure=stopped') + FileUtils.rm_rf(resource[:rabbitmq_home] + File::PATH_SEPARATOR + 'mnesia') + File.open(resource[:path], 'w') do |cookie| + cookie.chmod(0400) + cookie.write(value) + end + FileUtils.chown(resource[:rabbitmq_user], resource[:rabbitmq_group], resource[:path]) + else + fail("The current erlang cookie needs to change. In order to do this the RabbitMQ database needs to be wiped. Please set force => true to allow this to happen automatically.") end - FileUtils.chown(resource[:rabbitmq_user], resource[:rabbitmq_group], resource[:path]) end def content - if File.exist?(resource[:path]) + if File.exists?(resource[:path]) File.read(resource[:path]) else '' end end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb index aea069886..c1cff0957 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_exchange/rabbitmqadmin.rb @@ -1,18 +1,19 @@ require 'puppet' require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, parent: Puppet::Provider::Rabbitmqctl) do +Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, :parent => Puppet::Provider::Rabbitmqctl) do + if Puppet::PUPPETVERSION.to_f < 3 - commands rabbitmqctl: 'rabbitmqctl' - commands rabbitmqadmin: '/usr/local/bin/rabbitmqadmin' + commands :rabbitmqctl => 'rabbitmqctl' + commands :rabbitmqadmin => '/usr/local/bin/rabbitmqadmin' else has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' + environment :HOME => "/tmp" end has_command(:rabbitmqadmin, '/usr/local/bin/rabbitmqadmin') do - environment HOME: '/tmp' + environment :HOME => "/tmp" end end - confine feature: :posix + defaultfor :feature => :posix def should_vhost if @should_vhost @@ -23,45 +24,56 @@ Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, parent: Puppet::Pr end def self.all_vhosts - run_with_retries { rabbitmqctl('-q', 'list_vhosts') }.split(%r{\n}) + vhosts = [] + self.run_with_retries { + rabbitmqctl('-q', 'list_vhosts') + }.split(/\n/).each do |vhost| + vhosts.push(vhost) + end + vhosts end def self.all_exchanges(vhost) - exchange_list = run_with_retries do + exchanges = [] + self.run_with_retries { rabbitmqctl('-q', 'list_exchanges', '-p', vhost, 'name', 'type', 'internal', 'durable', 'auto_delete', 'arguments') + }.split(/\n/).each do |exchange| + exchanges.push(exchange) end - exchange_list.split(%r{\n}).reject { |exchange| exchange =~ %r{^federation:} } + exchanges end def self.instances resources = [] all_vhosts.each do |vhost| - all_exchanges(vhost).each do |line| - name, type, internal, durable, auto_delete, arguments = line.split - if type.nil? - # if name is empty, it will wrongly get the type's value. - # This way type will get the correct value - type = name - name = '' - end - # Convert output of arguments from the rabbitmqctl command to a json string. - if !arguments.nil? - arguments = arguments.gsub(%r{^\[(.*)\]$}, '').gsub(%r{\{("(?:.|\\")*?"),}, '{\1:').gsub(%r{\},\{}, ',') - arguments = '{}' if arguments == '' - else - arguments = '{}' + all_exchanges(vhost).each do |line| + name, type, internal, durable, auto_delete, arguments = line.split() + if type.nil? + # if name is empty, it will wrongly get the type's value. + # This way type will get the correct value + type = name + name = '' + end + # Convert output of arguments from the rabbitmqctl command to a json string. + if !arguments.nil? + arguments = arguments.gsub(/^\[(.*)\]$/, "").gsub(/\{("(?:.|\\")*?"),/, '{\1:').gsub(/\},\{/, ",") + if arguments == "" + arguments = '{}' + end + else + arguments = '{}' + end + exchange = { + :type => type, + :ensure => :present, + :internal => internal, + :durable => durable, + :auto_delete => auto_delete, + :name => "%s@%s" % [name, vhost], + :arguments => JSON.parse(arguments), + } + resources << new(exchange) if exchange[:type] end - exchange = { - type: type, - ensure: :present, - internal: internal, - durable: durable, - auto_delete: auto_delete, - name: format('%s@%s', name, vhost), - arguments: JSON.parse(arguments) - } - resources << new(exchange) if exchange[:type] - end end resources end @@ -69,7 +81,7 @@ Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, parent: Puppet::Pr def self.prefetch(resources) packages = instances resources.keys.each do |name| - if (provider = packages.find { |pkg| pkg.name == name }) + if provider = packages.find{ |pkg| pkg.name == name } resources[name].provider = provider end end @@ -83,13 +95,10 @@ Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, parent: Puppet::Pr vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : '' name = resource[:name].split('@')[0] arguments = resource[:arguments] - arguments = {} if arguments.nil? - cmd = ['declare', 'exchange', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", "name=#{name}", "type=#{resource[:type]}"] - cmd << "internal=#{resource[:internal]}" - cmd << "durable=#{resource[:durable]}" - cmd << "auto_delete=#{resource[:auto_delete]}" - cmd += ["arguments=#{arguments.to_json}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf'] - rabbitmqadmin(*cmd) + if arguments.nil? + arguments = {} + end + rabbitmqadmin('declare', 'exchange', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", "name=#{name}", "type=#{resource[:type]}", "internal=#{resource[:internal]}", "durable=#{resource[:durable]}", "auto_delete=#{resource[:auto_delete]}", "arguments=#{arguments.to_json}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf') @property_hash[:ensure] = :present end @@ -99,4 +108,5 @@ Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin, parent: Puppet::Pr rabbitmqadmin('delete', 'exchange', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", "name=#{name}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf') @property_hash[:ensure] = :absent end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_parameter/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_parameter/rabbitmqctl.rb deleted file mode 100644 index 5c910d731..000000000 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_parameter/rabbitmqctl.rb +++ /dev/null @@ -1,81 +0,0 @@ -require 'json' -require 'puppet/util/package' - -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_parameter).provide(:rabbitmqctl, parent: Puppet::Provider::Rabbitmqctl) do - confine feature: :posix - - # cache parameters - def self.parameters(name, vhost) - @parameters = {} unless @parameters - unless @parameters[vhost] - @parameters[vhost] = {} - parameter_list = run_with_retries do - rabbitmqctl('list_parameters', '-q', '-p', vhost) - end - parameter_list.split(%r{\n}).each do |line| - raise Puppet::Error, "cannot parse line from list_parameter:#{line}" unless line =~ %r{^(\S+)\s+(\S+)\s+(\S+)$} - @parameters[vhost][Regexp.last_match(2)] = { - component_name: Regexp.last_match(1), - value: JSON.parse(Regexp.last_match(3)) - } - end - end - @parameters[vhost][name] - end - - def parameters(name, vhost) - self.class.parameters(vhost, name) - end - - def should_parameter - @should_parameter ||= resource[:name].rpartition('@').first - end - - def should_vhost - @should_vhost ||= resource[:name].rpartition('@').last - end - - def create - set_parameter - end - - def destroy - rabbitmqctl('clear_parameter', '-p', should_vhost, 'shovel', should_parameter) - end - - def exists? - parameters(should_vhost, should_parameter) - end - - def component_name - parameters(should_vhost, should_parameter)[:component_name] - end - - def component_name=(_component_name) - set_parameter - end - - def value - parameters(should_vhost, should_parameter)[:value] - end - - def value=(_value) - set_parameter - end - - def set_parameter - return if @set_parameter - - @set_parameter = true - resource[:value] ||= value - resource[:component_name] ||= component_name - rabbitmqctl( - 'set_parameter', - '-p', should_vhost, - resource[:component_name], - should_parameter, - resource[:value].to_json - ) - end -end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb index 9437cf35f..7ab5420c3 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_plugin/rabbitmqplugins.rb @@ -1,35 +1,40 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_plugin).provide(:rabbitmqplugins, parent: Puppet::Provider::Rabbitmqctl) do - # Prefer rabbitmq-plugins if it's in $PATH, but fall back to /usr/lib/rabbitmq/bin - if Puppet::Util.which('rabbitmq-plugins') - has_command(:rabbitmqplugins, 'rabbitmq-plugins') do - environment HOME: '/tmp' +Puppet::Type.type(:rabbitmq_plugin).provide(:rabbitmqplugins, :parent => Puppet::Provider::Rabbitmqctl) do + + if Puppet::PUPPETVERSION.to_f < 3 + if Facter.value(:osfamily) == 'RedHat' + commands :rabbitmqplugins => '/usr/lib/rabbitmq/bin/rabbitmq-plugins' + else + commands :rabbitmqplugins => 'rabbitmq-plugins' end else - has_command(:rabbitmqplugins, '/usr/lib/rabbitmq/bin/rabbitmq-plugins') do - environment HOME: '/tmp' + if Facter.value(:osfamily) == 'RedHat' + has_command(:rabbitmqplugins, '/usr/lib/rabbitmq/bin/rabbitmq-plugins') do + environment :HOME => "/tmp" + end + else + has_command(:rabbitmqplugins, 'rabbitmq-plugins') do + environment :HOME => "/tmp" + end end end - confine feature: :posix + defaultfor :feature => :posix def self.instances - plugin_list = run_with_retries do + self.run_with_retries { rabbitmqplugins('list', '-E', '-m') - end - - plugin_list.split(%r{\n}).map do |line| - raise Puppet::Error, "Cannot parse invalid plugins line: #{line}" unless line =~ %r{^(\S+)$} - new(name: Regexp.last_match(1)) + }.split(/\n/).map do |line| + if line =~ /^(\S+)$/ + new(:name => $1) + else + raise Puppet::Error, "Cannot parse invalid plugins line: #{line}" + end end end def create - if resource[:umask].nil? - rabbitmqplugins('enable', resource[:name]) - else - Puppet::Util.withumask(resource[:umask]) { rabbitmqplugins('enable', resource[:name]) } - end + rabbitmqplugins('enable', resource[:name]) end def destroy @@ -37,6 +42,11 @@ Puppet::Type.type(:rabbitmq_plugin).provide(:rabbitmqplugins, parent: Puppet::Pr end def exists? - self.class.run_with_retries { rabbitmqplugins('list', '-E', '-m') }.split(%r{\n}).include? resource[:name] + self.class.run_with_retries { + rabbitmqplugins('list', '-E', '-m') + }.split(/\n/).detect do |line| + line.match(/^#{resource[:name]}$/) + end end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb index 1d112e965..7e7329580 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_policy/rabbitmqctl.rb @@ -2,54 +2,37 @@ require 'json' require 'puppet/util/package' require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, parent: Puppet::Provider::Rabbitmqctl) do - confine feature: :posix +Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do + + defaultfor :feature => :posix # cache policies - def self.policies(vhost, name) + def self.policies(name, vhost) @policies = {} unless @policies unless @policies[vhost] @policies[vhost] = {} - policy_list = run_with_retries do + self.run_with_retries { rabbitmqctl('list_policies', '-q', '-p', vhost) - end - - # rabbitmq<3.2 does not support the applyto field - # 1 2 3? 4 5 6 - # / ha-all all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0 << This is for RabbitMQ v < 3.7.0 - # / ha-all .* all {"ha-mode":"all","ha-sync-mode":"automatic"} 0 << This is for RabbitMQ v >= 3.7.0 - if Puppet::Util::Package.versioncmp(rabbitmq_version, '3.7') >= 0 - regex = %r{^(\S+)\s+(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s+(\S+)\s+(\d+)$} - applyto_index = 4 - pattern_index = 3 - else - regex = %r{^(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s*(\S+)\s+(\S+)\s+(\d+)$} - applyto_index = 3 - pattern_index = 4 - end - - policy_list.split(%r{\n}).each do |line| - raise Puppet::Error, "cannot parse line from list_policies:#{line}" unless line =~ regex - n = Regexp.last_match(2) - applyto = Regexp.last_match(applyto_index) || 'all' - priority = Regexp.last_match(6) - definition = JSON.parse(Regexp.last_match(5)) - # be aware that the gsub will reset the captures - # from the regexp above - pattern = Regexp.last_match(pattern_index).to_s.gsub(%r{\\\\}, '\\') - - @policies[vhost][n] = { - applyto: applyto, - pattern: pattern, - definition: definition, - priority: priority - } + }.split(/\n/).each do |line| + # rabbitmq<3.2 does not support the applyto field + # 1 2 3? 4 5 6 + # / ha-all all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0 + if line =~ /^(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s*(\S+)\s+(\S+)\s+(\d+)$/ + applyto = $3 || 'all' + @policies[vhost][$2] = { + :applyto => applyto, + :pattern => $4, + :definition => JSON.parse($5), + :priority => $6} + else + raise Puppet::Error, "cannot parse line from list_policies:#{line}" + end end end @policies[vhost][name] end - def policies(vhost, name) + def policies(name, vhost) self.class.policies(vhost, name) end @@ -77,7 +60,7 @@ Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, parent: Puppet::Provid policies(should_vhost, should_policy)[:pattern] end - def pattern=(_pattern) + def pattern=(pattern) set_policy end @@ -85,7 +68,7 @@ Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, parent: Puppet::Provid policies(should_vhost, should_policy)[:applyto] end - def applyto=(_applyto) + def applyto=(applyto) set_policy end @@ -93,7 +76,7 @@ Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, parent: Puppet::Provid policies(should_vhost, should_policy)[:definition] end - def definition=(_definition) + def definition=(definition) set_policy end @@ -101,37 +84,36 @@ Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl, parent: Puppet::Provid policies(should_vhost, should_policy)[:priority] end - def priority=(_priority) + def priority=(priority) set_policy end def set_policy - return if @set_policy - @set_policy = true - resource[:applyto] ||= applyto - resource[:definition] ||= definition - resource[:pattern] ||= pattern - resource[:priority] ||= priority - # rabbitmq>=3.2.0 - if Puppet::Util::Package.versioncmp(self.class.rabbitmq_version, '3.2.0') >= 0 - rabbitmqctl( - 'set_policy', - '-p', should_vhost, - '--priority', resource[:priority], - '--apply-to', resource[:applyto].to_s, - should_policy, - resource[:pattern], - resource[:definition].to_json - ) - else - rabbitmqctl( - 'set_policy', - '-p', should_vhost, - should_policy, - resource[:pattern], - resource[:definition].to_json, - resource[:priority] - ) + unless @set_policy + @set_policy = true + resource[:applyto] ||= applyto + resource[:definition] ||= definition + resource[:pattern] ||= pattern + resource[:priority] ||= priority + # rabbitmq>=3.2.0 + if Puppet::Util::Package.versioncmp(self.class.rabbitmq_version, '3.2.0') >= 0 + rabbitmqctl('set_policy', + '-p', should_vhost, + '--priority', resource[:priority], + '--apply-to', resource[:applyto].to_s, + should_policy, + resource[:pattern], + resource[:definition].to_json + ) + else + rabbitmqctl('set_policy', + '-p', should_vhost, + should_policy, + resource[:pattern], + resource[:definition].to_json, + resource[:priority] + ) + end end end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb index fb930b36b..eeffa953c 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_queue/rabbitmqadmin.rb @@ -1,18 +1,19 @@ require 'json' require 'puppet' Puppet::Type.type(:rabbitmq_queue).provide(:rabbitmqadmin) do + if Puppet::PUPPETVERSION.to_f < 3 - commands rabbitmqctl: 'rabbitmqctl' - commands rabbitmqadmin: '/usr/local/bin/rabbitmqadmin' + commands :rabbitmqctl => 'rabbitmqctl' + commands :rabbitmqadmin => '/usr/local/bin/rabbitmqadmin' else has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' + environment :HOME => "/tmp" end has_command(:rabbitmqadmin, '/usr/local/bin/rabbitmqadmin') do - environment HOME: '/tmp' + environment :HOME => "/tmp" end end - confine feature: :posix + defaultfor :feature => :posix def should_vhost if @should_vhost @@ -23,32 +24,37 @@ Puppet::Type.type(:rabbitmq_queue).provide(:rabbitmqadmin) do end def self.all_vhosts - rabbitmqctl('list_vhosts', '-q').split(%r{\n}) + vhosts = [] + rabbitmqctl('list_vhosts', '-q').split(/\n/).collect do |vhost| + vhosts.push(vhost) + end + vhosts end def self.all_queues(vhost) - rabbitmqctl('list_queues', '-q', '-p', vhost, 'name', 'durable', 'auto_delete', 'arguments').split(%r{\n}) + rabbitmqctl('list_queues', '-q', '-p', vhost, 'name', 'durable', 'auto_delete', 'arguments').split(/\n/) end def self.instances resources = [] all_vhosts.each do |vhost| - all_queues(vhost).map do |line| - next if line =~ %r{^federation:} - name, durable, auto_delete, arguments = line.split("\t") + all_queues(vhost).collect do |line| + name, durable, auto_delete, arguments = line.split() # Convert output of arguments from the rabbitmqctl command to a json string. if !arguments.nil? - arguments = arguments.gsub(%r{^\[(.*)\]$}, '').gsub(%r{\{("(?:.|\\")*?"),}, '{\1:').gsub(%r{\},\{}, ',') - arguments = '{}' if arguments == '' + arguments = arguments.gsub(/^\[(.*)\]$/, "").gsub(/\{("(?:.|\\")*?"),/, '{\1:').gsub(/\},\{/, ",") + if arguments == "" + arguments = '{}' + end else arguments = '{}' end queue = { - durable: durable, - auto_delete: auto_delete, - arguments: JSON.parse(arguments), - ensure: :present, - name: format('%s@%s', name, vhost) + :durable => durable, + :auto_delete => auto_delete, + :arguments => JSON.parse(arguments), + :ensure => :present, + :name => "%s@%s" % [name, vhost], } resources << new(queue) if queue[:name] end @@ -59,7 +65,7 @@ Puppet::Type.type(:rabbitmq_queue).provide(:rabbitmqadmin) do def self.prefetch(resources) packages = instances resources.keys.each do |name| - if (provider = packages.find { |pkg| pkg.name == name }) + if provider = packages.find{ |pkg| pkg.name == name } resources[name].provider = provider end end @@ -73,18 +79,21 @@ Puppet::Type.type(:rabbitmq_queue).provide(:rabbitmqadmin) do vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : '' name = resource[:name].rpartition('@').first arguments = resource[:arguments] - arguments = {} if arguments.nil? + if arguments.nil? + arguments = {} + end rabbitmqadmin('declare', - 'queue', - vhost_opt, - "--user=#{resource[:user]}", - "--password=#{resource[:password]}", - '-c', - '/etc/rabbitmq/rabbitmqadmin.conf', - "name=#{name}", - "durable=#{resource[:durable]}", - "auto_delete=#{resource[:auto_delete]}", - "arguments=#{arguments.to_json}") + 'queue', + vhost_opt, + "--user=#{resource[:user]}", + "--password=#{resource[:password]}", + '-c', + '/etc/rabbitmq/rabbitmqadmin.conf', + "name=#{name}", + "durable=#{resource[:durable]}", + "auto_delete=#{resource[:auto_delete]}", + "arguments=#{arguments.to_json}" + ) @property_hash[:ensure] = :present end @@ -94,4 +103,5 @@ Puppet::Type.type(:rabbitmq_queue).provide(:rabbitmqadmin) do rabbitmqadmin('delete', 'queue', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", '-c', '/etc/rabbitmq/rabbitmqadmin.conf', "name=#{name}") @property_hash[:ensure] = :absent end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb index 9eab0ddea..da37886cb 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb @@ -1,103 +1,98 @@ +require 'puppet' +require 'set' require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_user).provide( - :rabbitmqctl, - parent: Puppet::Provider::Rabbitmqctl -) do - has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' - end - - confine feature: :posix +Puppet::Type.type(:rabbitmq_user).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do - def initialize(value = {}) - super(value) - @property_flush = {} + if Puppet::PUPPETVERSION.to_f < 3 + commands :rabbitmqctl => 'rabbitmqctl' + else + has_command(:rabbitmqctl, 'rabbitmqctl') do + environment :HOME => "/tmp" + end end + defaultfor :feature => :posix + def self.instances - user_list = run_with_retries do + self.run_with_retries { rabbitmqctl('-q', 'list_users') - end - - user_list.split(%r{\n}).map do |line| - raise Puppet::Error, "Cannot parse invalid user line: #{line}" unless line =~ %r{^(\S+)\s+\[(.*?)\]$} - user = Regexp.last_match(1) - tags = Regexp.last_match(2).split(%r{,\s*}) - new( - ensure: :present, - name: user, - tags: tags - ) + }.split(/\n/).collect do |line| + if line =~ /^(\S+)(\s+\[.*?\]|)$/ + new(:name => $1) + else + raise Puppet::Error, "Cannot parse invalid user line: #{line}" + end end end - def self.prefetch(resources) - users = instances - resources.each_key do |user| - if (provider = users.find { |u| u.name == user }) - resources[user].provider = provider - end + def create + rabbitmqctl('add_user', resource[:name], resource[:password]) + if resource[:admin] == :true + make_user_admin() + end + if ! resource[:tags].empty? + set_user_tags(resource[:tags]) end end - def exists? - @property_hash[:ensure] == :present + def change_password + rabbitmqctl('change_password', resource[:name], resource[:password]) end - def create - # Fail here (rather than a validate block in the type) if password is not - # set, so that "puppet resource" still works. - raise Puppet::Error, "Password is a required parameter for rabbitmq_user (user: #{name})" if @resource[:password].nil? - - rabbitmqctl('add_user', @resource[:name], @resource[:password]) + def password + nil + end - tags = @resource[:tags] - tags << admin_tag if @resource[:admin] == :true - rabbitmqctl('set_user_tags', @resource[:name], tags) unless tags.empty? - @property_hash[:ensure] = :present + def check_password + response = rabbitmqctl('eval', 'rabbit_access_control:check_user_pass_login(list_to_binary("' + resource[:name] + '"), list_to_binary("' + resource[:password] +'")).') + if response.include? 'refused' + false + else + true + end end def destroy - rabbitmqctl('delete_user', @resource[:name]) - @property_hash[:ensure] = :absent + rabbitmqctl('delete_user', resource[:name]) end - def password=(password) - rabbitmqctl('change_password', @resource[:name], password) + def exists? + self.class.run_with_retries { + rabbitmqctl('-q', 'list_users') + }.split(/\n/).detect do |line| + line.match(/^#{Regexp.escape(resource[:name])}(\s+(\[.*?\]|\S+)|)$/) + end end - def password; end - - def check_password(password) - check_access_control = [ - 'rabbit_access_control:check_user_pass_login(', - %[list_to_binary("#{@resource[:name]}"), ], - %[list_to_binary("#{password}")).] - ] - - response = rabbitmqctl('eval', check_access_control.join) - !response.include? 'refused' - end def tags + tags = get_user_tags # do not expose the administrator tag for admins - @property_hash[:tags].reject { |tag| tag == admin_tag } + if resource[:admin] == :true + tags.delete('administrator') + end + tags.entries.sort end + def tags=(tags) - @property_flush[:tags] = tags + if ! tags.nil? + set_user_tags(tags) + end end def admin - usertags = get_user_tags - raise Puppet::Error, "Could not match line '#{resource[:name]} (true|false)' from list_users (perhaps you are running on an older version of rabbitmq that does not support admin users?)" unless usertags - (:true if usertags.include?('administrator')) || :false + if usertags = get_user_tags + (:true if usertags.include?('administrator')) || :false + else + raise Puppet::Error, "Could not match line '#{resource[:name]} (true|false)' from list_users (perhaps you are running on an older version of rabbitmq that does not support admin users?)" + end end def admin=(state) if state == :true - make_user_admin + make_user_admin() else usertags = get_user_tags usertags.delete('administrator') @@ -105,25 +100,27 @@ Puppet::Type.type(:rabbitmq_user).provide( end end - def admin - @property_hash[:tags].include?(admin_tag) ? :true : :false - end - - def admin=(state) - @property_flush[:admin] = state + def set_user_tags(tags) + is_admin = get_user_tags().member?("administrator") \ + || resource[:admin] == :true + usertags = Set.new(tags) + if is_admin + usertags.add("administrator") + end + rabbitmqctl('set_user_tags', resource[:name], usertags.entries.sort) end - def flush - return if @property_flush.empty? - tags = @property_flush[:tags] || @resource[:tags] - tags << admin_tag if @resource[:admin] == :true - rabbitmqctl('set_user_tags', @resource[:name], tags) - @property_flush.clear + def make_user_admin + usertags = get_user_tags + usertags.add('administrator') + rabbitmqctl('set_user_tags', resource[:name], usertags.entries.sort) end private - - def admin_tag - 'administrator' + def get_user_tags + match = rabbitmqctl('-q', 'list_users').split(/\n/).collect do |line| + line.match(/^#{Regexp.escape(resource[:name])}\s+\[(.*?)\]/) + end.compact.first + Set.new(match[1].split(' ').map{|x| x.gsub(/,$/, '')}) if match end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb index d44d4586d..a0b8b5a1a 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb @@ -1,28 +1,31 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, parent: Puppet::Provider::Rabbitmqctl) do +Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do + if Puppet::PUPPETVERSION.to_f < 3 - commands rabbitmqctl: 'rabbitmqctl' + commands :rabbitmqctl => 'rabbitmqctl' else - has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' - end + has_command(:rabbitmqctl, 'rabbitmqctl') do + environment :HOME => "/tmp" + end end - confine feature: :posix + defaultfor :feature=> :posix # cache users permissions def self.users(name, vhost) @users = {} unless @users unless @users[name] @users[name] = {} - user_permission_list = run_with_retries do + self.run_with_retries { rabbitmqctl('-q', 'list_user_permissions', name) - end - user_permission_list.split(%r{\n}).each do |line| - line = strip_backslashes(line) - raise Puppet::Error, "cannot parse line from list_user_permissions:#{line}" unless line =~ %r{^(\S+)\s+(\S*)\s+(\S*)\s+(\S*)$} - @users[name][Regexp.last_match(1)] = - { configure: Regexp.last_match(2), read: Regexp.last_match(4), write: Regexp.last_match(3) } + }.split(/\n/).each do |line| + line = self::strip_backslashes(line) + if line =~ /^(\S+)\s+(\S*)\s+(\S*)\s+(\S*)$/ + @users[name][$1] = + {:configure => $2, :read => $4, :write => $3} + else + raise Puppet::Error, "cannot parse line from list_user_permissions:#{line}" + end end end @users[name][vhost] @@ -69,7 +72,7 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, parent: Pupp users(should_user, should_vhost)[:configure] end - def configure_permission=(_perm) + def configure_permission=(perm) set_permissions end @@ -77,7 +80,7 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, parent: Pupp users(should_user, should_vhost)[:read] end - def read_permission=(_perm) + def read_permission=(perm) set_permissions end @@ -85,30 +88,27 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, parent: Pupp users(should_user, should_vhost)[:write] end - def write_permission=(_perm) + def write_permission=(perm) set_permissions end # implement memoization so that we only call set_permissions once def set_permissions - return if @permissions_set - - @permissions_set = true - resource[:configure_permission] ||= configure_permission - resource[:read_permission] ||= read_permission - resource[:write_permission] ||= write_permission - rabbitmqctl( - 'set_permissions', - '-p', should_vhost, - should_user, - resource[:configure_permission], - resource[:write_permission], - resource[:read_permission] - ) + unless @permissions_set + @permissions_set = true + resource[:configure_permission] ||= configure_permission + resource[:read_permission] ||= read_permission + resource[:write_permission] ||= write_permission + rabbitmqctl('set_permissions', '-p', should_vhost, should_user, + resource[:configure_permission], resource[:write_permission], + resource[:read_permission] + ) + end end def self.strip_backslashes(string) # See: https://github.com/rabbitmq/rabbitmq-server/blob/v1_7/docs/rabbitmqctl.1.pod#output-escaping - string.gsub(%r{\\\\}, '\\') + string.gsub(/\\\\/, '\\') end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb index c2703611f..fbd389d87 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb @@ -1,21 +1,23 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_vhost).provide(:rabbitmqctl, parent: Puppet::Provider::Rabbitmqctl) do +Puppet::Type.type(:rabbitmq_vhost).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do + if Puppet::PUPPETVERSION.to_f < 3 - commands rabbitmqctl: 'rabbitmqctl' + commands :rabbitmqctl => 'rabbitmqctl' else - has_command(:rabbitmqctl, 'rabbitmqctl') do - environment HOME: '/tmp' - end + has_command(:rabbitmqctl, 'rabbitmqctl') do + environment :HOME => "/tmp" + end end def self.instances - vhost_list = run_with_retries do + self.run_with_retries { rabbitmqctl('-q', 'list_vhosts') - end - - vhost_list.split(%r{\n}).map do |line| - raise Puppet::Error, "Cannot parse invalid vhost line: #{line}" unless line =~ %r{^(\S+)$} - new(name: Regexp.last_match(1)) + }.split(/\n/).map do |line| + if line =~ /^(\S+)$/ + new(:name => $1) + else + raise Puppet::Error, "Cannot parse invalid user line: #{line}" + end end end @@ -28,6 +30,11 @@ Puppet::Type.type(:rabbitmq_vhost).provide(:rabbitmqctl, parent: Puppet::Provide end def exists? - self.class.run_with_retries { rabbitmqctl('-q', 'list_vhosts') }.split(%r{\n}).include? resource[:name] + out = self.class.run_with_retries { + rabbitmqctl('-q', 'list_vhosts') + }.split(/\n/).detect do |line| + line.match(/^#{Regexp.escape(resource[:name])}$/) + end end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb index bfc27cf9f..d23664569 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmqctl.rb @@ -1,10 +1,10 @@ class Puppet::Provider::Rabbitmqctl < Puppet::Provider initvars - commands rabbitmqctl: 'rabbitmqctl' + commands :rabbitmqctl => 'rabbitmqctl' def self.rabbitmq_version output = rabbitmqctl('-q', 'status') - version = output.match(%r{\{rabbit,"RabbitMQ","([\d\.]+)"\}}) + version = output.match(/\{rabbit,"RabbitMQ","([\d\.]+)"\}/) version[1] if version end @@ -13,13 +13,13 @@ class Puppet::Provider::Rabbitmqctl < Puppet::Provider # Limit each query time by 'timeout'. # For example: # users = self.class.run_with_retries { rabbitmqctl 'list_users' } - def self.run_with_retries(count = 30, step = 6, timeout = 10) - count.times do |_n| + def self.run_with_retries(count=30, step=6, timeout=10) + count.times do |n| begin - output = Timeout.timeout(timeout) do + output = Timeout::timeout(timeout) do yield end - rescue Puppet::ExecutionFailure, Timeout::Error + rescue Puppet::ExecutionFailure, Timeout Puppet.debug 'Command failed, retrying' sleep step else @@ -29,4 +29,5 @@ class Puppet::Provider::Rabbitmqctl < Puppet::Provider end raise Puppet::Error, "Command is still failing after #{count * step} seconds expired!" end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_binding.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_binding.rb index 1165fd955..130948003 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_binding.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_binding.rb @@ -1,42 +1,5 @@ Puppet::Type.newtype(:rabbitmq_binding) do - desc <<-DESC -Native type for managing rabbitmq bindings - -@example Create a rabbitmq_binding - rabbitmq_binding { 'myexchange@myqueue@myvhost': - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => '#', - arguments => {}, - ensure => present, - } - -@example Create bindings with same source / destination / vhost but different routing key using individual parameters -rabbitmq_binding { 'binding 1': - ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key1', - arguments => {}, -} - -rabbitmq_binding { 'binding 2': - ensure => present, - source => 'myexchange', - destination => 'myqueue', - vhost => 'myvhost', - user => 'dan', - password => 'bar', - destination_type => 'queue', - routing_key => 'key2', - arguments => {}, -} -DESC + desc 'Native type for managing rabbitmq bindings' ensurable do defaultto(:present) @@ -48,70 +11,23 @@ DESC end end - # Match patterns without '@' as arbitrary names; match patterns with - # src@destination@vhost to their named params for backwards compatibility. - def self.title_patterns - [ - [ - %r{(^([^@]*)$)}m, - [ - [:name] - ] - ], - [ - %r{^((\S+)@(\S+)@(\S+))$}m, - [ - [:name], - [:source], - [:destination], - [:vhost] - ] - ] - ] - end - - newparam(:name) do - desc 'resource name, either source@destination@vhost or arbitrary name with params' - - isnamevar - end - - newproperty(:source) do - desc 'source of binding' - - newvalues(%r{^\S+$}) - isnamevar - end - - newproperty(:destination) do - desc 'destination of binding' - - newvalues(%r{^\S+$}) - isnamevar + newparam(:name, :namevar => true) do + desc 'source and destination of bind' + newvalues(/^\S*@\S+@\S+$/) end - newproperty(:vhost) do - desc 'vhost' - - newvalues(%r{^\S+$}) - defaultto('/') - isnamevar - end - - newproperty(:routing_key) do - desc 'binding routing_key' - - newvalues(%r{^\S*$}) - isnamevar - end - - newproperty(:destination_type) do + newparam(:destination_type) do desc 'binding destination_type' - newvalues(%r{queue|exchange}) + newvalues(/queue|exchange/) defaultto('queue') end + + newparam(:routing_key) do + desc 'binding routing_key' + newvalues(/^\S*$/) + end - newproperty(:arguments) do + newparam(:arguments) do desc 'binding arguments' defaultto {} validate do |value| @@ -122,19 +38,19 @@ DESC newparam(:user) do desc 'The user to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end newparam(:password) do desc 'The password to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{\S+}) + newvalues(/\S+/) end autorequire(:rabbitmq_vhost) do - setup_autorequire('vhost') + [self[:name].split('@')[2]] end - + autorequire(:rabbitmq_exchange) do setup_autorequire('exchange') end @@ -149,41 +65,32 @@ DESC autorequire(:rabbitmq_user_permissions) do [ - "#{self[:user]}@#{self[:source]}", - "#{self[:user]}@#{self[:destination]}" + "#{self[:user]}@#{self[:name].split('@')[1]}", + "#{self[:user]}@#{self[:name].split('@')[0]}" ] end def setup_autorequire(type) destination_type = value(:destination_type) if type == 'exchange' - rval = ["#{self[:source]}@#{self[:vhost]}"] + rval = ["#{self[:name].split('@')[0]}@#{self[:name].split('@')[2]}"] if destination_type == type - rval.push("#{self[:destination]}@#{self[:vhost]}") + rval.push("#{self[:name].split('@')[1]}@#{self[:name].split('@')[2]}") end else - rval = if destination_type == type - ["#{self[:destination]}@#{self[:vhost]}"] - else - [] - end + if destination_type == type + rval = ["#{self[:name].split('@')[1]}@#{self[:name].split('@')[2]}"] + else + rval = [] + end end rval end def validate_argument(argument) - raise ArgumentError, 'Invalid argument' unless [Hash].include?(argument.class) - end - - # Validate that we have both source and destination now that these are not - # necessarily only coming from the resource title. - validate do - if !self[:source] && !defined? provider.source - raise ArgumentError, '`source` must be defined' - end - - if !self[:destination] && !defined? provider.destination - raise ArgumentError, '`destination` must be defined' + unless [Hash].include?(argument.class) + raise ArgumentError, "Invalid argument" end end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_erlang_cookie.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_erlang_cookie.rb index 0673cafd6..c2e5898dc 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_erlang_cookie.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_erlang_cookie.rb @@ -1,23 +1,13 @@ Puppet::Type.newtype(:rabbitmq_erlang_cookie) do - desc <<-DESC -Type to manage the rabbitmq erlang cookie securely + desc 'Type to manage the rabbitmq erlang cookie securely' -This is essentially a private type used by the rabbitmq::config class -to manage the erlang cookie. It replaces the rabbitmq_erlang_cookie fact -from earlier versions of this module. It manages the content of the cookie -usually located at "${rabbitmq_home}/.erlang.cookie", which includes -stopping the rabbitmq service and wiping out the database at -"${rabbitmq_home}/mnesia" if the user agrees to it. We don't recommend using -this type directly. -DESC - - newparam(:path, namevar: true) + newparam(:path, :namevar => true) newproperty(:content) do desc 'Content of cookie' - newvalues(%r{^\S+$}) - def change_to_s(_current, _desired) - 'The rabbitmq erlang cookie was changed' + newvalues(/^\S+$/) + def change_to_s(current, desired) + "The rabbitmq erlang cookie was changed" end end @@ -39,6 +29,6 @@ DESC end newparam(:service_name) do - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_exchange.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_exchange.rb index 4f274f2ad..b2e88a8de 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_exchange.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_exchange.rb @@ -1,21 +1,5 @@ Puppet::Type.newtype(:rabbitmq_exchange) do - desc <<-DESC -Native type for managing rabbitmq exchanges - -@example Create a rabbitmq_exchange - rabbitmq_exchange { 'myexchange@myvhost': - user => 'dan', - password => 'bar', - type => 'topic', - ensure => present, - internal => false, - auto_delete => false, - durable => true, - arguments => { - hash-header => 'message-distribution-hash' - } - } -DESC + desc 'Native type for managing rabbitmq exchanges' ensurable do defaultto(:present) @@ -27,32 +11,29 @@ DESC end end - newparam(:name, namevar: true) do + newparam(:name, :namevar => true) do desc 'Name of exchange' - newvalues(%r{^\S*@\S+$}) + newvalues(/^\S*@\S+$/) end newparam(:type) do desc 'Exchange type to be set *on creation*' - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end newparam(:durable) do desc 'Exchange durability to be set *on creation*' - newvalues(%r{^\S+$}) - defaultto 'false' + newvalues(/^\S+$/) end newparam(:auto_delete) do desc 'Exchange auto delete option to be set *on creation*' - newvalues(%r{^\S+$}) - defaultto 'false' + newvalues(/^\S+$/) end newparam(:internal) do desc 'Exchange internal option to be set *on creation*' - newvalues(%r{^\S+$}) - defaultto 'false' + newvalues(/^\S+$/) end newparam(:arguments) do @@ -63,17 +44,17 @@ DESC newparam(:user) do desc 'The user to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end newparam(:password) do desc 'The password to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{\S+}) + newvalues(/\S+/) end validate do - if self[:ensure] == :present && self[:type].nil? + if self[:ensure] == :present and self[:type].nil? raise ArgumentError, "must set type when creating exchange for #{self[:name]} whose type is #{self[:type]}" end end @@ -89,4 +70,5 @@ DESC autorequire(:rabbitmq_user_permissions) do ["#{self[:user]}@#{self[:name].split('@')[1]}"] end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_parameter.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_parameter.rb deleted file mode 100644 index 8a062c0b5..000000000 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_parameter.rb +++ /dev/null @@ -1,86 +0,0 @@ -Puppet::Type.newtype(:rabbitmq_parameter) do - desc <<-DESC -Type for managing rabbitmq parameters - -@example Create some rabbitmq_parameter resources - rabbitmq_parameter { 'documentumShovel@/': - component_name => '', - value => { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue', - }, - } - rabbitmq_parameter { 'documentumFed@/': - component_name => 'federation-upstream', - value => { - 'uri' => 'amqp://myserver', - 'expires' => '360000', - }, - } -DESC - - ensurable do - defaultto(:present) - newvalue(:present) do - provider.create - end - newvalue(:absent) do - provider.destroy - end - end - - autorequire(:service) { 'rabbitmq-server' } - - validate do - raise('component_name parameter is required.') if self[:ensure] == :present && self[:component_name].nil? - raise('value parameter is required.') if self[:ensure] == :present && self[:value].nil? - end - - newparam(:name, namevar: true) do - desc 'combination of name@vhost to set parameter for' - newvalues(%r{^\S+@\S+$}) - end - - newproperty(:component_name) do - desc 'The component_name to use when setting parameter, eg: shovel or federation' - validate do |value| - resource.validate_component_name(value) - end - end - - newproperty(:value) do - desc 'A hash of values to use with the component name you are setting' - validate do |value| - resource.validate_value(value) - end - munge do |value| - resource.munge_value(value) - end - end - - autorequire(:rabbitmq_vhost) do - [self[:name].split('@')[1]] - end - - def validate_component_name(value) - raise ArgumentError, 'component_name must be defined' if value.empty? - end - - def validate_value(value) - raise ArgumentError, 'Invalid value' unless [Hash].include?(value.class) - value.each do |_k, v| - unless [String, TrueClass, FalseClass].include?(v.class) - raise ArgumentError, 'Invalid value' - end - end - end - - def munge_value(value) - value.each do |k, v| - value[k] = v.to_i if v =~ %r{\A[-+]?[0-9]+\z} - end - value - end -end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_plugin.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_plugin.rb index 2cb96c5fa..497ced4e6 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_plugin.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_plugin.rb @@ -1,15 +1,5 @@ Puppet::Type.newtype(:rabbitmq_plugin) do - desc <<-DESC -manages rabbitmq plugins - -@example query all currently enabled plugins - $ puppet resource rabbitmq_plugin - -@example Ensure a rabbitmq_plugin resource - rabbitmq_plugin {'rabbitmq_stomp': - ensure => present, - } -DESC + desc 'manages rabbitmq plugins' ensurable do defaultto(:present) @@ -21,17 +11,9 @@ DESC end end - newparam(:name, namevar: true) do - desc 'The name of the plugin to enable' - newvalues(%r{^\S+$}) + newparam(:name, :namevar => true) do + 'name of the plugin to enable' + newvalues(/^\S+$/) end - newparam(:umask) do - desc 'Sets the octal umask to be used while creating this resource' - defaultto '0022' - munge do |value| - raise Puppet::Error, "The umask specification is invalid: #{value.inspect}" unless value =~ %r{^0?[0-7]{1,3}$} - return value.to_i(8) - end - end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb index 65275a755..259a1d66c 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb @@ -1,18 +1,5 @@ Puppet::Type.newtype(:rabbitmq_policy) do - desc <<-DESC -Type for managing rabbitmq policies - -@example Create a rabbitmq_policy - rabbitmq_policy { 'ha-all@myvhost': - pattern => '.*', - priority => 0, - applyto => 'all', - definition => { - 'ha-mode' => 'all', - 'ha-sync-mode' => 'automatic', - }, - } -DESC + desc 'Type for managing rabbitmq policies' ensurable do defaultto(:present) @@ -27,13 +14,13 @@ DESC autorequire(:service) { 'rabbitmq-server' } validate do - raise('pattern parameter is required.') if self[:ensure] == :present && self[:pattern].nil? - raise('definition parameter is required.') if self[:ensure] == :present && self[:definition].nil? + fail('pattern parameter is required.') if self[:ensure] == :present and self[:pattern].nil? + fail('definition parameter is required.') if self[:ensure] == :present and self[:definition].nil? end - newparam(:name, namevar: true) do + newparam(:name, :namevar => true) do desc 'combination of policy@vhost to create policy for' - newvalues(%r{^\S+@\S+$}) + newvalues(/^\S+@\S+$/) end newproperty(:pattern) do @@ -63,7 +50,7 @@ DESC newproperty(:priority) do desc 'policy priority' - newvalues(%r{^\d+$}) + newvalues(/^\d+$/) defaultto 0 end @@ -72,24 +59,20 @@ DESC end def validate_pattern(value) - Regexp.new(value) - rescue RegexpError - raise ArgumentError, "Invalid regexp #{value}" + begin + Regexp.new(value) + rescue RegexpError + raise ArgumentError, "Invalid regexp #{value}" + end end def validate_definition(definition) unless [Hash].include?(definition.class) - raise ArgumentError, 'Invalid definition' + raise ArgumentError, "Invalid definition" end - definition.each do |k, v| - if k == 'ha-params' && definition['ha-mode'] == 'nodes' - unless [Array].include?(v.class) - raise ArgumentError, "Invalid definition, value #{v} for key #{k} is not an array" - end - else - unless [String].include?(v.class) - raise ArgumentError, "Invalid definition, value #{v} is not a string" - end + definition.each do |k,v| + unless [String].include?(v.class) + raise ArgumentError, "Invalid definition" end end if definition['ha-mode'] == 'exactly' @@ -104,36 +87,6 @@ DESC raise ArgumentError, "Invalid expires value '#{expires_val}'" end end - if definition.key? 'message-ttl' - message_ttl_val = definition['message-ttl'] - unless message_ttl_val.to_i.to_s == message_ttl_val - raise ArgumentError, "Invalid message-ttl value '#{message_ttl_val}'" - end - end - if definition.key? 'max-length' - max_length_val = definition['max-length'] - unless max_length_val.to_i.to_s == max_length_val - raise ArgumentError, "Invalid max-length value '#{max_length_val}'" - end - end - if definition.key? 'max-length-bytes' - max_length_bytes_val = definition['max-length-bytes'] - unless max_length_bytes_val.to_i.to_s == max_length_bytes_val - raise ArgumentError, "Invalid max-length-bytes value '#{max_length_bytes_val}'" - end - end - if definition.key? 'shards-per-node' - shards_per_node_val = definition['shards-per-node'] - unless shards_per_node_val.to_i.to_s == shards_per_node_val - raise ArgumentError, "Invalid shards-per-node value '#{shards_per_node_val}'" - end - end - if definition.key? 'ha-sync-batch-size' # rubocop:disable Style/GuardClause - ha_sync_batch_size_val = definition['ha-sync-batch-size'] - unless ha_sync_batch_size_val.to_i.to_s == ha_sync_batch_size_val - raise ArgumentError, "Invalid ha-sync-batch-size value '#{ha_sync_batch_size_val}'" - end - end end def munge_definition(definition) @@ -143,21 +96,6 @@ DESC if definition.key? 'expires' definition['expires'] = definition['expires'].to_i end - if definition.key? 'message-ttl' - definition['message-ttl'] = definition['message-ttl'].to_i - end - if definition.key? 'max-length' - definition['max-length'] = definition['max-length'].to_i - end - if definition.key? 'max-length-bytes' - definition['max-length-bytes'] = definition['max-length-bytes'].to_i - end - if definition.key? 'shards-per-node' - definition['shards-per-node'] = definition['shards-per-node'].to_i - end - if definition.key? 'ha-sync-batch-size' - definition['ha-sync-batch-size'] = definition['ha-sync-batch-size'].to_i - end definition end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_queue.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_queue.rb index 63fc19ba5..464a2ca6e 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_queue.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_queue.rb @@ -1,20 +1,5 @@ Puppet::Type.newtype(:rabbitmq_queue) do - desc <<-DESC -Native type for managing rabbitmq queue - -@example Create a rabbitmq_queue - rabbitmq_queue { 'myqueue@myvhost': - ensure => present, - user => 'dan', - password => 'bar', - durable => true, - auto_delete => false, - arguments => { - x-message-ttl => 123, - x-dead-letter-exchange => 'other' - }, - } -DESC + desc 'Native type for managing rabbitmq queue' ensurable do defaultto(:present) @@ -26,20 +11,20 @@ DESC end end - newparam(:name, namevar: true) do + newparam(:name, :namevar => true) do desc 'Name of queue' - newvalues(%r{^\S*@\S+$}) + newvalues(/^\S*@\S+$/) end newparam(:durable) do desc 'Queue is durable' - newvalues(%r{true|false}) + newvalues(/true|false/) defaultto('true') end - + newparam(:auto_delete) do desc 'Queue will be auto deleted' - newvalues(%r{true|false}) + newvalues(/true|false/) defaultto('false') end @@ -54,13 +39,13 @@ DESC newparam(:user) do desc 'The user to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end newparam(:password) do desc 'The password to use to connect to rabbitmq' defaultto('guest') - newvalues(%r{\S+}) + newvalues(/\S+/) end autorequire(:rabbitmq_vhost) do @@ -76,6 +61,8 @@ DESC end def validate_argument(argument) - raise ArgumentError, 'Invalid argument' unless [Hash].include?(argument.class) + unless [Hash].include?(argument.class) + raise ArgumentError, "Invalid argument" + end end end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb index 9fda2c29d..baf479585 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb @@ -1,24 +1,5 @@ Puppet::Type.newtype(:rabbitmq_user) do - desc <<-DESC -Native type for managing rabbitmq users - -@example query all current users - $ puppet resource rabbitmq_user - -@example Configure a user, dan - rabbitmq_user { 'dan': - admin => true, - password => 'bar', - } - -@example Optional parameter tags will set further rabbitmq tags like monitoring, policymaker, etc. - To set the administrator tag use admin-flag. - rabbitmq_user { 'dan': - admin => true, - password => 'bar', - tags => ['monitoring', 'tag1'], - } -DESC + desc 'Native type for managing rabbitmq users' ensurable do defaultto(:present) @@ -32,25 +13,27 @@ DESC autorequire(:service) { 'rabbitmq-server' } - newparam(:name, namevar: true) do + newparam(:name, :namevar => true) do desc 'Name of user' - newvalues(%r{^\S+$}) + newvalues(/^\S+$/) end newproperty(:password) do desc 'User password to be set *on creation* and validated each run' - def insync?(_is) - provider.check_password(should) + def insync?(is) + provider.check_password end - - def change_to_s(_current, _desired) - 'password has been changed' + def set(value) + provider.change_password + end + def change_to_s(current, desired) + "password has been changed" end end newproperty(:admin) do desc 'whether or not user should be an admin' - newvalues(%r{true|false}) + newvalues(/true|false/) munge do |value| # converting to_s in case its a boolean value.to_s.to_sym @@ -58,25 +41,45 @@ DESC defaultto :false end - newproperty(:tags, array_matching: :all) do + newproperty(:tags, :array_matching => :all) do desc 'additional tags for the user' validate do |value| - unless value =~ %r{^\S+$} + unless value =~ /^\S+$/ raise ArgumentError, "Invalid tag: #{value.inspect}" end - if value == 'administrator' - raise ArgumentError, 'must use admin property instead of administrator tag' + if value == "administrator" + raise ArgumentError, "must use admin property instead of administrator tag" end end defaultto [] def insync?(is) - is.sort == should.sort + self.is_to_s(is) == self.should_to_s end - def should_to_s(value) - Array(value) + def is_to_s(currentvalue = @is) + if currentvalue + "[#{currentvalue.sort.join(', ')}]" + else + '[]' + end end + + def should_to_s(newvalue = @should) + if newvalue + "[#{newvalue.sort.join(', ')}]" + else + '[]' + end + end + end + + validate do + if self[:ensure] == :present and ! self[:password] + raise ArgumentError, 'must set password when creating user' unless self[:password] + end + end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb index a1fc92986..493d47c88 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb @@ -1,14 +1,5 @@ Puppet::Type.newtype(:rabbitmq_user_permissions) do - desc <<-DESC -Type for managing rabbitmq user permissions - -@example Define some rabbitmq_user_permissions - rabbitmq_user_permissions { 'dan@myvhost': - configure_permission => '.*', - read_permission => '.*', - write_permission => '.*', - } -DESC + desc 'Type for managing rabbitmq user permissions' ensurable do defaultto(:present) @@ -22,9 +13,9 @@ DESC autorequire(:service) { 'rabbitmq-server' } - newparam(:name, namevar: true) do + newparam(:name, :namevar => true) do desc 'combination of user@vhost to grant privileges to' - newvalues(%r{^\S+@\S+$}) + newvalues(/^\S+@\S+$/) end newproperty(:configure_permission) do @@ -56,9 +47,13 @@ DESC [self[:name].split('@')[0]] end + # I may want to dissalow whitespace def validate_permissions(value) - Regexp.new(value) - rescue RegexpError - raise ArgumentError, "Invalid regexp #{value}" + begin + Regexp.new(value) + rescue RegexpError + raise ArgumentError, "Invalid regexp #{value}" + end end + end diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_vhost.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_vhost.rb index 8e9407e93..1349be6e5 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_vhost.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_vhost.rb @@ -1,15 +1,5 @@ Puppet::Type.newtype(:rabbitmq_vhost) do - desc <<-DESC -Native type for managing rabbitmq vhosts - -@example query all current vhosts - $ puppet resource rabbitmq_vhost` - -@example Create a rabbitmq_vhost - rabbitmq_vhost { 'myvhost': - ensure => present, - } -DESC + desc 'manages rabbitmq vhosts' ensurable do defaultto(:present) @@ -23,8 +13,9 @@ DESC autorequire(:service) { 'rabbitmq-server' } - newparam(:name, namevar: true) do - desc 'The name of the vhost to add' - newvalues(%r{^\S+$}) + newparam(:name, :namevar => true) do + 'name of the vhost to add' + newvalues(/^\S+$/) end + end diff --git a/3rdparty/modules/rabbitmq/locales/config.yaml b/3rdparty/modules/rabbitmq/locales/config.yaml deleted file mode 100644 index f0a6ae6a2..000000000 --- a/3rdparty/modules/rabbitmq/locales/config.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -# This is the project-specific configuration file for setting up -# fast_gettext for your project. -gettext: - # This is used for the name of the .pot and .po files; they will be - # called .pot? - project_name: puppetlabs-rabbitmq - # This is used in comments in the .pot and .po files to indicate what - # project the files belong to and should bea little more desctiptive than - # - package_name: puppetlabs-rabbitmq - # The locale that the default messages in the .pot file are in - default_locale: en - # The email used for sending bug reports. - bugs_address: docs@puppet.com - # The holder of the copyright. - copyright_holder: Puppet, Inc. - # This determines which comments in code should be eligible for translation. - # Any comments that start with this string will be externalized. (Leave - # empty to include all.) - comments_tag: TRANSLATOR - # Patterns for +Dir.glob+ used to find all files that might contain - # translatable content, relative to the project root directory - source_files: - diff --git a/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_55_23/sut.log b/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_55_23/sut.log new file mode 100644 index 000000000..daba18f87 --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_55_23/sut.log @@ -0,0 +1,2 @@ +2015-05-22 18:55:24 [+] vcloud el-6-x86_64 x7igdqecc5wczwg.delivery.puppetlabs.net (centos-6-vcloud) +2015-05-22 18:56:27 [-] vcloud el-6-x86_64 x7igdqecc5wczwg.delivery.puppetlabs.net (centos-6-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_57_07/sut.log b/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_57_07/sut.log new file mode 100644 index 000000000..ee5be971f --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/centos-6-x64-vcloud/2015-05-22_18_57_07/sut.log @@ -0,0 +1,2 @@ +2015-05-22 18:57:08 [+] vcloud el-6-x86_64 bnzq0zsilo3bhbv.delivery.puppetlabs.net (centos-6-vcloud) +2015-05-22 19:09:48 [-] vcloud el-6-x86_64 bnzq0zsilo3bhbv.delivery.puppetlabs.net (centos-6-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_35_45/sut.log b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_35_45/sut.log new file mode 100644 index 000000000..5f2329a22 --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_35_45/sut.log @@ -0,0 +1,2 @@ +2015-05-22 18:35:46 [+] vcloud debian-7-x86_64 upzah8fcy4az78n.delivery.puppetlabs.net (debian-7-vcloud) +2015-05-22 18:46:28 [-] vcloud debian-7-x86_64 upzah8fcy4az78n.delivery.puppetlabs.net (debian-7-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_49_58/sut.log b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_49_58/sut.log new file mode 100644 index 000000000..322d50be6 --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_18_49_58/sut.log @@ -0,0 +1,2 @@ +2015-05-22 18:49:59 [+] vcloud debian-7-x86_64 pwvlrfgqbbgoc21.delivery.puppetlabs.net (debian-7-vcloud) +2015-05-22 18:54:13 [-] vcloud debian-7-x86_64 pwvlrfgqbbgoc21.delivery.puppetlabs.net (debian-7-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_10_48/sut.log b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_10_48/sut.log new file mode 100644 index 000000000..5d01374fe --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_10_48/sut.log @@ -0,0 +1,2 @@ +2015-05-22 19:10:49 [+] vcloud debian-7-x86_64 tnx0tmyf2ws118o.delivery.puppetlabs.net (debian-7-vcloud) +2015-05-22 19:11:16 [-] vcloud debian-7-x86_64 tnx0tmyf2ws118o.delivery.puppetlabs.net (debian-7-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_11_31/sut.log b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_11_31/sut.log new file mode 100644 index 000000000..ff82d28ae --- /dev/null +++ b/3rdparty/modules/rabbitmq/log/debian-7-x64-vcloud/2015-05-22_19_11_31/sut.log @@ -0,0 +1,2 @@ +2015-05-22 19:11:32 [+] vcloud debian-7-x86_64 inmrclcv6poi3ho.delivery.puppetlabs.net (debian-7-vcloud) +2015-05-22 19:15:48 [-] vcloud debian-7-x86_64 inmrclcv6poi3ho.delivery.puppetlabs.net (debian-7-vcloud) diff --git a/3rdparty/modules/rabbitmq/log/default/2015-05-22_18_35_28/sut.log b/3rdparty/modules/rabbitmq/log/default/2015-05-22_18_35_28/sut.log new file mode 100644 index 000000000..e69de29bb diff --git a/3rdparty/modules/rabbitmq/manifests/config.pp b/3rdparty/modules/rabbitmq/manifests/config.pp index 8abaeb985..159ae68db 100644 --- a/3rdparty/modules/rabbitmq/manifests/config.pp +++ b/3rdparty/modules/rabbitmq/manifests/config.pp @@ -3,152 +3,75 @@ # config and ssl. class rabbitmq::config { - $admin_enable = $rabbitmq::admin_enable - $cluster_node_type = $rabbitmq::cluster_node_type - $cluster_nodes = $rabbitmq::cluster_nodes - $config = $rabbitmq::config - $config_cluster = $rabbitmq::config_cluster - $config_path = $rabbitmq::config_path - $config_ranch = $rabbitmq::config_ranch - $config_stomp = $rabbitmq::config_stomp - $config_shovel = $rabbitmq::config_shovel - $config_shovel_statics = $rabbitmq::config_shovel_statics - $default_user = $rabbitmq::default_user - $default_pass = $rabbitmq::default_pass - $env_config = $rabbitmq::env_config - $env_config_path = $rabbitmq::env_config_path - $erlang_cookie = $rabbitmq::erlang_cookie - $interface = $rabbitmq::interface - $management_port = $rabbitmq::management_port - $management_ssl = $rabbitmq::management_ssl - $management_hostname = $rabbitmq::management_hostname - $node_ip_address = $rabbitmq::node_ip_address - $rabbitmq_user = $rabbitmq::rabbitmq_user - $rabbitmq_group = $rabbitmq::rabbitmq_group - $rabbitmq_home = $rabbitmq::rabbitmq_home - $port = $rabbitmq::port - $tcp_keepalive = $rabbitmq::tcp_keepalive - $tcp_backlog = $rabbitmq::tcp_backlog - $tcp_sndbuf = $rabbitmq::tcp_sndbuf - $tcp_recbuf = $rabbitmq::tcp_recbuf - $heartbeat = $rabbitmq::heartbeat - $service_name = $rabbitmq::service_name - $ssl = $rabbitmq::ssl - $ssl_only = $rabbitmq::ssl_only - $ssl_cacert = $rabbitmq::ssl_cacert - $ssl_cert = $rabbitmq::ssl_cert - $ssl_key = $rabbitmq::ssl_key - $ssl_depth = $rabbitmq::ssl_depth - $ssl_cert_password = $rabbitmq::ssl_cert_password - $ssl_port = $rabbitmq::ssl_port - $ssl_interface = $rabbitmq::ssl_interface - $ssl_management_port = $rabbitmq::ssl_management_port - $ssl_management_verify = $rabbitmq::ssl_management_verify - $ssl_management_fail_if_no_peer_cert = $rabbitmq::ssl_management_fail_if_no_peer_cert - $ssl_stomp_port = $rabbitmq::ssl_stomp_port - $ssl_verify = $rabbitmq::ssl_verify - $ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert - $ssl_secure_renegotiate = $rabbitmq::ssl_secure_renegotiate - $ssl_reuse_sessions = $rabbitmq::ssl_reuse_sessions - $ssl_honor_cipher_order = $rabbitmq::ssl_honor_cipher_order - $ssl_dhfile = $rabbitmq::ssl_dhfile - $ssl_versions = $rabbitmq::ssl_versions - $ssl_ciphers = $rabbitmq::ssl_ciphers - $stomp_port = $rabbitmq::stomp_port - $stomp_ssl_only = $rabbitmq::stomp_ssl_only - $ldap_auth = $rabbitmq::ldap_auth - $ldap_server = $rabbitmq::ldap_server - $ldap_user_dn_pattern = $rabbitmq::ldap_user_dn_pattern - $ldap_other_bind = $rabbitmq::ldap_other_bind - $ldap_use_ssl = $rabbitmq::ldap_use_ssl - $ldap_port = $rabbitmq::ldap_port - $ldap_log = $rabbitmq::ldap_log - $ldap_config_variables = $rabbitmq::ldap_config_variables - $wipe_db_on_cookie_change = $rabbitmq::wipe_db_on_cookie_change - $config_variables = $rabbitmq::config_variables - $config_kernel_variables = $rabbitmq::config_kernel_variables - $config_management_variables = $rabbitmq::config_management_variables - $config_additional_variables = $rabbitmq::config_additional_variables - $auth_backends = $rabbitmq::auth_backends - $cluster_partition_handling = $rabbitmq::cluster_partition_handling - $file_limit = $rabbitmq::file_limit - $collect_statistics_interval = $rabbitmq::collect_statistics_interval - $ipv6 = $rabbitmq::ipv6 - $inetrc_config = $rabbitmq::inetrc_config - $inetrc_config_path = $rabbitmq::inetrc_config_path - $ssl_erl_dist = $rabbitmq::ssl_erl_dist - $loopback_users = $rabbitmq::loopback_users - - if $ssl_only { - $default_ssl_env_variables = {} - } else { - $default_ssl_env_variables = { - 'NODE_PORT' => $port, - 'NODE_IP_ADDRESS' => $node_ip_address, - } - } - - # This seems like a sensible default, and I think we have to assign it here - # to be safe. Use $node_ip_address (which can also be undef) if - # $management_ip_address is not set. - if $rabbitmq::management_ip_address { - $management_ip_address = $rabbitmq::management_ip_address - } else { - $management_ip_address = $rabbitmq::node_ip_address + $admin_enable = $rabbitmq::admin_enable + $cluster_node_type = $rabbitmq::cluster_node_type + $cluster_nodes = $rabbitmq::cluster_nodes + $config = $rabbitmq::config + $config_cluster = $rabbitmq::config_cluster + $config_path = $rabbitmq::config_path + $config_stomp = $rabbitmq::config_stomp + $default_user = $rabbitmq::default_user + $default_pass = $rabbitmq::default_pass + $env_config = $rabbitmq::env_config + $env_config_path = $rabbitmq::env_config_path + $erlang_cookie = $rabbitmq::erlang_cookie + $interface = $rabbitmq::interface + $management_port = $rabbitmq::management_port + $node_ip_address = $rabbitmq::node_ip_address + $plugin_dir = $rabbitmq::plugin_dir + $rabbitmq_user = $rabbitmq::rabbitmq_user + $rabbitmq_group = $rabbitmq::rabbitmq_group + $rabbitmq_home = $rabbitmq::rabbitmq_home + $port = $rabbitmq::port + $tcp_keepalive = $rabbitmq::tcp_keepalive + $service_name = $rabbitmq::service_name + $ssl = $rabbitmq::ssl + $ssl_only = $rabbitmq::ssl_only + $ssl_cacert = $rabbitmq::ssl_cacert + $ssl_cert = $rabbitmq::ssl_cert + $ssl_key = $rabbitmq::ssl_key + $ssl_port = $rabbitmq::ssl_port + $ssl_interface = $rabbitmq::ssl_interface + $ssl_management_port = $rabbitmq::ssl_management_port + $ssl_stomp_port = $rabbitmq::ssl_stomp_port + $ssl_verify = $rabbitmq::ssl_verify + $ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert + $ssl_versions = $rabbitmq::ssl_versions + $ssl_ciphers = $rabbitmq::ssl_ciphers + $stomp_port = $rabbitmq::stomp_port + $ldap_auth = $rabbitmq::ldap_auth + $ldap_server = $rabbitmq::ldap_server + $ldap_user_dn_pattern = $rabbitmq::ldap_user_dn_pattern + $ldap_other_bind = $rabbitmq::ldap_other_bind + $ldap_use_ssl = $rabbitmq::ldap_use_ssl + $ldap_port = $rabbitmq::ldap_port + $ldap_log = $rabbitmq::ldap_log + $ldap_config_variables = $rabbitmq::ldap_config_variables + $wipe_db_on_cookie_change = $rabbitmq::wipe_db_on_cookie_change + $config_variables = $rabbitmq::config_variables + $config_kernel_variables = $rabbitmq::config_kernel_variables + $cluster_partition_handling = $rabbitmq::cluster_partition_handling + $file_limit = $rabbitmq::file_limit + $default_env_variables = { + 'NODE_PORT' => $port, + 'NODE_IP_ADDRESS' => $node_ip_address } - $inetrc_env = {'export ERL_INETRC' => $inetrc_config_path} - # Handle env variables. - $_environment_variables = $default_ssl_env_variables + $inetrc_env + $rabbitmq::environment_variables - - if $ipv6 or $ssl_erl_dist { - # must append "-proto_dist inet6_tcp" to any provided ERL_ARGS for - # both the server and rabbitmqctl, being careful not to mess up - # quoting. If both IPv6 and TLS are enabled, we must use "inet6_tls". - # Finally, if only TLS is enabled (no IPv6), the -proto_dist value to use - # is "inet_tls". - if $ipv6 and $ssl_erl_dist { - $proto_dist = 'inet6_tls' - $ssl_path = " -pa ${::erl_ssl_path} " - } elsif $ssl_erl_dist { - $proto_dist = 'inet_tls' - $ssl_path = " -pa ${::erl_ssl_path} " - } else { - $proto_dist = 'inet6_tcp' - $ssl_path = '' - } - $ipv6_or_tls_env = ['SERVER', 'CTL'].reduce({}) |$memo, $item| { - $orig = $_environment_variables["RABBITMQ_${item}_ERL_ARGS"] - $munged = $orig ? { - # already quoted, keep quoting - /^([\'\"])(.*)\1/ => "${1}${2}${ssl_path} -proto_dist ${proto_dist}${1}", - # unset, add our own quoted value - undef => "\"${ssl_path}-proto_dist ${proto_dist}\"", - # previously unquoted value, add quoting - default => "\"${orig}${ssl_path} -proto_dist ${proto_dist}\"", - } - - merge($memo, {"RABBITMQ_${item}_ERL_ARGS" => $munged}) - } - - $environment_variables = $_environment_variables + $ipv6_or_tls_env - } else { - $environment_variables = $_environment_variables - } + $environment_variables = merge($default_env_variables, $rabbitmq::environment_variables) file { '/etc/rabbitmq': ensure => directory, owner => '0', group => '0', - mode => '0755', + mode => '0644', } file { '/etc/rabbitmq/ssl': ensure => directory, owner => '0', group => '0', - mode => '0755', + mode => '0644', } file { 'rabbitmq.config': @@ -156,8 +79,9 @@ class rabbitmq::config { path => $config_path, content => template($config), owner => '0', - group => $rabbitmq_group, - mode => '0640', + group => '0', + mode => '0644', + notify => Class['rabbitmq::service'], } file { 'rabbitmq-env.config': @@ -165,17 +89,9 @@ class rabbitmq::config { path => $env_config_path, content => template($env_config), owner => '0', - group => $rabbitmq_group, - mode => '0640', - } - - file { 'rabbitmq-inetrc': - ensure => file, - path => $inetrc_config_path, - content => template($inetrc_config), - owner => '0', - group => $rabbitmq_group, - mode => '0640', + group => '0', + mode => '0644', + notify => Class['rabbitmq::service'], } if $admin_enable { @@ -184,13 +100,13 @@ class rabbitmq::config { path => '/etc/rabbitmq/rabbitmqadmin.conf', content => template('rabbitmq/rabbitmqadmin.conf.erb'), owner => '0', - group => $rabbitmq_group, - mode => '0640', + group => '0', + mode => '0644', require => File['/etc/rabbitmq'], } } - case $facts['os']['family'] { + case $::osfamily { 'Debian': { file { '/etc/default/rabbitmq-server': ensure => file, @@ -198,38 +114,59 @@ class rabbitmq::config { mode => '0644', owner => '0', group => '0', + notify => Class['rabbitmq::service'], } } 'RedHat': { - file { '/etc/security/limits.d/rabbitmq-server.conf': - content => template('rabbitmq/limits.conf'), - owner => '0', - group => '0', - mode => '0644', + if versioncmp($::operatingsystemmajrelease, '7') >= 0 { + file { '/etc/systemd/system/rabbitmq-server.service.d': + ensure => directory, + owner => '0', + group => '0', + mode => '0755', + selinux_ignore_defaults => true, + } -> + file { '/etc/systemd/system/rabbitmq-server.service.d/limits.conf': + content => template('rabbitmq/rabbitmq-server.service.d/limits.conf'), + owner => '0', + group => '0', + mode => '0644', + notify => Exec['rabbitmq-systemd-reload'], + } + exec { 'rabbitmq-systemd-reload': + command => '/usr/bin/systemctl daemon-reload', + notify => Class['Rabbitmq::Service'], + refreshonly => true, + } + } else { + file { '/etc/security/limits.d/rabbitmq-server.conf': + content => template('rabbitmq/limits.conf'), + owner => '0', + group => '0', + mode => '0644', + notify => Class['Rabbitmq::Service'], + } } } - default: { } - } - - if $facts['systemd'] { # systemd fact provided by systemd module - systemd::service_limits { "${service_name}.service": - limits => {'LimitNOFILE' => $file_limit}, - # The service will be notified when config changes - restart_service => false, + default: { } } - if $erlang_cookie == undef and $config_cluster { - fail('You must set the $erlang_cookie value in order to configure clustering.') - } elsif $erlang_cookie != undef { - rabbitmq_erlang_cookie { "${rabbitmq_home}/.erlang.cookie": - content => $erlang_cookie, - force => $wipe_db_on_cookie_change, - rabbitmq_user => $rabbitmq_user, - rabbitmq_group => $rabbitmq_group, - rabbitmq_home => $rabbitmq_home, - service_name => $service_name, - before => File['rabbitmq.config'], + if $config_cluster { + + if $erlang_cookie == undef { + fail('You must set the $erlang_cookie value in order to configure clustering.') + } else { + rabbitmq_erlang_cookie { "${rabbitmq_home}/.erlang.cookie": + content => $erlang_cookie, + force => $wipe_db_on_cookie_change, + rabbitmq_user => $rabbitmq_user, + rabbitmq_group => $rabbitmq_group, + rabbitmq_home => $rabbitmq_home, + service_name => $service_name, + before => File['rabbitmq.config'], + notify => Class['rabbitmq::service'], + } } } } diff --git a/3rdparty/modules/rabbitmq/manifests/init.pp b/3rdparty/modules/rabbitmq/manifests/init.pp index 233d39107..4e115f9b2 100644 --- a/3rdparty/modules/rabbitmq/manifests/init.pp +++ b/3rdparty/modules/rabbitmq/manifests/init.pp @@ -1,377 +1,238 @@ -# rabbitmq -# -# @summary A module to manage RabbitMQ -# -# @example Basic usage -# include rabbitmq -# -# @example rabbitmq class -# class { 'rabbitmq': -# service_manage => false, -# port => '5672', -# delete_guest_user => true, -# } -# -# @example Offline installation from local mirror: -# -# class { 'rabbitmq': -# key_content => template('openstack/rabbit.pub.key'), -# package_gpg_key => '/tmp/rabbit.pub.key', -# } -# -# @example Use external package key source for any (apt/rpm) package provider: -# class { 'rabbitmq': -# package_gpg_key => 'http://www.some_site.some_domain/some_key.pub.key', -# } -# -# @example To use RabbitMQ Environment Variables, use the parameters `environment_variables` e.g.: -# -# class { 'rabbitmq': -# port => '5672', -# environment_variables => { -# 'NODENAME' => 'node01', -# 'SERVICENAME' => 'RabbitMQ' -# } -# } -# -# @example Change RabbitMQ Config Variables in rabbitmq.config: -# -# class { 'rabbitmq': -# port => '5672', -# config_variables => { -# 'hipe_compile' => true, -# 'frame_max' => 131072, -# 'log_levels' => "[{connection, info}]" -# } -# } -# -# @example Change Erlang Kernel Config Variables in rabbitmq.config -# class { 'rabbitmq': -# port => '5672', -# config_kernel_variables => { -# 'inet_dist_listen_min' => 9100, -# 'inet_dist_listen_max' => 9105, -# } -# } -# @example Change Management Plugin Config Variables in rabbitmq.config -# class { 'rabbitmq': -# config_management_variables => { -# 'rates_mode' => 'basic', -# } -# } -# -# @example Change Additional Config Variables in rabbitmq.config -# class { 'rabbitmq': -# config_additional_variables => { -# 'autocluster' => '[{consul_service, "rabbit"},{cluster_name, "rabbit"}]', -# 'foo' => '[{bar, "baz"}]' -# } -# } -# This will result in the following config appended to the config file: -# {autocluster, [{consul_service, "rabbit"},{cluster_name, "rabbit"}]}, -# {foo, [{bar, "baz"}]} -# (This is required for the [autocluster plugin](https://github.com/aweber/rabbitmq-autocluster) -# -# @example Use RabbitMQ clustering facilities -# class { 'rabbitmq': -# config_cluster => true, -# cluster_nodes => ['rabbit1', 'rabbit2'], -# cluster_node_type => 'ram', -# erlang_cookie => 'A_SECRET_COOKIE_STRING', -# wipe_db_on_cookie_change => true, -# } -# -# @param admin_enable If enabled sets up the management interface/plugin for RabbitMQ. -# @param auth_backends An array specifying authorization/authentication backend to use. Single quotes should be placed around array entries, ex. ['{foo, baz}', 'baz'] Defaults to [rabbit_auth_backend_internal], and if using LDAP defaults to [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]. -# @param cluster_node_type Choose between disc and ram nodes. -# @param cluster_nodes An array of nodes for clustering. -# @param cluster_partition_handling Value to set for `cluster_partition_handling` RabbitMQ configuration variable. -# @param collect_statistics_interval Set the collect_statistics_interval in rabbitmq.config -# @param config The file to use as the rabbitmq.config template. -# @param config_additional_variables Additional config variables in rabbitmq.config -# @param config_cluster Enable or disable clustering support. -# @param config_kernel_variables Hash of Erlang kernel configuration variables to set (see [Variables Configurable in rabbitmq.config](#variables-configurable-in-rabbitmq.config)). -# @param config_path The path to write the RabbitMQ configuration file to. -# @param config_ranch When true, suppress config directives needed for older (<3.6) RabbitMQ versions. -# @param config_management_variables Hash of configuration variables for the [Management Plugin](https://www.rabbitmq.com/management.html). -# @param config_stomp Enable or disable stomp. -# @param config_shovel Enable or disable shovel. -# @param config_shovel_statics Hash of static shovel configurations -# @param config_variables To set config variables in rabbitmq.config -# @param default_user Username to set for the `default_user` in rabbitmq.config. -# @param default_pass Password to set for the `default_user` in rabbitmq.config. -# @param delete_guest_user Controls whether default guest user is deleted. -# @param env_config The template file to use for rabbitmq_env.config. -# @param env_config_path The path to write the rabbitmq_env.config file to. -# @param environment_variables RabbitMQ Environment Variables in rabbitmq_env.config -# @param erlang_cookie The erlang cookie to use for clustering - must be the same between all nodes. This value has no default and must be -# set explicitly if using clustering. If you run Pacemaker and you don't want to use RabbitMQ buildin cluster, you can set config_cluster -# to 'False' and set 'erlang_cookie'. -# @param file_limit Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with `$::osfamily == 'Debian'` or -# `$::osfamily == 'RedHat'`. -# @param heartbeat Set the heartbeat timeout interval, default is unset which uses the builtin server defaults of 60 seconds. Setting this -# @param inetrc_config Template to use for the inetrc config -# @param inetrc_config_path Path of the file to push the inetrc config to. -# @param ipv6 Whether to listen on ipv6 -# @param interface Interface to bind to (sets tcp_listeners parameter). By default, bind to all interfaces -# to `0` will disable heartbeats. -# @param key_content Uses content method for Debian OS family. Should be a template for apt::source class. Overrides `package_gpg_key` -# behavior, if enabled. Undefined by default. -# @param ldap_auth Set to true to enable LDAP auth. -# @param ldap_server LDAP server to use for auth. -# @param ldap_user_dn_pattern User DN pattern for LDAP auth. -# @param ldap_other_bind How to bind to the LDAP server. Defaults to 'anon'. -# @param ldap_config_variables Hash of other LDAP config variables. -# @param ldap_use_ssl Set to true to use SSL for the LDAP server. -# @param ldap_port Numeric port for LDAP server. -# @param ldap_log Set to true to log LDAP auth. -# @param manage_python If enabled, on platforms that don't provide a Python 2 package by default, ensure that the python package is -# installed (for rabbitmqadmin). This will only apply if `admin_enable` and `service_manage` are set. -# @param management_hostname The hostname for the RabbitMQ management interface. -# @param management_port The port for the RabbitMQ management interface. -# @param management_ip_address Allows you to set the IP for management interface to bind to separately. Set to 127.0.0.1 to bind to -# localhost only, or 0.0.0.0 to bind to all interfaces. -# @param management_ssl Enable/Disable SSL for the management port. Has an effect only if ssl => true. -# @param node_ip_address Allows you to set the IP for RabbitMQ service to bind to. Set to 127.0.0.1 to bind to localhost only, or 0.0.0.0 -# to bind to all interfaces. -# @param package_apt_pin Whether to pin the package to a particular source -# @param package_ensure Determines the ensure state of the package. Set to installed by default, but could be changed to latest. -# @param package_gpg_key RPM package GPG key to import. Uses source method. Should be a URL for Debian/RedHat OS family, or a file name for -# RedHat OS family. Set to https://packagecloud.io/gpg.key by default. Note, that `key_content`, if specified, would override this -# parameter for Debian OS family. -# @param package_name Name(s) of the package(s) to install -# @param port The RabbitMQ port. -# @param repos_ensure Ensure that a repo with the official (and newer) RabbitMQ package is configured, along with its signing key. -# Defaults to false (use system packages). This does not ensure that soft dependencies (like EPEL on RHEL systems) are present. -# @param service_ensure The state of the service. -# @param service_manage Determines if the service is managed. -# @param service_name The name of the service to manage. -# @param $service_restart. Default defined in param.pp. Whether to resetart the service on config change. -# @param ssl Configures the service for using SSL. -# port => UNSET -# @param ssl_cacert CA cert path to use for SSL. -# @param ssl_cert Cert to use for SSL. -# @param ssl_cert_password Password used when generating CSR. -# @param ssl_depth SSL verification depth. -# @param ssl_dhfile Use this dhparam file [example: generate with `openssl dhparam -out /etc/rabbitmq/ssl/dhparam.pem 2048` -# @param ssl_erl_dist Whether to use the erlang package's SSL (relies on the ssl_erl_path fact) -# @param ssl_honor_cipher_order Force use of server cipher order -# @param ssl_interface Interface for SSL listener to bind to -# @param ssl_key Key to use for SSL. -# @param ssl_only Configures the service to only use SSL. No cleartext TCP listeners will be created. Requires that ssl => true and -# @param ssl_management_port SSL management port. -# @param ssl_port SSL port for RabbitMQ -# @param ssl_reuse_sessions Reuse ssl sessions -# @param ssl_secure_renegotiate Use ssl secure renegotiate -# @param ssl_stomp_port SSL stomp port. -# @param ssl_verify rabbitmq.config SSL verify setting. -# @param ssl_fail_if_no_peer_cert rabbitmq.config `fail_if_no_peer_cert` setting. -# @param ssl_management_verify rabbitmq.config SSL verify setting for rabbitmq_management. -# @param ssl_manaagement_fail_if_no_peer_cert rabbitmq.config `fail_if_no_peer_cert` setting for rabbitmq_management. -# @param ssl_versions Choose which SSL versions to enable. Example: `['tlsv1.2', 'tlsv1.1']` Note that it is recommended to disable `sslv3 -# and `tlsv1` to prevent against POODLE and BEAST attacks. Please see the [RabbitMQ SSL](https://www.rabbitmq.com/ssl.html) documentation -# for more information. -# @param ssl_ciphers Support only a given list of SSL ciphers. Example: `['dhe_rsa,aes_256_cbc,sha','dhe_dss,aes_256_cbc,sha', -# 'ecdhe_rsa,aes_256_cbc,sha']`. Supported ciphers in your install can be listed with: rabbitmqctl eval 'ssl:cipher_suites().' -# Functionality can be tested with cipherscan or similar tool: https://github.com/jvehent/cipherscan.git -# @param stomp_port The port to use for Stomp. -# @param stomp_ssl_only Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be created. Requires setting -# ssl_stomp_port also. -# @param stomp_ensure Enable to install the stomp plugin. -# @param tcp_backlog The size of the backlog on TCP connections. -# @param tcp_keepalive Enable TCP connection keepalive for RabbitMQ service. -# @param tcp_recbuf Corresponds to recbuf in RabbitMQ `tcp_listen_options` -# @param tcp_sndbuf Integer, corresponds to sndbuf in RabbitMQ `tcp_listen_options` -# @param wipe_db_on_cookie_change Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database. -# @param rabbitmq_user OS dependent, default defined in param.pp. The system user the rabbitmq daemon runs as. -# @param rabbitmq_group OS dependent, default defined in param.pp. The system group the rabbitmq daemon runs as. -# @param rabbitmq_home OS dependent. default defined in param.pp. The home directory of the rabbitmq deamon. -# @param $rabbitmqadmin_package OS dependent. default defined in param.pp. If undef: install rabbitmqadmin via archive, otherwise via package -# @param $archive_options. default defined in param.pp. Extra options to Archive resource to download rabbitmqadmin file -# @param $loopback_users. default defined in param.pp. This option configures a list of users to allow access via the loopback interfaces +# Main rabbitmq class class rabbitmq( - Boolean $admin_enable = $rabbitmq::params::admin_enable, - Enum['ram', 'disk', 'disc'] $cluster_node_type = $rabbitmq::params::cluster_node_type, - Array $cluster_nodes = $rabbitmq::params::cluster_nodes, - String $config = $rabbitmq::params::config, - Boolean $config_cluster = $rabbitmq::params::config_cluster, - Stdlib::Absolutepath $config_path = $rabbitmq::params::config_path, - Boolean $config_ranch = $rabbitmq::params::config_ranch, - Boolean $config_stomp = $rabbitmq::params::config_stomp, - Boolean $config_shovel = $rabbitmq::params::config_shovel, - Hash $config_shovel_statics = $rabbitmq::params::config_shovel_statics, - String $default_user = $rabbitmq::params::default_user, - String $default_pass = $rabbitmq::params::default_pass, - Boolean $delete_guest_user = $rabbitmq::params::delete_guest_user, - String $env_config = $rabbitmq::params::env_config, - Stdlib::Absolutepath $env_config_path = $rabbitmq::params::env_config_path, - Optional[String] $erlang_cookie = undef, - Optional[String] $interface = undef, - Optional[String] $management_ip_address = undef, - Integer[1, 65535] $management_port = $rabbitmq::params::management_port, - Boolean $management_ssl = $rabbitmq::params::management_ssl, - Optional[String] $management_hostname = undef, - Optional[String] $node_ip_address = undef, - Optional[Variant[Numeric, String]] $package_apt_pin = undef, - String $package_ensure = $rabbitmq::params::package_ensure, - Optional[String] $package_gpg_key = $rabbitmq::params::package_gpg_key, - Variant[String, Array] $package_name = $rabbitmq::params::package_name, - Optional[String] $package_source = undef, - Optional[String] $package_provider = undef, - Boolean $repos_ensure = $rabbitmq::params::repos_ensure, - Boolean $manage_python = $rabbitmq::params::manage_python, - String $rabbitmq_user = $rabbitmq::params::rabbitmq_user, - String $rabbitmq_group = $rabbitmq::params::rabbitmq_group, - Stdlib::Absolutepath $rabbitmq_home = $rabbitmq::params::rabbitmq_home, - Integer $port = $rabbitmq::params::port, - Boolean $tcp_keepalive = $rabbitmq::params::tcp_keepalive, - Integer $tcp_backlog = $rabbitmq::params::tcp_backlog, - Optional[Integer] $tcp_sndbuf = undef, - Optional[Integer] $tcp_recbuf = undef, - Optional[Integer] $heartbeat = undef, - Enum['running', 'stopped'] $service_ensure = $rabbitmq::params::service_ensure, - Boolean $service_manage = $rabbitmq::params::service_manage, - String $service_name = $rabbitmq::params::service_name, - Boolean $ssl = $rabbitmq::params::ssl, - Boolean $ssl_only = $rabbitmq::params::ssl_only, - Optional[Stdlib::Absolutepath] $ssl_cacert = undef, - Optional[Stdlib::Absolutepath] $ssl_cert = undef, - Optional[Stdlib::Absolutepath] $ssl_key = undef, - Optional[Integer] $ssl_depth = undef, - Optional[String] $ssl_cert_password = undef, - Integer[1, 65535] $ssl_port = $rabbitmq::params::ssl_port, - Optional[String] $ssl_interface = undef, - Integer[1, 65535] $ssl_management_port = $rabbitmq::params::ssl_management_port, - Integer[1, 65535] $ssl_stomp_port = $rabbitmq::params::ssl_stomp_port, - Enum['verify_none','verify_peer'] $ssl_verify = $rabbitmq::params::ssl_verify, - Boolean $ssl_fail_if_no_peer_cert = $rabbitmq::params::ssl_fail_if_no_peer_cert, - Enum['verify_none','verify_peer'] $ssl_management_verify = $rabbitmq::params::ssl_management_verify, - Boolean $ssl_management_fail_if_no_peer_cert = $rabbitmq::params::ssl_management_fail_if_no_peer_cert, - Optional[Array] $ssl_versions = undef, - Boolean $ssl_secure_renegotiate = $rabbitmq::params::ssl_secure_renegotiate, - Boolean $ssl_reuse_sessions = $rabbitmq::params::ssl_reuse_sessions, - Boolean $ssl_honor_cipher_order = $rabbitmq::params::ssl_honor_cipher_order, - Optional[Stdlib::Absolutepath] $ssl_dhfile = undef, - Array $ssl_ciphers = $rabbitmq::params::ssl_ciphers, - Boolean $stomp_ensure = $rabbitmq::params::stomp_ensure, - Boolean $ldap_auth = $rabbitmq::params::ldap_auth, - String $ldap_server = $rabbitmq::params::ldap_server, - Optional[String] $ldap_user_dn_pattern = $rabbitmq::params::ldap_user_dn_pattern, - String $ldap_other_bind = $rabbitmq::params::ldap_other_bind, - Boolean $ldap_use_ssl = $rabbitmq::params::ldap_use_ssl, - Integer[1, 65535] $ldap_port = $rabbitmq::params::ldap_port, - Boolean $ldap_log = $rabbitmq::params::ldap_log, - Hash $ldap_config_variables = $rabbitmq::params::ldap_config_variables, - Integer[1, 65535] $stomp_port = $rabbitmq::params::stomp_port, - Boolean $stomp_ssl_only = $rabbitmq::params::stomp_ssl_only, - Boolean $wipe_db_on_cookie_change = $rabbitmq::params::wipe_db_on_cookie_change, - String $cluster_partition_handling = $rabbitmq::params::cluster_partition_handling, - Variant[Integer[-1],Enum['unlimited'],Pattern[/^(infinity|\d+(:(infinity|\d+))?)$/]] $file_limit = $rabbitmq::params::file_limit, - Hash $environment_variables = $rabbitmq::params::environment_variables, - Hash $config_variables = $rabbitmq::params::config_variables, - Hash $config_kernel_variables = $rabbitmq::params::config_kernel_variables, - Hash $config_management_variables = $rabbitmq::params::config_management_variables, - Hash $config_additional_variables = $rabbitmq::params::config_additional_variables, - Optional[Array] $auth_backends = undef, - Optional[String] $key_content = undef, - Optional[Integer] $collect_statistics_interval = undef, - Boolean $ipv6 = $rabbitmq::params::ipv6, - String $inetrc_config = $rabbitmq::params::inetrc_config, - Stdlib::Absolutepath $inetrc_config_path = $rabbitmq::params::inetrc_config_path, - Boolean $ssl_erl_dist = $rabbitmq::params::ssl_erl_dist, - Optional[String] $rabbitmqadmin_package = $rabbitmq::params::rabbitmqadmin_package, - Array $archive_options = $rabbitmq::params::archive_options, - Array $loopback_users = $rabbitmq::params::loopback_users, - Boolean $service_restart = $rabbitmq::params::service_restart, + $admin_enable = $rabbitmq::params::admin_enable, + $cluster_node_type = $rabbitmq::params::cluster_node_type, + $cluster_nodes = $rabbitmq::params::cluster_nodes, + $config = $rabbitmq::params::config, + $config_cluster = $rabbitmq::params::config_cluster, + $config_path = $rabbitmq::params::config_path, + $config_stomp = $rabbitmq::params::config_stomp, + $default_user = $rabbitmq::params::default_user, + $default_pass = $rabbitmq::params::default_pass, + $delete_guest_user = $rabbitmq::params::delete_guest_user, + $env_config = $rabbitmq::params::env_config, + $env_config_path = $rabbitmq::params::env_config_path, + $erlang_cookie = $rabbitmq::params::erlang_cookie, + $interface = $rabbitmq::params::interface, + $management_port = $rabbitmq::params::management_port, + $node_ip_address = $rabbitmq::params::node_ip_address, + $package_apt_pin = $rabbitmq::params::package_apt_pin, + $package_ensure = $rabbitmq::params::package_ensure, + $package_gpg_key = $rabbitmq::params::package_gpg_key, + $package_name = $rabbitmq::params::package_name, + $package_provider = $rabbitmq::params::package_provider, + $package_source = undef, + $repos_ensure = $rabbitmq::params::repos_ensure, + $manage_repos = $rabbitmq::params::manage_repos, + $plugin_dir = $rabbitmq::params::plugin_dir, + $rabbitmq_user = $rabbitmq::params::rabbitmq_user, + $rabbitmq_group = $rabbitmq::params::rabbitmq_group, + $rabbitmq_home = $rabbitmq::params::rabbitmq_home, + $port = $rabbitmq::params::port, + $tcp_keepalive = $rabbitmq::params::tcp_keepalive, + $service_ensure = $rabbitmq::params::service_ensure, + $service_manage = $rabbitmq::params::service_manage, + $service_name = $rabbitmq::params::service_name, + $ssl = $rabbitmq::params::ssl, + $ssl_only = $rabbitmq::params::ssl_only, + $ssl_cacert = $rabbitmq::params::ssl_cacert, + $ssl_cert = $rabbitmq::params::ssl_cert, + $ssl_key = $rabbitmq::params::ssl_key, + $ssl_port = $rabbitmq::params::ssl_port, + $ssl_interface = $rabbitmq::params::ssl_interface, + $ssl_management_port = $rabbitmq::params::ssl_management_port, + $ssl_stomp_port = $rabbitmq::params::ssl_stomp_port, + $ssl_verify = $rabbitmq::params::ssl_verify, + $ssl_fail_if_no_peer_cert = $rabbitmq::params::ssl_fail_if_no_peer_cert, + $ssl_versions = $rabbitmq::params::ssl_versions, + $ssl_ciphers = $rabbitmq::params::ssl_ciphers, + $stomp_ensure = $rabbitmq::params::stomp_ensure, + $ldap_auth = $rabbitmq::params::ldap_auth, + $ldap_server = $rabbitmq::params::ldap_server, + $ldap_user_dn_pattern = $rabbitmq::params::ldap_user_dn_pattern, + $ldap_other_bind = $rabbitmq::params::ldap_other_bind, + $ldap_use_ssl = $rabbitmq::params::ldap_use_ssl, + $ldap_port = $rabbitmq::params::ldap_port, + $ldap_log = $rabbitmq::params::ldap_log, + $ldap_config_variables = $rabbitmq::params::ldap_config_variables, + $stomp_port = $rabbitmq::params::stomp_port, + $version = $rabbitmq::params::version, + $wipe_db_on_cookie_change = $rabbitmq::params::wipe_db_on_cookie_change, + $cluster_partition_handling = $rabbitmq::params::cluster_partition_handling, + $file_limit = $rabbitmq::params::file_limit, + $environment_variables = $rabbitmq::params::environment_variables, + $config_variables = $rabbitmq::params::config_variables, + $config_kernel_variables = $rabbitmq::params::config_kernel_variables, + $key_content = undef, ) inherits rabbitmq::params { + validate_bool($admin_enable) + # Validate install parameters. + validate_re($package_apt_pin, '^(|\d+)$') + validate_string($package_ensure) + validate_string($package_gpg_key) + validate_string($package_name) + validate_string($package_provider) + validate_bool($repos_ensure) + validate_re($version, '^\d+\.\d+\.\d+(-\d+)*$') # Allow 3 digits and optional -n postfix. + # Validate config parameters. + validate_re($cluster_node_type, '^(ram|disc|disk)$') # Both disc and disk are valid http://www.rabbitmq.com/clustering.html + validate_array($cluster_nodes) + validate_string($config) + validate_absolute_path($config_path) + validate_bool($config_cluster) + validate_bool($config_stomp) + validate_string($default_user) + validate_string($default_pass) + validate_bool($delete_guest_user) + validate_string($env_config) + validate_absolute_path($env_config_path) + validate_string($erlang_cookie) + if ! is_integer($management_port) { + validate_re($management_port, '\d+') + } + validate_string($node_ip_address) + validate_absolute_path($plugin_dir) + if ! is_integer($port) { + validate_re($port, ['\d+','UNSET']) + } + if ! is_integer($stomp_port) { + validate_re($stomp_port, '\d+') + } + validate_bool($wipe_db_on_cookie_change) + validate_bool($tcp_keepalive) + if ! is_integer($file_limit) { + validate_re($file_limit, '^(unlimited|infinity)$', '$file_limit must be an integer, \'unlimited\', or \'infinity\'.') + } + # Validate service parameters. + validate_re($service_ensure, '^(running|stopped)$') + validate_bool($service_manage) + validate_string($service_name) + validate_bool($ssl) + validate_bool($ssl_only) + validate_string($ssl_cacert) + validate_string($ssl_cert) + validate_string($ssl_key) + validate_array($ssl_ciphers) + if ! is_integer($ssl_port) { + validate_re($ssl_port, '\d+') + } + if ! is_integer($ssl_management_port) { + validate_re($ssl_management_port, '\d+') + } + if ! is_integer($ssl_stomp_port) { + validate_re($ssl_stomp_port, '\d+') + } + validate_bool($stomp_ensure) + validate_bool($ldap_auth) + validate_string($ldap_server) + validate_string($ldap_user_dn_pattern) + validate_string($ldap_other_bind) + validate_hash($ldap_config_variables) + validate_bool($ldap_use_ssl) + validate_re($ldap_port, '\d+') + validate_bool($ldap_log) + validate_hash($environment_variables) + validate_hash($config_variables) + validate_hash($config_kernel_variables) + if $ssl_only and ! $ssl { fail('$ssl_only => true requires that $ssl => true') } - if $config_stomp and $stomp_ssl_only and ! $ssl_stomp_port { - fail('$stomp_ssl_only requires that $ssl_stomp_port be set') + if $config_stomp and $ssl_stomp_port and ! $ssl { + warning('$ssl_stomp_port requires that $ssl => true and will be ignored') } if $ssl_versions { - unless $ssl { + if $ssl { + validate_array($ssl_versions) + } else { fail('$ssl_versions requires that $ssl => true') } } - if $repos_ensure { - case $facts['os']['family'] { - 'RedHat': { - contain rabbitmq::repo::rhel - Class['rabbitmq::repo::rhel'] -> Class['rabbitmq::install'] - } - 'Debian': { - contain rabbitmq::repo::apt - Class['rabbitmq::repo::apt'] -> Class['rabbitmq::install'] + # This needs to happen here instead of params.pp because + # $package_source needs to override the constructed value in params.pp + if $package_source { # $package_source was specified by user so use that one + $real_package_source = $package_source + # NOTE(bogdando) do not enforce the source value for yum provider #MODULES-1631 + } elsif $package_provider != 'yum' { + # package_source was not specified, so construct it, unless the provider is 'yum' + case $::osfamily { + 'RedHat', 'SUSE': { + $base_version = regsubst($version,'^(.*)-\d$','\1') + $real_package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v${base_version}/rabbitmq-server-${version}.noarch.rpm" } - default: { + default: { # Archlinux and Debian + $real_package_source = '' } } + } else { # for yum provider, use the source as is + $real_package_source = $package_source + } + + include '::rabbitmq::install' + include '::rabbitmq::config' + include '::rabbitmq::service' + include '::rabbitmq::management' + + if $manage_repos != undef { + warning('$manage_repos is now deprecated. Please use $repos_ensure instead') } - contain rabbitmq::install - contain rabbitmq::config - contain rabbitmq::service - contain rabbitmq::management + if $manage_repos != false { + case $::osfamily { + 'RedHat', 'SUSE': + { include '::rabbitmq::repo::rhel' } + 'Debian': { + class { '::rabbitmq::repo::apt' : + key_source => $package_gpg_key, + key_content => $key_content, + } + } + default: + { } + } + } if $admin_enable and $service_manage { - include 'rabbitmq::install::rabbitmqadmin' + include '::rabbitmq::install::rabbitmqadmin' rabbitmq_plugin { 'rabbitmq_management': - ensure => present, - notify => Class['rabbitmq::service'], - provider => 'rabbitmqplugins', + ensure => present, + require => Class['rabbitmq::install'], + notify => Class['rabbitmq::service'], } - Class['rabbitmq::service'] -> Class['rabbitmq::install::rabbitmqadmin'] - Class['rabbitmq::install::rabbitmqadmin'] -> Rabbitmq_exchange<| |> + Class['::rabbitmq::service'] -> Class['::rabbitmq::install::rabbitmqadmin'] + Class['::rabbitmq::install::rabbitmqadmin'] -> Rabbitmq_exchange<| |> } if $stomp_ensure { rabbitmq_plugin { 'rabbitmq_stomp': - ensure => present, - notify => Class['rabbitmq::service'], + ensure => present, + require => Class['rabbitmq::install'], + notify => Class['rabbitmq::service'], } } if ($ldap_auth) { rabbitmq_plugin { 'rabbitmq_auth_backend_ldap': - ensure => present, - notify => Class['rabbitmq::service'], - } - } - - if ($config_shovel) { - rabbitmq_plugin { 'rabbitmq_shovel': - ensure => present, - notify => Class['rabbitmq::service'], - provider => 'rabbitmqplugins', - } - - if ($admin_enable) { - rabbitmq_plugin { 'rabbitmq_shovel_management': - ensure => present, - notify => Class['rabbitmq::service'], - provider => 'rabbitmqplugins', - } + ensure => present, + require => Class['rabbitmq::install'], + notify => Class['rabbitmq::service'], } } - if ($service_restart) { - Class['rabbitmq::config'] ~> Class['rabbitmq::service'] - } + anchor { 'rabbitmq::begin': } + anchor { 'rabbitmq::end': } - Class['rabbitmq::install'] - -> Class['rabbitmq::config'] - -> Class['rabbitmq::service'] - -> Class['rabbitmq::management'] + Anchor['rabbitmq::begin'] -> Class['::rabbitmq::install'] + -> Class['::rabbitmq::config'] ~> Class['::rabbitmq::service'] + -> Class['::rabbitmq::management'] -> Anchor['rabbitmq::end'] # Make sure the various providers have their requirements in place. - Class['rabbitmq::install'] -> Rabbitmq_plugin<| |> + Class['::rabbitmq::install'] -> Rabbitmq_plugin<| |> } diff --git a/3rdparty/modules/rabbitmq/manifests/install.pp b/3rdparty/modules/rabbitmq/manifests/install.pp index 6c236e0fa..f2df83aa0 100644 --- a/3rdparty/modules/rabbitmq/manifests/install.pp +++ b/3rdparty/modules/rabbitmq/manifests/install.pp @@ -1,23 +1,23 @@ # Class rabbitmq::install -# Ensures that rabbitmq-server exists +# Ensures the rabbitmq-server exists class rabbitmq::install { $package_ensure = $rabbitmq::package_ensure $package_name = $rabbitmq::package_name - $rabbitmq_group = $rabbitmq::rabbitmq_group + $package_provider = $rabbitmq::package_provider + $package_source = $rabbitmq::real_package_source - package { $package_name: - ensure => $package_ensure, - notify => Class['rabbitmq::service'], + package { 'rabbitmq-server': + ensure => $package_ensure, + name => $package_name, + provider => $package_provider, + notify => Class['rabbitmq::service'], } - if $rabbitmq::environment_variables['MNESIA_BASE'] { - file { $rabbitmq::environment_variables['MNESIA_BASE']: - ensure => 'directory', - owner => 'root', - group => $rabbitmq_group, - mode => '0775', - require => Package[$package_name], + if $package_source { + Package['rabbitmq-server'] { + source => $package_source, } } + } diff --git a/3rdparty/modules/rabbitmq/manifests/install/rabbitmqadmin.pp b/3rdparty/modules/rabbitmq/manifests/install/rabbitmqadmin.pp index 408d2a1a0..bf545eea4 100644 --- a/3rdparty/modules/rabbitmq/manifests/install/rabbitmqadmin.pp +++ b/3rdparty/modules/rabbitmq/manifests/install/rabbitmqadmin.pp @@ -1,67 +1,35 @@ # class rabbitmq::install::rabbitmqadmin { - if $rabbitmq::rabbitmqadmin_package { - package{'rabbitmqadmin': - ensure => 'present', - name => $rabbitmq::rabbitmqadmin_package, - } - } else { - - $python_package = $rabbitmq::params::python_package - # Some systems (e.g., Ubuntu 16.04) don't ship Python 2 by default - if $rabbitmq::manage_python { - ensure_packages([$python_package]) - $rabbitmqadmin_require = [Archive['rabbitmqadmin'], Package[$python_package]] - } else { - $rabbitmqadmin_require = Archive['rabbitmqadmin'] - } - - if($rabbitmq::ssl and $rabbitmq::management_ssl) { - $management_port = $rabbitmq::ssl_management_port - $protocol = 'https' - } else { - $management_port = $rabbitmq::management_port - $protocol = 'http' - } - - $default_user = $rabbitmq::default_user - $default_pass = $rabbitmq::default_pass - $management_ip_address = $rabbitmq::management_ip_address - $archive_options = $rabbitmq::archive_options + if($rabbitmq::ssl) { + $management_port = $rabbitmq::ssl_management_port + } + else { + $management_port = $rabbitmq::management_port + } - if !($management_ip_address) { - # Pull from localhost if we don't have an explicit bind address - $curl_prefix = '' - $sanitized_ip = '127.0.0.1' - } elsif is_ipv6_address($management_ip_address) { - $curl_prefix = "--noproxy ${management_ip_address} -g -6" - $sanitized_ip = join(enclose_ipv6(any2array($management_ip_address)), ',') - } else { - $curl_prefix = "--noproxy ${management_ip_address}" - $sanitized_ip = $management_ip_address - } + $default_user = $rabbitmq::default_user + $default_pass = $rabbitmq::default_pass + $protocol = $rabbitmq::ssl ? { false => 'http', default => 'https' } - archive { 'rabbitmqadmin': - path => "${rabbitmq::rabbitmq_home}/rabbitmqadmin", - source => "${protocol}://${sanitized_ip}:${management_port}/cli/rabbitmqadmin", - username => $default_user, - password => $default_pass, - allow_insecure => true, - download_options => $archive_options, - cleanup => false, - require => [ - Class['rabbitmq::service'], - Rabbitmq_plugin['rabbitmq_management'] - ], - } + staging::file { 'rabbitmqadmin': + target => "${rabbitmq::rabbitmq_home}/rabbitmqadmin", + source => "${protocol}://${default_user}:${default_pass}@localhost:${management_port}/cli/rabbitmqadmin", + curl_option => '-k --noproxy localhost --retry 30 --retry-delay 6', + timeout => '180', + wget_option => '--no-proxy', + require => [ + Class['rabbitmq::service'], + Rabbitmq_plugin['rabbitmq_management'] + ], + } - file { '/usr/local/bin/rabbitmqadmin': - owner => 'root', - group => '0', - source => "${rabbitmq::rabbitmq_home}/rabbitmqadmin", - mode => '0755', - require => $rabbitmqadmin_require, - } + file { '/usr/local/bin/rabbitmqadmin': + owner => 'root', + group => '0', + source => "${rabbitmq::rabbitmq_home}/rabbitmqadmin", + mode => '0755', + require => Staging::File['rabbitmqadmin'], } + } diff --git a/3rdparty/modules/rabbitmq/manifests/params.pp b/3rdparty/modules/rabbitmq/manifests/params.pp index ad0f8027f..7366d9579 100644 --- a/3rdparty/modules/rabbitmq/manifests/params.pp +++ b/3rdparty/modules/rabbitmq/manifests/params.pp @@ -1,150 +1,121 @@ -# rabbitmq::params + # Class: rabbitmq::params # -# @summary OS Specific parameters and other settings +# The RabbitMQ Module configuration settings. # class rabbitmq::params { - case $facts['os']['family'] { + case $::osfamily { 'Archlinux': { - $manage_python = true - $python_package = 'python2' - $package_ensure = 'installed' - $package_name = 'rabbitmq' - $service_name = 'rabbitmq' - $rabbitmq_user = 'rabbitmq' - $rabbitmq_group = 'rabbitmq' - $rabbitmq_home = '/var/lib/rabbitmq' - $package_gpg_key = undef - $rabbitmqadmin_package = 'rabbitmqadmin' + $package_ensure = 'installed' + $package_name = 'rabbitmq' + $service_name = 'rabbitmq' + $version = '3.1.3-1' + $rabbitmq_user = 'rabbitmq' + $rabbitmq_group = 'rabbitmq' + $rabbitmq_home = '/var/lib/rabbitmq' + $plugin_dir = "/usr/lib/rabbitmq/lib/rabbitmq_server-${version}/plugins" } 'Debian': { - $manage_python = true - $python_package = 'python' - $package_ensure = 'installed' - $package_name = 'rabbitmq-server' - $service_name = 'rabbitmq-server' - $rabbitmq_user = 'rabbitmq' - $rabbitmq_group = 'rabbitmq' - $rabbitmq_home = '/var/lib/rabbitmq' - $package_gpg_key = 'https://packagecloud.io/gpg.key' - $rabbitmqadmin_package = undef + $package_ensure = 'installed' + $package_name = 'rabbitmq-server' + $service_name = 'rabbitmq-server' + $package_provider = 'apt' + $version = '3.1.5' + $rabbitmq_user = 'rabbitmq' + $rabbitmq_group = 'rabbitmq' + $rabbitmq_home = '/var/lib/rabbitmq' + $plugin_dir = "/usr/lib/rabbitmq/lib/rabbitmq_server-${version}/plugins" } 'OpenBSD': { - $manage_python = true - $python_package = 'python2' - $package_ensure = 'installed' - $package_name = 'rabbitmq' - $service_name = 'rabbitmq' - $rabbitmq_user = '_rabbitmq' - $rabbitmq_group = '_rabbitmq' - $rabbitmq_home = '/var/rabbitmq' - $package_gpg_key = undef - $rabbitmqadmin_package = undef - } - 'FreeBSD': { - $manage_python = true - $python_package = 'python2' - $package_ensure = 'installed' - $package_name = 'rabbitmq' - $service_name = 'rabbitmq' - $rabbitmq_user = 'rabbitmq' - $rabbitmq_group = 'rabbitmq' - $rabbitmq_home = '/var/db/rabbitmq' - $package_gpg_key = undef - $rabbitmqadmin_package = undef + $package_ensure = 'installed' + $package_name = 'rabbitmq' + $service_name = 'rabbitmq' + $version = '3.4.2' + $rabbitmq_user = '_rabbitmq' + $rabbitmq_group = '_rabbitmq' + $rabbitmq_home = '/var/rabbitmq' + $plugin_dir = '/usr/local/lib/rabbitmq/plugins' } 'RedHat': { - $manage_python = true - $python_package = 'python' - $package_ensure = 'installed' - $package_name = 'rabbitmq-server' - $service_name = 'rabbitmq-server' - $rabbitmq_user = 'rabbitmq' - $rabbitmq_group = 'rabbitmq' - $rabbitmq_home = '/var/lib/rabbitmq' - $package_gpg_key = 'https://www.rabbitmq.com/rabbitmq-release-signing-key.asc' - $rabbitmqadmin_package = undef + $package_ensure = 'installed' + $package_name = 'rabbitmq-server' + $service_name = 'rabbitmq-server' + $package_provider = 'rpm' + $version = '3.1.5-1' + $rabbitmq_user = 'rabbitmq' + $rabbitmq_group = 'rabbitmq' + $rabbitmq_home = '/var/lib/rabbitmq' + $plugin_dir = "/usr/lib/rabbitmq/lib/rabbitmq_server-${version}/plugins" } 'SUSE': { - $manage_python = true - $python_package = 'python' - $package_ensure = 'installed' - $package_name = ['rabbitmq-server', 'rabbitmq-server-plugins'] - $service_name = 'rabbitmq-server' - $rabbitmq_user = 'rabbitmq' - $rabbitmq_group = 'rabbitmq' - $rabbitmq_home = '/var/lib/rabbitmq' - $package_gpg_key = undef - $rabbitmqadmin_package = undef + $package_ensure = 'installed' + $package_name = 'rabbitmq-server' + $service_name = 'rabbitmq-server' + $package_provider = 'zypper' + $version = '3.1.5-1' + $rabbitmq_user = 'rabbitmq' + $rabbitmq_group = 'rabbitmq' + $rabbitmq_home = '/var/lib/rabbitmq' + $plugin_dir = "/usr/lib/rabbitmq/lib/rabbitmq_server-${version}/plugins" } default: { - fail("The ${module_name} module is not supported on an ${facts['os']['family']} based system.") + fail("The ${module_name} module is not supported on an ${::osfamily} based system.") } } #install - $admin_enable = true - $management_port = 15672 - $management_ssl = true - $repos_ensure = false - $service_ensure = 'running' - $service_manage = true + $admin_enable = true + $management_port = '15672' + $package_apt_pin = '' + $package_gpg_key = 'http://www.rabbitmq.com/rabbitmq-signing-key-public.asc' + $repos_ensure = true + $manage_repos = undef + $service_ensure = 'running' + $service_manage = true #config - $cluster_node_type = 'disc' - $cluster_nodes = [] - $config = 'rabbitmq/rabbitmq.config.erb' - $config_cluster = false - $config_path = '/etc/rabbitmq/rabbitmq.config' - $config_ranch = true - $config_stomp = false - $config_shovel = false - $config_shovel_statics = {} - $default_user = 'guest' - $default_pass = 'guest' - $delete_guest_user = false - $env_config = 'rabbitmq/rabbitmq-env.conf.erb' - $env_config_path = '/etc/rabbitmq/rabbitmq-env.conf' - $port = 5672 - $tcp_keepalive = false - $tcp_backlog = 128 - $ssl = false - $ssl_ciphers = [] - $ssl_erl_dist = false - $ssl_fail_if_no_peer_cert = false - $ssl_honor_cipher_order = true - $ssl_management_port = 15671 - $ssl_only = false - $ssl_port = 5671 - $ssl_reuse_sessions = true - $ssl_secure_renegotiate = true - $ssl_stomp_port = 6164 - $ssl_verify = 'verify_none' - $ssl_versions = undef - $ssl_management_verify = 'verify_none' - $ssl_management_fail_if_no_peer_cert = false - $stomp_ensure = false - $stomp_port = 6163 - $stomp_ssl_only = false - $ldap_auth = false - $ldap_server = 'ldap' - $ldap_user_dn_pattern = undef - $ldap_other_bind = 'anon' - $ldap_use_ssl = false - $ldap_port = 389 - $ldap_log = false - $ldap_config_variables = {} - $wipe_db_on_cookie_change = false - $cluster_partition_handling = 'ignore' - $environment_variables = { 'LC_ALL' => 'en_US.UTF-8' } - $config_variables = {} - $config_kernel_variables = {} - $config_management_variables = {} - $config_additional_variables = {} - $file_limit = 16384 - $ipv6 = false - $inetrc_config = 'rabbitmq/inetrc.erb' - $inetrc_config_path = '/etc/rabbitmq/inetrc' - $archive_options = [] - $loopback_users = ['guest'] - $service_restart = true + $cluster_node_type = 'disc' + $cluster_nodes = [] + $config = 'rabbitmq/rabbitmq.config.erb' + $config_cluster = false + $config_path = '/etc/rabbitmq/rabbitmq.config' + $config_stomp = false + $default_user = 'guest' + $default_pass = 'guest' + $delete_guest_user = false + $env_config = 'rabbitmq/rabbitmq-env.conf.erb' + $env_config_path = '/etc/rabbitmq/rabbitmq-env.conf' + $erlang_cookie = undef + $interface = 'UNSET' + $node_ip_address = 'UNSET' + $port = '5672' + $tcp_keepalive = false + $ssl = false + $ssl_only = false + $ssl_cacert = 'UNSET' + $ssl_cert = 'UNSET' + $ssl_key = 'UNSET' + $ssl_port = '5671' + $ssl_interface = 'UNSET' + $ssl_management_port = '15671' + $ssl_stomp_port = '6164' + $ssl_verify = 'verify_none' + $ssl_fail_if_no_peer_cert = false + $ssl_versions = undef + $ssl_ciphers = [] + $stomp_ensure = false + $ldap_auth = false + $ldap_server = 'ldap' + $ldap_user_dn_pattern = 'cn=username,ou=People,dc=example,dc=com' + $ldap_other_bind = 'anon' + $ldap_use_ssl = false + $ldap_port = '389' + $ldap_log = false + $ldap_config_variables = {} + $stomp_port = '6163' + $wipe_db_on_cookie_change = false + $cluster_partition_handling = 'ignore' + $environment_variables = {} + $config_variables = {} + $config_kernel_variables = {} + $file_limit = 16384 } diff --git a/3rdparty/modules/rabbitmq/manifests/repo/apt.pp b/3rdparty/modules/rabbitmq/manifests/repo/apt.pp index 651e4e377..0902e2c28 100644 --- a/3rdparty/modules/rabbitmq/manifests/repo/apt.pp +++ b/3rdparty/modules/rabbitmq/manifests/repo/apt.pp @@ -2,40 +2,40 @@ # puppetlabs-apt # puppetlabs-stdlib class rabbitmq::repo::apt( - String $location = 'https://packagecloud.io/rabbitmq/rabbitmq-server', - String $repos = 'main', - Boolean $include_src = false, - String $key = '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB', - String $key_source = $rabbitmq::package_gpg_key, - Optional[String] $key_content = $rabbitmq::key_content, - Optional[String] $architecture = undef, + $location = 'http://www.rabbitmq.com/debian/', + $release = 'testing', + $repos = 'main', + $include_src = false, + $key = 'F78372A06FF50C80464FC1B4F7B8CEA6056E8E56', + $key_source = 'http://www.rabbitmq.com/rabbitmq-signing-key-public.asc', + $key_content = undef, ) { $pin = $rabbitmq::package_apt_pin - # ordering / ensure to get the last version of repository - Class['rabbitmq::repo::apt'] - -> Class['apt::update'] + Class['rabbitmq::repo::apt'] -> Package<| title == 'rabbitmq-server' |> + + $ensure_source = $rabbitmq::repos_ensure ? { + false => 'absent', + default => 'present', + } - $osname = downcase($facts['os']['name']) apt::source { 'rabbitmq': - ensure => present, - location => "${location}/${osname}", - repos => $repos, - include => { 'src' => $include_src }, - key => { - 'id' => $key, - 'source' => $key_source, - 'content' => $key_content, - }, - architecture => $architecture, + ensure => $ensure_source, + location => $location, + release => $release, + repos => $repos, + include_src => $include_src, + key => $key, + key_source => $key_source, + key_content => $key_content, } - if $pin { + if $pin != '' { + validate_re($pin, '\d\d\d') apt::pin { 'rabbitmq': - packages => '*', + packages => 'rabbitmq-server', priority => $pin, - origin => 'packagecloud.io', } } } diff --git a/3rdparty/modules/rabbitmq/manifests/repo/rhel.pp b/3rdparty/modules/rabbitmq/manifests/repo/rhel.pp index 093f607d9..284909945 100644 --- a/3rdparty/modules/rabbitmq/manifests/repo/rhel.pp +++ b/3rdparty/modules/rabbitmq/manifests/repo/rhel.pp @@ -1,23 +1,16 @@ # Class: rabbitmq::repo::rhel -# Makes sure that the Packagecloud repo is installed -class rabbitmq::repo::rhel( - $location = "https://packagecloud.io/rabbitmq/rabbitmq-server/el/${facts['os'][release][major]}/\$basearch", - String $key_source = $rabbitmq::package_gpg_key, - ) { +# Imports the gpg key if it doesn't already exist. +class rabbitmq::repo::rhel { - yumrepo { 'rabbitmq': - ensure => present, - name => 'rabbitmq_rabbitmq-server', - baseurl => $location, - gpgkey => $key_source, - enabled => 1, - gpgcheck => 1, - } + if $rabbitmq::repos_ensure { + + $package_gpg_key = $rabbitmq::package_gpg_key + + Class['rabbitmq::repo::rhel'] -> Package<| title == 'rabbitmq-server' |> - # This may still be needed to prevent warnings - # packagecloud key is gpg-pubkey-d59097ab-52d46e88 - exec { "rpm --import ${key_source}": - path => ['/bin','/usr/bin','/sbin','/usr/sbin'], - unless => 'rpm -q gpg-pubkey-6026dfca-573adfde 2>/dev/null', + exec { "rpm --import ${package_gpg_key}": + path => ['/bin','/usr/bin','/sbin','/usr/sbin'], + unless => 'rpm -q gpg-pubkey-056e8e56-468e43f2 2>/dev/null', + } } } diff --git a/3rdparty/modules/rabbitmq/manifests/server.pp b/3rdparty/modules/rabbitmq/manifests/server.pp index e7f17083a..05de184fc 100644 --- a/3rdparty/modules/rabbitmq/manifests/server.pp +++ b/3rdparty/modules/rabbitmq/manifests/server.pp @@ -5,7 +5,7 @@ # Parameters: # [*port*] - port where rabbitmq server is hosted # [*delete_guest_user*] - rather or not to delete the default user -# [*version*] - deprecated -- does nothing +# [*version*] - version of rabbitmq-server to install # [*package_name*] - name of rabbitmq package # [*service_name*] - name of rabbitmq service # [*service_ensure*] - desired ensure state for service @@ -36,6 +36,7 @@ class rabbitmq::server( $port = $rabbitmq::params::port, $delete_guest_user = $rabbitmq::params::delete_guest_user, $package_name = $rabbitmq::params::package_name, + $version = $rabbitmq::params::version, $service_name = $rabbitmq::params::service_name, $service_ensure = $rabbitmq::params::service_ensure, $service_manage = $rabbitmq::params::service_manage, @@ -51,10 +52,19 @@ class rabbitmq::server( $wipe_db_on_cookie_change = $rabbitmq::params::wipe_db_on_cookie_change, ) inherits rabbitmq::params { + anchor {'before::rabbimq::class': + before => Class['rabbitmq'], + } + + anchor {'after::rabbimq::class': + require => Class['rabbitmq'], + } + class { 'rabbitmq': port => $port, delete_guest_user => $delete_guest_user, package_name => $package_name, + version => $version, service_name => $service_name, service_ensure => $service_ensure, service_manage => $service_manage, @@ -69,5 +79,4 @@ class rabbitmq::server( erlang_cookie => $erlang_cookie, wipe_db_on_cookie_change => $wipe_db_on_cookie_change, } - contain rabbitmq } diff --git a/3rdparty/modules/rabbitmq/manifests/service.pp b/3rdparty/modules/rabbitmq/manifests/service.pp index 6afe71e63..c01aa64ad 100644 --- a/3rdparty/modules/rabbitmq/manifests/service.pp +++ b/3rdparty/modules/rabbitmq/manifests/service.pp @@ -11,11 +11,14 @@ # Sample Usage: # class rabbitmq::service( - Enum['running', 'stopped'] $service_ensure = $rabbitmq::service_ensure, - Boolean $service_manage = $rabbitmq::service_manage, - $service_name = $rabbitmq::service_name, + $service_ensure = $rabbitmq::service_ensure, + $service_manage = $rabbitmq::service_manage, + $service_name = $rabbitmq::service_name, ) inherits rabbitmq { + validate_re($service_ensure, '^(running|stopped)$') + validate_bool($service_manage) + if ($service_manage) { if $service_ensure == 'running' { $ensure_real = 'running' @@ -32,10 +35,6 @@ class rabbitmq::service( hasrestart => true, name => $service_name, } - - if $facts['systemd'] { - Class['systemd::systemctl::daemon_reload'] -> Service['rabbitmq-server'] - } } } diff --git a/3rdparty/modules/rabbitmq/metadata.json b/3rdparty/modules/rabbitmq/metadata.json index 571666eb1..945a26f47 100644 --- a/3rdparty/modules/rabbitmq/metadata.json +++ b/3rdparty/modules/rabbitmq/metadata.json @@ -1,83 +1,55 @@ { - "name": "puppet-rabbitmq", - "version": "8.4.0", - "author": "voxpupuli", + "name": "puppetlabs-rabbitmq", + "version": "5.2.1", + "author": "puppetlabs", "summary": "Installs, configures, and manages RabbitMQ.", "license": "Apache-2.0", - "source": "https://github.com/voxpupuli/puppet-rabbitmq", - "project_page": "https://github.com/voxpupuli/puppet-rabbitmq", - "issues_url": "https://github.com/voxpupuli/puppet-rabbitmq/issues", - "dependencies": [ - { - "name": "puppetlabs/stdlib", - "version_requirement": ">= 4.13.1 < 6.0.0" - }, - { - "name": "puppet/archive", - "version_requirement": ">= 2.0.0 < 4.0.0" - }, - { - "name": "camptocamp/systemd", - "version_requirement": ">= 2.1.0 < 3.0.0" - } - ], - "data_provider": null, + "source": "https://github.com/puppetlabs/puppetlabs-rabbitmq", + "project_page": "https://github.com/puppetlabs/puppetlabs-rabbitmq", + "issues_url": "https://tickets.puppetlabs.com/browse/MODULES", "operatingsystem_support": [ { "operatingsystem": "RedHat", "operatingsystemrelease": [ - "6", - "7" + "5", + "6" ] }, { "operatingsystem": "CentOS", "operatingsystemrelease": [ - "6", - "7" + "5", + "6" ] }, { "operatingsystem": "Debian", "operatingsystemrelease": [ - "8", - "9" + "6", + "7" ] }, { "operatingsystem": "Ubuntu", "operatingsystemrelease": [ - "14.04", - "16.04" + "12.04", + "14.04" ] - }, - { - "operatingsystem": "SLES", - "operatingsystemrelease": [ - "11" - ] - }, - { - "operatingsystem": "FreeBSD" - }, - { - "operatingsystem": "OpenBSD" - }, - { - "operatingsystem": "Archlinux" } ], "requirements": [ + { + "name": "pe", + "version_requirement": "3.x" + }, { "name": "puppet", - "version_requirement": ">= 4.10.0 < 7.0.0" + "version_requirement": "3.x" } ], - "tags": [ - "rabbitmq", - "ampq", - "messaging", - "stomp", - "queue" + "dependencies": [ + {"name":"puppetlabs/stdlib","version_requirement":">=3.0.0 <5.0.0"}, + {"name":"puppetlabs/apt","version_requirement":">=1.8.0 <2.0.0"}, + {"name":"nanliu/staging","version_requirement":">=0.3.1 <2.0.0"} ] } diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/class_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/class_spec.rb index bfb70e0d4..b5b50cd34 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/class_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/class_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper_acceptance' describe 'rabbitmq class:' do - case fact('os.family') + case fact('osfamily') when 'RedHat' package_name = 'rabbitmq-server' service_name = 'rabbitmq-server' @@ -16,199 +16,80 @@ describe 'rabbitmq class:' do service_name = 'rabbitmq' end - context 'default class inclusion' do - let(:pp) do - <<-EOS + context "default class inclusion" do + it 'should run successfully' do + pp = <<-EOS class { 'rabbitmq': } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - end - it_behaves_like 'an idempotent resource' + # Apply twice to ensure no errors the second time. + apply_manifest(pp, :catch_failures => true) + expect(apply_manifest(pp, :catch_changes => true).exit_code).to be_zero + end describe package(package_name) do - it { is_expected.to be_installed } + it { should be_installed } end describe service(service_name) do - it { is_expected.to be_enabled } - it { is_expected.to be_running } + it { should be_enabled } + it { should be_running } end end - context 'disable and stop service' do - let(:pp) do - <<-EOS - class { 'rabbitmq': - service_ensure => 'stopped', - } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } + context "disable and stop service" do + it 'should run successfully' do + pp = <<-EOS + class { 'rabbitmq': + service_ensure => 'stopped', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } EOS - end - it_behaves_like 'an idempotent resource' + apply_manifest(pp, :catch_failures => true) + end describe service(service_name) do - it { is_expected.not_to be_enabled } - it { is_expected.not_to be_running } + it { should_not be_enabled } + it { should_not be_running } end end - context 'service is unmanaged' do - it 'runs successfully' do + context "service is unmanaged" do + it 'should run successfully' do pp_pre = <<-EOS - class { 'rabbitmq': } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } + class { 'rabbitmq': } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } EOS pp = <<-EOS - class { 'rabbitmq': - service_manage => false, - service_ensure => 'stopped', - } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } - EOS - - apply_manifest(pp_pre, catch_failures: true) - apply_manifest(pp, catch_failures: true) - end - - describe service(service_name) do - it { is_expected.to be_enabled } - it { is_expected.to be_running } - end - end - - context 'binding on all interfaces' do - let(:pp) do - <<-EOS class { 'rabbitmq': - service_manage => true, - port => 5672, - admin_enable => true, - node_ip_address => '0.0.0.0' + service_manage => false, + service_ensure => 'stopped', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] } EOS - end - - it_behaves_like 'an idempotent resource' - - describe service(service_name) do - it { is_expected.to be_running } - end - describe port(5672) do - it { is_expected.to be_listening.on('0.0.0.0').with('tcp') } - end - describe port(15_672) do - it { is_expected.to be_listening.on('0.0.0.0').with('tcp') } - end - describe port(25_672) do - xit 'Is on 55672 instead on older rmq versions' do - is_expected.to be_listening.on('0.0.0.0').with('tcp') - end - end - end - - context 'binding to localhost only' do - let(:pp) do - <<-EOS - class { 'rabbitmq': - service_manage => true, - port => 5672, - admin_enable => true, - node_ip_address => '127.0.0.1' - } - EOS - end - - it_behaves_like 'an idempotent resource' - - describe service(service_name) do - it { is_expected.to be_running } - end - describe port(5672) do - it { is_expected.to be_listening.on('127.0.0.1').with('tcp') } - end - describe port(15_672) do - it { is_expected.to be_listening.on('127.0.0.1').with('tcp') } - end - # This listens on all interfaces regardless of these settings - describe port(25_672) do - xit 'Is on 55672 instead on older rmq versions' do - is_expected.to be_listening.on('0.0.0.0').with('tcp') - end - end - end - - context 'ssl enabled' do - let(:pp) do - <<-EOS - class { 'rabbitmq': - service_manage => true, - admin_enable => true, - node_ip_address => '0.0.0.0', - ssl_interface => '0.0.0.0', - ssl => true, - ssl_cacert => '/tmp/cacert.crt', - ssl_cert => '/tmp/rabbitmq.crt', - ssl_key => '/tmp/rabbitmq.key', - } - EOS - end - - it_behaves_like 'an idempotent resource' - describe service(service_name) do - it { is_expected.to be_running } - end - describe port(5671) do - it { is_expected.to be_listening.on('0.0.0.0').with('tcp') } + apply_manifest(pp_pre, :catch_failures => true) + apply_manifest(pp, :catch_failures => true) end - describe port(15_671) do - it { is_expected.to be_listening.on('0.0.0.0').with('tcp') } - end - end - - context 'different management_ip_address and node_ip_address' do - let(:pp) do - <<-EOS - class { 'rabbitmq': - service_manage => true, - port => 5672, - admin_enable => true, - node_ip_address => '0.0.0.0', - management_ip_address => '127.0.0.1' - } - EOS - end - - it_behaves_like 'an idempotent resource' describe service(service_name) do - it { is_expected.to be_running } - end - describe port(5672) do - it { is_expected.to be_listening.on('0.0.0.0').with('tcp') } - end - describe port(15_672) do - it { is_expected.to be_listening.on('127.0.0.1').with('tcp') } - end - describe port(25_672) do - xit 'Is on 55672 instead on older rmq versions' do - is_expected.to be_listening.on('0.0.0.0').with('tcp') - end + it { should be_enabled } + it { should be_running } end end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/clustering_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/clustering_spec.rb index 204eef052..438c65ba1 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/clustering_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/clustering_spec.rb @@ -2,58 +2,59 @@ require 'spec_helper_acceptance' describe 'rabbitmq clustering' do context 'rabbitmq::wipe_db_on_cookie_change => false' do - it 'runs successfully' do + it 'should run successfully' do pp = <<-EOS - class { 'rabbitmq': + class { 'rabbitmq': config_cluster => true, cluster_nodes => ['rabbit1', 'rabbit2'], cluster_node_type => 'ram', erlang_cookie => 'TESTCOOKIE', wipe_db_on_cookie_change => false, } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - apply_manifest(pp, expect_failures: true) + apply_manifest(pp, :expect_failures => true) end describe file('/var/lib/rabbitmq/.erlang.cookie') do - it { is_expected.not_to contain 'TESTCOOKIE' } + it { should_not contain 'TESTCOOKIE' } end + end context 'rabbitmq::wipe_db_on_cookie_change => true' do - it 'runs successfully' do + it 'should run successfully' do pp = <<-EOS - class { 'rabbitmq': + class { 'rabbitmq': config_cluster => true, cluster_nodes => ['rabbit1', 'rabbit2'], cluster_node_type => 'ram', erlang_cookie => 'TESTCOOKIE', wipe_db_on_cookie_change => true, } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - apply_manifest(pp, catch_failures: true) + apply_manifest(pp, :catch_failures => true) end describe file('/etc/rabbitmq/rabbitmq.config') do - it { is_expected.to be_file } - it { is_expected.to contain 'cluster_nodes' } - it { is_expected.to contain 'rabbit@rabbit1' } - it { is_expected.to contain 'rabbit@rabbit2' } - it { is_expected.to contain 'ram' } + it { should be_file } + it { should contain 'cluster_nodes' } + it { should contain 'rabbit@rabbit1' } + it { should contain 'rabbit@rabbit2' } + it { should contain 'ram' } end describe file('/var/lib/rabbitmq/.erlang.cookie') do - it { is_expected.to be_file } - it { is_expected.to contain 'TESTCOOKIE' } + it { should be_file } + it { should contain 'TESTCOOKIE' } end end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/delete_guest_user_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/delete_guest_user_spec.rb index f8a6bc0f4..d480e8843 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/delete_guest_user_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/delete_guest_user_spec.rb @@ -2,25 +2,25 @@ require 'spec_helper_acceptance' describe 'rabbitmq with delete_guest_user' do context 'delete_guest_user' do - it 'runs successfully' do + it 'should run successfully' do pp = <<-EOS - class { 'rabbitmq': - port => 5672, + class { 'rabbitmq': + port => '5672', delete_guest_user => true, } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - apply_manifest(pp, catch_failures: true) + apply_manifest(pp, :catch_failures => true) shell('rabbitmqctl list_users > /tmp/rabbitmqctl_users') end describe file('/tmp/rabbitmqctl_users') do - it { is_expected.to be_file } - it { is_expected.not_to contain 'guest' } + it { should be_file } + it { should_not contain 'guest' } end end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/archlinux-2-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/archlinux-2-x64.yml deleted file mode 100644 index 89b63003f..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/archlinux-2-x64.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - archlinux-2-x64: - roles: - - master - platform: archlinux-2-x64 - box: archlinux/archlinux - hypervisor: vagrant -CONFIG: - type: foss diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-511-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-511-x64.yml deleted file mode 100644 index 089d646a5..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-511-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - centos-511-x64: - roles: - - master - platform: el-5-x86_64 - box: puppetlabs/centos-5.11-64-nocm - hypervisor: vagrant -CONFIG: - type: foss -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-59-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-59-x64.yml new file mode 100644 index 000000000..2ad90b86a --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-59-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-59-x64: + roles: + - master + platform: el-5-x86_64 + box : centos-59-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-59-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64-vcloud.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64-vcloud.yml new file mode 100644 index 000000000..9c5a3d0e3 --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64-vcloud.yml @@ -0,0 +1,16 @@ +HOSTS: + 'centos-6-vcloud': + roles: + - master + platform: el-6-x86_64 + hypervisor: vcloud + template: centos-6-x86_64 +CONFIG: + type: foss + ssh: + keys: "~/.ssh/id_rsa-acceptance" + datastore: instance0 + folder: Delivery/Quality Assurance/Enterprise/Dynamic + resourcepool: delivery/Quality Assurance/Enterprise/Dynamic + pooling_api: http://vcloud.delivery.puppetlabs.net/ + diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64.yml deleted file mode 100644 index 16abc8f1c..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-6-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - centos-6-x64: - roles: - - master - platform: el-6-x86_64 - box: centos/6 - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-64-x64-pe.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-64-x64-pe.yml new file mode 100644 index 000000000..7d9242f1b --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-64-x64-pe.yml @@ -0,0 +1,12 @@ +HOSTS: + centos-64-x64: + roles: + - master + - database + - dashboard + platform: el-6-x86_64 + box : centos-64-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: pe diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-65-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-65-x64.yml new file mode 100644 index 000000000..4e2cb809e --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-65-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-65-x64: + roles: + - master + platform: el-6-x86_64 + box : centos-65-x64-vbox436-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-66-x64-pe.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-66-x64-pe.yml deleted file mode 100644 index 1e7aea6d4..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-66-x64-pe.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - centos-66-x64: - roles: - - master - - database - - dashboard - platform: el-6-x86_64 - box: puppetlabs/centos-6.6-64-puppet-enterprise - hypervisor: vagrant -CONFIG: - type: pe -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-7-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-7-x64.yml deleted file mode 100644 index e05a3ae16..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/centos-7-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - centos-7-x64: - roles: - - master - platform: el-7-x86_64 - box: centos/7 - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-7-x64-vcloud.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-7-x64-vcloud.yml new file mode 100644 index 000000000..6082c189c --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-7-x64-vcloud.yml @@ -0,0 +1,16 @@ +HOSTS: + 'debian-7-vcloud': + roles: + - master + platform: debian-7-x86_64 + hypervisor: vcloud + template: debian-7-x86_64 +CONFIG: + type: foss + ssh: + keys: "~/.ssh/id_rsa-acceptance" + datastore: instance0 + folder: Delivery/Quality Assurance/Enterprise/Dynamic + resourcepool: delivery/Quality Assurance/Enterprise/Dynamic + pooling_api: http://vcloud.delivery.puppetlabs.net/ + diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-78-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-78-x64.yml deleted file mode 100644 index 6ef6de8c8..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-78-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - debian-78-x64: - roles: - - master - platform: debian-7-amd64 - box: puppetlabs/debian-7.8-64-nocm - hypervisor: vagrant -CONFIG: - type: foss -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-8-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-8-x64.yml deleted file mode 100644 index fef6e63ca..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-8-x64.yml +++ /dev/null @@ -1,10 +0,0 @@ -HOSTS: - debian-8-x64: - roles: - - agent - - default - platform: debian-8-amd64 - hypervisor: vagrant - box: puppetlabs/debian-8.2-64-nocm -CONFIG: - type: foss diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-82-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-82-x64.yml deleted file mode 100644 index 9897a8fc7..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/debian-82-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - debian-82-x64: - roles: - - master - platform: debian-8-amd64 - box: puppetlabs/debian-8.2-64-nocm - hypervisor: vagrant -CONFIG: - type: foss -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/default.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/default.yml index dba339c46..ce47212a8 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/default.yml +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/default.yml @@ -1,10 +1,11 @@ HOSTS: - ubuntu-1404-x64: + centos-64-x64: roles: - - agent - - default - platform: ubuntu-14.04-amd64 - hypervisor: vagrant - box: puppetlabs/ubuntu-14.04-64-nocm + - master + platform: el-6-x86_64 + box : centos-64-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box + hypervisor : vagrant CONFIG: - type: foss + log_level: debug + type: git diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/amazonlinux-2016091.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/amazonlinux-2016091.yml deleted file mode 100644 index 19dd43ed7..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/amazonlinux-2016091.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# Additional ~/.fog config file with AWS EC2 credentials -# required. -# -# see: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -# Amazon Linux is not a RHEL clone. -# -HOSTS: - amazonlinux-2016091-x64: - roles: - - master - platform: centos-6-x86_64 - hypervisor: ec2 - # refers to image_tempaltes.yaml AMI[vmname] entry: - vmname: amazonlinux-2016091-eu-central-1 - # refers to image_tempaltes.yaml entry inside AMI[vmname][:image]: - snapshot: aio - # t2.micro is free tier eligible (https://aws.amazon.com/en/free/): - amisize: t2.micro - # required so that beaker sanitizes sshd_config and root authorized_keys: - user: ec2-user -CONFIG: - type: aio - :ec2_yaml: spec/acceptance/nodesets/ec2/image_templates.yaml -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/image_templates.yaml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/image_templates.yaml deleted file mode 100644 index e50593ee0..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/image_templates.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# see also: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -# Hint: image IDs (ami-*) for the same image are different per location. -# -AMI: - # Amazon Linux AMI 2016.09.1 (HVM), SSD Volume Type - amazonlinux-2016091-eu-central-1: - :image: - :aio: ami-af0fc0c0 - :region: eu-central-1 - # Red Hat Enterprise Linux 7.3 (HVM), SSD Volume Type - rhel-73-eu-central-1: - :image: - :aio: ami-e4c63e8b - :region: eu-central-1 - # SUSE Linux Enterprise Server 12 SP2 (HVM), SSD Volume Type - sles-12sp2-eu-central-1: - :image: - :aio: ami-c425e4ab - :region: eu-central-1 - # Ubuntu Server 16.04 LTS (HVM), SSD Volume Type - ubuntu-1604-eu-central-1: - :image: - :aio: ami-fe408091 - :region: eu-central-1 - # Microsoft Windows Server 2016 Base - windows-2016-base-eu-central-1: - :image: - :aio: ami-88ec20e7 - :region: eu-central-1 diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/rhel-73-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/rhel-73-x64.yml deleted file mode 100644 index 7fac8236a..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/rhel-73-x64.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# Additional ~/.fog config file with AWS EC2 credentials -# required. -# -# see: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -HOSTS: - rhel-73-x64: - roles: - - master - platform: el-7-x86_64 - hypervisor: ec2 - # refers to image_tempaltes.yaml AMI[vmname] entry: - vmname: rhel-73-eu-central-1 - # refers to image_tempaltes.yaml entry inside AMI[vmname][:image]: - snapshot: aio - # t2.micro is free tier eligible (https://aws.amazon.com/en/free/): - amisize: t2.micro - # required so that beaker sanitizes sshd_config and root authorized_keys: - user: ec2-user -CONFIG: - type: aio - :ec2_yaml: spec/acceptance/nodesets/ec2/image_templates.yaml -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/sles-12sp2-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/sles-12sp2-x64.yml deleted file mode 100644 index 8542154df..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/sles-12sp2-x64.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# Additional ~/.fog config file with AWS EC2 credentials -# required. -# -# see: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -HOSTS: - sles-12sp2-x64: - roles: - - master - platform: sles-12-x86_64 - hypervisor: ec2 - # refers to image_tempaltes.yaml AMI[vmname] entry: - vmname: sles-12sp2-eu-central-1 - # refers to image_tempaltes.yaml entry inside AMI[vmname][:image]: - snapshot: aio - # t2.micro is free tier eligible (https://aws.amazon.com/en/free/): - amisize: t2.micro - # required so that beaker sanitizes sshd_config and root authorized_keys: - user: ec2-user -CONFIG: - type: aio - :ec2_yaml: spec/acceptance/nodesets/ec2/image_templates.yaml -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/ubuntu-1604-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/ubuntu-1604-x64.yml deleted file mode 100644 index 9cf59d59e..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/ubuntu-1604-x64.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# Additional ~/.fog config file with AWS EC2 credentials -# required. -# -# see: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -HOSTS: - ubuntu-1604-x64: - roles: - - master - platform: ubuntu-16.04-amd64 - hypervisor: ec2 - # refers to image_tempaltes.yaml AMI[vmname] entry: - vmname: ubuntu-1604-eu-central-1 - # refers to image_tempaltes.yaml entry inside AMI[vmname][:image]: - snapshot: aio - # t2.micro is free tier eligible (https://aws.amazon.com/en/free/): - amisize: t2.micro - # required so that beaker sanitizes sshd_config and root authorized_keys: - user: ubuntu -CONFIG: - type: aio - :ec2_yaml: spec/acceptance/nodesets/ec2/image_templates.yaml -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/windows-2016-base-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/windows-2016-base-x64.yml deleted file mode 100644 index 0932e29c8..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ec2/windows-2016-base-x64.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# Additional ~/.fog config file with AWS EC2 credentials -# required. -# -# see: https://github.com/puppetlabs/beaker/blob/master/docs/how_to/hypervisors/ec2.md -# -HOSTS: - windows-2016-base-x64: - roles: - - master - platform: windows-2016-64 - hypervisor: ec2 - # refers to image_tempaltes.yaml AMI[vmname] entry: - vmname: windows-2016-base-eu-central-1 - # refers to image_tempaltes.yaml entry inside AMI[vmname][:image]: - snapshot: aio - # t2.micro is free tier eligible (https://aws.amazon.com/en/free/): - amisize: t2.micro - # required so that beaker sanitizes sshd_config and root authorized_keys: - user: ec2-user -CONFIG: - type: aio - :ec2_yaml: spec/acceptance/nodesets/ec2/image_templates.yaml -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-24-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-24-x64.yml deleted file mode 100644 index 820b62d26..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-24-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - fedora-24-x64: - roles: - - master - platform: fedora-24-x86_64 - box: fedora/24-cloud-base - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-25-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-25-x64.yml deleted file mode 100644 index 54dd33054..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-25-x64.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -HOSTS: - fedora-25-x64: - roles: - - master - platform: fedora-25-x86_64 - box: fedora/25-cloud-base - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-26-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-26-x64.yml deleted file mode 100644 index 598822b0e..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-26-x64.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -HOSTS: - fedora-26-x64: - roles: - - master - platform: fedora-26-x86_64 - box: fedora/26-cloud-base - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-27-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-27-x64.yml deleted file mode 100644 index c2b61ebbf..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/fedora-27-x64.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# platform is fedora 26 because there is no puppet-agent -# for fedora 27 as of 2017-11-17 -HOSTS: - fedora-27-x64: - roles: - - master - platform: fedora-26-x86_64 - box: fedora/27-cloud-base - hypervisor: vagrant -CONFIG: - type: aio -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml new file mode 100644 index 000000000..5ca1514e4 --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-server-10044-x64: + roles: + - master + platform: ubuntu-10.04-amd64 + box : ubuntu-server-10044-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1204-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1204-x64.yml deleted file mode 100644 index 29102c565..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1204-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - ubuntu-server-1204-x64: - roles: - - master - platform: ubuntu-12.04-amd64 - box: puppetlabs/ubuntu-12.04-64-nocm - hypervisor: vagrant -CONFIG: - type: foss -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml new file mode 100644 index 000000000..d065b304f --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-server-12042-x64: + roles: + - master + platform: ubuntu-12.04-amd64 + box : ubuntu-server-12042-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml index 054e65880..cba1cd04c 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml +++ b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml @@ -1,15 +1,11 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config HOSTS: ubuntu-server-1404-x64: roles: - master platform: ubuntu-14.04-amd64 - box: puppetlabs/ubuntu-14.04-64-nocm - hypervisor: vagrant + box : puppetlabs/ubuntu-14.04-64-nocm + box_url : https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm + hypervisor : vagrant CONFIG: - type: foss -... -# vim: syntax=yaml + log_level : debug + type: git diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1604-x64.yml b/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1604-x64.yml deleted file mode 100644 index bc85e0e84..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/nodesets/ubuntu-server-1604-x64.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -HOSTS: - ubuntu-server-1604-x64: - roles: - - master - platform: ubuntu-16.04-amd64 - box: puppetlabs/ubuntu-16.04-64-nocm - hypervisor: vagrant -CONFIG: - type: foss -... -# vim: syntax=yaml diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/parameter_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/parameter_spec.rb deleted file mode 100644 index a2bcdd983..000000000 --- a/3rdparty/modules/rabbitmq/spec/acceptance/parameter_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'spec_helper_acceptance' - -describe 'rabbitmq parameter on a vhost:' do - context 'create parameter resource' do - it 'runs successfully' do - pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] - } - class { 'rabbitmq': - service_manage => true, - port => 5672, - delete_guest_user => true, - admin_enable => true, - } - - rabbitmq_plugin { [ 'rabbitmq_federation_management', 'rabbitmq_federation' ]: - ensure => present - } ~> Service['rabbitmq-server'] - - rabbitmq_vhost { 'fedhost': - ensure => present, - } -> - - rabbitmq_parameter { 'documentumFed@fedhost': - component_name => 'federation-upstream', - value => { - 'uri' => 'amqp://server', - 'expires' => '3600000', - }, - } - EOS - - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) - end - - # rubocop:disable RSpec/MultipleExpectations - it 'has the parameter' do - shell('rabbitmqctl list_parameters -p fedhost') do |r| - expect(r.stdout).to match(%r{federation-upstream.*documentumFed.*expires.*3600000}) - expect(r.exit_code).to be_zero - end - end - # rubocop:enable RSpec/MultipleExpectations - end -end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/policy_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/policy_spec.rb index 91161a40e..26858ecc5 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/policy_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/policy_spec.rb @@ -1,16 +1,18 @@ require 'spec_helper_acceptance' describe 'rabbitmq policy on a vhost:' do - context 'create policy resource' do - it 'runs successfully' do + + + context "create policy resource" do + it 'should run successfully' do pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + Class['erlang'] -> Class['::rabbitmq'] } - class { 'rabbitmq': + class { '::rabbitmq': service_manage => true, - port => 5672, + port => '5672', delete_guest_user => true, admin_enable => true, } -> @@ -28,33 +30,18 @@ describe 'rabbitmq policy on a vhost:' do 'ha-sync-mode' => 'automatic', }, } - - rabbitmq_policy { 'eu-federation@myhost': - pattern => '^eu\\.', - priority => 0, - applyto => 'all', - definition => { - 'federation-upstream-set' => 'all', - }, - } EOS - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) - - # Apply twice to ensure no changes the second time. - apply_manifest(pp, catch_failures: true) - expect(apply_manifest(pp, catch_changes: true).exit_code).to be_zero + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - # rubocop:disable RSpec/MultipleExpectations - it 'has the policy' do + it 'should have the policy' do shell('rabbitmqctl list_policies -p myhost') do |r| - expect(r.stdout).to match(%r{myhost.*ha-all.*ha-sync-mode}) - expect(r.stdout).to match(%r{myhost.*eu-federation}) + expect(r.stdout).to match(/myhost.*ha-all.*ha-sync-mode/) expect(r.exit_code).to be_zero end end - # rubocop:enable RSpec/MultipleExpectations + end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/queue_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/queue_spec.rb index a5ed1d109..a1643a632 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/queue_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/queue_spec.rb @@ -1,16 +1,18 @@ require 'spec_helper_acceptance' describe 'rabbitmq binding:' do - context 'create binding and queue resources when using default management port' do - it 'runs successfully' do + + + context "create binding and queue resources when rabbit using default management port" do + it 'should run successfully' do pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + Class['erlang'] -> Class['::rabbitmq'] } - class { 'rabbitmq': + class { '::rabbitmq': service_manage => true, - port => 5672, + port => '5672', delete_guest_user => true, admin_enable => true, } -> @@ -20,7 +22,7 @@ describe 'rabbitmq binding:' do password => 'bar', tags => ['monitoring', 'tag1'], } -> - + rabbitmq_user_permissions { 'dan@host1': configure_permission => '.*', read_permission => '.*', @@ -53,131 +55,40 @@ describe 'rabbitmq binding:' do routing_key => '#', ensure => present, } - + EOS - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - # rubocop:disable RSpec/MultipleExpectations - it 'has the binding' do + it 'should have the binding' do shell('rabbitmqctl list_bindings -q -p host1') do |r| - expect(r.stdout).to match(%r{exchange1\sexchange\squeue1\squeue\s#}) + expect(r.stdout).to match(/exchange1\sexchange\squeue1\squeue\s#/) expect(r.exit_code).to be_zero end end - - it 'has the queue' do + + it 'should have the queue' do shell('rabbitmqctl list_queues -q -p host1') do |r| - expect(r.stdout).to match(%r{queue1}) + expect(r.stdout).to match(/queue1/) expect(r.exit_code).to be_zero end end - # rubocop:enable RSpec/MultipleExpectations - end - - context 'create multiple bindings when same source / destination / vhost but different routing keys' do - it 'runs successfully' do - pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] - } - class { 'rabbitmq': - service_manage => true, - port => 5672, - delete_guest_user => true, - admin_enable => true, - } -> - - rabbitmq_user { 'dan': - admin => true, - password => 'bar', - tags => ['monitoring', 'tag1'], - } -> - - rabbitmq_user_permissions { 'dan@host1': - configure_permission => '.*', - read_permission => '.*', - write_permission => '.*', - } - - rabbitmq_vhost { 'host1': - ensure => present, - } -> - - rabbitmq_exchange { 'exchange1@host1': - user => 'dan', - password => 'bar', - type => 'topic', - ensure => present, - } -> - rabbitmq_queue { 'queue1@host1': - user => 'dan', - password => 'bar', - durable => true, - auto_delete => false, - ensure => present, - } -> - - rabbitmq_binding { 'binding 1': - source => 'exchange1', - destination => 'queue1', - user => 'dan', - vhost => 'host1', - password => 'bar', - destination_type => 'queue', - routing_key => 'test1', - ensure => present, - } -> - - rabbitmq_binding { 'binding 2': - source => 'exchange1', - destination => 'queue1', - user => 'dan', - vhost => 'host1', - password => 'bar', - destination_type => 'queue', - routing_key => 'test2', - ensure => present, - } - - EOS - - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) - end - - # rubocop:disable RSpec/MultipleExpectations - it 'has the bindings' do - shell('rabbitmqctl list_bindings -q -p host1') do |r| - expect(r.stdout).to match(%r{exchange1\sexchange\squeue1\squeue\stest1}) - expect(r.stdout).to match(%r{exchange1\sexchange\squeue1\squeue\stest2}) - expect(r.exit_code).to be_zero - end - end - # rubocop:enable RSpec/MultipleExpectations - - it 'puppet resource shows a binding' do - shell('puppet resource rabbitmq_binding') do |r| - expect(r.stdout).to match(%r{source\s+=>\s+'exchange1',}) - end - end end - - context 'create binding and queue resources when using a non-default management port' do - it 'runs successfully' do + + context "create binding and queue resources when rabbit using a non-default management port" do + it 'should run successfully' do pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + Class['erlang'] -> Class['::rabbitmq'] } - class { 'rabbitmq': + class { '::rabbitmq': service_manage => true, - port => 5672, - management_port => 11111, + port => '5672', + management_port => '11111', delete_guest_user => true, admin_enable => true, } -> @@ -187,7 +98,7 @@ describe 'rabbitmq binding:' do password => 'bar', tags => ['monitoring', 'tag1'], } -> - + rabbitmq_user_permissions { 'dan@host2': configure_permission => '.*', read_permission => '.*', @@ -220,27 +131,27 @@ describe 'rabbitmq binding:' do routing_key => '#', ensure => present, } - + EOS - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - # rubocop:disable RSpec/MultipleExpectations - it 'has the binding' do + it 'should have the binding' do shell('rabbitmqctl list_bindings -q -p host2') do |r| - expect(r.stdout).to match(%r{exchange2\sexchange\squeue2\squeue\s#}) + expect(r.stdout).to match(/exchange2\sexchange\squeue2\squeue\s#/) expect(r.exit_code).to be_zero end end - - it 'has the queue' do + + it 'should have the queue' do shell('rabbitmqctl list_queues -q -p host2') do |r| - expect(r.stdout).to match(%r{queue2}) + expect(r.stdout).to match(/queue2/) expect(r.exit_code).to be_zero end end - # rubocop:enable RSpec/MultipleExpectations + end + end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/rabbitmqadmin_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/rabbitmqadmin_spec.rb index 149e42374..e9d619cd4 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/rabbitmqadmin_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/rabbitmqadmin_spec.rb @@ -1,51 +1,51 @@ require 'spec_helper_acceptance' describe 'rabbitmq::install::rabbitmqadmin class' do - context 'downloads the cli tools' do - it 'runs successfully' do + context 'does nothing if service is unmanaged' do + it 'should run successfully' do pp = <<-EOS class { 'rabbitmq': admin_enable => true, - service_manage => true, + service_manage => false, } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - apply_manifest(pp, catch_failures: true) + shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') + apply_manifest(pp, :catch_failures => true) end describe file('/var/lib/rabbitmq/rabbitmqadmin') do - it { is_expected.to be_file } + it { should_not be_file } end end - context 'does nothing if service is unmanaged' do - it 'runs successfully' do + context 'downloads the cli tools' do + it 'should run successfully' do pp = <<-EOS class { 'rabbitmq': admin_enable => true, - service_manage => false, + service_manage => true, } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS - shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') - apply_manifest(pp, catch_failures: true) + apply_manifest(pp, :catch_failures => true) end describe file('/var/lib/rabbitmq/rabbitmqadmin') do - it { is_expected.not_to be_file } + it { should be_file } end end context 'works with specified default credentials' do - it 'runs successfully' do + it 'should run successfully' do # make sure credential change takes effect before admin_enable pp_pre = <<-EOS class { 'rabbitmq': @@ -53,7 +53,7 @@ describe 'rabbitmq::install::rabbitmqadmin class' do default_user => 'foobar', default_pass => 'bazblam', } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } @@ -66,19 +66,20 @@ describe 'rabbitmq::install::rabbitmqadmin class' do default_user => 'foobar', default_pass => 'bazblam', } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq'] } EOS shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') - apply_manifest(pp_pre, catch_failures: true) - apply_manifest(pp, catch_failures: true) + apply_manifest(pp_pre, :catch_failures => true) + apply_manifest(pp, :catch_failures => true) end describe file('/var/lib/rabbitmq/rabbitmqadmin') do - it { is_expected.to be_file } + it { should be_file } end end + end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/server_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/server_spec.rb index 5ac29bfee..d99f995db 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/server_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/server_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper_acceptance' describe 'rabbitmq server:' do - case fact('os.family') + case fact('osfamily') when 'RedHat' package_name = 'rabbitmq-server' service_name = 'rabbitmq-server' @@ -16,57 +16,57 @@ describe 'rabbitmq server:' do service_name = 'rabbitmq' end - context 'default class inclusion' do - it 'runs successfully' do + context "default class inclusion" do + it 'should run successfully' do pp = <<-EOS class { 'rabbitmq::server': } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq::server'] } EOS # Apply twice to ensure no errors the second time. - apply_manifest(pp, catch_failures: true) - expect(apply_manifest(pp, catch_changes: true).exit_code).to be_zero + apply_manifest(pp, :catch_failures => true) + expect(apply_manifest(pp, :catch_changes => true).exit_code).to be_zero end describe package(package_name) do - it { is_expected.to be_installed } + it { should be_installed } end describe service(service_name) do - it { is_expected.to be_enabled } - it { is_expected.to be_running } + it { should be_enabled } + it { should be_running } end end - context 'disable and stop service' do - it 'runs successfully' do + context "disable and stop service" do + it 'should run successfully' do pp = <<-EOS class { 'rabbitmq::server': service_ensure => 'stopped', } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq::server'] } EOS - apply_manifest(pp, catch_failures: true) + apply_manifest(pp, :catch_failures => true) end describe service(service_name) do - it { is_expected.not_to be_enabled } - it { is_expected.not_to be_running } + it { should_not be_enabled } + it { should_not be_running } end end - context 'service is unmanaged' do - it 'runs successfully' do + context "service is unmanaged" do + it 'should run successfully' do pp_pre = <<-EOS class { 'rabbitmq::server': } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq::server'] } @@ -77,19 +77,20 @@ describe 'rabbitmq server:' do service_manage => false, service_ensure => 'stopped', } - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true} Class['erlang'] -> Class['rabbitmq::server'] } EOS - apply_manifest(pp_pre, catch_failures: true) - apply_manifest(pp, catch_failures: true) + + apply_manifest(pp_pre, :catch_failures => true) + apply_manifest(pp, :catch_failures => true) end describe service(service_name) do - it { is_expected.to be_enabled } - it { is_expected.to be_running } + it { should be_enabled } + it { should be_running } end end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/user_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/user_spec.rb index beff492e0..6aab665a4 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/user_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/user_spec.rb @@ -1,16 +1,18 @@ require 'spec_helper_acceptance' describe 'rabbitmq user:' do - context 'create user resource' do - it 'runs successfully' do + + + context "create user resource" do + it 'should run successfully' do pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + Class['erlang'] -> Class['::rabbitmq'] } - class { 'rabbitmq': + class { '::rabbitmq': service_manage => true, - port => 5672, + port => '5672', delete_guest_user => true, admin_enable => true, } -> @@ -21,36 +23,16 @@ describe 'rabbitmq user:' do } EOS - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - # rubocop:disable RSpec/MultipleExpectations - it 'has the user' do - shell('rabbitmqctl list_users -q') do |r| - expect(r.stdout).to match(%r{dan.*administrator}) + it 'should have the user' do + shell('rabbitmqctl list_users') do |r| + expect(r.stdout).to match(/dan.*administrator/) expect(r.exit_code).to be_zero end end - # rubocop:enable RSpec/MultipleExpectations - end - - context 'destroy user resource' do - it 'runs successfully' do - pp = <<-EOS - rabbitmq_user { 'dan': - ensure => absent, - } - EOS - - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) - end - it 'does not have the user' do - shell('rabbitmqctl list_users -q') do |r| - expect(r.stdout).not_to match(%r{dan\s+}) - end - end end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/vhost_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/vhost_spec.rb index fc3722ae4..ef1c2a342 100644 --- a/3rdparty/modules/rabbitmq/spec/acceptance/vhost_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/acceptance/vhost_spec.rb @@ -1,16 +1,18 @@ require 'spec_helper_acceptance' describe 'rabbitmq vhost:' do - context 'create vhost resource' do - it 'runs successfully' do + + + context "create vhost resource" do + it 'should run successfully' do pp = <<-EOS - if $facts['os']['family'] == 'RedHat' { + if $::osfamily == 'RedHat' { class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + Class['erlang'] -> Class['::rabbitmq'] } - class { 'rabbitmq': + class { '::rabbitmq': service_manage => true, - port => 5672, + port => '5672', delete_guest_user => true, admin_enable => true, } -> @@ -20,17 +22,16 @@ describe 'rabbitmq vhost:' do } EOS - apply_manifest(pp, catch_failures: true) - apply_manifest(pp, catch_changes: true) + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - # rubocop:disable RSpec/MultipleExpectations - it 'has the vhost' do + it 'should have the vhost' do shell('rabbitmqctl list_vhosts') do |r| - expect(r.stdout).to match(%r{myhost}) + expect(r.stdout).to match(/myhost/) expect(r.exit_code).to be_zero end end - # rubocop:enable RSpec/MultipleExpectations + end end diff --git a/3rdparty/modules/rabbitmq/spec/acceptance/zz281_spec.rb b/3rdparty/modules/rabbitmq/spec/acceptance/zz281_spec.rb new file mode 100644 index 000000000..05e5ef40c --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/acceptance/zz281_spec.rb @@ -0,0 +1,213 @@ +require 'spec_helper_acceptance' +# +# beacuse of some serious issues with upgrading and downgrading rabbitmq on RedHat, +# we need to run all of the 2.8.1 tests last. +# +# NOTE that this is only tested on RedHat and probably only works there. But I can't seem +# to get 'confine' to work... +# + +describe 'rabbitmq class with 2.8.1:' do + case fact('osfamily') + when 'RedHat' + package_name = 'rabbitmq-server' + service_name = 'rabbitmq-server' + package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.1/rabbitmq-server-2.8.1-1.noarch.rpm" + package_ensure = '2.8.1-1' + when 'SUSE' + package_name = 'rabbitmq-server' + service_name = 'rabbitmq-server' + package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.1/rabbitmq-server-2.8.1-1.noarch.rpm" + package_ensure = '2.8.1-1' + when 'Debian' + package_name = 'rabbitmq-server' + service_name = 'rabbitmq-server' + package_source = '' + package_ensure = '2.8.1' + when 'Archlinux' + package_name = 'rabbitmq' + service_name = 'rabbitmq' + package_source = '' + package_ensure = '2.8.1' + end + + context "default class inclusion" do + it 'should run successfully' do + pp = <<-EOS + class { 'rabbitmq': + version => '2.8.1-1', + package_source => '#{package_source}', + package_ensure => '#{package_ensure}', + package_provider => 'rpm', + management_port => '55672', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + # clean up previous 3.x install - can't be ungraded cleanly via RPM + shell('service rabbitmq-server stop') + shell('yum -y erase rabbitmq-server') + shell('rm -Rf /var/lib/rabbitmq/mnesia /etc/rabbitmq /var/lib/rabbitmq/rabbitmqadmin') + # Apply twice to ensure no errors the second time. + apply_manifest(pp, :catch_failures => true) + expect(apply_manifest(pp, :catch_changes => true).exit_code).to be_zero + # DEBUG + shell('netstat -lntp') + end + + describe command('rabbitmqctl status') do + its(:stdout) { should match /{rabbit,"RabbitMQ","2.8.1"}/ } + end + + describe package(package_name) do + it { should be_installed } + end + + describe service(service_name) do + it { should be_enabled } + it { should be_running } + end + end + + context "disable and stop service" do + it 'should run successfully' do + pp = <<-EOS + class { 'rabbitmq': + version => '2.8.1-1', + package_source => '#{package_source}', + package_ensure => '#{package_ensure}', + package_provider => 'rpm', + management_port => '55672', + service_ensure => 'stopped', + admin_enable => false, + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe service(service_name) do + it { should_not be_enabled } + it { should_not be_running } + end + end + + context "service is unmanaged" do + it 'should run successfully' do + pp_pre = <<-EOS + class { 'rabbitmq': + version => '2.8.1-1', + package_source => '#{package_source}', + package_ensure => '#{package_ensure}', + package_provider => 'rpm', + management_port => '55672', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + pp = <<-EOS + class { 'rabbitmq': + service_manage => false, + service_ensure => 'stopped', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + apply_manifest(pp_pre, :catch_failures => true) + apply_manifest(pp, :catch_failures => true) + end + + describe service(service_name) do + it { should be_enabled } + it { should be_running } + end + end + + context 'rabbitmqadmin' do + #confine :to, :platform => 'el-6-x86' + + it 'should run successfully' do + pp = <<-EOS + class { 'rabbitmq': + admin_enable => true, + service_manage => true, + version => '2.8.1-1', + package_source => '#{package_source}', + package_ensure => '#{package_ensure}', + package_provider => 'rpm', + management_port => '55672', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') + apply_manifest(pp, :catch_failures => true) + end + + # since serverspec (used by beaker-rspec) can only tell present/absent for packages + describe file('/var/lib/rabbitmq/rabbitmqadmin') do + it { should be_file } + end + + describe command('/usr/local/bin/rabbitmqadmin --help') do + its(:exit_status) { should eq 0 } + end + + end + + context 'rabbitmqadmin with specified default credentials' do + + it 'should run successfully' do + # make sure credential change takes effect before admin_enable + pp = <<-EOS + class { 'rabbitmq': + admin_enable => true, + service_manage => true, + version => '2.8.1-1', + package_source => '#{package_source}', + package_ensure => '#{package_ensure}', + package_provider => 'rpm', + management_port => '55672', + default_user => 'foobar', + default_pass => 'bazblam', + } + if $::osfamily == 'RedHat' { + class { 'erlang': epel_enable => true} + Class['erlang'] -> Class['rabbitmq'] + } + EOS + + # next 3 lines - see MODULES-1085 + shell('service rabbitmq-server stop') + shell('rm -Rf /var/lib/rabbitmq/mnesia /var/lib/rabbitmq/rabbitmqadmin') + apply_manifest(pp, :catch_failures => true) + end + + # since serverspec (used by beaker-rspec) can only tell present/absent for packages + describe file('/var/lib/rabbitmq/rabbitmqadmin') do + it { should be_file } + end + + describe command('/usr/local/bin/rabbitmqadmin --help') do + its(:exit_status) { should eq 0 } + end + + end + +end diff --git a/3rdparty/modules/rabbitmq/spec/classes/coverage_spec.rb b/3rdparty/modules/rabbitmq/spec/classes/coverage_spec.rb deleted file mode 100644 index de446548b..000000000 --- a/3rdparty/modules/rabbitmq/spec/classes/coverage_spec.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'rspec-puppet' - -at_exit { RSpec::Puppet::Coverage.report! } -# vim: syntax=ruby diff --git a/3rdparty/modules/rabbitmq/spec/classes/rabbitmq_spec.rb b/3rdparty/modules/rabbitmq/spec/classes/rabbitmq_spec.rb index bd00c33f9..675a8759e 100644 --- a/3rdparty/modules/rabbitmq/spec/classes/rabbitmq_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/classes/rabbitmq_spec.rb @@ -1,464 +1,526 @@ require 'spec_helper' describe 'rabbitmq' do + context 'on unsupported distributions' do - let(:facts) do - { - os: { family: 'Unsupported' } - } - end + let(:facts) {{ :osfamily => 'Unsupported' }} it 'we fail' do - expect { catalogue }.to raise_error(Puppet::Error, %r{not supported on an Unsupported}) + expect { catalogue }.to raise_error(Puppet::Error, /not supported on an Unsupported/) end end - on_supported_os.each do |os, facts| - context "on #{os}" do - systemd_facts = os_specific_facts(facts) - facts = facts.merge(systemd_facts) - let :facts do - facts - end + context 'on Debian' do + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + it 'includes rabbitmq::repo::apt' do + should contain_class('rabbitmq::repo::apt') + end - name = case facts[:osfamily] - when 'Archlinux', 'OpenBSD', 'FreeBSD' - 'rabbitmq' - else - 'rabbitmq-server' - end - - it { is_expected.to compile.with_all_deps } - it { is_expected.to contain_class('rabbitmq::install') } - it { is_expected.to contain_class('rabbitmq::config').that_notifies('Class[rabbitmq::service]') } - it { is_expected.to contain_class('rabbitmq::service') } - - it { is_expected.to contain_package(name).with_ensure('installed').with_name(name) } - if facts[:os]['family'] == 'Suse' - it { is_expected.to contain_package('rabbitmq-server-plugins') } + describe 'apt::source default values' do + it 'should add a repo with defaults values' do + should contain_apt__source('rabbitmq').with( { + :ensure => 'present', + :location => 'http://www.rabbitmq.com/debian/', + :release => 'testing', + :repos => 'main', + }) end + end + end + + context 'on Debian' do + let(:params) {{ :manage_repos => false }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + it 'does ensure rabbitmq apt::source is absent when manage_repos is false' do + should_not contain_apt__source('rabbitmq') + end + end - context 'with default params' do - it { is_expected.not_to contain_class('rabbitmq::repo::apt') } - it { is_expected.not_to contain_apt__source('rabbitmq') } - it { is_expected.not_to contain_class('rabbitmq::repo::rhel') } - it { is_expected.not_to contain_yumrepo('rabbitmq') } + context 'on Debian' do + let(:params) {{ :manage_repos => true }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + + it 'includes rabbitmq::repo::apt' do + should contain_class('rabbitmq::repo::apt') + end + + describe 'apt::source default values' do + it 'should add a repo with defaults values' do + should contain_apt__source('rabbitmq').with( { + :ensure => 'present', + :location => 'http://www.rabbitmq.com/debian/', + :release => 'testing', + :repos => 'main', + }) end + end + end - context 'with service_restart => false' do - let(:params) { { service_restart: false } } + context 'on Debian' do + let(:params) {{ :repos_ensure => false }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + it 'does ensure rabbitmq apt::source is absent when repos_ensure is false' do + should contain_apt__source('rabbitmq').with( + 'ensure' => 'absent' + ) + end + end - it { is_expected.not_to contain_class('rabbitmq::config').that_notifies('Class[rabbitmq::service]') } + context 'on Debian' do + let(:params) {{ :repos_ensure => true }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + + it 'includes rabbitmq::repo::apt' do + should contain_class('rabbitmq::repo::apt') + end + + describe 'apt::source default values' do + it 'should add a repo with defaults values' do + should contain_apt__source('rabbitmq').with( { + :ensure => 'present', + :location => 'http://www.rabbitmq.com/debian/', + :release => 'testing', + :repos => 'main', + }) end + end + end - context 'with repos_ensure => true' do - let(:params) { { repos_ensure: true } } + context 'on Debian' do + let(:params) {{ :manage_repos => true, :repos_ensure => false }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} - if facts[:os]['family'] == 'Debian' - it 'includes rabbitmq::repo::apt' do - is_expected.to contain_class('rabbitmq::repo::apt'). - with_key_source('https://packagecloud.io/gpg.key'). - with_key_content(nil) - end + it 'includes rabbitmq::repo::apt' do + should contain_class('rabbitmq::repo::apt') + end - it 'adds a repo with default values' do - is_expected.to contain_apt__source('rabbitmq'). - with_ensure('present'). - with_location("https://packagecloud.io/rabbitmq/rabbitmq-server/#{facts[:os]['name'].downcase}"). - with_release(nil). - with_repos('main') - end - else - it { is_expected.not_to contain_class('rabbitmq::repo::apt') } - it { is_expected.not_to contain_apt__souce('rabbitmq') } - end + describe 'apt::source default values' do + it 'should add a repo with defaults values' do + should contain_apt__source('rabbitmq').with( { + :ensure => 'absent', + }) + end + end + end - if facts[:os]['family'] == 'RedHat' - it { is_expected.to contain_class('rabbitmq::repo::rhel') } + context 'on Debian' do + let(:params) {{ :manage_repos => true, :repos_ensure => true }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} - it 'the repo should be present, and contain the expected values' do - is_expected.to contain_yumrepo('rabbitmq'). - with_ensure('present'). - with_baseurl(%r{https://packagecloud.io/rabbitmq/rabbitmq-server/el/\d+/\$basearch$}). - with_gpgkey('https://www.rabbitmq.com/rabbitmq-release-signing-key.asc') - end - else - it { is_expected.not_to contain_class('rabbitmq::repo::rhel') } - it { is_expected.not_to contain_yumrepo('rabbitmq') } - end + it 'includes rabbitmq::repo::apt' do + should contain_class('rabbitmq::repo::apt') + end + + describe 'apt::source default values' do + it 'should add a repo with defaults values' do + should contain_apt__source('rabbitmq').with( { + :ensure => 'present', + :location => 'http://www.rabbitmq.com/debian/', + :release => 'testing', + :repos => 'main', + }) end + end + end - context 'with no pin', if: facts[:os]['family'] == 'Debian' do - let(:params) { { repos_ensure: true, package_apt_pin: '' } } + context 'on Debian' do + let(:params) {{ :manage_repos => false, :repos_ensure => true }} + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + it 'does ensure rabbitmq apt::source is absent when manage_repos is false and repos_ensure is true' do + should_not contain_apt__source('rabbitmq') + end + end - describe 'it sets up an apt::source' do - it { - is_expected.to contain_apt__source('rabbitmq').with( - 'location' => "https://packagecloud.io/rabbitmq/rabbitmq-server/#{facts[:os]['name'].downcase}", - 'repos' => 'main', - 'key' => '{"id"=>"418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB", "source"=>"https://packagecloud.io/gpg.key", "content"=>:undef}' - ) - } - end + context 'on Debian' do + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'squeeze' }} + context 'with manage_repos => false and repos_ensure => false' do + let(:params) {{ :manage_repos => false, :repos_ensure => false }} + it 'does ensure rabbitmq apt::source is absent when manage_repos is false and repos_ensure is false' do + should_not contain_apt__source('rabbitmq') end + end - context 'with pin', if: facts[:os]['family'] == 'Debian' do - let(:params) { { repos_ensure: true, package_apt_pin: '700' } } + context 'with file_limit => unlimited' do + let(:params) {{ :file_limit => 'unlimited' }} + it { should contain_file('/etc/default/rabbitmq-server').with_content(/ulimit -n unlimited/) } + end - describe 'it sets up an apt::source and pin' do - it { - is_expected.to contain_apt__source('rabbitmq').with( - 'location' => "https://packagecloud.io/rabbitmq/rabbitmq-server/#{facts[:os]['name'].downcase}", - 'repos' => 'main', - 'key' => '{"id"=>"418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB", "source"=>"https://packagecloud.io/gpg.key", "content"=>:undef}' - ) - } + context 'with file_limit => infinity' do + let(:params) {{ :file_limit => 'infinity' }} + it { should contain_file('/etc/default/rabbitmq-server').with_content(/ulimit -n infinity/) } + end - it { - is_expected.to contain_apt__pin('rabbitmq').with( - 'packages' => '*', - 'priority' => '700', - 'origin' => 'packagecloud.io' - ) - } - end + context 'with file_limit => -1' do + let(:params) {{ :file_limit => -1 }} + it { should contain_file('/etc/default/rabbitmq-server').with_content(/ulimit -n -1/) } + end + + context 'with file_limit => \'1234\'' do + let(:params) {{ :file_limit => '1234' }} + it { should contain_file('/etc/default/rabbitmq-server').with_content(/ulimit -n 1234/) } + end + + context 'with file_limit => foo' do + let(:params) {{ :file_limit => 'foo' }} + it 'does not compile' do + expect { catalogue }.to raise_error(Puppet::Error, /\$file_limit must be an integer, 'unlimited', or 'infinity'/) end + end + end - ['infinity', -1, 1234].each do |value| - context "with file_limit => '#{value}'" do - let(:params) { { file_limit: value } } - - if facts[:os]['family'] == 'RedHat' - it do - is_expected.to contain_file('/etc/security/limits.d/rabbitmq-server.conf'). - with_owner('0'). - with_group('0'). - with_mode('0644'). - that_notifies('Class[Rabbitmq::Service]'). - with_content("rabbitmq soft nofile #{value}\nrabbitmq hard nofile #{value}\n") - end - else - it { is_expected.not_to contain_file('/etc/security/limits.d/rabbitmq-server.conf') } - end + context 'on Redhat' do + let(:facts) {{ :osfamily => 'RedHat' }} + it 'includes rabbitmq::repo::rhel' do + should contain_class('rabbitmq::repo::rhel') + should contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_file('/etc/default/rabbitmq-server').with_content(%r{ulimit -n #{value}}) } - else - it { is_expected.not_to contain_file('/etc/default/rabbitmq-server') } - end + context 'on Redhat' do + let(:params) {{ :repos_ensure => false }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does not import repo public key when repos_ensure is false' do + should contain_class('rabbitmq::repo::rhel') + should_not contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - if facts[:systemd] - it do - is_expected.to contain_systemd__service_limits("#{name}.service"). - with_limits('LimitNOFILE' => value). - with_restart_service(false) - end - else - it { is_expected.not_to contain_systemd__service_limits("#{name}.service") } - end - end - end + context 'on Redhat' do + let(:params) {{ :repos_ensure => true }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does import repo public key when repos_ensure is true' do + should contain_class('rabbitmq::repo::rhel') + should contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - [-42, '-42', 'foo'].each do |value| - context "with file_limit => '#{value}'" do - let(:params) { { file_limit: value } } + context 'on Redhat' do + let(:params) {{ :manage_repos => false }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does not import repo public key when manage_repos is false' do + should_not contain_class('rabbitmq::repo::rhel') + should_not contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - it 'does not compile' do - expect { catalogue }.to raise_error(Puppet::PreformattedError, %r{Error while evaluating a Resource Statement}) - end - end - end + context 'on Redhat' do + let(:params) {{ :manage_repos => true }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does import repo public key when manage_repos is true' do + should contain_class('rabbitmq::repo::rhel') + should contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - context 'on systems with systemd', if: facts[:systemd] do - it do - is_expected.to contain_systemd__service_limits("#{name}.service"). - with_restart_service(false) - end - end + context 'on Redhat' do + let(:params) {{ :manage_repos => false, :repos_ensure => true }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does not import repo public key when manage_repos is false and repos_ensure is true' do + should_not contain_class('rabbitmq::repo::rhel') + should_not contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - context 'on systems without systemd', unless: facts[:systemd] do - it { is_expected.not_to contain_systemd__service_limits("#{name}.service") } - end + context 'on Redhat' do + let(:params) {{ :manage_repos => true, :repos_ensure => true }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does import repo public key when manage_repos is true and repos_ensure is true' do + should contain_class('rabbitmq::repo::rhel') + should contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - context 'with admin_enable set to true' do - let(:params) { { admin_enable: true, management_ip_address: '1.1.1.1' } } + context 'on Redhat' do + let(:params) {{ :manage_repos => false, :repos_ensure => false }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does not import repo public key when manage_repos is false and repos_ensure is false' do + should_not contain_class('rabbitmq::repo::rhel') + should_not contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - context 'with service_manage set to true' do - let(:params) { { admin_enable: true, management_ip_address: '1.1.1.1', service_manage: true } } + context 'on Redhat' do + let(:params) {{ :manage_repos => true, :repos_ensure => false }} + let(:facts) {{ :osfamily => 'RedHat' }} + it 'does not import repo public key when manage_repos is true and repos_ensure is false' do + should contain_class('rabbitmq::repo::rhel') + should_not contain_exec('rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc') + end + end - context 'with rabbitmqadmin_package set to blub' do - let(:params) { { rabbitmqadmin_package: 'blub' } } + context 'on RedHat 7.0 or more' do + let(:facts) {{ :osfamily => 'RedHat', :operatingsystemmajrelease => '7' }} + + it { should contain_file('/etc/systemd/system/rabbitmq-server.service.d').with( + 'ensure' => 'directory', + 'owner' => '0', + 'group' => '0', + 'mode' => '0755', + 'selinux_ignore_defaults' => true + ) } + + it { should contain_exec('rabbitmq-systemd-reload').with( + 'command' => '/usr/bin/systemctl daemon-reload', + 'notify' => 'Class[Rabbitmq::Service]', + 'refreshonly' => true + ) } + context 'with file_limit => unlimited' do + let(:params) {{ :file_limit => 'unlimited' }} + it { should contain_file('/etc/systemd/system/rabbitmq-server.service.d/limits.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Exec[rabbitmq-systemd-reload]', + 'content' => '[Service] +LimitNOFILE=unlimited +' + ) } + end - it 'installs a package called blub' do - is_expected.to contain_package('rabbitmqadmin').with_name('blub') - end - end - if facts[:os]['family'] == 'Archlinux' - it 'installs a package called rabbitmqadmin' do - is_expected.to contain_package('rabbitmqadmin').with_name('rabbitmqadmin') - end - else - it 'we enable the admin interface by default' do - is_expected.to contain_class('rabbitmq::install::rabbitmqadmin') - is_expected.to contain_rabbitmq_plugin('rabbitmq_management').with( - notify: 'Class[Rabbitmq::Service]' - ) - is_expected.to contain_archive('rabbitmqadmin').with_source('http://1.1.1.1:15672/cli/rabbitmqadmin') - end - end - if %w[RedHat Debian SUSE].include?(facts[:os]['family']) - it { is_expected.to contain_package('python') } - end - if %w[FreeBSD OpenBSD].include?(facts[:os]['family']) - it { is_expected.to contain_package('python2') } - end - end - context 'with manage_python false' do - let(:params) { { manage_python: false } } + context 'with file_limit => infinity' do + let(:params) {{ :file_limit => 'infinity' }} + it { should contain_file('/etc/systemd/system/rabbitmq-server.service.d/limits.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Exec[rabbitmq-systemd-reload]', + 'content' => '[Service] +LimitNOFILE=infinity +' + ) } + end - it do - is_expected.to contain_class('rabbitmq::install::rabbitmqadmin') - is_expected.not_to contain_package('python') - is_expected.not_to contain_package('python2') - end - end + context 'with file_limit => -1' do + let(:params) {{ :file_limit => -1 }} + it { should contain_file('/etc/systemd/system/rabbitmq-server.service.d/limits.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Exec[rabbitmq-systemd-reload]', + 'content' => '[Service] +LimitNOFILE=-1 +' + ) } + end - context 'with $management_ip_address undef and service_manage set to true', unless: facts[:osfamily] == 'Archlinux' do - let(:params) { { admin_enable: true, management_ip_address: :undef } } + context 'with file_limit => \'1234\'' do + let(:params) {{ :file_limit => '1234' }} + it { should contain_file('/etc/systemd/system/rabbitmq-server.service.d/limits.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Exec[rabbitmq-systemd-reload]', + 'content' => '[Service] +LimitNOFILE=1234 +' + ) } + end - it 'we enable the admin interface by default' do - is_expected.to contain_class('rabbitmq::install::rabbitmqadmin') - is_expected.to contain_rabbitmq_plugin('rabbitmq_management').with( - notify: 'Class[Rabbitmq::Service]' - ) - is_expected.to contain_archive('rabbitmqadmin').with_source('http://127.0.0.1:15672/cli/rabbitmqadmin') - end - end - context 'with service_manage set to true, node_ip_address = undef, and default user/pass specified', unless: facts[:osfamily] == 'Archlinux' do - let(:params) { { admin_enable: true, default_user: 'foobar', default_pass: 'hunter2', node_ip_address: :undef } } + context 'with file_limit => foo' do + let(:params) {{ :file_limit => 'foo' }} + it 'does not compile' do + expect { catalogue }.to raise_error(Puppet::Error, /\$file_limit must be an integer, 'unlimited', or 'infinity'/) + end + end + end - it 'we use the correct URL to rabbitmqadmin' do - is_expected.to contain_archive('rabbitmqadmin').with( - source: 'http://127.0.0.1:15672/cli/rabbitmqadmin', - username: 'foobar', - password: 'hunter2' - ) - end - end - context 'with service_manage set to true and default user/pass specified', unless: facts[:osfamily] == 'Archlinux' do - let(:params) { { admin_enable: true, default_user: 'foobar', default_pass: 'hunter2', management_ip_address: '1.1.1.1' } } + context 'on RedHat before 7.0' do + let(:facts) {{ :osfamily => 'RedHat', :operatingsystemmajrelease => '6' }} + + context 'with file_limit => unlimited' do + let(:params) {{ :file_limit => 'unlimited' }} + it { should contain_file('/etc/security/limits.d/rabbitmq-server.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Class[Rabbitmq::Service]', + 'content' => 'rabbitmq soft nofile unlimited +rabbitmq hard nofile unlimited +' + ) } + end - it 'we use the correct URL to rabbitmqadmin' do - is_expected.to contain_archive('rabbitmqadmin').with( - source: 'http://1.1.1.1:15672/cli/rabbitmqadmin', - username: 'foobar', - password: 'hunter2' - ) - end - end - context 'with service_manage set to true and archive_options set', unless: facts[:osfamily] == 'Archlinux' do - let(:params) do - { - admin_enable: true, - management_ip_address: '1.1.1.1', - archive_options: %w[fizz pop] - } - end + context 'with file_limit => infinity' do + let(:params) {{ :file_limit => 'infinity' }} + it { should contain_file('/etc/security/limits.d/rabbitmq-server.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Class[Rabbitmq::Service]', + 'content' => 'rabbitmq soft nofile infinity +rabbitmq hard nofile infinity +' + ) } + end + + context 'with file_limit => -1' do + let(:params) {{ :file_limit => -1 }} + it { should contain_file('/etc/security/limits.d/rabbitmq-server.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Class[Rabbitmq::Service]', + 'content' => 'rabbitmq soft nofile -1 +rabbitmq hard nofile -1 +' + ) } + end + + context 'with file_limit => \'1234\'' do + let(:params) {{ :file_limit => '1234' }} + it { should contain_file('/etc/security/limits.d/rabbitmq-server.conf').with( + 'owner' => '0', + 'group' => '0', + 'mode' => '0644', + 'notify' => 'Class[Rabbitmq::Service]', + 'content' => 'rabbitmq soft nofile 1234 +rabbitmq hard nofile 1234 +' + ) } + end - it 'we use the correct archive_options to rabbitmqadmin' do - is_expected.to contain_archive('rabbitmqadmin').with( - source: 'http://1.1.1.1:15672/cli/rabbitmqadmin', - download_options: %w[fizz pop] + context 'with file_limit => foo' do + let(:params) {{ :file_limit => 'foo' }} + it 'does not compile' do + expect { catalogue }.to raise_error(Puppet::Error, /\$file_limit must be an integer, 'unlimited', or 'infinity'/) + end + end + end + + ['Debian', 'RedHat', 'SUSE', 'Archlinux'].each do |distro| + context "on #{distro}" do + let(:facts) {{ + :osfamily => distro, + :lsbdistcodename => 'squeeze', + :lsbdistid => 'Debian' + }} + + it { should contain_class('rabbitmq::install') } + it { should contain_class('rabbitmq::config') } + it { should contain_class('rabbitmq::service') } + + context 'with admin_enable set to true' do + let(:params) {{ :admin_enable => true }} + context 'with service_manage set to true' do + it 'we enable the admin interface by default' do + should contain_class('rabbitmq::install::rabbitmqadmin') + should contain_rabbitmq_plugin('rabbitmq_management').with( + 'require' => 'Class[Rabbitmq::Install]', + 'notify' => 'Class[Rabbitmq::Service]' ) + should contain_staging__file('rabbitmqadmin').with_source("http://guest:guest@localhost:15672/cli/rabbitmqadmin") end end - context 'with service_manage set to true and management port specified', unless: facts[:osfamily] == 'Archlinux' do - # note that the 2.x management port is 55672 not 15672 - let(:params) { { admin_enable: true, management_port: 55_672, management_ip_address: '1.1.1.1' } } - + context 'with service_manage set to true and default user/pass specified' do + let(:params) {{ :admin_enable => true, :default_user => 'foobar', :default_pass => 'hunter2' }} it 'we use the correct URL to rabbitmqadmin' do - is_expected.to contain_archive('rabbitmqadmin').with( - source: 'http://1.1.1.1:55672/cli/rabbitmqadmin', - username: 'guest', - password: 'guest' - ) + should contain_staging__file('rabbitmqadmin').with_source("http://foobar:hunter2@localhost:15672/cli/rabbitmqadmin") end end - context 'with ipv6, service_manage set to true and management port specified', unless: facts[:osfamily] == 'Archlinux' do + context 'with service_manage set to true and management port specified' do # note that the 2.x management port is 55672 not 15672 - let(:params) { { admin_enable: true, management_port: 55_672, management_ip_address: '::1' } } - + let(:params) {{ :admin_enable => true, :management_port => '55672' }} it 'we use the correct URL to rabbitmqadmin' do - is_expected.to contain_archive('rabbitmqadmin').with( - source: 'http://[::1]:55672/cli/rabbitmqadmin', - username: 'guest', - password: 'guest' - ) + should contain_staging__file('rabbitmqadmin').with_source("http://guest:guest@localhost:55672/cli/rabbitmqadmin") end end context 'with service_manage set to false' do - let(:params) { { admin_enable: true, service_manage: false } } - - it 'does nothing' do - is_expected.not_to contain_class('rabbitmq::install::rabbitmqadmin') - is_expected.not_to contain_rabbitmq_plugin('rabbitmq_management') + let(:params) {{ :admin_enable => true, :service_manage => false }} + it 'should do nothing' do + should_not contain_class('rabbitmq::install::rabbitmqadmin') + should_not contain_rabbitmq_plugin('rabbitmq_management') end end end describe 'manages configuration directory correctly' do - it { - is_expected.to contain_file('/etc/rabbitmq').with( - 'ensure' => 'directory', - 'mode' => '0755' - ) - } + it { should contain_file('/etc/rabbitmq').with( + 'ensure' => 'directory' + )} end describe 'manages configuration file correctly' do - it { - is_expected.to contain_file('rabbitmq.config').with( - 'owner' => '0', - 'group' => 'rabbitmq', - 'mode' => '0640' - ) - } - end - - describe 'does not contain pre-ranch settings with default config' do - it do - is_expected.to contain_file('rabbitmq.config'). \ - without_content(%r{binary,}). \ - without_content(%r{\{packet, raw\},}). \ - without_content(%r{\{reuseaddr, true\},}) - end - end - - describe 'contains pre-ranch settings with config_ranch set to false' do - let(:params) { { config_ranch: false } } - - it do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{binary,}). \ - with_content(%r{\{packet, raw\},}). \ - with_content(%r{\{reuseaddr, true\},}) - end + it { should contain_file('rabbitmq.config') } end context 'configures config_cluster' do - let(:params) do - { - config_cluster: true, - cluster_nodes: ['hare-1', 'hare-2'], - cluster_node_type: 'ram', - wipe_db_on_cookie_change: false - } - end - - describe 'with erlang_cookie set' do - let(:params) do - { - config_cluster: true, - cluster_nodes: ['hare-1', 'hare-2'], - cluster_node_type: 'ram', - erlang_cookie: 'TESTCOOKIE', - wipe_db_on_cookie_change: true - } - end - - it 'contains the rabbitmq_erlang_cookie' do - is_expected.to contain_rabbitmq_erlang_cookie('/var/lib/rabbitmq/.erlang.cookie') + let(:facts) {{ :osfamily => distro, :lsbdistid => 'Debian' }} + let(:params) {{ + :config_cluster => true, + :cluster_nodes => ['hare-1', 'hare-2'], + :cluster_node_type => 'ram', + :wipe_db_on_cookie_change => false + }} + + describe 'with defaults' do + it 'fails' do + expect { catalogue }.to raise_error(Puppet::Error, /You must set the \$erlang_cookie value/) end end - describe 'with erlang_cookie set but without config_cluster' do - let(:params) do - { - config_cluster: false, - erlang_cookie: 'TESTCOOKIE' - } - end - - it 'contains the rabbitmq_erlang_cookie' do - is_expected.to contain_rabbitmq_erlang_cookie('/var/lib/rabbitmq/.erlang.cookie') - end - end - - describe 'without erlang_cookie and without config_cluster' do - let(:params) do - { - config_cluster: false - } - end - + describe 'with erlang_cookie set' do + let(:params) {{ + :config_cluster => true, + :cluster_nodes => ['hare-1', 'hare-2'], + :cluster_node_type => 'ram', + :erlang_cookie => 'TESTCOOKIE', + :wipe_db_on_cookie_change => true + }} it 'contains the rabbitmq_erlang_cookie' do - is_expected.not_to contain_rabbitmq_erlang_cookie('/var/lib/rabbitmq/.erlang.cookie') + should contain_rabbitmq_erlang_cookie('/var/lib/rabbitmq/.erlang.cookie') end end describe 'and sets appropriate configuration' do - let(:params) do - { - config_cluster: true, - cluster_nodes: ['hare-1', 'hare-2'], - cluster_node_type: 'ram', - erlang_cookie: 'ORIGINAL', - wipe_db_on_cookie_change: true - } - end - + let(:params) {{ + :config_cluster => true, + :cluster_nodes => ['hare-1', 'hare-2'], + :cluster_node_type => 'ram', + :erlang_cookie => 'ORIGINAL', + :wipe_db_on_cookie_change => true + }} it 'for cluster_nodes' do - is_expected.to contain_file('rabbitmq.config').with('content' => %r{cluster_nodes.*\['rabbit@hare-1', 'rabbit@hare-2'\], ram}) + should contain_file('rabbitmq.config').with({ + 'content' => /cluster_nodes.*\['rabbit@hare-1', 'rabbit@hare-2'\], ram/, + }) end + end end describe 'rabbitmq-env configuration' do - context 'with default params' do - it 'sets environment variables' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{ERL_INETRC=/etc/rabbitmq/inetrc}) - end - end - - context 'with environment_variables set' do - let(:params) do - { environment_variables: { - 'NODE_IP_ADDRESS' => '1.1.1.1', - 'NODE_PORT' => '5656', - 'NODENAME' => 'HOSTNAME', - 'SERVICENAME' => 'RabbitMQ', - 'CONSOLE_LOG' => 'RabbitMQ.debug', - 'CTL_ERL_ARGS' => 'verbose', - 'SERVER_ERL_ARGS' => 'v', - 'SERVER_START_ARGS' => 'debug' - } } - end - - it 'sets environment variables' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{NODE_IP_ADDRESS=1.1.1.1}). \ - with_content(%r{NODE_PORT=5656}). \ - with_content(%r{NODENAME=HOSTNAME}). \ - with_content(%r{SERVICENAME=RabbitMQ}). \ - with_content(%r{CONSOLE_LOG=RabbitMQ.debug}). \ - with_content(%r{CTL_ERL_ARGS=verbose}). \ - with_content(%r{SERVER_ERL_ARGS=v}). \ - with_content(%r{SERVER_START_ARGS=debug}) - end + let(:params) {{ :environment_variables => { + 'NODE_IP_ADDRESS' => '1.1.1.1', + 'NODE_PORT' => '5656', + 'NODENAME' => 'HOSTNAME', + 'SERVICENAME' => 'RabbitMQ', + 'CONSOLE_LOG' => 'RabbitMQ.debug', + 'CTL_ERL_ARGS' => 'verbose', + 'SERVER_ERL_ARGS' => 'v', + 'SERVER_START_ARGS' => 'debug' + }}} + it 'should set environment variables' do + should contain_file('rabbitmq-env.config') \ + .with_content(/NODE_IP_ADDRESS=1.1.1.1/) \ + .with_content(/NODE_PORT=5656/) \ + .with_content(/NODENAME=HOSTNAME/) \ + .with_content(/SERVICENAME=RabbitMQ/) \ + .with_content(/CONSOLE_LOG=RabbitMQ.debug/) \ + .with_content(/CTL_ERL_ARGS=verbose/) \ + .with_content(/SERVER_ERL_ARGS=v/) \ + .with_content(/SERVER_START_ARGS=debug/) end end context 'delete_guest_user' do describe 'should do nothing by default' do - it { is_expected.not_to contain_rabbitmq_user('guest') } + it { should_not contain_rabbitmq_user('guest') } end describe 'delete user when delete_guest_user set' do - let(:params) { { delete_guest_user: true } } - + let(:params) {{ :delete_guest_user => true }} it 'removes the user' do - is_expected.to contain_rabbitmq_user('guest').with( + should contain_rabbitmq_user('guest').with( 'ensure' => 'absent', 'provider' => 'rabbitmqctl' ) @@ -468,925 +530,431 @@ describe 'rabbitmq' do context 'configuration setting' do describe 'node_ip_address when set' do - let(:params) { { node_ip_address: '172.0.0.1' } } - - it 'sets NODE_IP_ADDRESS to specified value' do - is_expected.to contain_file('rabbitmq-env.config'). + let(:params) {{ :node_ip_address => '172.0.0.1' }} + it 'should set NODE_IP_ADDRESS to specified value' do + should contain_file('rabbitmq-env.config'). with_content(%r{NODE_IP_ADDRESS=172\.0\.0\.1}) end end describe 'stomp by default' do - it 'does not specify stomp parameters in rabbitmq.config' do - is_expected.to contain_file('rabbitmq.config').without('content' => %r{stomp}) + it 'should not specify stomp parameters in rabbitmq.config' do + should contain_file('rabbitmq.config').without({ + 'content' => /stomp/,}) end end describe 'stomp when set' do - let(:params) { { config_stomp: true, stomp_port: 5679 } } - - it 'specifies stomp port in rabbitmq.config' do - is_expected.to contain_file('rabbitmq.config').with('content' => %r{rabbitmq_stomp.*tcp_listeners, \[5679\]}m) + let(:params) {{ :config_stomp => true, :stomp_port => 5679 }} + it 'should specify stomp port in rabbitmq.config' do + should contain_file('rabbitmq.config').with({ + 'content' => /rabbitmq_stomp.*tcp_listeners, \[5679\]/m, + }) end end describe 'stomp when set ssl port w/o ssl enabled' do - let(:params) { { config_stomp: true, stomp_port: 5679, ssl: false, ssl_stomp_port: 5680 } } - - it 'does not configure ssl_listeners in rabbitmq.config' do - is_expected.to contain_file('rabbitmq.config').without('content' => %r{rabbitmq_stomp.*ssl_listeners, \[5680\]}m) + let(:params) {{ :config_stomp => true, :stomp_port => 5679, :ssl => false, :ssl_stomp_port => 5680 }} + it 'should not configure ssl_listeners in rabbitmq.config' do + should contain_file('rabbitmq.config').without({ + 'content' => /rabbitmq_stomp.*ssl_listeners, \[5680\]/m, + }) end end describe 'stomp when set with ssl' do - let(:params) { { config_stomp: true, stomp_port: 5679, ssl: true, ssl_stomp_port: 5680 } } - - it 'specifies stomp port and ssl stomp port in rabbitmq.config' do - is_expected.to contain_file('rabbitmq.config').with('content' => %r{rabbitmq_stomp.*tcp_listeners, \[5679\].*ssl_listeners, \[5680\]}m) + let(:params) {{ :config_stomp => true, :stomp_port => 5679, :ssl => true, :ssl_stomp_port => 5680 }} + it 'should specify stomp port and ssl stomp port in rabbitmq.config' do + should contain_file('rabbitmq.config').with({ + 'content' => /rabbitmq_stomp.*tcp_listeners, \[5679\].*ssl_listeners, \[5680\]/m, + }) end end end describe 'configuring ldap authentication' do let :params do - { config_stomp: true, - ldap_auth: true, - ldap_server: 'ldap.example.com', - ldap_user_dn_pattern: 'ou=users,dc=example,dc=com', - ldap_other_bind: 'as_user', - ldap_use_ssl: false, - ldap_port: 389, - ldap_log: true, - ldap_config_variables: { 'foo' => 'bar' } } - end - - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_auth_backend_ldap') } - - it 'contains ldap parameters' do - verify_contents(catalogue, 'rabbitmq.config', - ['[', ' {rabbit, [', ' {auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]},', ' ]}', - ' {rabbitmq_auth_backend_ldap, [', ' {other_bind, as_user},', - ' {servers, ["ldap.example.com"]},', - ' {user_dn_pattern, "ou=users,dc=example,dc=com"},', ' {use_ssl, false},', - ' {port, 389},', ' {foo, bar},', ' {log, true}']) - end - end - - describe 'configuring ldap authentication' do - let :params do - { config_stomp: false, - ldap_auth: true, - ldap_server: 'ldap.example.com', - ldap_user_dn_pattern: 'ou=users,dc=example,dc=com', - ldap_other_bind: 'as_user', - ldap_use_ssl: false, - ldap_port: 389, - ldap_log: true, - ldap_config_variables: { 'foo' => 'bar' } } + { :config_stomp => true, + :ldap_auth => true, + :ldap_server => 'ldap.example.com', + :ldap_user_dn_pattern => 'ou=users,dc=example,dc=com', + :ldap_other_bind => 'as_user', + :ldap_use_ssl => false, + :ldap_port => '389', + :ldap_log => true, + :ldap_config_variables => { 'foo' => 'bar' } + } end - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_auth_backend_ldap') } + it { should contain_rabbitmq_plugin('rabbitmq_auth_backend_ldap') } - it 'contains ldap parameters' do + it 'should contain ldap parameters' do verify_contents(catalogue, 'rabbitmq.config', ['[', ' {rabbit, [', ' {auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]},', ' ]}', - ' {rabbitmq_auth_backend_ldap, [', ' {other_bind, as_user},', - ' {servers, ["ldap.example.com"]},', - ' {user_dn_pattern, "ou=users,dc=example,dc=com"},', ' {use_ssl, false},', - ' {port, 389},', ' {foo, bar},', ' {log, true}']) + ' {rabbitmq_auth_backend_ldap, [', ' {other_bind, as_user},', + ' {servers, ["ldap.example.com"]},', + ' {user_dn_pattern, "ou=users,dc=example,dc=com"},', ' {use_ssl, false},', + ' {port, 389},', ' {foo, bar},', ' {log, true}']) end end describe 'configuring ldap authentication' do let :params do - { config_stomp: false, - ldap_auth: true, - ldap_server: 'ldap.example.com', - ldap_other_bind: 'as_user', - ldap_use_ssl: false, - ldap_port: 389, - ldap_log: true, - ldap_config_variables: { 'foo' => 'bar' } } + { :config_stomp => false, + :ldap_auth => true, + :ldap_server => 'ldap.example.com', + :ldap_user_dn_pattern => 'ou=users,dc=example,dc=com', + :ldap_other_bind => 'as_user', + :ldap_use_ssl => false, + :ldap_port => '389', + :ldap_log => true, + :ldap_config_variables => { 'foo' => 'bar' } + } end - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_auth_backend_ldap') } + it { should contain_rabbitmq_plugin('rabbitmq_auth_backend_ldap') } - it 'does not set user_dn_pattern when none is specified' do + it 'should contain ldap parameters' do verify_contents(catalogue, 'rabbitmq.config', ['[', ' {rabbit, [', ' {auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]},', ' ]}', - ' {rabbitmq_auth_backend_ldap, [', ' {other_bind, as_user},', - ' {servers, ["ldap.example.com"]},', - ' {use_ssl, false},', - ' {port, 389},', ' {foo, bar},', ' {log, true}']) - content = catalogue.resource('file', 'rabbitmq.config').send(:parameters)[:content] - expect(content).not_to include 'user_dn_pattern' - end - end - - describe 'configuring auth_backends' do - let :params do - { auth_backends: ['{baz, foo}', 'bar'] } - end - - it 'contains auth_backends' do - verify_contents(catalogue, 'rabbitmq.config', - [' {auth_backends, [{baz, foo}, bar]},']) - end - end - - describe 'auth_backends overrides ldap_auth' do - let :params do - { auth_backends: ['{baz, foo}', 'bar'], - ldap_auth: true } - end - - it 'contains auth_backends' do - verify_contents(catalogue, 'rabbitmq.config', - [' {auth_backends, [{baz, foo}, bar]},']) - end - end - - describe 'configuring shovel plugin' do - let :params do - { - config_shovel: true - } - end - - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_shovel') } - - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_shovel_management') } - - describe 'with admin_enable false' do - let :params do - { - config_shovel: true, - admin_enable: false - } - end - - it { is_expected.not_to contain_rabbitmq_plugin('rabbitmq_shovel_management') } - end - - describe 'with static shovels' do - let :params do - { - config_shovel: true, - config_shovel_statics: { - 'shovel_first' => '{sources,[{broker,"amqp://"}]}, - {destinations,[{broker,"amqp://site1.example.com"}]}, - {queue,<<"source_one">>}', - 'shovel_second' => '{sources,[{broker,"amqp://"}]}, - {destinations,[{broker,"amqp://site2.example.com"}]}, - {queue,<<"source_two">>}' - } - } - end - - it 'generates correct configuration' do - verify_contents(catalogue, 'rabbitmq.config', [ - ' {rabbitmq_shovel,', - ' [{shovels,[', - ' {shovel_first,[{sources,[{broker,"amqp://"}]},', - ' {destinations,[{broker,"amqp://site1.example.com"}]},', - ' {queue,<<"source_one">>}]},', - ' {shovel_second,[{sources,[{broker,"amqp://"}]},', - ' {destinations,[{broker,"amqp://site2.example.com"}]},', - ' {queue,<<"source_two">>}]}', - ' ]}]}' - ]) - end - end - end - - describe 'configuring shovel plugin' do - let :params do - { - config_shovel: true - } - end - - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_shovel') } - - it { is_expected.to contain_rabbitmq_plugin('rabbitmq_shovel_management') } - - describe 'with admin_enable false' do - let :params do - { - config_shovel: true, - admin_enable: false - } - end - - it { is_expected.not_to contain_rabbitmq_plugin('rabbitmq_shovel_management') } - end - - describe 'with static shovels' do - let :params do - { - config_shovel: true, - config_shovel_statics: { - 'shovel_first' => '{sources,[{broker,"amqp://"}]}, - {destinations,[{broker,"amqp://site1.example.com"}]}, - {queue,<<"source_one">>}', - 'shovel_second' => '{sources,[{broker,"amqp://"}]}, - {destinations,[{broker,"amqp://site2.example.com"}]}, - {queue,<<"source_two">>}' - } - } - end - - it 'generates correct configuration' do - verify_contents(catalogue, 'rabbitmq.config', [ - ' {rabbitmq_shovel,', - ' [{shovels,[', - ' {shovel_first,[{sources,[{broker,"amqp://"}]},', - ' {destinations,[{broker,"amqp://site1.example.com"}]},', - ' {queue,<<"source_one">>}]},', - ' {shovel_second,[{sources,[{broker,"amqp://"}]},', - ' {destinations,[{broker,"amqp://site2.example.com"}]},', - ' {queue,<<"source_two">>}]}', - ' ]}]}' - ]) - end + ' {rabbitmq_auth_backend_ldap, [', ' {other_bind, as_user},', + ' {servers, ["ldap.example.com"]},', + ' {user_dn_pattern, "ou=users,dc=example,dc=com"},', ' {use_ssl, false},', + ' {port, 389},', ' {foo, bar},', ' {log, true}']) end end describe 'default_user and default_pass set' do - let(:params) { { default_user: 'foo', default_pass: 'bar' } } - - it 'sets default_user and default_pass to specified values' do - is_expected.to contain_file('rabbitmq.config').with('content' => %r{default_user, <<"foo">>.*default_pass, <<"bar">>}m) + let(:params) {{ :default_user => 'foo', :default_pass => 'bar' }} + it 'should set default_user and default_pass to specified values' do + should contain_file('rabbitmq.config').with({ + 'content' => /default_user, <<"foo">>.*default_pass, <<"bar">>/m, + }) end end describe 'interfaces option with no ssl' do - let(:params) do - { interface: '0.0.0.0' } - end + let(:params) { + { :interface => '0.0.0.0', + } } - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\{"0.0.0.0", 5672\}\]}) + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\{"0.0.0.0", 5672\}\]}) end end - describe 'ssl options and mangament_ssl false' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_secure_renegotiate: true, - ssl_reuse_sessions: true, - ssl_honor_cipher_order: true, - ssl_dhfile: :undef, - management_ssl: false, - management_port: 13_142 } - end - - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content( + describe 'ssl options' do + let(:params) { + { :ssl => true, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key' + } } + + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content( %r{ssl_listeners, \[3141\]} ) - is_expected.to contain_file('rabbitmq.config').with_content( + should contain_file('rabbitmq.config').with_content( %r{ssl_options, \[} ) - is_expected.to contain_file('rabbitmq.config').with_content( + should contain_file('rabbitmq.config').with_content( %r{cacertfile,"/path/to/cacert"} ) - is_expected.to contain_file('rabbitmq.config').with_content( + should contain_file('rabbitmq.config').with_content( %r{certfile,"/path/to/cert"} ) - is_expected.to contain_file('rabbitmq.config').with_content( + should contain_file('rabbitmq.config').with_content( %r{keyfile,"/path/to/key"} ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{secure_renegotiate,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{reuse_sessions,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{honor_cipher_order,true} - ) - is_expected.to contain_file('rabbitmq.config').without_content( - %r{dhfile,} - ) - end - it 'sets non ssl port for management port' do - is_expected.to contain_file('rabbitmq.config').with_content( - %r{port, 13142} - ) - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{port\s=\s13142} - ) end end - describe 'ssl options and mangament_ssl true' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_secure_renegotiate: true, - ssl_reuse_sessions: true, - ssl_honor_cipher_order: true, - ssl_dhfile: :undef, - - management_ssl: true, - ssl_management_port: 13_141 } - end - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content( - %r{ssl_listeners, \[3141\]} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{ssl_opts, } - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{ssl_options, \[} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{cacertfile,"/path/to/cacert"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{certfile,"/path/to/cert"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{keyfile,"/path/to/key"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{secure_renegotiate,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{reuse_sessions,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{honor_cipher_order,true} - ) - is_expected.to contain_file('rabbitmq.config').without_content( - %r{dhfile,} - ) - end - it 'sets ssl managment port to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content( - %r{port, 13141} - ) - end - it 'sets ssl options in the rabbitmqadmin.conf' do - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{ssl_ca_cert_file\s=\s/path/to/cacert} - ) - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{ssl_cert_file\s=\s/path/to/cert} - ) - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{ssl_key_file\s=\s/path/to/key} - ) - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{hostname\s=\s} - ) - is_expected.to contain_file('rabbitmqadmin.conf').with_content( - %r{port\s=\s13141} - ) - end - end + describe 'ssl options with ssl_interfaces' do + let(:params) { + { :ssl => true, + :ssl_port => 3141, + :ssl_interface => '0.0.0.0', + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key' + } } - describe 'ssl options' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_secure_renegotiate: true, - ssl_reuse_sessions: true, - ssl_honor_cipher_order: true, - ssl_dhfile: :undef } - end - - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content( - %r{ssl_listeners, \[3141\]} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{ssl_options, \[} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{cacertfile,"/path/to/cacert"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{certfile,"/path/to/cert"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{keyfile,"/path/to/key"} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{secure_renegotiate,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{reuse_sessions,true} - ) - is_expected.to contain_file('rabbitmq.config').with_content( - %r{honor_cipher_order,true} - ) - is_expected.to contain_file('rabbitmq.config').without_content( - %r{dhfile,} - ) + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[\{"0.0.0.0", 3141\}\]}) + should contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) + should contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) + should contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) end end - describe 'ssl options with ssl_interfaces' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_interface: '0.0.0.0', - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key' } - end - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[\{"0.0.0.0", 3141\}\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) - end - end describe 'ssl options with ssl_only' do - let(:params) do - { ssl: true, - ssl_only: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key' } - end + let(:params) { + { :ssl => true, + :ssl_only => true, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key' + } } - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_options, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) - end - it 'does not set TCP listener environment defaults' do - is_expected.to contain_file('rabbitmq-env.config'). \ - without_content(%r{NODE_PORT=}). \ - without_content(%r{NODE_IP_ADDRESS=}) + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\]}) + should contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]}) + should contain_file('rabbitmq.config').with_content(%r{ssl_options, \[}) + should contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) + should contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) + should contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) end end describe 'ssl options with ssl_only and ssl_interfaces' do - let(:params) do - { ssl: true, - ssl_only: true, - ssl_port: 3141, - ssl_interface: '0.0.0.0', - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key' } - end + let(:params) { + { :ssl => true, + :ssl_only => true, + :ssl_port => 3141, + :ssl_interface => '0.0.0.0', + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key' + } } - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[\{"0.0.0.0", 3141\}\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{tcp_listeners, \[\]}) + should contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[\{"0.0.0.0", 3141\}\]}) + should contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) + should contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) + should contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) end end describe 'ssl options with specific ssl versions' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_versions: ['tlsv1.2', 'tlsv1.1'] } - end + let(:params) { + { :ssl => true, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :ssl_versions => ['tlsv1.2', 'tlsv1.1'] + } } + + it 'should set ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]}) + should contain_file('rabbitmq.config').with_content(%r{ssl_options, \[}) + should contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) + should contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) + should contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) + should contain_file('rabbitmq.config').with_content(%r{ssl, \[\{versions, \['tlsv1.1', 'tlsv1.2'\]\}\]}) + should contain_file('rabbitmq.config').with_content(%r{versions, \['tlsv1.1', 'tlsv1.2'\]}) + end + end + + describe 'ssl options with invalid ssl_versions type' do + let(:params) { + { :ssl => true, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :ssl_versions => 'tlsv1.2, tlsv1.1' + } } - it 'sets ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_listeners, \[3141\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_options, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile,"/path/to/cacert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile,"/path/to/cert"}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile,"/path/to/key}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl, \[\{versions, \['tlsv1.1', 'tlsv1.2'\]\}\]}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{versions, \['tlsv1.1', 'tlsv1.2'\]}) + it 'fails' do + expect { catalogue }.to raise_error(Puppet::Error, /is not an Array/) end end describe 'ssl options with ssl_versions and not ssl' do - let(:params) do - { ssl: false, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_versions: ['tlsv1.2', 'tlsv1.1'] } - end + let(:params) { + { :ssl => false, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :ssl_versions => ['tlsv1.2', 'tlsv1.1'] + } } it 'fails' do - expect { catalogue }.to raise_error(Puppet::Error, %r{\$ssl_versions requires that \$ssl => true}) + expect { catalogue }.to raise_error(Puppet::Error, /\$ssl_versions requires that \$ssl => true/) end end describe 'ssl options with ssl ciphers' do - let(:params) do - { ssl: true, - ssl_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_ciphers: ['ecdhe_rsa,aes_256_cbc,sha', 'dhe_rsa,aes_256_cbc,sha'] } - end + let(:params) { + { :ssl => true, + :ssl_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :ssl_ciphers => ['ecdhe_rsa,aes_256_cbc,sha', 'dhe_rsa,aes_256_cbc,sha'] + } } - it 'sets ssl ciphers to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{ciphers,\[[[:space:]]+{dhe_rsa,aes_256_cbc,sha},[[:space:]]+{ecdhe_rsa,aes_256_cbc,sha}[[:space:]]+\]}) + it 'should set ssl ciphers to specified values' do + should contain_file('rabbitmq.config').with_content(%r{ciphers,\[[[:space:]]+{dhe_rsa,aes_256_cbc,sha},[[:space:]]+{ecdhe_rsa,aes_256_cbc,sha}[[:space:]]+\]}) end end describe 'ssl admin options with specific ssl versions' do - let(:params) do - { ssl: true, - ssl_management_port: 5926, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_versions: ['tlsv1.2', 'tlsv1.1'], - admin_enable: true } - end - - it 'sets admin ssl opts to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{listener, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{port, 5926\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl, true\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile, "/path/to/cacert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{,\{versions, \['tlsv1.1', 'tlsv1.2'\]\}}) - end - end - - describe 'ssl with ssl_dhfile' do - let(:params) do - { ssl: true, - ssl_interface: '0.0.0.0', - ssl_dhfile: '/etc/pki/tls/dh-params.pem' } - end - - it { is_expected.to contain_file('rabbitmq.config').with_content(%r{dhfile, "/etc/pki/tls/dh-params\.pem}) } - end - - describe 'ssl with ssl_dhfile unset' do - let(:params) do - { ssl: true, - ssl_interface: '0.0.0.0', - ssl_dhfile: :undef } - end - - it { is_expected.to contain_file('rabbitmq.config').without_content(%r{dhfile,}) } - end - - describe 'ssl with ssl_secure_renegotiate false' do - let(:params) do - { ssl: true, - ssl_interface: '0.0.0.0', - ssl_secure_renegotiate: false } + let(:params) { + { :ssl => true, + :ssl_management_port => 5926, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :ssl_versions => ['tlsv1.2', 'tlsv1.1'], + :admin_enable => true + } } + + it 'should set admin ssl opts to specified values' do + should contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) + should contain_file('rabbitmq.config').with_content(%r{listener, \[}) + should contain_file('rabbitmq.config').with_content(%r{port, 5926\}}) + should contain_file('rabbitmq.config').with_content(%r{ssl, true\}}) + should contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[\{cacertfile, "/path/to/cacert"\},}) + should contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) + should contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}}) + should contain_file('rabbitmq.config').with_content(%r{,\{versions, \['tlsv1.1', 'tlsv1.2'\]\}[\r\n ]*\]\}}) end - - it { is_expected.to contain_file('rabbitmq.config').with_content(%r{secure_renegotiate,false}) } - end - - describe 'ssl with ssl_reuse_sessions false' do - let(:params) do - { ssl: true, - ssl_interface: '0.0.0.0', - ssl_reuse_sessions: false } - end - - it { is_expected.to contain_file('rabbitmq.config').with_content(%r{reuse_sessions,false}) } - end - - describe 'ssl with ssl_honor_cipher_order false' do - let(:params) do - { ssl: true, - ssl_interface: '0.0.0.0', - ssl_honor_cipher_order: false } - end - - it { is_expected.to contain_file('rabbitmq.config').with_content(%r{honor_cipher_order,false}) } end describe 'ssl admin options' do - let(:params) do - { ssl: true, - ssl_management_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - ssl_management_verify: 'verify_peer', - ssl_management_fail_if_no_peer_cert: true, - admin_enable: true } - end - - it 'sets rabbitmq_management ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{listener, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{port, 3141\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl, true\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{verify,verify_peer\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{fail_if_no_peer_cert,true\}}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile, "/path/to/cacert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}}) + let(:params) { + { :ssl => true, + :ssl_management_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :admin_enable => true + } } + + it 'should set rabbitmq_management ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) + should contain_file('rabbitmq.config').with_content(%r{listener, \[}) + should contain_file('rabbitmq.config').with_content(%r{port, 3141\}}) + should contain_file('rabbitmq.config').with_content(%r{ssl, true\}}) + should contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[\{cacertfile, "/path/to/cacert"\},}) + should contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) + should contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}[\r\n ]*\]\}}) end end describe 'admin without ssl' do - let(:params) do - { ssl: false, - management_port: 3141, - admin_enable: true } - end + let(:params) { + { :ssl => false, + :management_port => 3141, + :admin_enable => true + } } - it 'sets rabbitmq_management options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{listener, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{port, 3141\}}) + it 'should set rabbitmq_management options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) + should contain_file('rabbitmq.config').with_content(%r{listener, \[}) + should contain_file('rabbitmq.config').with_content(%r{port, 3141\}}) end end describe 'ssl admin options' do - let(:params) do - { ssl: true, - ssl_management_port: 3141, - ssl_cacert: '/path/to/cacert', - ssl_cert: '/path/to/cert', - ssl_key: '/path/to/key', - admin_enable: true } - end - - it 'sets rabbitmq_management ssl options to specified values' do - is_expected.to contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{listener, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{port, 3141\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl, true\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{cacertfile, "/path/to/cacert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) - is_expected.to contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}}) + let(:params) { + { :ssl => true, + :ssl_management_port => 3141, + :ssl_cacert => '/path/to/cacert', + :ssl_cert => '/path/to/cert', + :ssl_key => '/path/to/key', + :admin_enable => true + } } + + it 'should set rabbitmq_management ssl options to specified values' do + should contain_file('rabbitmq.config').with_content(%r{rabbitmq_management, \[}) + should contain_file('rabbitmq.config').with_content(%r{listener, \[}) + should contain_file('rabbitmq.config').with_content(%r{port, 3141\},}) + should contain_file('rabbitmq.config').with_content(%r{ssl, true\},}) + should contain_file('rabbitmq.config').with_content(%r{ssl_opts, \[\{cacertfile, "/path/to/cacert"\},}) + should contain_file('rabbitmq.config').with_content(%r{certfile, "/path/to/cert"\},}) + should contain_file('rabbitmq.config').with_content(%r{keyfile, "/path/to/key"\}[\r\n ]*\]\}}) end end describe 'admin without ssl' do - let(:params) do - { ssl: false, - management_port: 3141, - admin_enable: true } - end + let(:params) { + { :ssl => false, + :management_port => 3141, + :admin_enable => true + } } - it 'sets rabbitmq_management options to specified values' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{rabbitmq_management, \[}). \ - with_content(%r{\{listener, \[}). \ - with_content(%r{\{port, 3141\}}) - end - end - - describe 'ipv6 enabled' do - let(:params) { { ipv6: true } } - - it 'enables resolver inet6 in inetrc' do - is_expected.to contain_file('rabbitmq-inetrc').with_content(%r{{inet6, true}.}) - end - - context 'without other erl args' do - it 'enables inet6 distribution' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS="-proto_dist inet6_tcp"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS="-proto_dist inet6_tcp"$}) - end - end - - context 'with other quoted erl args' do - let(:params) do - { ipv6: true, - environment_variables: { 'RABBITMQ_SERVER_ERL_ARGS' => '"some quoted args"', - 'RABBITMQ_CTL_ERL_ARGS' => '"other quoted args"' } } - end - - it 'enables inet6 distribution and quote properly' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS="some quoted args -proto_dist inet6_tcp"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS="other quoted args -proto_dist inet6_tcp"$}) - end - end - - context 'with other unquoted erl args' do - let(:params) do - { ipv6: true, - environment_variables: { 'RABBITMQ_SERVER_ERL_ARGS' => 'foo', - 'RABBITMQ_CTL_ERL_ARGS' => 'bar' } } - end - - it 'enables inet6 distribution and quote properly' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS="foo -proto_dist inet6_tcp"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS="bar -proto_dist inet6_tcp"$}) - end - end - - context 'with SSL and without other erl args' do - let(:params) do - { ipv6: true, - ssl_erl_dist: true } - end - - it 'enables inet6 distribution' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS=" -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS=" -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}) - end - end - - context 'with SSL and other quoted erl args' do - let(:params) do - { ipv6: true, - ssl_erl_dist: true, - environment_variables: { 'RABBITMQ_SERVER_ERL_ARGS' => '"some quoted args"', - 'RABBITMQ_CTL_ERL_ARGS' => '"other quoted args"' } } - end - - it 'enables inet6 distribution and quote properly' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS="some quoted args -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS="other quoted args -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}) - end - end - - context 'with SSL and with other unquoted erl args' do - let(:params) do - { ipv6: true, - ssl_erl_dist: true, - environment_variables: { 'RABBITMQ_SERVER_ERL_ARGS' => 'foo', - 'RABBITMQ_CTL_ERL_ARGS' => 'bar' } } - end - - it 'enables inet6 distribution and quote properly' do - is_expected.to contain_file('rabbitmq-env.config'). \ - with_content(%r{^RABBITMQ_SERVER_ERL_ARGS="foo -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}). \ - with_content(%r{^RABBITMQ_CTL_ERL_ARGS="bar -pa /usr/lib64/erlang/lib/ssl-7.3.3.1/ebin -proto_dist inet6_tls"$}) - end + it 'should set rabbitmq_management options to specified values' do + should contain_file('rabbitmq.config') \ + .with_content(/\{rabbitmq_management, \[/) \ + .with_content(/\{listener, \[/) \ + .with_content(/\{port, 3141\}/) end end describe 'config_variables options' do - let(:params) do - { config_variables: { - 'hipe_compile' => true, + let(:params) {{ :config_variables => { + 'hipe_compile' => true, 'vm_memory_high_watermark' => 0.4, - 'frame_max' => 131_072, - 'collect_statistics' => 'none', - 'auth_mechanisms' => "['PLAIN', 'AMQPLAIN']" - } } - end - - it 'sets environment variables' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{hipe_compile, true\}}). \ - with_content(%r{\{vm_memory_high_watermark, 0.4\}}). \ - with_content(%r{\{frame_max, 131072\}}). \ - with_content(%r{\{collect_statistics, none\}}). \ - with_content(%r{\{auth_mechanisms, \['PLAIN', 'AMQPLAIN'\]\}}) + 'frame_max' => 131072, + 'collect_statistics' => "none", + 'auth_mechanisms' => "['PLAIN', 'AMQPLAIN']", + }}} + it 'should set environment variables' do + should contain_file('rabbitmq.config') \ + .with_content(/\{hipe_compile, true\}/) \ + .with_content(/\{vm_memory_high_watermark, 0.4\}/) \ + .with_content(/\{frame_max, 131072\}/) \ + .with_content(/\{collect_statistics, none\}/) \ + .with_content(/\{auth_mechanisms, \['PLAIN', 'AMQPLAIN'\]\}/) end end describe 'config_kernel_variables options' do - let(:params) do - { config_kernel_variables: { - 'inet_dist_listen_min' => 9100, - 'inet_dist_listen_max' => 9105 - } } - end - - it 'sets config variables' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{inet_dist_listen_min, 9100\}}). \ - with_content(%r{\{inet_dist_listen_max, 9105\}}) - end - end - - describe 'config_management_variables' do - let(:params) do - { config_management_variables: { - 'rates_mode' => 'none' - } } - end - - it 'sets config variables' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{rates_mode, none\}}) + let(:params) {{ :config_kernel_variables => { + 'inet_dist_listen_min' => 9100, + 'inet_dist_listen_max' => 9105, + }}} + it 'should set config variables' do + should contain_file('rabbitmq.config') \ + .with_content(/\{inet_dist_listen_min, 9100\}/) \ + .with_content(/\{inet_dist_listen_max, 9105\}/) end end describe 'tcp_keepalive enabled' do - let(:params) { { tcp_keepalive: true } } - - it 'sets tcp_listen_options keepalive true' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{keepalive, true\}}) + let(:params) {{ :tcp_keepalive => true }} + it 'should set tcp_listen_options keepalive true' do + should contain_file('rabbitmq.config') \ + .with_content(/\{tcp_listen_options, \[\{keepalive, true\}\]\},/) end end describe 'tcp_keepalive disabled (default)' do - it 'does not set tcp_listen_options' do - is_expected.to contain_file('rabbitmq.config'). \ - without_content(%r{\{keepalive, true\}}) - end - end - - describe 'tcp_backlog with default value' do - it 'sets tcp_listen_options backlog to 128' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{backlog, 128\}}) - end - end - - describe 'tcp_backlog with non-default value' do - let(:params) do - { tcp_backlog: 256 } - end - - it 'sets tcp_listen_options backlog to 256' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{backlog, 256\}}) - end - end - - describe 'tcp_sndbuf with default value' do - it 'does not set tcp_listen_options sndbuf' do - is_expected.to contain_file('rabbitmq.config'). \ - without_content(%r{sndbuf}) - end - end - - describe 'tcp_sndbuf with non-default value' do - let(:params) do - { tcp_sndbuf: 128 } - end - - it 'sets tcp_listen_options sndbuf to 128' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{sndbuf, 128\}}) - end - end - - describe 'tcp_recbuf with default value' do - it 'does not set tcp_listen_options recbuf' do - is_expected.to contain_file('rabbitmq.config'). \ - without_content(%r{recbuf}) + it 'should not set tcp_listen_options' do + should contain_file('rabbitmq.config') \ + .without_content(/\{tcp_listen_options, \[\{keepalive, true\}\]\},/) end end - describe 'tcp_recbuf with non-default value' do - let(:params) do - { tcp_recbuf: 128 } - end - - it 'sets tcp_listen_options recbuf to 128' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{recbuf, 128\}}) + describe 'non-bool tcp_keepalive parameter' do + let :params do + { :tcp_keepalive => 'string' } end - end - - describe 'rabbitmq-heartbeat options' do - let(:params) { { heartbeat: 60 } } - it 'sets heartbeat paramter in config file' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{heartbeat, 60\}}) + it 'should raise an error' do + expect { + should contain_file('rabbitmq.config') + }.to raise_error(Puppet::Error, /is not a boolean/) end end context 'delete_guest_user' do describe 'should do nothing by default' do - it { is_expected.not_to contain_rabbitmq_user('guest') } + it { should_not contain_rabbitmq_user('guest') } end describe 'delete user when delete_guest_user set' do - let(:params) { { delete_guest_user: true } } - + let(:params) {{ :delete_guest_user => true }} it 'removes the user' do - is_expected.to contain_rabbitmq_user('guest').with( + should contain_rabbitmq_user('guest').with( 'ensure' => 'absent', 'provider' => 'rabbitmqctl' ) @@ -1394,73 +962,138 @@ describe 'rabbitmq' do end end - describe 'rabbitmq-loopback_users by default' do - it 'sets the loopback_users parameter in the config file' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{loopback_users, \[<<"guest">>\]\}}) - end - end - - describe 'rabbitmq-loopback_users allow connections via loopback interfaces' do - let(:params) { { loopback_users: [] } } - - it 'sets the loopback_users parameter in the config file' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{loopback_users, \[\]\}}) - end - end - - describe 'rabbitmq-loopback_users allow connections via loopback interfaces to a group of users' do - let(:params) { { loopback_users: %w[user1 user2] } } - - it 'sets the loopback_users parameter in the config file' do - is_expected.to contain_file('rabbitmq.config'). \ - with_content(%r{\{loopback_users, \[<<\"user1\">>, <<\"user2\">>\]\}}) - end - end - ## ## rabbitmq::service ## describe 'service with default params' do - it { - is_expected.to contain_service('rabbitmq-server').with( - 'ensure' => 'running', - 'enable' => 'true', - 'hasstatus' => 'true', - 'hasrestart' => 'true', - 'name' => name - ) - } + it { should contain_service('rabbitmq-server').with( + 'ensure' => 'running', + 'enable' => 'true', + 'hasstatus' => 'true', + 'hasrestart' => 'true' + )} end - context 'on systems with systemd', if: facts[:systemd] do - it do - is_expected.to contain_service('rabbitmq-server'). - that_requires('Class[systemd::systemctl::daemon_reload]') + describe 'service with ensure stopped' do + let :params do + { :service_ensure => 'stopped' } end + + it { should contain_service('rabbitmq-server').with( + 'ensure' => 'stopped', + 'enable' => false + ) } end - describe 'service with ensure stopped' do + describe 'service with ensure neither running neither stopped' do let :params do - { service_ensure: 'stopped' } + { :service_ensure => 'foo' } end - it { - is_expected.to contain_service('rabbitmq-server').with( - 'ensure' => 'stopped', - 'enable' => false - ) - } + it 'should raise an error' do + expect { + should contain_service('rabbitmq-server').with( + 'ensure' => 'stopped' ) + }.to raise_error(Puppet::Error, /validate_re\(\): "foo" does not match "\^\(running\|stopped\)\$"/) + end end describe 'service with service_manage equal to false' do let :params do - { service_manage: false } + { :service_manage => false } end - it { is_expected.not_to contain_service('rabbitmq-server') } + it { should_not contain_service('rabbitmq-server') } + end + + end + end + + ## + ## rabbitmq::install + ## + context "on RHEL" do + let(:facts) {{ :osfamily => 'RedHat' }} + let(:params) {{ :package_source => 'http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.3/rabbitmq-server-3.2.3-1.noarch.rpm' }} + it 'installs the rabbitmq package' do + should contain_package('rabbitmq-server').with( + 'ensure' => 'installed', + 'name' => 'rabbitmq-server', + 'provider' => 'rpm', + 'source' => 'http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.3/rabbitmq-server-3.2.3-1.noarch.rpm' + ) + end + end + + context "on Debian" do + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'precise' }} + it 'installs the rabbitmq package' do + should contain_package('rabbitmq-server').with( + 'ensure' => 'installed', + 'name' => 'rabbitmq-server', + 'provider' => 'apt' + ) + end + end + + context "on Archlinux" do + let(:facts) {{ :osfamily => 'Archlinux' }} + it 'installs the rabbitmq package' do + should contain_package('rabbitmq-server').with( + 'ensure' => 'installed', + 'name' => 'rabbitmq') + end + end + + describe 'repo management on Debian' do + let(:facts) {{ :osfamily => 'Debian', :lsbdistid => 'Debian' }} + + context 'with no pin' do + let(:params) {{ :package_apt_pin => '' }} + describe 'it sets up an apt::source' do + + it { should contain_apt__source('rabbitmq').with( + 'location' => 'http://www.rabbitmq.com/debian/', + 'release' => 'testing', + 'repos' => 'main', + 'include_src' => false, + 'key' => 'F78372A06FF50C80464FC1B4F7B8CEA6056E8E56' + ) } + end + end + + context 'with pin' do + let(:params) {{ :package_apt_pin => '700' }} + describe 'it sets up an apt::source and pin' do + + it { should contain_apt__source('rabbitmq').with( + 'location' => 'http://www.rabbitmq.com/debian/', + 'release' => 'testing', + 'repos' => 'main', + 'include_src' => false, + 'key' => 'F78372A06FF50C80464FC1B4F7B8CEA6056E8E56' + ) } + + it { should contain_apt__pin('rabbitmq').with( + 'packages' => 'rabbitmq-server', + 'priority' => '700' + ) } + end end end + + ['RedHat', 'SuSE'].each do |distro| + describe "repo management on #{distro}" do + describe 'imports the key' do + let(:facts) {{ :osfamily => distro }} + let(:params) {{ :package_gpg_key => 'http://www.rabbitmq.com/rabbitmq-signing-key-public.asc' }} + + it { should contain_exec("rpm --import #{params[:package_gpg_key]}").with( + 'path' => ['/bin','/usr/bin','/sbin','/usr/sbin'] + ) } + end + end + end + end diff --git a/3rdparty/modules/rabbitmq/spec/default_facts.yml b/3rdparty/modules/rabbitmq/spec/default_facts.yml deleted file mode 100644 index 13c416576..000000000 --- a/3rdparty/modules/rabbitmq/spec/default_facts.yml +++ /dev/null @@ -1,14 +0,0 @@ -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config -# -# use default_module_facts.yaml for module specific -# facts. -# -# Hint if using with rspec-puppet-facts ("on_supported_os.each"): -# if a same named fact exists in facterdb it will be overridden. ---- -concat_basedir: "/tmp" -ipaddress: "172.16.254.254" -is_pe: false -macaddress: "AA:AA:AA:AA:AA:AA" diff --git a/3rdparty/modules/rabbitmq/spec/spec.opts b/3rdparty/modules/rabbitmq/spec/spec.opts new file mode 100644 index 000000000..91cd6427e --- /dev/null +++ b/3rdparty/modules/rabbitmq/spec/spec.opts @@ -0,0 +1,6 @@ +--format +s +--colour +--loadby +mtime +--backtrace diff --git a/3rdparty/modules/rabbitmq/spec/spec_helper.rb b/3rdparty/modules/rabbitmq/spec/spec_helper.rb index a8e7cc9aa..2c6f56649 100644 --- a/3rdparty/modules/rabbitmq/spec/spec_helper.rb +++ b/3rdparty/modules/rabbitmq/spec/spec_helper.rb @@ -1,37 +1 @@ require 'puppetlabs_spec_helper/module_spec_helper' -require 'rspec-puppet-facts' -include RspecPuppetFacts - -# This file is managed via modulesync -# https://github.com/voxpupuli/modulesync -# https://github.com/voxpupuli/modulesync_config - -if Dir.exist?(File.expand_path('../../lib', __FILE__)) - require 'coveralls' - require 'simplecov' - require 'simplecov-console' - SimpleCov.formatters = [ - SimpleCov::Formatter::HTMLFormatter, - SimpleCov::Formatter::Console - ] - SimpleCov.start do - track_files 'lib/**/*.rb' - add_filter '/spec' - add_filter '/vendor' - add_filter '/.vendor' - end -end - -RSpec.configure do |c| - default_facts = { - puppetversion: Puppet.version, - facterversion: Facter.version - } - default_facts.merge!(YAML.load(File.read(File.expand_path('../default_facts.yml', __FILE__)))) if File.exist?(File.expand_path('../default_facts.yml', __FILE__)) - default_facts.merge!(YAML.load(File.read(File.expand_path('../default_module_facts.yml', __FILE__)))) if File.exist?(File.expand_path('../default_module_facts.yml', __FILE__)) - c.default_facts = default_facts - c.mock_with :rspec -end - -require 'spec_helper_local' -# vim: syntax=ruby diff --git a/3rdparty/modules/rabbitmq/spec/spec_helper_acceptance.rb b/3rdparty/modules/rabbitmq/spec/spec_helper_acceptance.rb index aaf76a04a..b82ba36ca 100644 --- a/3rdparty/modules/rabbitmq/spec/spec_helper_acceptance.rb +++ b/3rdparty/modules/rabbitmq/spec/spec_helper_acceptance.rb @@ -1,117 +1,38 @@ require 'beaker-rspec' -require 'beaker-puppet' -require 'beaker/puppet_install_helper' -require 'beaker/module_install_helper' -UNSUPPORTED_PLATFORMS = [].freeze +UNSUPPORTED_PLATFORMS = [] -run_puppet_install_helper -install_module -install_module_dependencies - -# Install aditional modules for soft deps -install_module_from_forge('puppetlabs-apt', '>= 4.1.0 < 7.0.0') if fact('os.family') == 'Debian' -install_module_from_forge('garethr-erlang', '>= 0.3.0 < 1.0.0') if fact('os.family') == 'RedHat' +unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no' + if hosts.first.is_pe? + install_pe + else + install_puppet + end + hosts.each do |host| + on hosts, "mkdir -p #{host['distmoduledir']}" + end +end RSpec.configure do |c| + # Project root + proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + # Readable test descriptions c.formatter = :documentation c.before :suite do hosts.each do |host| - install_package(host, 'iproute2') if fact('os.release.major').to_i == 18 - if fact('os.family') == 'RedHat' && fact('selinux') == 'true' - # Make sure selinux is disabled so the tests work. - on host, puppet('apply', '-e', - %("exec { 'setenforce 0': path => '/bin:/sbin:/usr/bin:/usr/sbin', onlyif => 'which setenforce && getenforce | grep Enforcing', }")) - end + copy_module_to(host, :source => proj_root, :module_name => 'rabbitmq') - # Fake certs - on host, 'echo "-----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDw1uXI+EAgxk4dOxArPqMNnnCQqmXeQ61XQQXoAgWWjRvY4LAJ -4ALoACYWFlWVKQkLLQfQ2YYM3vNDG/eYfL2tjhp9APeJrJYJEcbmr5COURtuIh/Z -fVKRgV5vtOMdlAHS0HFpk/DP1g520Da9wKwv2nDbfRui0y0ImPWz1uqK8wIDAQAB -AoGBAJ/cNMgyJ/bZSk5SvwfFWtuWWGdeA6IF0BBDo9T9SpJE9b/+XDshyywNtToh -9wq8Izmc2TxCtpzifBwGe1FnM0qvioQhwQwJsGa4JJFzSkIt/MgPmojzutnP59RJ -ozjCgAahX6xEkB6Kn/b2S6D7jgixyMTQ3FdPKq6lJVhXz6Q5AkEA+tSgg/xhrcTs -5W//hYZP/xjrE27xXzfkNrr/cAtVH5ZM2j2qqKFv3wEn9tAKrUvM+KNDhEjgLUSd -MjvvH5DYZQJBAPXNjsg4AG09KqWbvcbB2Cgaf6RRTAe+Hx6A7aB01OQohc5uF0ws -cPxZ8CE/KDbHtNSlx1MAvn8IOoitA06s5HcCQErP/mw/a3bjxHCOXh0aOWPxr7Ol -JHLs/bFhRuzJRINeVd/GAs+3DuHpu1y/ImAbuq/yKiIbhlmaHHSuMZ0tm40CQHHi -FzE0oR37pPKtwbOAxEFwZYsgD3XW5Fwhp/cbqjc7fyMxZqHoRUDl+pesx1j6FhIf -7MXMJnZ8vYHthwbAm+kCQHFH0HULyNcki4zEYSqiLaVMcbB7QybQmBBDA0mJR2HO -KYdYDeFG3kfeBOReFM9jOt39OBS/nNP0GXFBJU2ahpQ= ------END RSA PRIVATE KEY-----" > /tmp/rabbitmq.key' - on host, 'echo "-----BEGIN CERTIFICATE----- -MIIEYTCCAkmgAwIBAgIQVAIiKvJ6YmTSszWEfassuDANBgkqhkiG9w0BAQUFADCB -qjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC0xv -cyBBbmdlbGVzMRUwEwYDVQQKDAxBY21lIFdpZGdldHMxETAPBgNVBAsMCFNlY3Vy -aXR5MR0wGwYDVQQDDBRyYWJiaXRtcS5leGFtcGxlLmNvbTEnMCUGCSqGSIb3DQEJ -ARYYcm9nZXIucmFiYml0QGV4YW1wbGUuY29tMB4XDTE3MDkxMzAzMzExMloXDTI3 -MDkxMTAzMzExMlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEQMA4GA1UE -BwwHQ2hpY2FnbzENMAsGA1UECgwEQWNtZTEQMA4GA1UECwwHV2lkZ2V0czEdMBsG -A1UEAwwUcmFiYml0bXEuZXhhbXBsZS5jb20xJzAlBgkqhkiG9w0BCQEWGHJvZ2Vy -LnJhYmJpdEBleGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA -8NblyPhAIMZOHTsQKz6jDZ5wkKpl3kOtV0EF6AIFlo0b2OCwCeAC6AAmFhZVlSkJ -Cy0H0NmGDN7zQxv3mHy9rY4afQD3iayWCRHG5q+QjlEbbiIf2X1SkYFeb7TjHZQB -0tBxaZPwz9YOdtA2vcCsL9pw230botMtCJj1s9bqivMCAwEAAaMaMBgwCQYDVR0T -BAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggIBAIPXqHlxbo+BpBWz -H+E7lFDYZkUQD8c34jybxZbwya7od/f9x5jU3F/+6g1Y7A8NAPPxbs+m3Sye0/sz -WmEz+smKFseGVPWQJ6NgvYJjr8P/MpBUfA7zkkaKs2uuTbPx0tgU1+XGluC1hsZ+ -KQCI0LIEGQlSuT3miPSYL6MPR9o/PTp6TPlYGbL+LLNQedriZRLuiUpOWJzsFyz/ -CcdayANtlWxhuy50A9qUwAa5RzgIJnqfxk5OYuJHq7+p1oCKk+XhgHccHHq7t97M -Ye/xC18NDTMKkAiggCad0+kYTUgUYnuwvYg4eRpQytsncp7Ck83JChb56eJKlsj1 -HnEkQDyi1B/cKxRKwG81fzkSgw7+0nFY6GAIaGz1GdYBkoxlzN9JNd3/MmS+xAtm -HXtCqkTWUJQ5ZBinszauPtG4Inu6H28blstlqGjzKTzwo1w8N27shii14IhEHhEV -tVRxA+ORIt14fZrl04AROsYLqJxqBHy8vJEX4OMm2JTzaO2KdPwEi2gmQK0SkfR8 -TCQc43SF2rqpYs3ZE4fPNlyQR3ZCUcYwjv99s6Nz0Ue4vD9+PuT0McE8NtMgiAMf -DQqmYIMEiYNm15qKW6jJaY7VMUPGNohfEvubsWPlXPQ6/I7e9bNyk5OnA6OGi4qz -M2Fcgn+pqLU7M+epynzgz4bsPsEw ------END CERTIFICATE-----" > /tmp/rabbitmq.crt' - on host, 'echo "-----BEGIN CERTIFICATE----- -MIIGKTCCBBGgAwIBAgIJAMCISMDHjBJpMA0GCSqGSIb3DQEBBQUAMIGqMQswCQYD -VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEUMBIGA1UEBwwLTG9zIEFuZ2Vs -ZXMxFTATBgNVBAoMDEFjbWUgV2lkZ2V0czERMA8GA1UECwwIU2VjdXJpdHkxHTAb -BgNVBAMMFHJhYmJpdG1xLmV4YW1wbGUuY29tMScwJQYJKoZIhvcNAQkBFhhyb2dl -ci5yYWJiaXRAZXhhbXBsZS5jb20wHhcNMTcwOTEzMDMzMTAyWhcNMjcwOTExMDMz -MTAyWjCBqjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNV -BAcMC0xvcyBBbmdlbGVzMRUwEwYDVQQKDAxBY21lIFdpZGdldHMxETAPBgNVBAsM -CFNlY3VyaXR5MR0wGwYDVQQDDBRyYWJiaXRtcS5leGFtcGxlLmNvbTEnMCUGCSqG -SIb3DQEJARYYcm9nZXIucmFiYml0QGV4YW1wbGUuY29tMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA2WBjjypMwd4QU2m2K3ChuviDjY/4/c/cwcJBiM2l -ibQdTO77is5Ub017/z+/Y9kZ4BMO86G97nkafG+mqyuWQj7kaOOAtaZ72Vz4Z2wl -3eij08OZO4rr3WvYP1VPqgM0FuGxA3iIuP1wl+IhaHLLH+HW5wsnl74pdBC+q7lv -FKgd1xtCR0bWXVPbiYUi70rL2VA5j+Tp7gJy2XL0/tr3j+KSmqm6zKPrrl4xSLKW -AZ0o8PFxO9eev5qxf9YYa8LGj7nNLpaqD77ituD27AYdQ4nIaRia4WXyJpyUQ6RS -z87JsKZELZnQkd6EOXL5C/H0AZHz6KGbU7f4Zpxg0dj0vArunSxoMZRICfuGespi -KGRCENL12HP7kAM+kdoWXcN5xd+NF+IJqoKORX/P9a8VNA3xn5EGMX/b+gcVOpB3 -0H/gWMYI8M2rnFSDWw+1+qgJfV1meRM6+bj4Fab9mFxMPuqPCsd4YUQdSEOlV7L+ -FpixpbOUEUIGSGCkE0tBdJ2zpStAnB3TsrjYhSU1GsevrdKEa5msfkHTDpZV/9EY -AXo6WMWHWQe+joxnQzr9r8dlmdsyH0mN+cDxUmlQIwwvHqEtf7CVkN0cx7qKPhQ0 -vHX2NmlfmpgTf5LKnC4xrz8M8OsMfMV5efck0lLYuGKe4wFiBdCoTQvHRuCBncP+ -npMCAwEAAaNQME4wHQYDVR0OBBYEFCkQ7/iSfDsHVL0UcA9vuEB5mqL5MB8GA1Ud -IwQYMBaAFCkQ7/iSfDsHVL0UcA9vuEB5mqL5MAwGA1UdEwQFMAMBAf8wDQYJKoZI -hvcNAQEFBQADggIBAEpHP9B7YbsykJ0mMDgXtUog7ZgY5qMf7YFnNrF7Gj0RRRsa -O9oMSyQbOH6hEgr4b89Vval0ojKg0nWjP/KO73IRwb/eXewWV2THJaKW8Nj0T3mP -Zai2OHEKIk33qBlAOMbgjL5GTwAbWuwPg8hQYySscOGblknQEdCLweRoCCU9m0dA -EgQpemsELJoY0i2HkrAVK9+FCmxr0N4ApEckw/+KZxL/Yb0Sz3R3+0FM3JGkbdgi -2zP5xBEpJszHZqpwsxSwrLbnACrwv7xdxso/ojiW2MWPGqB/g3hHY9PexV732ZNK -sRN2WJmRQ1G1RzKs8pi352hbra3WDmeEb0AQEuda6sqx6mu0EiomKN5JOq+pltyK -PvQuBvJV04HwFqpTm7wAJprF1F+9y1B4PDt8c+/CnMBKMOJ9nv84qZEq2ihp65LK -valeoetcimRCEJ5xnqGCza/sSDHjUMUvMhwMJdq56t0zKMk5pFH6lHxzgAKzX3Gt -pct+50AzBHUSn0zpB6QRBow2MddivGmTs1IOFdWaSj+Mfdb6phln1Hkv+KW2Wizv -I28L690yK+Bnk1ezGs+ln6yxiWOdnurckaLkTj6/JFw2x5q/uaTXOxjG/YKKpMQE -Fq8uI2+DbX/zW18ZIEv6UloGEEWbLO1427+Yyb/THMczWYyH20PTyzT8zFOt ------END CERTIFICATE-----" > /tmp/cacert.crt' + shell("/bin/touch #{default['puppetpath']}/hiera.yaml") + shell('puppet module install puppetlabs-stdlib', { :acceptable_exit_codes => [0,1] }) + if fact('osfamily') == 'Debian' + shell('puppet module install puppetlabs-apt --version 1.8.0 --force', { :acceptable_exit_codes => [0,1] }) + end + shell('puppet module install nanliu-staging', { :acceptable_exit_codes => [0,1] }) + if fact('osfamily') == 'RedHat' + shell('puppet module install garethr-erlang', { :acceptable_exit_codes => [0,1] }) + end end end end -shared_examples 'an idempotent resource' do - it 'applies with no errors' do - apply_manifest(pp, catch_failures: true) - end - - it 'applies a second time without changes' do - apply_manifest(pp, catch_changes: true) - end -end diff --git a/3rdparty/modules/rabbitmq/spec/spec_helper_local.rb b/3rdparty/modules/rabbitmq/spec/spec_helper_local.rb deleted file mode 100644 index 7937fa055..000000000 --- a/3rdparty/modules/rabbitmq/spec/spec_helper_local.rb +++ /dev/null @@ -1,27 +0,0 @@ -add_custom_fact :rabbitmq_version, '3.6.1' # puppet-rabbitmq -add_custom_fact :erl_ssl_path, '/usr/lib64/erlang/lib/ssl-7.3.3.1/ebin' # puppet-rabbitmq - -def os_specific_facts(facts) - case facts[:os]['family'] - when 'Archlinux' - { service_provider: 'systemd', systemd: true } - when 'Debian' - case facts[:os]['release']['major'] - when '7' - { service_provider: 'sysv', systemd: false } - when '14.04' - { service_provider: 'upstart', systemd: false } - else - { service_provider: 'systemd', systemd: true } - end - when 'RedHat' - case facts[:os]['release']['major'] - when '6' - { service_provider: 'sysv', systemd: false } - else - { service_provider: 'systemd', systemd: true } - end - else - { service_provider: 'systemd', systemd: true } - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_erl_ssl_path_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_erl_ssl_path_spec.rb deleted file mode 100644 index 679a90162..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_erl_ssl_path_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'spec_helper' - -describe Facter::Util::Fact do - before { Facter.clear } - - describe 'erl_ssl_path' do - context 'with valid value' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('erl') { true } - allow(Facter::Core::Execution).to receive(:execute).with("erl -eval 'io:format(\"~p\", [code:lib_dir(ssl, ebin)]),halt().' -noshell") { '"/usr/lib64/erlang/lib/ssl-5.3.3/ebin"' } - end - - it do - expect(Facter.fact(:erl_ssl_path).value).to eq('/usr/lib64/erlang/lib/ssl-5.3.3/ebin') - end - end - - context 'with error message' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('erl') { true } - allow(Facter::Core::Execution).to receive(:execute).with("erl -eval 'io:format(\"~p\", [code:lib_dir(ssl, ebin)]),halt().' -noshell") { '{error,bad_name}' } - end - - it do - expect(Facter.fact(:erl_ssl_path).value).to be_nil - end - end - - context 'with erl not present' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('erl') { false } - end - - it do - expect(Facter.fact(:erl_ssl_path).value).to be_nil - end - end - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_nodename_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_nodename_spec.rb deleted file mode 100644 index f0ed39272..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_nodename_spec.rb +++ /dev/null @@ -1,97 +0,0 @@ -require 'spec_helper' - -describe Facter::Util::Fact do - before { Facter.clear } - - describe 'rabbitmq_nodename' do - context 'with value' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { 'Status of node monty@rabbit1 ...' } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty@rabbit1') - end - end - - context 'with dashes in hostname' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { 'Status of node monty@rabbit-1 ...' } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty@rabbit-1') - end - end - - context 'with dashes in nodename/hostname' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { 'Status of node monty-python@rabbit-1 ...' } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty-python@rabbit-1') - end - end - - context 'with quotes around node name' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { 'Status of node \'monty@rabbit-1\' ...' } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty@rabbit-1') - end - end - - context 'without trailing points' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { 'Status of node monty@rabbit-1' } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty@rabbit-1') - end - end - - context 'rabbitmq is not running' do - before do - error_string = <<-EOS -Status of node 'monty@rabbit-1' ... -Error: unable to connect to node 'monty@rabbit-1': nodedown - -DIAGNOSTICS -=========== - -attempted to contact: ['monty@rabbit-1'] - -monty@rabbit-1: - * connected to epmd (port 4369) on centos-7-x64 - * epmd reports: node 'rabbit' not running at all - no other nodes on centos-7-x64 - * suggestion: start the node - -current node details: -- node name: 'rabbitmq-cli-73@centos-7-x64' -- home dir: /var/lib/rabbitmq -- cookie hash: 6WdP0nl6d3HYqA5vTKMkIg== - - EOS - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqctl status 2>&1') { error_string } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to eq('monty@rabbit-1') - end - end - - context 'rabbitmqctl is not in path' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqctl') { false } - end - it do - expect(Facter.fact(:rabbitmq_nodename).value).to be_nil - end - end - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_version_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_version_spec.rb deleted file mode 100644 index b4c4420da..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/facter/util/fact_rabbitmq_version_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -require 'spec_helper' - -describe Facter::Util::Fact do - before do - Facter.clear - end - - describe 'rabbitmq_version' do - context 'with value' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqadmin') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqadmin --version 2>&1') { 'rabbitmqadmin 3.6.0' } - end - it do - expect(Facter.fact(:rabbitmq_version).value).to eq('3.6.0') - end - end - context 'with invalid value' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqadmin') { true } - allow(Facter::Core::Execution).to receive(:execute).with('rabbitmqadmin --version 2>&1') { 'rabbitmqadmin %%VSN%%' } - end - it do - expect(Facter.fact(:rabbitmq_version).value).to be_nil - end - end - context 'rabbitmqadmin is not in path' do - before do - allow(Facter::Util::Resolution).to receive(:which).with('rabbitmqadmin') { false } - end - it do - expect(Facter.fact(:rabbitmq_version).value).to be_nil - end - end - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb index 04015a33d..e165d557c 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_binding/rabbitmqadmin_spec.rb @@ -1,187 +1,59 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha/api' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_binding).provider(:rabbitmqadmin) describe provider_class do - let(:resource) do - Puppet::Type::Rabbitmq_binding.new( - name: 'source@target@/', - destination_type: :queue, - routing_key: 'blablub', - arguments: {} + before :each do + @resource = Puppet::Type::Rabbitmq_binding.new( + {:name => 'source@target@/', + :destination_type => :queue, + :routing_key => 'blablub', + :arguments => {} + } ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - # rubocop:disable RSpec/MultipleExpectations - describe '#instances' do - it 'returns instances' do - provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT + it 'should return instances' do + provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT / EOT - provider_class.expects(:rabbitmqctl).with( - 'list_bindings', '-q', '-p', '/', 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments' - ).returns <<-EOT -exchange\tdst_queue\tqueue\t*\t[] + provider_class.expects(:rabbitmqctl).with('list_bindings', '-q', '-p', '/', 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments').returns <<-EOT + queue queue queue [] EOT - instances = provider_class.instances - expect(instances.size).to eq(1) - expect(instances.map do |prov| - { - source: prov.get(:source), - destination: prov.get(:destination), - vhost: prov.get(:vhost), - routing_key: prov.get(:routing_key) - } - end).to eq([ - { - source: 'exchange', - destination: 'dst_queue', - vhost: '/', - routing_key: '*' - } - ]) - end - # rubocop:enable RSpec/MultipleExpectations - - # rubocop:disable RSpec/MultipleExpectations - it 'returns multiple instances' do - provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT -/ -EOT - provider_class.expects(:rabbitmqctl).with( - 'list_bindings', '-q', '-p', '/', 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments' - ).returns <<-EOT -exchange\tdst_queue\tqueue\trouting_one\t[] -exchange\tdst_queue\tqueue\trouting_two\t[] -EOT - instances = provider_class.instances - expect(instances.size).to eq(2) - expect(instances.map do |prov| - { - source: prov.get(:source), - destination: prov.get(:destination), - vhost: prov.get(:vhost), - routing_key: prov.get(:routing_key) - } - end).to eq([ - { - source: 'exchange', - destination: 'dst_queue', - vhost: '/', - routing_key: 'routing_one' - }, - { - source: 'exchange', - destination: 'dst_queue', - vhost: '/', - routing_key: 'routing_two' - } - ]) - end + instances = provider_class.instances + instances.size.should == 1 + end + + it 'should call rabbitmqadmin to create' do + @provider.expects(:rabbitmqadmin).with('declare', 'binding', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'source=source', 'destination=target', 'arguments={}', 'routing_key=blablub', 'destination_type=queue') + @provider.create end - # rubocop:enable RSpec/MultipleExpectations - - describe 'Test for prefetch error' do - let(:resource) do - Puppet::Type::Rabbitmq_binding.new( - name: 'binding1', - source: 'exchange1', - destination: 'destqueue', - destination_type: :queue, - routing_key: 'blablubd', - arguments: {} - ) - end - - it 'exists' do - provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT -/ -EOT - provider_class.expects(:rabbitmqctl).with( - 'list_bindings', '-q', '-p', '/', 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments' - ).returns <<-EOT -exchange\tdst_queue\tqueue\t*\t[] -EOT - - provider_class.prefetch({}) - end - - it 'matches' do - # Test resource to match against - provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT -/ -EOT - provider_class.expects(:rabbitmqctl).with( - 'list_bindings', '-q', '-p', '/', 'source_name', 'destination_name', 'destination_kind', 'routing_key', 'arguments' - ).returns <<-EOT -exchange\tdst_queue\tqueue\t*\t[] -EOT - provider_class.prefetch('binding1' => resource) - end + it 'should call rabbitmqadmin to destroy' do + @provider.expects(:rabbitmqadmin).with('delete', 'binding', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'source=source', 'destination_type=queue', 'destination=target', 'properties_key=blablub') + @provider.destroy end - describe '#create' do - it 'calls rabbitmqadmin to create' do - provider.expects(:rabbitmqadmin).with( - 'declare', 'binding', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', - 'source=source', 'destination=target', 'arguments={}', 'routing_key=blablub', 'destination_type=queue' + context 'specifying credentials' do + before :each do + @resource = Puppet::Type::Rabbitmq_binding.new( + {:name => 'source@test2@/', + :destination_type => :queue, + :routing_key => 'blablubd', + :arguments => {}, + :user => 'colin', + :password => 'secret' + } ) - provider.create + @provider = provider_class.new(@resource) end - context 'specifying credentials' do - let(:resource) do - Puppet::Type::Rabbitmq_binding.new( - name: 'source@test2@/', - destination_type: :queue, - routing_key: 'blablubd', - arguments: {}, - user: 'colin', - password: 'secret' - ) - end - let(:provider) { provider_class.new(resource) } - - it 'calls rabbitmqadmin to create' do - provider.expects(:rabbitmqadmin).with( - 'declare', 'binding', '--vhost=/', '--user=colin', '--password=secret', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', - 'source=source', 'destination=test2', 'arguments={}', 'routing_key=blablubd', 'destination_type=queue' - ) - provider.create - end - end - - context 'new queue_bindings' do - let(:resource) do - Puppet::Type::Rabbitmq_binding.new( - name: 'binding1', - source: 'exchange1', - destination: 'destqueue', - destination_type: :queue, - routing_key: 'blablubd', - arguments: {} - ) - end - let(:provider) { provider_class.new(resource) } - - it 'calls rabbitmqadmin to create' do - provider.expects(:rabbitmqadmin).with( - 'declare', 'binding', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', - 'source=exchange1', 'destination=destqueue', 'arguments={}', 'routing_key=blablubd', 'destination_type=queue' - ) - provider.create - end - end - end - - describe '#destroy' do - it 'calls rabbitmqadmin to destroy' do - provider.expects(:rabbitmqadmin).with( - 'delete', 'binding', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', - 'source=source', 'destination_type=queue', 'destination=target', 'properties_key=blablub' - ) - provider.destroy + it 'should call rabbitmqadmin to create' do + @provider.expects(:rabbitmqadmin).with('declare', 'binding', '--vhost=/', '--user=colin', '--password=secret', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'source=source', 'destination=test2', 'arguments={}', 'routing_key=blablubd', 'destination_type=queue') + @provider.create end end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb index 709e55a17..10e39acfa 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_exchange/rabbitmqadmin_spec.rb @@ -1,22 +1,26 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_exchange).provider(:rabbitmqadmin) describe provider_class do - let(:resource) do - Puppet::Type::Rabbitmq_exchange.new( - name: 'test.headers@/', - type: :headers, - internal: :false, - durable: :true, - auto_delete: :false, - arguments: { - 'hash-headers' => 'message-distribution-hash' + before :each do + @resource = Puppet::Type::Rabbitmq_exchange.new( + {:name => 'test.headers@/', + :type => :headers, + :internal => :false, + :durable => :true, + :auto_delete => :false, + :arguments => { + "hash-headers" => "message-distribution-hash" + }, } ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - it 'returns instances' do + it 'should return instances' do provider_class.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT / EOT @@ -32,39 +36,40 @@ amq.topic topic false true false [] test.headers x-consistent-hash false true false [{"hash-header","message-distribution-hash"}] EOT instances = provider_class.instances - expect(instances.size).to eq(9) + instances.size.should == 9 end - it 'calls rabbitmqadmin to create as guest' do - provider.expects(:rabbitmqadmin).with('declare', 'exchange', '--vhost=/', '--user=guest', '--password=guest', 'name=test.headers', 'type=headers', 'internal=false', 'durable=true', 'auto_delete=false', 'arguments={"hash-headers":"message-distribution-hash"}', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') - provider.create + it 'should call rabbitmqadmin to create as guest' do + @provider.expects(:rabbitmqadmin).with('declare', 'exchange', '--vhost=/', '--user=guest', '--password=guest', 'name=test.headers', 'type=headers', 'internal=false', 'durable=true', 'auto_delete=false', 'arguments={"hash-headers":"message-distribution-hash"}', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') + @provider.create end - it 'calls rabbitmqadmin to destroy' do - provider.expects(:rabbitmqadmin).with('delete', 'exchange', '--vhost=/', '--user=guest', '--password=guest', 'name=test.headers', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') - provider.destroy + it 'should call rabbitmqadmin to destroy' do + @provider.expects(:rabbitmqadmin).with('delete', 'exchange', '--vhost=/', '--user=guest', '--password=guest', 'name=test.headers', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') + @provider.destroy end context 'specifying credentials' do - let(:resource) do - Puppet::Type::Rabbitmq_exchange.new( - name: 'test.headers@/', - type: :headers, - internal: 'false', - durable: 'true', - auto_delete: 'false', - user: 'colin', - password: 'secret', - arguments: { - 'hash-header' => 'message-distribution-hash' - } + before :each do + @resource = Puppet::Type::Rabbitmq_exchange.new( + {:name => 'test.headers@/', + :type => :headers, + :internal => 'false', + :durable => 'true', + :auto_delete => 'false', + :user => 'colin', + :password => 'secret', + :arguments => { + "hash-header" => "message-distribution-hash" + }, + } ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - it 'calls rabbitmqadmin to create with credentials' do - provider.expects(:rabbitmqadmin).with('declare', 'exchange', '--vhost=/', '--user=colin', '--password=secret', 'name=test.headers', 'type=headers', 'internal=false', 'durable=true', 'auto_delete=false', 'arguments={"hash-header":"message-distribution-hash"}', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') - provider.create + it 'should call rabbitmqadmin to create with credentials' do + @provider.expects(:rabbitmqadmin).with('declare', 'exchange', '--vhost=/', '--user=colin', '--password=secret', 'name=test.headers', 'type=headers', 'internal=false', 'durable=true', 'auto_delete=false', 'arguments={"hash-header":"message-distribution-hash"}', '-c', '/etc/rabbitmq/rabbitmqadmin.conf') + @provider.create end end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_parameter/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_parameter/rabbitmqctl_spec.rb deleted file mode 100644 index 5162edda4..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_parameter/rabbitmqctl_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'spec_helper' - -describe Puppet::Type.type(:rabbitmq_parameter).provider(:rabbitmqctl) do - let(:resource) do - Puppet::Type.type(:rabbitmq_parameter).new( - name: 'documentumShovel@/', - component_name: 'shovel', - value: { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue' - }, - provider: described_class.name - ) - end - let(:provider) { resource.provider } - - after do - described_class.instance_variable_set(:@parameters, nil) - end - - context 'has "@" in parameter name' do - let(:resource) do - Puppet::Type.type(:rabbitmq_parameter).new( - name: 'documentumShovel@/', - component_name: 'shovel', - value: { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue' - }, - provider: described_class.name - ) - end - let(:provider) { described_class.new(resource) } - - it do - expect(provider.should_parameter).to eq('documentumShovel') - end - - it do - expect(provider.should_vhost).to eq('/') - end - end - - it 'fails with invalid output from list' do - provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns 'foobar' - expect { provider.exists? }.to raise_error(Puppet::Error, %r{cannot parse line from list_parameter}) - end - - it 'matches parameters from list' do - provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns <<-EOT -shovel documentumShovel {"src-uri":"amqp://","src-queue":"my-queue","dest-uri":"amqp://remote-server","dest-queue":"another-queue"} -EOT - expect(provider.exists?).to eq(component_name: 'shovel', - value: { - 'src-uri' => 'amqp://', - 'src-queue' => 'my-queue', - 'dest-uri' => 'amqp://remote-server', - 'dest-queue' => 'another-queue' - }) - end - - it 'does not match an empty list' do - provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns '' - expect(provider.exists?).to eq(nil) - end - - it 'destroys parameter' do - provider.expects(:rabbitmqctl).with('clear_parameter', '-p', '/', 'shovel', 'documentumShovel') - provider.destroy - end - - it 'onlies call set_parameter once' do - provider.expects(:rabbitmqctl).with('set_parameter', - '-p', '/', - 'shovel', - 'documentumShovel', - '{"src-uri":"amqp://","src-queue":"my-queue","dest-uri":"amqp://remote-server","dest-queue":"another-queue"}').once - provider.create - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb index 3c0a757b1..c398b6292 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_plugin/rabbitmqctl_spec.rb @@ -1,24 +1,26 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_plugin).provider(:rabbitmqplugins) describe provider_class do - let(:resource) do - Puppet::Type::Rabbitmq_plugin.new( - name: 'foo' + before :each do + @resource = Puppet::Type::Rabbitmq_plugin.new( + {:name => 'foo'} ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - - it 'matches plugins' do - provider.expects(:rabbitmqplugins).with('list', '-E', '-m').returns("foo\n") - expect(provider.exists?).to eq(true) + it 'should match plugins' do + @provider.expects(:rabbitmqplugins).with('list', '-E', '-m').returns("foo\n") + @provider.exists?.should == 'foo' end - it 'calls rabbitmqplugins to enable' do - provider.expects(:rabbitmqplugins).with('enable', 'foo') - provider.create + it 'should call rabbitmqplugins to enable' do + @provider.expects(:rabbitmqplugins).with('enable', 'foo') + @provider.create end - it 'calls rabbitmqplugins to disable' do - provider.expects(:rabbitmqplugins).with('disable', 'foo') - provider.destroy + it 'should call rabbitmqplugins to disable' do + @provider.expects(:rabbitmqplugins).with('disable', 'foo') + @provider.destroy end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb index 075602c89..cddb6c0c0 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_policy/rabbitmqctl_spec.rb @@ -1,136 +1,113 @@ -require 'spec_helper' +require 'puppet' +require 'mocha' + +RSpec.configure do |config| + config.mock_with :mocha +end describe Puppet::Type.type(:rabbitmq_policy).provider(:rabbitmqctl) do + let(:resource) do Puppet::Type.type(:rabbitmq_policy).new( - name: 'ha-all@/', - pattern: '.*', - definition: { + :name => 'ha-all@/', + :pattern => '.*', + :definition => { 'ha-mode' => 'all' - } + }, + :provider => described_class.name ) end - let(:provider) { described_class.new(resource) } - after do + let(:provider) { resource.provider } + + after(:each) do described_class.instance_variable_set(:@policies, nil) end - context 'has "@" in policy name' do - let(:resource) do - Puppet::Type.type(:rabbitmq_policy).new( - name: 'ha@home@/', - pattern: '.*', - definition: { - 'ha-mode' => 'all' - }, - provider: described_class.name - ) - end - let(:provider) { described_class.new(resource) } - - it do - expect(provider.should_policy).to eq('ha@home') - end - - it do - expect(provider.should_vhost).to eq('/') - end + it 'should accept @ in policy name' do + resource = Puppet::Type.type(:rabbitmq_policy).new( + :name => 'ha@home@/', + :pattern => '.*', + :definition => { + 'ha-mode' => 'all' + }, + :provider => described_class.name + ) + provider = described_class.new(resource) + provider.should_policy.should == 'ha@home' + provider.should_vhost.should == '/' end - it 'fails with invalid output from list' do - provider.class.expects(:rabbitmqctl).with('-q', 'status').returns '{rabbit,"RabbitMQ","3.1.5"}' + it 'should fail with invalid output from list' do provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns 'foobar' - expect { provider.exists? }.to raise_error(Puppet::Error, %r{cannot parse line from list_policies}) + expect { provider.exists? }.to raise_error(Puppet::Error, /cannot parse line from list_policies/) end - context 'with RabbitMQ version >=3.7.0' do - it 'matches policies from list' do - provider.class.expects(:rabbitmq_version).returns '3.7.0' - provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns <<-EOT -/ ha-all .* all {"ha-mode":"all","ha-sync-mode":"automatic"} 0 -/ test .* exchanges {"ha-mode":"all"} 0 -EOT - expect(provider.exists?).to eq(applyto: 'all', - pattern: '.*', - priority: '0', - definition: { - 'ha-mode' => 'all', - 'ha-sync-mode' => 'automatic' - }) - end - end - - context 'with RabbitMQ version >=3.2.0 and < 3.7.0' do - it 'matches policies from list' do - provider.class.expects(:rabbitmq_version).returns '3.6.9' - provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns <<-EOT + it 'should match policies from list (>=3.2.0)' do + provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns <<-EOT / ha-all all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0 / test exchanges .* {"ha-mode":"all"} 0 EOT - expect(provider.exists?).to eq(applyto: 'all', - pattern: '.*', - priority: '0', - definition: { - 'ha-mode' => 'all', - 'ha-sync-mode' => 'automatic' - }) - end + provider.exists?.should == { + :applyto => 'all', + :pattern => '.*', + :priority => '0', + :definition => { + 'ha-mode' => 'all', + 'ha-sync-mode' => 'automatic'} + } end - context 'with RabbitMQ version <3.2.0' do - it 'matches policies from list (<3.2.0)' do - provider.class.expects(:rabbitmq_version).returns '3.1.5' - provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns <<-EOT + it 'should match policies from list (<3.2.0)' do + provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns <<-EOT / ha-all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0 / test .* {"ha-mode":"all"} 0 EOT - expect(provider.exists?).to eq(applyto: 'all', - pattern: '.*', - priority: '0', - definition: { - 'ha-mode' => 'all', - 'ha-sync-mode' => 'automatic' - }) - end + provider.exists?.should == { + :applyto => 'all', + :pattern => '.*', + :priority => '0', + :definition => { + 'ha-mode' => 'all', + 'ha-sync-mode' => 'automatic'} + } end - it 'does not match an empty list' do - provider.class.expects(:rabbitmqctl).with('-q', 'status').returns '{rabbit,"RabbitMQ","3.1.5"}' + it 'should not match an empty list' do provider.class.expects(:rabbitmqctl).with('list_policies', '-q', '-p', '/').returns '' - expect(provider.exists?).to eq(nil) + provider.exists?.should == nil end - it 'destroys policy' do + it 'should destroy policy' do provider.expects(:rabbitmqctl).with('clear_policy', '-p', '/', 'ha-all') provider.destroy end - it 'onlies call set_policy once (<3.2.0)' do + it 'should only call set_policy once (<3.2.0)' do provider.class.expects(:rabbitmq_version).returns '3.1.0' provider.resource[:priority] = '10' provider.resource[:applyto] = 'exchanges' provider.expects(:rabbitmqctl).with('set_policy', - '-p', '/', - 'ha-all', - '.*', - '{"ha-mode":"all"}', - '10').once + '-p', '/', + 'ha-all', + '.*', + '{"ha-mode":"all"}', + '10').once provider.priority = '10' provider.applyto = 'exchanges' end - it 'onlies call set_policy once (>=3.2.0)' do + it 'should only call set_policy once (>=3.2.0)' do provider.class.expects(:rabbitmq_version).returns '3.2.0' provider.resource[:priority] = '10' provider.resource[:applyto] = 'exchanges' provider.expects(:rabbitmqctl).with('set_policy', - '-p', '/', - '--priority', '10', - '--apply-to', 'exchanges', - 'ha-all', - '.*', - '{"ha-mode":"all"}').once + '-p', '/', + '--priority', '10', + '--apply-to', 'exchanges', + 'ha-all', + '.*', + '{"ha-mode":"all"}').once provider.priority = '10' provider.applyto = 'exchanges' end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb index c07a182a5..85843da8a 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_queue/rabbitmqadmin_spec.rb @@ -1,18 +1,22 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha/api' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_queue).provider(:rabbitmqadmin) describe provider_class do - let(:resource) do - Puppet::Type::Rabbitmq_queue.new( - name: 'test@/', - durable: :true, - auto_delete: :false, - arguments: {} + before :each do + @resource = Puppet::Type::Rabbitmq_queue.new( + {:name => 'test@/', + :durable => :true, + :auto_delete => :false, + :arguments => {} + } ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - it 'returns instances' do + it 'should return instances' do provider_class.expects(:rabbitmqctl).with('list_vhosts', '-q').returns <<-EOT / EOT @@ -21,35 +25,36 @@ test true false [] test2 true false [{"x-message-ttl",342423},{"x-expires",53253232},{"x-max-length",2332},{"x-max-length-bytes",32563324242},{"x-dead-letter-exchange","amq.direct"},{"x-dead-letter-routing-key","test.routing"}] EOT instances = provider_class.instances - expect(instances.size).to eq(2) + instances.size.should == 2 end - it 'calls rabbitmqadmin to create' do - provider.expects(:rabbitmqadmin).with('declare', 'queue', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test', 'durable=true', 'auto_delete=false', 'arguments={}') - provider.create + it 'should call rabbitmqadmin to create' do + @provider.expects(:rabbitmqadmin).with('declare', 'queue', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test', 'durable=true', 'auto_delete=false', 'arguments={}') + @provider.create end - it 'calls rabbitmqadmin to destroy' do - provider.expects(:rabbitmqadmin).with('delete', 'queue', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test') - provider.destroy + it 'should call rabbitmqadmin to destroy' do + @provider.expects(:rabbitmqadmin).with('delete', 'queue', '--vhost=/', '--user=guest', '--password=guest', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test') + @provider.destroy end context 'specifying credentials' do - let(:resource) do - Puppet::Type::Rabbitmq_queue.new( - name: 'test@/', - durable: 'true', - auto_delete: 'false', - arguments: {}, - user: 'colin', - password: 'secret' + before :each do + @resource = Puppet::Type::Rabbitmq_queue.new( + {:name => 'test@/', + :durable => 'true', + :auto_delete => 'false', + :arguments => {}, + :user => 'colin', + :password => 'secret', + } ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - it 'calls rabbitmqadmin to create' do - provider.expects(:rabbitmqadmin).with('declare', 'queue', '--vhost=/', '--user=colin', '--password=secret', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test', 'durable=true', 'auto_delete=false', 'arguments={}') - provider.create + it 'should call rabbitmqadmin to create' do + @provider.expects(:rabbitmqadmin).with('declare', 'queue', '--vhost=/', '--user=colin', '--password=secret', '-c', '/etc/rabbitmq/rabbitmqadmin.conf', 'name=test', 'durable=true', 'auto_delete=false', 'arguments={}') + @provider.create end end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb index 0fd7d9c85..ed828ea94 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb @@ -1,176 +1,215 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_user).provider(:rabbitmqctl) describe provider_class do - let(:resource) do - Puppet::Type.type(:rabbitmq_user).new( - ensure: :present, - name: 'rmq_x', - password: 'secret', - provider: described_class.name + before :each do + @resource = Puppet::Type::Rabbitmq_user.new( + {:name => 'foo', :password => 'bar'} ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - let(:instance) { provider.class.instances.first } - - before do - provider.class.stubs(:rabbitmqctl).with('-q', 'list_users').returns( - "rmq_x [disk, storage]\nrmq_y [network, cpu, administrator]\nrmq_z []\n" - ) + it 'should match user names' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo +EOT + @provider.exists?.should == 'foo' end - - describe '#self.instances' do - it { expect(provider.class.instances.size).to eq(3) } - it 'returns an array of users' do - users = provider.class.instances.map(&:name) - expect(users).to match_array(%w[rmq_x rmq_y rmq_z]) - end - it 'returns the expected tags' do - tags = provider.class.instances.first.get(:tags) - expect(tags).to match_array(%w[disk storage]) - end + it 'should match user names with 2.4.1 syntax' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo bar +EOT + @provider.exists?.should == 'foo bar' end - - describe '#exists?' do - it { expect(instance.exists?).to be true } + it 'should not match if no users on system' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +EOT + @provider.exists?.should be_nil end - - describe '#create' do - it 'adds a user' do - provider.expects(:rabbitmqctl).with('add_user', 'rmq_x', 'secret') - provider.create - end - context 'no password supplied' do - let(:resource) do - Puppet::Type.type(:rabbitmq_user).new( - ensure: :present, - name: 'rmq_x' - ) - end - - it 'raises an error' do - expect do - provider.create - end.to raise_error(Puppet::Error, 'Password is a required parameter for rabbitmq_user (user: rmq_x)') - end - end + it 'should not match if no matching users on system' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +fooey +EOT + @provider.exists?.should be_nil end - - describe '#destroy' do - it 'removes a user' do - provider.expects(:rabbitmqctl).with('delete_user', 'rmq_x') - provider.destroy - end + it 'should match user names from list' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one +two three +foo +bar +EOT + @provider.exists?.should == 'foo' end - - describe '#check_password' do - context 'correct password' do - before do - provider.class.stubs(:rabbitmqctl).with( - 'eval', - 'rabbit_access_control:check_user_pass_login(list_to_binary("rmq_x"), list_to_binary("secret")).' - ).returns <<-EOT -{ok,{user,<<"rmq_x">>,[],rabbit_auth_backend_internal, - {internal_user,<<"rmq_x">>, - <<193,81,62,182,129,135,196,89,148,87,227,48,86,2,154, - 192,52,119,214,177>>, - []}}} -EOT - end - - it do - provider.check_password('secret') - end - end - - context 'incorrect password' do - before do - provider.class.stubs(:rabbitmqctl).with( - 'eval', - 'rabbit_access_control:check_user_pass_login(list_to_binary("rmq_x"), list_to_binary("nottherightone")).' - ).returns <<-EOT -{refused,"user '~s' - invalid credentials",[<<"rmq_x">>]} -...done. -EOT - end - - it do - provider.check_password('nottherightone') - end - end + it 'should create user and set password' do + @resource[:password] = 'bar' + @provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar') + @provider.create + end + it 'should create user, set password and set to admin' do + @resource[:password] = 'bar' + @resource[:admin] = 'true' + @provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar') + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['administrator']) + @provider.create + end + it 'should call rabbitmqctl to delete' do + @provider.expects(:rabbitmqctl).with('delete_user', 'foo') + @provider.destroy + end + it 'should be able to retrieve admin value' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [administrator] +EOT + @provider.admin.should == :true + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one [administrator] +foo [] +EOT + @provider.admin.should == :false + end + it 'should fail if admin value is invalid' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo fail +EOT + expect { @provider.admin }.to raise_error(Puppet::Error, /Could not match line/) + end + it 'should be able to set admin value' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['administrator']) + @provider.admin=:true + end + it 'should not interfere with existing tags on the user when setting admin value' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [bar, baz] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['bar','baz', 'administrator'].sort) + @provider.admin=:true + end + it 'should be able to unset admin value' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [administrator] +guest [administrator] +icinga [] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', []) + @provider.admin=:false + end + it 'should not interfere with existing tags on the user when unsetting admin value' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [administrator, bar, baz] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['bar','baz'].sort) + @provider.admin=:false end - describe '#tags=' do - it 'clears all tags on existing user' do - provider.set(tags: %w[tag1 tag2 tag3]) - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', []) - provider.tags = [] - provider.flush - end - - it 'sets multiple tags' do - provider.set(tags: []) - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', %w[tag1 tag2]) - provider.tags = %w[tag1 tag2] - provider.flush - end - - it 'clears tags while keeping admin tag' do - provider.set(tags: %w[administrator tag1 tag2]) - resource[:admin] = true - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', ['administrator']) - provider.tags = [] - provider.flush - end + it 'should clear all tags on existing user' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one [administrator] +foo [tag1,tag2] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', []) + @provider.tags=[] + end - it 'changes tags while keeping admin tag' do - provider.set(tags: %w[administrator tag1 tag2]) - resource[:admin] = true - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', %w[tag1 tag7 tag3 administrator]) - provider.tags = %w[tag1 tag7 tag3] - provider.flush - end + it 'should set multiple tags' do + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one [administrator] +foo [] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['tag1','tag2']) + @provider.tags=['tag1','tag2'] end - describe '#admin=' do - it 'gets admin value properly' do - provider.set(tags: %w[administrator tag1 tag2]) - expect(provider.admin).to be :true - end + it 'should clear tags while keep admin tag' do + @resource[:admin] = true + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one [administrator] +foo [administrator, tag1, tag2] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator"]) + @provider.tags=[] + end - it 'gets false admin value' do - provider.set(tags: %w[tag1 tag2]) - expect(provider.admin).to be :false - end + it 'should change tags while keep admin tag' do + @resource[:admin] = true + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +one [administrator] +foo [administrator, tag1, tag2] +icinga [monitoring] +kitchen [] +kitchen2 [abc, def, ghi] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator","tag1","tag3","tag7"]) + @provider.tags=['tag1','tag7','tag3'] + end - it 'sets admin value' do - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', ['administrator']) - resource[:admin] = true - provider.admin = resource[:admin] - provider.flush - end + it 'should create user with tags and without admin' do + @resource[:tags] = [ "tag1", "tag2" ] + @provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar') + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["tag1","tag2"]) + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [] +EOT + @provider.create + end - it 'adds admin value to existing tags of the user' do - resource[:tags] = %w[tag1 tag2] - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', %w[tag1 tag2 administrator]) - resource[:admin] = true - provider.admin = resource[:admin] - provider.flush - end + it 'should create user with tags and with admin' do + @resource[:tags] = [ "tag1", "tag2" ] + @resource[:admin] = true + @provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar') + @provider.expects(:rabbitmqctl).with('-q', 'list_users').twice.returns <<-EOT +foo [] +EOT + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator"]) + @provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator","tag1","tag2"]) + @provider.create + end - it 'unsets admin value' do - provider.set(tags: ['administrator']) - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', []) - provider.admin = :false - provider.flush - end + it 'should not return the administrator tag in tags for admins' do + @resource[:tags] = [] + @resource[:admin] = true + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [administrator] +EOT + @provider.tags.should == [] + end - it 'does not interfere with existing tags on the user when unsetting admin value' do - provider.set(tags: %w[administrator tag1 tag2]) - resource[:tags] = %w[tag1 tag2] - provider.expects(:rabbitmqctl).with('set_user_tags', 'rmq_x', %w[tag1 tag2]) - provider.admin = :false - provider.flush - end + it 'should return the administrator tag for non-admins' do + # this should not happen though. + @resource[:tags] = [] + @resource[:admin] = :false + @provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT +foo [administrator] +EOT + @provider.tags.should == ["administrator"] end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb index 76e9a1704..bdbc73e82 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb @@ -1,89 +1,93 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha' +RSpec.configure do |config| + config.mock_with :mocha +end describe 'Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)' do - let(:resource) do - Puppet::Type::Rabbitmq_user_permissions.new( - name: 'foo@bar' + before :each do + @provider_class = Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl) + @resource = Puppet::Type::Rabbitmq_user_permissions.new( + {:name => 'foo@bar'} ) + @provider = @provider_class.new(@resource) end - let(:provider_class) { Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl) } - let(:provider) { provider_class.new(resource) } - - after do - provider_class.instance_variable_set(:@users, nil) + after :each do + @provider_class.instance_variable_set(:@users, nil) end - it 'matches user permissions from list' do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + it 'should match user permissions from list' do + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 EOT - expect(provider.exists?).to eq(configure: '1', write: '2', read: '3') + @provider.exists?.should == {:configure=>"1", :write=>"2", :read=>"3"} end - it 'matches user permissions with empty columns' do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + it 'should match user permissions with empty columns' do + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 3 EOT - expect(provider.exists?).to eq(configure: '', write: '', read: '3') + @provider.exists?.should == {:configure=>"", :write=>"", :read=>"3"} end - it 'does not match user permissions with more than 3 columns' do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + it 'should not match user permissions with more than 3 columns' do + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 4 EOT - expect { provider.exists? }.to raise_error(Puppet::Error, %r{cannot parse line from list_user_permissions}) + expect { @provider.exists? }.to raise_error(Puppet::Error, /cannot parse line from list_user_permissions/) end - it 'does not match an empty list' do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + it 'should not match an empty list' do + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT EOT - expect(provider.exists?).to eq(nil) + @provider.exists?.should == nil end - it 'creates default permissions' do - provider.instance_variable_set(:@should_vhost, 'bar') - provider.instance_variable_set(:@should_user, 'foo') - provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', "''", "''", "''") - provider.create + it 'should create default permissions' do + @provider.instance_variable_set(:@should_vhost, "bar") + @provider.instance_variable_set(:@should_user, "foo") + @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', "''", "''", "''") + @provider.create end - it 'destroys permissions' do - provider.instance_variable_set(:@should_vhost, 'bar') - provider.instance_variable_set(:@should_user, 'foo') - provider.expects(:rabbitmqctl).with('clear_permissions', '-p', 'bar', 'foo') - provider.destroy + it 'should destroy permissions' do + @provider.instance_variable_set(:@should_vhost, "bar") + @provider.instance_variable_set(:@should_user, "foo") + @provider.expects(:rabbitmqctl).with('clear_permissions', '-p', 'bar', 'foo') + @provider.destroy end - { configure_permission: '1', write_permission: '2', read_permission: '3' }.each do |k, v| + {:configure_permission => '1', :write_permission => '2', :read_permission => '3'}.each do |k,v| it "should be able to retrieve #{k}" do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 EOT - expect(provider.send(k)).to eq(v) + @provider.send(k).should == v end end - { configure_permission: '1', write_permission: '2', read_permission: '3' }.each do |k, v| + {:configure_permission => '1', :write_permission => '2', :read_permission => '3'}.each do |k,v| it "should be able to retrieve #{k} after exists has been called" do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 EOT - provider.exists? - expect(provider.send(k)).to eq(v) + @provider.exists? + @provider.send(k).should == v end end - { configure_permission: %w[foo 2 3], - read_permission: %w[1 2 foo], - write_permission: %w[1 foo 3] }.each do |perm, columns| + {:configure_permission => ['foo', '2', '3'], + :read_permission => ['1', '2', 'foo'], + :write_permission => ['1', 'foo', '3'] + }.each do |perm, columns| it "should be able to sync #{perm}" do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 EOT - provider.resource[perm] = 'foo' - provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', *columns) - provider.send("#{perm}=".to_sym, 'foo') + @provider.resource[perm] = 'foo' + @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', *columns) + @provider.send("#{perm}=".to_sym, 'foo') end end - it 'onlies call set_permissions once' do - provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT + it 'should only call set_permissions once' do + @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT bar 1 2 3 EOT - provider.resource[:configure_permission] = 'foo' - provider.resource[:read_permission] = 'foo' - provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', 'foo', '2', 'foo').once - provider.configure_permission = 'foo' - provider.read_permission = 'foo' + @provider.resource[:configure_permission] = 'foo' + @provider.resource[:read_permission] = 'foo' + @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', 'foo', '2', 'foo').once + @provider.configure_permission='foo' + @provider.read_permission='foo' end end + diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb index d4ed32840..6c8cce8df 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_vhost/rabbitmqctl_spec.rb @@ -1,43 +1,45 @@ -require 'spec_helper' - +require 'puppet' +require 'mocha' +RSpec.configure do |config| + config.mock_with :mocha +end provider_class = Puppet::Type.type(:rabbitmq_vhost).provider(:rabbitmqctl) describe provider_class do - let(:resource) do - Puppet::Type::Rabbitmq_vhost.new( - name: 'foo' + before :each do + @resource = Puppet::Type::Rabbitmq_vhost.new( + {:name => 'foo'} ) + @provider = provider_class.new(@resource) end - let(:provider) { provider_class.new(resource) } - - it 'matches vhost names' do - provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT + it 'should match vhost names' do + @provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT Listing vhosts ... foo ...done. EOT - expect(provider.exists?).to eq(true) + @provider.exists?.should == 'foo' end - it 'does not match if no vhosts on system' do - provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT + it 'should not match if no vhosts on system' do + @provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT Listing vhosts ... ...done. EOT - expect(provider.exists?).to eq(false) + @provider.exists?.should be_nil end - it 'does not match if no matching vhosts on system' do - provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT + it 'should not match if no matching vhosts on system' do + @provider.expects(:rabbitmqctl).with('-q', 'list_vhosts').returns <<-EOT Listing vhosts ... fooey ...done. EOT - expect(provider.exists?).to eq(false) + @provider.exists?.should be_nil end - it 'calls rabbitmqctl to create' do - provider.expects(:rabbitmqctl).with('add_vhost', 'foo') - provider.create + it 'should call rabbitmqctl to create' do + @provider.expects(:rabbitmqctl).with('add_vhost', 'foo') + @provider.create end - it 'calls rabbitmqctl to create' do - provider.expects(:rabbitmqctl).with('delete_vhost', 'foo') - provider.destroy + it 'should call rabbitmqctl to create' do + @provider.expects(:rabbitmqctl).with('delete_vhost', 'foo') + @provider.destroy end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_binding_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_binding_spec.rb index 14b882487..b0671e7c2 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_binding_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_binding_spec.rb @@ -1,47 +1,50 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_binding' describe Puppet::Type.type(:rabbitmq_binding) do - let(:binding) do - Puppet::Type.type(:rabbitmq_binding).new( - name: 'foo@blub@bar', - destination_type: :queue + before :each do + @binding = Puppet::Type.type(:rabbitmq_binding).new( + :name => 'foo@blub@bar', + :destination_type => :queue ) end - - it 'accepts an queue name' do - binding[:name] = 'dan@dude@pl' - expect(binding[:name]).to eq('dan@dude@pl') + it 'should accept an queue name' do + @binding[:name] = 'dan@dude@pl' + @binding[:name].should == 'dan@dude@pl' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_binding).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') - end - it 'errors when missing source' do - expect do - Puppet::Type.type(:rabbitmq_binding).new( - name: 'test binding', - destination: 'foobar' - ) - end.to raise_error(Puppet::Error, %r{`source` must be defined}) - end - it 'errors when missing destination' do - expect do - Puppet::Type.type(:rabbitmq_binding).new( - name: 'test binding', - source: 'foobar' - ) - end.to raise_error(Puppet::Error, %r{`destination` must be defined}) - end - it 'accepts an binding destination_type' do - binding[:destination_type] = :exchange - expect(binding[:destination_type]).to eq(:exchange) - end - it 'accepts a user' do - binding[:user] = :root - expect(binding[:user]).to eq(:root) - end - it 'accepts a password' do - binding[:password] = :PaSsw0rD - expect(binding[:password]).to eq(:PaSsw0rD) + }.to raise_error(Puppet::Error, 'Title or name must be provided') + end + it 'should not allow whitespace in the name' do + expect { + @binding[:name] = 'b r' + }.to raise_error(Puppet::Error, /Valid values match/) + end + it 'should not allow names without one @' do + expect { + @binding[:name] = 'b_r' + }.to raise_error(Puppet::Error, /Valid values match/) + end + + it 'should not allow names without two @' do + expect { + @binding[:name] = 'b@r' + }.to raise_error(Puppet::Error, /Valid values match/) + end + + it 'should accept an binding destination_type' do + @binding[:destination_type] = :exchange + @binding[:destination_type].should == :exchange + end + + it 'should accept a user' do + @binding[:user] = :root + @binding[:user].should == :root + end + + it 'should accept a password' do + @binding[:password] = :PaSsw0rD + @binding[:password].should == :PaSsw0rD end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_exchange_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_exchange_spec.rb index e1be271df..1500122cd 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_exchange_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_exchange_spec.rb @@ -1,57 +1,57 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_exchange' describe Puppet::Type.type(:rabbitmq_exchange) do - let(:exchange) do - Puppet::Type.type(:rabbitmq_exchange).new( - name: 'foo@bar', - type: :topic, - internal: false, - auto_delete: false, - durable: true + before :each do + @exchange = Puppet::Type.type(:rabbitmq_exchange).new( + :name => 'foo@bar', + :type => :topic, + :internal => false, + :auto_delete => false, + :durable => true ) end - - it 'accepts an exchange name' do - exchange[:name] = 'dan@pl' - expect(exchange[:name]).to eq('dan@pl') + it 'should accept an exchange name' do + @exchange[:name] = 'dan@pl' + @exchange[:name].should == 'dan@pl' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_exchange).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'does not allow whitespace in the name' do - expect do - exchange[:name] = 'b r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow whitespace in the name' do + expect { + @exchange[:name] = 'b r' + }.to raise_error(Puppet::Error, /Valid values match/) end - it 'does not allow names without @' do - expect do - exchange[:name] = 'b_r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow names without @' do + expect { + @exchange[:name] = 'b_r' + }.to raise_error(Puppet::Error, /Valid values match/) end - it 'accepts an exchange type' do - exchange[:type] = :direct - expect(exchange[:type]).to eq(:direct) + it 'should accept an exchange type' do + @exchange[:type] = :direct + @exchange[:type].should == :direct end - it 'requires a type' do - expect do - Puppet::Type.type(:rabbitmq_exchange).new(name: 'foo@bar') - end.to raise_error(%r{.*must set type when creating exchange.*}) + it 'should require a type' do + expect { + Puppet::Type.type(:rabbitmq_exchange).new(:name => 'foo@bar') + }.to raise_error(/.*must set type when creating exchange.*/) end - it 'does not require a type when destroying' do - expect do - Puppet::Type.type(:rabbitmq_exchange).new(name: 'foo@bar', ensure: :absent) - end.not_to raise_error + it 'should not require a type when destroying' do + expect { + Puppet::Type.type(:rabbitmq_exchange).new(:name => 'foo@bar', :ensure => :absent) + }.to_not raise_error end - it 'accepts a user' do - exchange[:user] = :root - expect(exchange[:user]).to eq(:root) + it 'should accept a user' do + @exchange[:user] = :root + @exchange[:user].should == :root end - it 'accepts a password' do - exchange[:password] = :PaSsw0rD - expect(exchange[:password]).to eq(:PaSsw0rD) + it 'should accept a password' do + @exchange[:password] = :PaSsw0rD + @exchange[:password].should == :PaSsw0rD end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_parameter_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_parameter_spec.rb deleted file mode 100644 index 8982b37e7..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_parameter_spec.rb +++ /dev/null @@ -1,79 +0,0 @@ -require 'spec_helper' -describe Puppet::Type.type(:rabbitmq_parameter) do - let(:parameter) do - Puppet::Type.type(:rabbitmq_parameter).new( - name: 'documentumShovel@/', - component_name: 'shovel', - value: { - 'src-uri' => 'amqp://myremote-server', - 'src-queue' => 'queue.docs.outgoing', - 'dest-uri' => 'amqp://', - 'dest-queue' => 'queue.docs.incoming' - } - ) - end - - it 'accepts a valid name' do - parameter[:name] = 'documentumShovel@/' - expect(parameter[:name]).to eq('documentumShovel@/') - end - - it 'requires a name' do - expect do - Puppet::Type.type(:rabbitmq_parameter).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') - end - - it 'fails when name does not have a @' do - expect do - parameter[:name] = 'documentumShovel' - end.to raise_error(Puppet::Error, %r{Valid values match}) - end - - it 'accepts a string' do - parameter[:component_name] = 'mystring' - expect(parameter[:component_name]).to eq('mystring') - end - - it 'is not empty' do - expect do - parameter[:component_name] = '' - end.to raise_error(Puppet::Error, %r{component_name must be defined}) - end - - it 'accepts a valid hash for value' do - value = { 'message-ttl' => '1800000' } - parameter[:value] = value - expect(parameter[:value]).to eq(value) - end - - it 'does not accept an empty string for definition' do - expect do - parameter[:value] = '' - end.to raise_error(Puppet::Error, %r{Invalid value}) - end - - it 'does not accept a string for definition' do - expect do - parameter[:value] = 'guest' - end.to raise_error(Puppet::Error, %r{Invalid value}) - end - - it 'does not accept an array for definition' do - expect do - parameter[:value] = { 'message-ttl' => %w[999 100] } - end.to raise_error(Puppet::Error, %r{Invalid value}) - end - - it 'accepts string as myparameter' do - value = { 'myparameter' => 'mystring' } - parameter[:value] = value - expect(parameter[:value]['myparameter']).to eq('mystring') - end - - it 'converts to integer when string only contains numbers' do - value = { 'myparameter' => '1800000' } - parameter[:value] = value - expect(parameter[:value]['myparameter']).to eq(1_800_000) - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_plugin_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_plugin_spec.rb deleted file mode 100644 index 194df66d1..000000000 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_plugin_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'spec_helper' -describe Puppet::Type.type(:rabbitmq_plugin) do - let(:plugin) do - Puppet::Type.type(:rabbitmq_plugin).new(name: 'foo') - end - - it 'accepts a plugin name' do - plugin[:name] = 'plugin-name' - expect(plugin[:name]).to eq('plugin-name') - end - it 'requires a name' do - expect do - Puppet::Type.type(:rabbitmq_plugin).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') - end - it 'defaults to a umask of 0022' do - expect(plugin[:umask]).to eq(0o022) - end - it 'does not allow a non-octal value to be specified' do - expect do - plugin[:umask] = '198' - end.to raise_error(Puppet::Error, %r{The umask specification is invalid: "198"}) - end -end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_policy_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_policy_spec.rb index fca3c6142..36bf2a73f 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_policy_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_policy_spec.rb @@ -1,202 +1,119 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_policy' + describe Puppet::Type.type(:rabbitmq_policy) do - let(:policy) do - Puppet::Type.type(:rabbitmq_policy).new( - name: 'ha-all@/', - pattern: '.*', - definition: { + + before do + @policy = Puppet::Type.type(:rabbitmq_policy).new( + :name => 'ha-all@/', + :pattern => '.*', + :definition => { 'ha-mode' => 'all' - } - ) + }) end - it 'accepts a valid name' do - policy[:name] = 'ha-all@/' - expect(policy[:name]).to eq('ha-all@/') + it 'should accept a valid name' do + @policy[:name] = 'ha-all@/' + @policy[:name].should == 'ha-all@/' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_policy).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'fails when name does not have a @' do - expect do - policy[:name] = 'ha-all' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should fail when name does not have a @' do + expect { + @policy[:name] = 'ha-all' + }.to raise_error(Puppet::Error, /Valid values match/) end - it 'accepts a valid regex for pattern' do - policy[:pattern] = '.*?' - expect(policy[:pattern]).to eq('.*?') + it 'should accept a valid regex for pattern' do + @policy[:pattern] = '.*?' + @policy[:pattern].should == '.*?' end - it 'accepts an empty string for pattern' do - policy[:pattern] = '' - expect(policy[:pattern]).to eq('') + it 'should accept an empty string for pattern' do + @policy[:pattern] = '' + @policy[:pattern].should == '' end - it 'does not accept invalid regex for pattern' do - expect do - policy[:pattern] = '*' - end.to raise_error(Puppet::Error, %r{Invalid regexp}) + it 'should not accept invalid regex for pattern' do + expect { + @policy[:pattern] = '*' + }.to raise_error(Puppet::Error, /Invalid regexp/) end - it 'accepts valid value for applyto' do + it 'should accept valid value for applyto' do [:all, :exchanges, :queues].each do |v| - policy[:applyto] = v - expect(policy[:applyto]).to eq(v) + @policy[:applyto] = v + @policy[:applyto].should == v end end - it 'does not accept invalid value for applyto' do - expect do - policy[:applyto] = 'me' - end.to raise_error(Puppet::Error, %r{Invalid value}) + it 'should not accept invalid value for applyto' do + expect { + @policy[:applyto] = 'me' + }.to raise_error(Puppet::Error, /Invalid value/) end - it 'accepts a valid hash for definition' do - definition = { 'ha-mode' => 'all', 'ha-sync-mode' => 'automatic' } - policy[:definition] = definition - expect(policy[:definition]).to eq(definition) + it 'should accept a valid hash for definition' do + definition = {'ha-mode' => 'all', 'ha-sync-mode' => 'automatic'} + @policy[:definition] = definition + @policy[:definition].should == definition end - it 'does not accept a string for definition' do - expect do - policy[:definition] = 'ha-mode' - end.to raise_error(Puppet::Error, %r{Invalid definition}) - end + it 'should not accept invalid hash for definition' do + expect { + @policy[:definition] = 'ha-mode' + }.to raise_error(Puppet::Error, /Invalid definition/) - it 'does not accept invalid hash for definition' do - expect do - policy[:definition] = { 'ha-mode' => %w[a b] } - end.to raise_error(Puppet::Error, %r{Invalid definition}) + expect { + @policy[:definition] = {'ha-mode' => ['a', 'b']} + }.to raise_error(Puppet::Error, /Invalid definition/) end - it 'accepts valid value for priority' do + it 'should accept valid value for priority' do [0, 10, '0', '10'].each do |v| - policy[:priority] = v - expect(policy[:priority]).to eq(v) + @policy[:priority] = v + @policy[:priority].should == v end end - it 'does not accept invalid value for priority' do + it 'should not accept invalid value for priority' do ['-1', -1, '1.0', 1.0, 'abc', ''].each do |v| - expect do - policy[:priority] = v - end.to raise_error(Puppet::Error, %r{Invalid value}) + expect { + @policy[:priority] = v + }.to raise_error(Puppet::Error, /Invalid value/) end end - it 'accepts and convert ha-params for ha-mode exactly' do - definition = { 'ha-mode' => 'exactly', 'ha-params' => '2' } - policy[:definition] = definition - expect(policy[:definition]['ha-params']).to eq(2) - end - - it 'does not accept non-numeric ha-params for ha-mode exactly' do - definition = { 'ha-mode' => 'exactly', 'ha-params' => 'nonnumeric' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid ha-params.*nonnumeric.*exactly}) - end - - it 'accepts and convert the expires value' do - definition = { 'expires' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['expires']).to eq(1_800_000) - end - - it 'does not accept non-numeric expires value' do - definition = { 'expires' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid expires value.*future}) - end - - it 'accepts and convert the message-ttl value' do - definition = { 'message-ttl' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['message-ttl']).to eq(1_800_000) - end - - it 'does not accept non-numeric message-ttl value' do - definition = { 'message-ttl' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid message-ttl value.*future}) - end - - it 'accepts and convert the max-length value' do - definition = { 'max-length' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['max-length']).to eq(1_800_000) + it 'should accept and convert ha-params for ha-mode exactly' do + definition = {'ha-mode' => 'exactly', 'ha-params' => '2'} + @policy[:definition] = definition + @policy[:definition]['ha-params'].should be_a(Fixnum) + @policy[:definition]['ha-params'].should == 2 end - it 'does not accept non-numeric max-length value' do - definition = { 'max-length' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid max-length value.*future}) + it 'should not accept non-numeric ha-params for ha-mode exactly' do + definition = {'ha-mode' => 'exactly', 'ha-params' => 'nonnumeric'} + expect { + @policy[:definition] = definition + }.to raise_error(Puppet::Error, /Invalid ha-params.*nonnumeric.*exactly/) end - it 'accepts and convert the max-length-bytes value' do - definition = { 'max-length-bytes' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['max-length-bytes']).to eq(1_800_000) - end - - it 'does not accept non-numeric max-length-bytes value' do - definition = { 'max-length-bytes' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid max-length-bytes value.*future}) - end - - it 'accepts and convert the shards-per-node value' do - definition = { 'shards-per-node' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['shards-per-node']).to eq(1_800_000) - end - - it 'does not accept non-numeric shards-per-node value' do - definition = { 'shards-per-node' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid shards-per-node value.*future}) - end - - it 'accepts and convert the ha-sync-batch-size value' do - definition = { 'ha-sync-batch-size' => '1800000' } - policy[:definition] = definition - expect(policy[:definition]['ha-sync-batch-size']).to eq(1_800_000) - end - - it 'does not accept non-numeric ha-sync-batch-size value' do - definition = { 'ha-sync-batch-size' => 'future' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid ha-sync-batch-size value.*future}) - end - - context 'accepts list value in ha-params when ha-mode = nodes' do - before do - policy[:definition] = definition - end - - let(:definition) { { 'ha-mode' => 'nodes', 'ha-params' => ['rabbit@rabbit-01', 'rabbit@rabbit-02'] } } - - it { expect(policy[:definition]['ha-mode']).to eq('nodes') } - it { expect(policy[:definition]['ha-params']).to be_a(Array) } - it { expect(policy[:definition]['ha-params'][0]).to eq('rabbit@rabbit-01') } - it { expect(policy[:definition]['ha-params'][1]).to eq('rabbit@rabbit-02') } + it 'should accept and convert the expires value' do + definition = {'expires' => '1800000'} + @policy[:definition] = definition + @policy[:definition]['expires'].should be_a(Fixnum) + @policy[:definition]['expires'].should == 1800000 end - it 'does not accept non-list value in ha-params when ha-mode = nodes' do - definition = { 'ha-mode' => 'nodes', 'ha-params' => 'this-will-fail' } - expect do - policy[:definition] = definition - end.to raise_error(Puppet::Error, %r{Invalid definition, value this-will-fail for key ha-params is not an array}) + it 'should not accept non-numeric expires value' do + definition = {'expires' => 'future'} + expect { + @policy[:definition] = definition + }.to raise_error(Puppet::Error, /Invalid expires value.*future/) end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_queue_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_queue_spec.rb index 625c3fe3e..4fd7b34ef 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_queue_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_queue_spec.rb @@ -1,58 +1,60 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_queue' +require 'json' describe Puppet::Type.type(:rabbitmq_queue) do - let(:queue) do - Puppet::Type.type(:rabbitmq_queue).new( - name: 'foo@bar', - durable: :true, - arguments: { + before :each do + @queue = Puppet::Type.type(:rabbitmq_queue).new( + :name => 'foo@bar', + :durable => :true, + :arguments => { 'x-message-ttl' => 45, 'x-dead-letter-exchange' => 'deadexchange' } ) end - - it 'accepts an queue name' do - queue[:name] = 'dan@pl' - expect(queue[:name]).to eq('dan@pl') + it 'should accept an queue name' do + @queue[:name] = 'dan@pl' + @queue[:name].should == 'dan@pl' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_queue).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'does not allow whitespace in the name' do - expect do - queue[:name] = 'b r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow whitespace in the name' do + expect { + @queue[:name] = 'b r' + }.to raise_error(Puppet::Error, /Valid values match/) end - it 'does not allow names without @' do - expect do - queue[:name] = 'b_r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow names without @' do + expect { + @queue[:name] = 'b_r' + }.to raise_error(Puppet::Error, /Valid values match/) end - it 'accepts an arguments with numbers value' do - queue[:arguments] = { 'x-message-ttl' => 30 } - expect(queue[:arguments].to_json).to eq('{"x-message-ttl":30}') + it 'should accept an arguments with numbers value' do + @queue[:arguments] = {'x-message-ttl' => 30} + @queue[:arguments].to_json.should == "{\"x-message-ttl\":30}" + @queue[:arguments]['x-message-ttl'].should == 30 end - it 'accepts an arguments with string value' do - queue[:arguments] = { 'x-dead-letter-exchange' => 'catchallexchange' } - expect(queue[:arguments].to_json).to eq('{"x-dead-letter-exchange":"catchallexchange"}') + it 'should accept an arguments with string value' do + @queue[:arguments] = {'x-dead-letter-exchange' => 'catchallexchange'} + @queue[:arguments].to_json.should == "{\"x-dead-letter-exchange\":\"catchallexchange\"}" end - it 'accepts an queue durable' do - queue[:durable] = :true - expect(queue[:durable]).to eq(:true) + it 'should accept an queue durable' do + @queue[:durable] = :true + @queue[:durable].should == :true end - it 'accepts a user' do - queue[:user] = :root - expect(queue[:user]).to eq(:root) + it 'should accept a user' do + @queue[:user] = :root + @queue[:user].should == :root end - it 'accepts a password' do - queue[:password] = :PaSsw0rD - expect(queue[:password]).to eq(:PaSsw0rD) + it 'should accept a password' do + @queue[:password] = :PaSsw0rD + @queue[:password].should == :PaSsw0rD end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb index b6951c4f9..7cb66eac3 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_permissions_spec.rb @@ -1,57 +1,55 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_user_permissions' describe Puppet::Type.type(:rabbitmq_user_permissions) do - let(:perms) do - Puppet::Type.type(:rabbitmq_user_permissions).new(name: 'foo@bar') + before :each do + @perms = Puppet::Type.type(:rabbitmq_user_permissions).new(:name => 'foo@bar') end - - it 'accepts a valid hostname name' do - perms[:name] = 'dan@bar' - expect(perms[:name]).to eq('dan@bar') + it 'should accept a valid hostname name' do + @perms[:name] = 'dan@bar' + @perms[:name].should == 'dan@bar' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_user_permissions).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'fails when names dont have a @' do - expect do - perms[:name] = 'bar' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should fail when names dont have a @' do + expect { + @perms[:name] = 'bar' + }.to raise_error(Puppet::Error, /Valid values match/) end [:configure_permission, :read_permission, :write_permission].each do |param| - it 'does not default to anything' do - expect(perms[param]).to eq(nil) + it 'should not default to anything' do + @perms[param].should == nil end it "should accept a valid regex for #{param}" do - perms[param] = '.*?' - expect(perms[param]).to eq('.*?') + @perms[param] = '.*?' + @perms[param].should == '.*?' end it "should accept an empty string for #{param}" do - perms[param] = '' - expect(perms[param]).to eq('') + @perms[param] = '' + @perms[param].should == '' end it "should not accept invalid regex for #{param}" do - expect do - perms[param] = '*' - end.to raise_error(Puppet::Error, %r{Invalid regexp}) + expect { + @perms[param] = '*' + }.to raise_error(Puppet::Error, /Invalid regexp/) end end - # rubocop:disable RSpec/MultipleExpectations - { rabbitmq_vhost: 'dan@test', rabbitmq_user: 'test@dan' }.each do |k, v| + {:rabbitmq_vhost => 'dan@test', :rabbitmq_user => 'test@dan'}.each do |k,v| it "should autorequire #{k}" do - vhost = if k == :rabbitmq_vhost - Puppet::Type.type(k).new(name: 'test') - else - Puppet::Type.type(k).new(name: 'test', password: 'pass') - end - perm = Puppet::Type.type(:rabbitmq_user_permissions).new(name: v) - Puppet::Resource::Catalog.new :testing do |conf| + if k == :rabbitmq_vhost + vhost = Puppet::Type.type(k).new(:name => "test") + else + vhost = Puppet::Type.type(k).new(:name => "test", :password => 'pass') + end + perm = Puppet::Type.type(:rabbitmq_user_permissions).new(:name => v) + config = Puppet::Resource::Catalog.new :testing do |conf| [vhost, perm].each { |resource| conf.add_resource resource } end rel = perm.autorequire[0] - expect(rel.source.ref).to eq(vhost.ref) - expect(rel.target.ref).to eq(perm.ref) + rel.source.ref.should == vhost.ref + rel.target.ref.should == perm.ref end end - # rubocop:enable RSpec/MultipleExpectations end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_spec.rb index eaa72d0f5..a73d9c936 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_user_spec.rb @@ -1,50 +1,52 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_user' describe Puppet::Type.type(:rabbitmq_user) do - let(:user) do - Puppet::Type.type(:rabbitmq_user).new(name: 'foo', password: 'pass') + before :each do + @user = Puppet::Type.type(:rabbitmq_user).new(:name => 'foo', :password => 'pass') end - - it 'accepts a user name' do - user[:name] = 'dan' - expect(user[:name]).to eq('dan') + it 'should accept a user name' do + @user[:name] = 'dan' + @user[:name].should == 'dan' + @user[:admin].should == :false end - it 'admin is false when :admin is not set' do - user[:name] = 'dan' - expect(user[:admin]).to eq(:false) + it 'should accept a password' do + @user[:password] = 'foo' + @user[:password].should == 'foo' end - it 'accepts a password' do - user[:password] = 'foo' - expect(user[:password]).to eq('foo') + it 'should require a password' do + expect { + Puppet::Type.type(:rabbitmq_user).new(:name => 'foo') + }.to raise_error(/must set password/) end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_user).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'does not allow whitespace in the name' do - expect do - user[:name] = 'b r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow whitespace in the name' do + expect { + @user[:name] = 'b r' + }.to raise_error(Puppet::Error, /Valid values match/) end [true, false, 'true', 'false'].each do |val| it "admin property should accept #{val}" do - user[:admin] = val - expect(user[:admin]).to eq(val.to_s.to_sym) + @user[:admin] = val + @user[:admin].should == val.to_s.to_sym end end - it 'does not accept non-boolean values for admin' do - expect do - user[:admin] = 'yes' - end.to raise_error(Puppet::Error, %r{Invalid value}) + it 'should not accept non-boolean values for admin' do + expect { + @user[:admin] = 'yes' + }.to raise_error(Puppet::Error, /Invalid value/) end - it 'does not accept tags with spaces' do - expect do - user[:tags] = ['policy maker'] - end.to raise_error(Puppet::Error, %r{Invalid tag}) + it 'should not accept tags with spaces' do + expect { + @user[:tags] = ['policy maker'] + }.to raise_error(Puppet::Error, /Invalid tag/) end - it 'does not accept the administrator tag' do - expect do - user[:tags] = ['administrator'] - end.to raise_error(Puppet::Error, %r{must use admin property}) + it 'should not accept the administrator tag' do + expect { + @user[:tags] = ['administrator'] + }.to raise_error(Puppet::Error, /must use admin property/) end end diff --git a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_vhost_spec.rb b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_vhost_spec.rb index 38337b17a..70b8e3741 100644 --- a/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_vhost_spec.rb +++ b/3rdparty/modules/rabbitmq/spec/unit/puppet/type/rabbitmq_vhost_spec.rb @@ -1,21 +1,21 @@ -require 'spec_helper' +require 'puppet' +require 'puppet/type/rabbitmq_vhost' describe Puppet::Type.type(:rabbitmq_vhost) do - let(:vhost) do - Puppet::Type.type(:rabbitmq_vhost).new(name: 'foo') + before :each do + @vhost = Puppet::Type.type(:rabbitmq_vhost).new(:name => 'foo') end - - it 'accepts a vhost name' do - vhost[:name] = 'dan' - expect(vhost[:name]).to eq('dan') + it 'should accept a vhost name' do + @vhost[:name] = 'dan' + @vhost[:name].should == 'dan' end - it 'requires a name' do - expect do + it 'should require a name' do + expect { Puppet::Type.type(:rabbitmq_vhost).new({}) - end.to raise_error(Puppet::Error, 'Title or name must be provided') + }.to raise_error(Puppet::Error, 'Title or name must be provided') end - it 'does not allow whitespace in the name' do - expect do - vhost[:name] = 'b r' - end.to raise_error(Puppet::Error, %r{Valid values match}) + it 'should not allow whitespace in the name' do + expect { + @vhost[:name] = 'b r' + }.to raise_error(Puppet::Error, /Valid values match/) end end diff --git a/3rdparty/modules/rabbitmq/templates/inetrc.erb b/3rdparty/modules/rabbitmq/templates/inetrc.erb deleted file mode 100644 index 270684907..000000000 --- a/3rdparty/modules/rabbitmq/templates/inetrc.erb +++ /dev/null @@ -1,5 +0,0 @@ -%% This file managed by Puppet -%% Template Path: <%= @module_name %>/templates/inetrc -<%- if @ipv6 -%> -{inet6, true}. -<%- end -%> diff --git a/3rdparty/modules/rabbitmq/templates/rabbitmq-env.conf.erb b/3rdparty/modules/rabbitmq/templates/rabbitmq-env.conf.erb index dabeef0e9..0c6b5d198 100644 --- a/3rdparty/modules/rabbitmq/templates/rabbitmq-env.conf.erb +++ b/3rdparty/modules/rabbitmq/templates/rabbitmq-env.conf.erb @@ -1,5 +1,5 @@ -<% @environment_variables.sort.each do |key, value| -%> - <%- unless value.nil? -%> -<%= key %>=<%= value %> - <%- end -%> -<% end -%> +<%- @environment_variables.keys.sort.each do |key| -%> +<%- if @environment_variables[key] != 'UNSET' -%> +<%= key %>=<%= @environment_variables[key] %> +<%- end -%> +<%- end -%> diff --git a/3rdparty/modules/rabbitmq/templates/rabbitmq-server.service.d/limits.conf b/3rdparty/modules/rabbitmq/templates/rabbitmq-server.service.d/limits.conf new file mode 100644 index 000000000..78773864e --- /dev/null +++ b/3rdparty/modules/rabbitmq/templates/rabbitmq-server.service.d/limits.conf @@ -0,0 +1,2 @@ +[Service] +LimitNOFILE=<%= @file_limit %> diff --git a/3rdparty/modules/rabbitmq/templates/rabbitmq.config.erb b/3rdparty/modules/rabbitmq/templates/rabbitmq.config.erb index af45aa87f..4e2154e55 100644 --- a/3rdparty/modules/rabbitmq/templates/rabbitmq.config.erb +++ b/3rdparty/modules/rabbitmq/templates/rabbitmq.config.erb @@ -5,73 +5,33 @@ {ssl, [{versions, [<%= @ssl_versions.sort.map { |v| "'#{v}'" }.join(', ') %>]}]}, <%- end -%> {rabbit, [ -<%- if @heartbeat -%> - {heartbeat, <%=@heartbeat%>}, -<% end -%> - {loopback_users, [<%= @loopback_users.map { |u| "<<\"#{u}\">>" }.join(', ') %>]}, -<% if @auth_backends -%> - {auth_backends, [<%= @auth_backends.map { |v| "#{v}" }.join(', ') %>]}, -<% elsif @ldap_auth -%> +<% if @ldap_auth -%> {auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]}, <% end -%> <% if @config_cluster -%> {cluster_nodes, {[<%= @cluster_nodes.map { |n| "\'rabbit@#{n}\'" }.join(', ') %>], <%= @cluster_node_type %>}}, {cluster_partition_handling, <%= @cluster_partition_handling %>}, <% end -%> - {tcp_listen_options, [ - <%- unless @config_ranch -%> - binary, - {packet, raw}, - {reuseaddr, true}, - <%- end -%> - <%- if @tcp_keepalive -%> - {keepalive, true}, - <%- end -%> - <%- if @tcp_backlog -%> - {backlog, <%= @tcp_backlog %>}, - <%- end -%> - <%- if @tcp_sndbuf -%> - {sndbuf, <%= @tcp_sndbuf %>}, - <%- end -%> - <%- if @tcp_recbuf -%> - {recbuf, <%= @tcp_recbuf %>}, - <%- end -%> - {nodelay, true}, - {linger, {true, 0}}, - {exit_on_close, false} - ]}, -<%- if @collect_statistics_interval -%> - {collect_statistics_interval, <%= @collect_statistics_interval %>}, +<%- if @tcp_keepalive -%> + {tcp_listen_options, [{keepalive, true}]}, <%- end -%> <%- if @ssl_only -%> {tcp_listeners, []}, -<%- elsif @interface -%> +<%- elsif @interface != 'UNSET' -%> {tcp_listeners, [{"<%= @interface%>", <%= @port %>}]}, <%- end -%> <%- if @ssl -%> - <%- if @ssl_interface -%> + <%- if @ssl_interface != 'UNSET' -%> {ssl_listeners, [{"<%= @ssl_interface%>", <%= @ssl_port %>}]}, <%- else -%> {ssl_listeners, [<%= @ssl_port %>]}, <%- end -%> {ssl_options, [ - <%- if @ssl_cacert -%> + <%- if @ssl_cacert != 'UNSET' -%> {cacertfile,"<%= @ssl_cacert %>"}, <%- end -%> {certfile,"<%= @ssl_cert %>"}, {keyfile,"<%= @ssl_key %>"}, - <%- if @ssl_cert_password -%> - {password, "<%= @ssl_cert_password %>"}, - <%- end -%> - <%- if @ssl_depth -%> - {depth,<%= @ssl_depth %>}, - <%- end -%> - <%- if @ssl_dhfile -%> - {dhfile, "<%= @ssl_dhfile %>"}, - <%- end -%> - {secure_renegotiate,<%= @ssl_secure_renegotiate %>}, - {reuse_sessions,<%= @ssl_reuse_sessions %>}, - {honor_cipher_order,<%= @ssl_honor_cipher_order %>}, {verify,<%= @ssl_verify %>}, {fail_if_no_peer_cert,<%= @ssl_fail_if_no_peer_cert %>} <%- if @ssl_versions -%> @@ -84,9 +44,9 @@ <%- end -%> ]}, <%- end -%> -<% if scope['rabbitmq::config_variables'] -%> -<%- scope['rabbitmq::config_variables'].keys.sort.each do |key| -%> - {<%= key %>, <%= scope['rabbitmq::config_variables'][key] %>}, +<% if @config_variables -%> +<%- @config_variables.keys.sort.each do |key| -%> + {<%= key %>, <%= @config_variables[key] %>}, <%- end -%> <%- end -%> {default_user, <<"<%= @default_user %>">>}, @@ -96,27 +56,16 @@ <%= @config_kernel_variables.sort.map{|k,v| "{#{k}, #{v}}"}.join(",\n ") %> ]} <%- end -%> -<%- if @admin_enable or !@config_management_variables.empty? -%>, +<%- if @admin_enable -%>, {rabbitmq_management, [ - <%- if !@config_management_variables.empty? -%> - <%= @config_management_variables.sort.map{|k,v| "{#{k}, #{v}}"}.join(",\n ") %> - <%- end -%> -<%- if @admin_enable -%> -<%- if !@config_management_variables.empty? -%>,<%-end-%> {listener, [ -<%- if @ssl && @management_ssl -%> - <%- if @management_ip_address -%> - {ip, "<%= @management_ip_address %>"}, - <%- end -%> +<%- if @ssl -%> {port, <%= @ssl_management_port %>}, {ssl, true}, - {ssl_opts, [<%- if @ssl_cacert %> - {cacertfile, "<%= @ssl_cacert %>"}, - <%- end -%> + {ssl_opts, [<%- if @ssl_cacert != 'UNSET' -%>{cacertfile, "<%= @ssl_cacert %>"},<%- end -%> + {certfile, "<%= @ssl_cert %>"}, - {keyfile, "<%= @ssl_key %>"}, - {verify,<%= @ssl_management_verify %>}, - {fail_if_no_peer_cert,<%= @ssl_management_fail_if_no_peer_cert %>} + {keyfile, "<%= @ssl_key %>"} <%- if @ssl_versions -%> ,{versions, [<%= @ssl_versions.sort.map { |v| "'#{v}'" }.join(', ') %>]} <%- end -%> @@ -127,25 +76,16 @@ <%- end -%> ]} <%- else -%> - <%- if @management_ip_address -%> - {ip, "<%= @management_ip_address %>"}, - <%- end -%> {port, <%= @management_port %>} <%- end -%> ]} -<%- end -%> ]} <%- end -%> <% if @config_stomp -%>, % Configure the Stomp Plugin listening port {rabbitmq_stomp, [ - <%- if @stomp_ssl_only -%> - {tcp_listeners, []} - <%- else -%> {tcp_listeners, [<%= @stomp_port %>]} - <%- end -%> - <%- if @ssl && @ssl_stomp_port -%> - , + <%- if @ssl && @ssl_stomp_port -%>, {ssl_listeners, [<%= @ssl_stomp_port %>]} <%- end -%> ]} @@ -155,9 +95,7 @@ {rabbitmq_auth_backend_ldap, [ {other_bind, <%= @ldap_other_bind %>}, {servers, ["<%= @ldap_server %>"]}, -<% if @ldap_user_dn_pattern -%> {user_dn_pattern, "<%= @ldap_user_dn_pattern %>"}, -<%- end -%> {use_ssl, <%= @ldap_use_ssl %>}, {port, <%= @ldap_port %>}, <% if @ldap_config_variables -%> @@ -168,17 +106,5 @@ {log, <%= @ldap_log %>} ]} <%- end -%> -<%- if @config_shovel and not @config_shovel_statics.empty? -%>, - {rabbitmq_shovel, - [{shovels,[ - <%= @config_shovel_statics.sort.map{|k,v| "{#{k},[#{v}]}"}.join(",\n ") %> - ]}]} -<%- end -%> -<%- if @config_additional_variables and not @config_additional_variables.empty? -%>, -% Additional config -<%- @config_additional_variables.keys.sort.each do |key| -%> - {<%= key %>, <%= @config_additional_variables[key] %>}<%- if key != @config_additional_variables.keys.sort.last %>,<% end %> -<%- end -%> -<%- end -%> ]. % EOF diff --git a/3rdparty/modules/rabbitmq/templates/rabbitmqadmin.conf.erb b/3rdparty/modules/rabbitmq/templates/rabbitmqadmin.conf.erb index c7ed0a276..d76c81147 100644 --- a/3rdparty/modules/rabbitmq/templates/rabbitmqadmin.conf.erb +++ b/3rdparty/modules/rabbitmq/templates/rabbitmqadmin.conf.erb @@ -1,16 +1,7 @@ [default] -<% if @ssl && @management_ssl -%> +<% if @ssl -%> ssl = True -ssl_ca_cert_file = <%= @ssl_cacert %> -ssl_cert_file = <%= @ssl_cert %> -ssl_key_file = <%= @ssl_key %> port = <%= @ssl_management_port %> -<% unless @management_hostname -%> -hostname = <%= @fqdn %> -<% end -%> <% else -%> port = <%= @management_port %> <% end -%> -<% if @management_hostname %> -hostname = <%= @management_hostname %> -<% end -%> diff --git a/3rdparty/modules/rabbitmq/tests/erlang_deps.pp b/3rdparty/modules/rabbitmq/tests/erlang_deps.pp new file mode 100644 index 000000000..d34d9441f --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/erlang_deps.pp @@ -0,0 +1,5 @@ +# install first the garethr-erlang module. See README.md +include 'erlang' + +class { 'erlang': epel_enable => true} +Class['erlang'] -> Class['rabbitmq'] diff --git a/3rdparty/modules/rabbitmq/tests/full.pp b/3rdparty/modules/rabbitmq/tests/full.pp new file mode 100644 index 000000000..c6dfc5cf0 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/full.pp @@ -0,0 +1,21 @@ +class { 'rabbitmq::repo::apt': + pin => '900', +}-> +class { 'rabbitmq::server': + delete_guest_user => true, +# version => '2.4.1', +}-> +rabbitmq_user { 'dan': + admin => true, + password => 'pass', + provider => 'rabbitmqctl', +}-> +rabbitmq_vhost { 'myhost': + provider => 'rabbitmqctl', +} +rabbitmq_user_permissions { 'dan@myhost': + configure_permission => '.*', + read_permission => '.*', + write_permission => '.*', + provider => 'rabbitmqctl', +} diff --git a/3rdparty/modules/rabbitmq/tests/permissions/add.pp b/3rdparty/modules/rabbitmq/tests/permissions/add.pp new file mode 100644 index 000000000..fb71af143 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/permissions/add.pp @@ -0,0 +1,9 @@ +rabbitmq_user { 'blah7': + password => 'foo', +} +rabbitmq_vhost { 'test5': } +rabbitmq_user_permissions { 'blah7@test5': + configure_permission => 'config2', + read_permission => 'ready', + #write_permission => 'ready', +} diff --git a/3rdparty/modules/rabbitmq/tests/plugin.pp b/3rdparty/modules/rabbitmq/tests/plugin.pp new file mode 100644 index 000000000..6c5605b9e --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/plugin.pp @@ -0,0 +1,11 @@ +class { 'rabbitmq::server': + config_stomp => true, +} + +$rabbitmq_plugins = [ 'amqp_client', 'rabbitmq_stomp' ] + +rabbitmq_plugin { $rabbitmq_plugins: + ensure => present, + require => Class['rabbitmq::server'], + provider => 'rabbitmqplugins', +} diff --git a/3rdparty/modules/rabbitmq/tests/repo/apt.pp b/3rdparty/modules/rabbitmq/tests/repo/apt.pp new file mode 100644 index 000000000..f1373737f --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/repo/apt.pp @@ -0,0 +1,2 @@ +# requires pupetlabs-apt +include rabbitmq::repo::apt diff --git a/3rdparty/modules/rabbitmq/tests/server.pp b/3rdparty/modules/rabbitmq/tests/server.pp new file mode 100644 index 000000000..caea89377 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/server.pp @@ -0,0 +1,5 @@ +class { 'rabbitmq::server': + port => '5672', + delete_guest_user => true, + version => 'latest', +} diff --git a/3rdparty/modules/rabbitmq/tests/service.pp b/3rdparty/modules/rabbitmq/tests/service.pp new file mode 100644 index 000000000..9a00d2b6d --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/service.pp @@ -0,0 +1 @@ +class { 'rabbitmq::service': } diff --git a/3rdparty/modules/rabbitmq/tests/site.pp b/3rdparty/modules/rabbitmq/tests/site.pp new file mode 100644 index 000000000..75ebcfed3 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/site.pp @@ -0,0 +1,16 @@ +node default { + + $rabbitmq_plugins = [ 'amqp_client', 'rabbitmq_stomp' ] + + class { 'rabbitmq::server': + config => '[ {rabbit_stomp, [{tcp_listeners, [1234]} ]} ].', + } + + # Required for MCollective + rabbitmq_plugin { $rabbitmq_plugins: + ensure => present, + require => Class['rabbitmq::server'], + provider => 'rabbitmqplugins', + } +} + diff --git a/3rdparty/modules/rabbitmq/tests/user/add.pp b/3rdparty/modules/rabbitmq/tests/user/add.pp new file mode 100644 index 000000000..2c3a87096 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/user/add.pp @@ -0,0 +1,4 @@ +rabbitmq_user { ['blah2', 'blah3', 'blah4']: + password => 'phoey!', + #provider => 'rabbitmqctl', +} diff --git a/3rdparty/modules/rabbitmq/tests/vhosts/add.pp b/3rdparty/modules/rabbitmq/tests/vhosts/add.pp new file mode 100644 index 000000000..d818a1923 --- /dev/null +++ b/3rdparty/modules/rabbitmq/tests/vhosts/add.pp @@ -0,0 +1 @@ +rabbitmq_vhost { ['fooey', 'blah']: }