mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-15 05:53:13 +00:00
Upgrade php from 5.4.* to 5.5.*
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
# Fact: rabbitmq_erlang_cookie
|
||||
#
|
||||
# Purpose: To determine the current erlang cookie value.
|
||||
#
|
||||
# Resolution: Returns the cookie.
|
||||
Facter.add(:rabbitmq_erlang_cookie) do
|
||||
confine :osfamily => %w[Debian RedHat Suse]
|
||||
|
||||
setcode do
|
||||
if File.exists?('/var/lib/rabbitmq/.erlang.cookie')
|
||||
File.read('/var/lib/rabbitmq/.erlang.cookie')
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
@@ -0,0 +1,89 @@
|
||||
require 'puppet'
|
||||
Puppet::Type.type(:rabbitmq_exchange).provide(:rabbitmqadmin) do
|
||||
|
||||
commands :rabbitmqctl => '/usr/sbin/rabbitmqctl'
|
||||
has_command(:rabbitmqadmin, '/usr/local/bin/rabbitmqadmin') do
|
||||
environment( { 'HOME' => '' })
|
||||
end
|
||||
defaultfor :feature => :posix
|
||||
|
||||
def should_vhost
|
||||
if @should_vhost
|
||||
@should_vhost
|
||||
else
|
||||
@should_vhost = resource[:name].split('@')[1]
|
||||
end
|
||||
end
|
||||
|
||||
def self.all_vhosts
|
||||
vhosts = []
|
||||
parse_command(rabbitmqctl('list_vhosts')).collect do |vhost|
|
||||
vhosts.push(vhost)
|
||||
end
|
||||
vhosts
|
||||
end
|
||||
|
||||
def self.all_exchanges(vhost)
|
||||
exchanges = []
|
||||
parse_command(rabbitmqctl('list_exchanges', '-p', vhost, 'name', 'type'))
|
||||
end
|
||||
|
||||
def self.parse_command(cmd_output)
|
||||
# first line is:
|
||||
# Listing exchanges/vhosts ...
|
||||
# while the last line is
|
||||
# ...done.
|
||||
#
|
||||
cmd_output.split(/\n/)[1..-2]
|
||||
end
|
||||
|
||||
def self.instances
|
||||
resources = []
|
||||
all_vhosts.each do |vhost|
|
||||
all_exchanges(vhost).collect do |line|
|
||||
name, type = 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
|
||||
exchange = {
|
||||
:type => type,
|
||||
:ensure => :present,
|
||||
:name => "%s@%s" % [name, vhost],
|
||||
}
|
||||
resources << new(exchange) if exchange[:type]
|
||||
end
|
||||
end
|
||||
resources
|
||||
end
|
||||
|
||||
def self.prefetch(resources)
|
||||
packages = instances
|
||||
resources.keys.each do |name|
|
||||
if provider = packages.find{ |pkg| pkg.name == name }
|
||||
resources[name].provider = provider
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def exists?
|
||||
@property_hash[:ensure] == :present
|
||||
end
|
||||
|
||||
def create
|
||||
vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : ''
|
||||
name = resource[:name].split('@')[0]
|
||||
rabbitmqadmin('declare', 'exchange', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", "name=#{name}", "type=#{resource[:type]}")
|
||||
@property_hash[:ensure] = :present
|
||||
end
|
||||
|
||||
def destroy
|
||||
vhost_opt = should_vhost ? "--vhost=#{should_vhost}" : ''
|
||||
name = resource[:name].split('@')[0]
|
||||
rabbitmqadmin('delete', 'exchange', vhost_opt, "--user=#{resource[:user]}", "--password=#{resource[:password]}", "name=#{name}")
|
||||
@property_hash[:ensure] = :absent
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,47 @@
|
||||
Puppet::Type.type(:rabbitmq_plugin).provide(:rabbitmqplugins) 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
|
||||
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
|
||||
|
||||
defaultfor :feature => :posix
|
||||
|
||||
def self.instances
|
||||
rabbitmqplugins('list', '-E').split(/\n/).map do |line|
|
||||
if line.split(/\s+/)[1] =~ /^(\S+)$/
|
||||
new(:name => $1)
|
||||
else
|
||||
raise Puppet::Error, "Cannot parse invalid plugins line: #{line}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
rabbitmqplugins('enable', resource[:name])
|
||||
end
|
||||
|
||||
def destroy
|
||||
rabbitmqplugins('disable', resource[:name])
|
||||
end
|
||||
|
||||
def exists?
|
||||
rabbitmqplugins('list', '-E').split(/\n/).detect do |line|
|
||||
line.split(/\s+/)[1].match(/^#{resource[:name]}$/)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,98 @@
|
||||
require 'puppet'
|
||||
require 'set'
|
||||
Puppet::Type.type(:rabbitmq_user).provide(:rabbitmqctl) do
|
||||
|
||||
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
|
||||
rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
|
||||
if line =~ /^(\S+)(\s+\[.*?\]|)$/
|
||||
new(:name => $1)
|
||||
else
|
||||
raise Puppet::Error, "Cannot parse invalid user line: #{line}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
rabbitmqctl('add_user', resource[:name], resource[:password])
|
||||
if resource[:admin] == :true
|
||||
make_user_admin()
|
||||
end
|
||||
if !resource[:tags].nil?
|
||||
set_user_tags(resource[:tags])
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
rabbitmqctl('delete_user', resource[:name])
|
||||
end
|
||||
|
||||
def exists?
|
||||
rabbitmqctl('list_users').split(/\n/)[1..-2].detect do |line|
|
||||
line.match(/^#{Regexp.escape(resource[:name])}(\s+(\[.*?\]|\S+)|)$/)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def tags
|
||||
get_user_tags.entries.sort
|
||||
end
|
||||
|
||||
|
||||
def tags=(tags)
|
||||
if ! tags.nil?
|
||||
set_user_tags(tags)
|
||||
end
|
||||
end
|
||||
|
||||
def admin
|
||||
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()
|
||||
else
|
||||
usertags = get_user_tags
|
||||
usertags.delete('administrator')
|
||||
rabbitmqctl('set_user_tags', resource[:name], usertags.entries.sort)
|
||||
end
|
||||
end
|
||||
|
||||
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 make_user_admin
|
||||
usertags = get_user_tags
|
||||
usertags.add('administrator')
|
||||
rabbitmqctl('set_user_tags', resource[:name], usertags.entries.sort)
|
||||
end
|
||||
|
||||
private
|
||||
def get_user_tags
|
||||
match = rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
|
||||
line.match(/^#{Regexp.escape(resource[:name])}\s+\[(.*?)\]/)
|
||||
end.compact.first
|
||||
Set.new(match[1].split(/, /)) if match
|
||||
end
|
||||
end
|
@@ -0,0 +1,105 @@
|
||||
Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl) do
|
||||
|
||||
if Puppet::PUPPETVERSION.to_f < 3
|
||||
commands :rabbitmqctl => 'rabbitmqctl'
|
||||
else
|
||||
has_command(:rabbitmqctl, 'rabbitmqctl') do
|
||||
environment :HOME => "/tmp"
|
||||
end
|
||||
end
|
||||
|
||||
defaultfor :feature=> :posix
|
||||
|
||||
# cache users permissions
|
||||
def self.users(name, vhost)
|
||||
@users = {} unless @users
|
||||
unless @users[name]
|
||||
@users[name] = {}
|
||||
rabbitmqctl('list_user_permissions', name).split(/\n/)[1..-2].each do |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]
|
||||
end
|
||||
|
||||
def users(name, vhost)
|
||||
self.class.users(name, vhost)
|
||||
end
|
||||
|
||||
def should_user
|
||||
if @should_user
|
||||
@should_user
|
||||
else
|
||||
@should_user = resource[:name].split('@')[0]
|
||||
end
|
||||
end
|
||||
|
||||
def should_vhost
|
||||
if @should_vhost
|
||||
@should_vhost
|
||||
else
|
||||
@should_vhost = resource[:name].split('@')[1]
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
resource[:configure_permission] ||= "''"
|
||||
resource[:read_permission] ||= "''"
|
||||
resource[:write_permission] ||= "''"
|
||||
rabbitmqctl('set_permissions', '-p', should_vhost, should_user, resource[:configure_permission], resource[:write_permission], resource[:read_permission])
|
||||
end
|
||||
|
||||
def destroy
|
||||
rabbitmqctl('clear_permissions', '-p', should_vhost, should_user)
|
||||
end
|
||||
|
||||
# I am implementing prefetching in exists b/c I need to be sure
|
||||
# that the rabbitmq package is installed before I make this call.
|
||||
def exists?
|
||||
users(should_user, should_vhost)
|
||||
end
|
||||
|
||||
def configure_permission
|
||||
users(should_user, should_vhost)[:configure]
|
||||
end
|
||||
|
||||
def configure_permission=(perm)
|
||||
set_permissions
|
||||
end
|
||||
|
||||
def read_permission
|
||||
users(should_user, should_vhost)[:read]
|
||||
end
|
||||
|
||||
def read_permission=(perm)
|
||||
set_permissions
|
||||
end
|
||||
|
||||
def write_permission
|
||||
users(should_user, should_vhost)[:write]
|
||||
end
|
||||
|
||||
def write_permission=(perm)
|
||||
set_permissions
|
||||
end
|
||||
|
||||
# implement memoization so that we only call set_permissions once
|
||||
def set_permissions
|
||||
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
|
||||
|
||||
end
|
@@ -0,0 +1,35 @@
|
||||
Puppet::Type.type(:rabbitmq_vhost).provide(:rabbitmqctl) do
|
||||
|
||||
if Puppet::PUPPETVERSION.to_f < 3
|
||||
commands :rabbitmqctl => 'rabbitmqctl'
|
||||
else
|
||||
has_command(:rabbitmqctl, 'rabbitmqctl') do
|
||||
environment :HOME => "/tmp"
|
||||
end
|
||||
end
|
||||
|
||||
def self.instances
|
||||
rabbitmqctl('list_vhosts').split(/\n/)[1..-2].map do |line|
|
||||
if line =~ /^(\S+)$/
|
||||
new(:name => $1)
|
||||
else
|
||||
raise Puppet::Error, "Cannot parse invalid user line: #{line}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
rabbitmqctl('add_vhost', resource[:name])
|
||||
end
|
||||
|
||||
def destroy
|
||||
rabbitmqctl('delete_vhost', resource[:name])
|
||||
end
|
||||
|
||||
def exists?
|
||||
out = rabbitmqctl('list_vhosts').split(/\n/)[1..-2].detect do |line|
|
||||
line.match(/^#{Regexp.escape(resource[:name])}$/)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,54 @@
|
||||
Puppet::Type.newtype(:rabbitmq_exchange) do
|
||||
desc 'Native type for managing rabbitmq exchanges'
|
||||
|
||||
ensurable do
|
||||
defaultto(:present)
|
||||
newvalue(:present) do
|
||||
provider.create
|
||||
end
|
||||
newvalue(:absent) do
|
||||
provider.destroy
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Name of exchange'
|
||||
newvalues(/^\S*@\S+$/)
|
||||
end
|
||||
|
||||
newparam(:type) do
|
||||
desc 'Exchange type to be set *on creation*'
|
||||
newvalues(/^\S+$/)
|
||||
end
|
||||
|
||||
newparam(:user) do
|
||||
desc 'The user to use to connect to rabbitmq'
|
||||
defaultto('guest')
|
||||
newvalues(/^\S+$/)
|
||||
end
|
||||
|
||||
newparam(:password) do
|
||||
desc 'The password to use to connect to rabbitmq'
|
||||
defaultto('guest')
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
validate do
|
||||
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
|
||||
|
||||
autorequire(:rabbitmq_vhost) do
|
||||
[self[:name].split('@')[1]]
|
||||
end
|
||||
|
||||
autorequire(:rabbitmq_user) do
|
||||
[self[:user]]
|
||||
end
|
||||
|
||||
autorequire(:rabbitmq_user_permissions) do
|
||||
["#{self[:user]}@#{self[:name].split('@')[1]}"]
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,19 @@
|
||||
Puppet::Type.newtype(:rabbitmq_plugin) do
|
||||
desc 'manages rabbitmq plugins'
|
||||
|
||||
ensurable do
|
||||
defaultto(:present)
|
||||
newvalue(:present) do
|
||||
provider.create
|
||||
end
|
||||
newvalue(:absent) do
|
||||
provider.destroy
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
'name of the plugin to enable'
|
||||
newvalues(/^\S+$/)
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,46 @@
|
||||
Puppet::Type.newtype(:rabbitmq_user) do
|
||||
desc 'Native type for managing rabbitmq users'
|
||||
|
||||
ensurable do
|
||||
defaultto(:present)
|
||||
newvalue(:present) do
|
||||
provider.create
|
||||
end
|
||||
newvalue(:absent) do
|
||||
provider.destroy
|
||||
end
|
||||
end
|
||||
|
||||
autorequire(:service) { 'rabbitmq-server' }
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Name of user'
|
||||
newvalues(/^\S+$/)
|
||||
end
|
||||
|
||||
# newproperty(:password) do
|
||||
newparam(:password) do
|
||||
desc 'User password to be set *on creation*'
|
||||
end
|
||||
|
||||
newproperty(:admin) do
|
||||
desc 'rather or not user should be an admin'
|
||||
newvalues(/true|false/)
|
||||
munge do |value|
|
||||
# converting to_s incase its a boolean
|
||||
value.to_s.to_sym
|
||||
end
|
||||
defaultto :false
|
||||
end
|
||||
|
||||
newproperty(:tags, :array_matching => :all) do
|
||||
desc 'additional tags for the user'
|
||||
end
|
||||
|
||||
validate do
|
||||
if self[:ensure] == :present and ! self[:password]
|
||||
raise ArgumentError, 'must set password when creating user' unless self[:password]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,59 @@
|
||||
Puppet::Type.newtype(:rabbitmq_user_permissions) do
|
||||
desc 'Type for managing rabbitmq user permissions'
|
||||
|
||||
ensurable do
|
||||
defaultto(:present)
|
||||
newvalue(:present) do
|
||||
provider.create
|
||||
end
|
||||
newvalue(:absent) do
|
||||
provider.destroy
|
||||
end
|
||||
end
|
||||
|
||||
autorequire(:service) { 'rabbitmq-server' }
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'combination of user@vhost to grant privileges to'
|
||||
newvalues(/^\S+@\S+$/)
|
||||
end
|
||||
|
||||
newproperty(:configure_permission) do
|
||||
desc 'regexp representing configuration permissions'
|
||||
validate do |value|
|
||||
resource.validate_permissions(value)
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:read_permission) do
|
||||
desc 'regexp representing read permissions'
|
||||
validate do |value|
|
||||
resource.validate_permissions(value)
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:write_permission) do
|
||||
desc 'regexp representing write permissions'
|
||||
validate do |value|
|
||||
resource.validate_permissions(value)
|
||||
end
|
||||
end
|
||||
|
||||
autorequire(:rabbitmq_vhost) do
|
||||
[self[:name].split('@')[1]]
|
||||
end
|
||||
|
||||
autorequire(:rabbitmq_user) do
|
||||
[self[:name].split('@')[0]]
|
||||
end
|
||||
|
||||
# I may want to dissalow whitespace
|
||||
def validate_permissions(value)
|
||||
begin
|
||||
Regexp.new(value)
|
||||
rescue RegexpError
|
||||
raise ArgumentError, "Invalid regexp #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@@ -0,0 +1,19 @@
|
||||
Puppet::Type.newtype(:rabbitmq_vhost) do
|
||||
desc 'manages rabbitmq vhosts'
|
||||
|
||||
ensurable do
|
||||
defaultto(:present)
|
||||
newvalue(:present) do
|
||||
provider.create
|
||||
end
|
||||
newvalue(:absent) do
|
||||
provider.destroy
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
'name of the vhost to add'
|
||||
newvalues(/^\S+$/)
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user