fuel-main/upgrade/config/5.0/modules/mongodb/lib/puppet/provider/mongodb_user/mongodb.rb

50 lines
2.4 KiB
Ruby

Puppet::Type.type(:mongodb_user).provide(:mongodb) do
require File.join(File.dirname(__FILE__), '..', 'common.rb')
desc "Manage users for a MongoDB database."
defaultfor :kernel => 'Linux'
include MongoCommon
def create
Puppet.debug "mongodb_user: #{@resource[:name]} database '#{@resource[:database]}' create"
mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.insert({user:'#{@resource[:name]}', pwd:'#{@resource[:password_hash]}', roles: #{@resource[:roles].inspect}})")
end
def destroy
Puppet.debug "mongodb_user: #{@resource[:name]} database '#{@resource[:database]}' destroy"
mongo("db.getMongo().getDB('#{@resource[:database]}').removeUser('#{@resource[:name]}')")
end
def exists?
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' exists?"
block_until_mongodb(@resource[:tries])
exists = mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.find({user:'#{@resource[:name]}'}).count()").strip.to_i > 0
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' exists? #{exists}"
exists
end
def password_hash
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' password_hash get"
hash = mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.findOne({user:'#{@resource[:name]}'})['pwd']").strip
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' password_hash: #{hash}"
hash
end
def password_hash=(value)
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' password_hash set #{value.inspect}"
mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.update({user:'#{@resource[:name]}'}, { $set: {pwd:'#{value}'}})")
end
def roles
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' roles get"
roles = mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.findOne({user:'#{@resource[:name]}'})['roles']").strip.split(',').sort
Puppet.debug "mongodb_user: '#{@resource[:name]}' roles: #{roles.inspect}"
roles
end
def roles=(value)
Puppet.debug "mongodb_user: '#{@resource[:name]}' database '#{@resource[:database]}' roles set #{value.inspect}"
mongo("db.getMongo().getDB('#{@resource[:database]}').system.users.update({user:'#{@resource[:name]}'}, { $set: {roles: #{@resource[:roles].inspect}}})")
end
end