use devops config
This commit is contained in:
parent
a63aaa4651
commit
53961231d9
@ -1,21 +1,27 @@
|
|||||||
require "mongo"
|
require "mongo"
|
||||||
|
require "../core/devops-config"
|
||||||
|
|
||||||
class UsersPermissionsUpdater
|
class UsersPermissionsUpdater
|
||||||
attr_reader :users_collection
|
attr_reader :users_collection
|
||||||
|
|
||||||
def initialize(config)
|
def initialize
|
||||||
db = config[:db] || "devops"
|
DevopsConfig.read
|
||||||
host = config[:host] || "localhost"
|
config = DevopsConfig.config
|
||||||
port = config[:port] || 27017
|
|
||||||
user = config[:user]
|
db = config[:mongo_db] || "devops"
|
||||||
password = config[:password]
|
host = config[:mongo_host] || "localhost"
|
||||||
|
port = config[:mongo_port] || 27017
|
||||||
|
user = config[:mongo_user]
|
||||||
|
password = config[:mongo_password]
|
||||||
|
|
||||||
|
puts
|
||||||
|
puts "Initialized updater for db '#{db}' located on host '#{host}'"
|
||||||
|
|
||||||
@db = Mongo::MongoClient.new(host, port).db(db)
|
@db = Mongo::MongoClient.new(host, port).db(db)
|
||||||
@db.authenticate(user, password)
|
@db.authenticate(user, password)
|
||||||
@users_collection = @db.collection('users')
|
@users_collection = @db.collection('users')
|
||||||
end
|
end
|
||||||
|
|
||||||
# returns users who have rwx in permissions.server field
|
|
||||||
def admins
|
def admins
|
||||||
users_collection.find('privileges.server' => 'rwx')
|
users_collection.find('privileges.server' => 'rwx')
|
||||||
end
|
end
|
||||||
@ -24,38 +30,26 @@ class UsersPermissionsUpdater
|
|||||||
users_collection.find('privileges.server' => 'r')
|
users_collection.find('privileges.server' => 'r')
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_priveleges_to_users(users, privilege_name, privilege_value)
|
def set_priveleges_to_users(users, privilege_value)
|
||||||
ids = users.to_a.map {|u| u['_id']}
|
ids = users.to_a.map {|u| u['_id']}
|
||||||
|
puts "users: #{ids.join(', ')}"
|
||||||
|
|
||||||
users_collection.update(
|
users_collection.update(
|
||||||
{"_id" => {'$in' => ids}},
|
{"_id" => {'$in' => ids}},
|
||||||
{
|
{
|
||||||
"$set" => {
|
"$set" => {
|
||||||
"privileges.#{privilege_name}" => privilege_value
|
"privileges.stack" => privilege_value,
|
||||||
|
"privileges.stack_template" => privilege_value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_admin_or_readers
|
|
||||||
all = users_collection.find({}).to_a
|
|
||||||
admin_ids = admins.to_a.map {|u| u['_id']}
|
|
||||||
reader_ids = readers.to_a.map {|u| u['_id']}
|
|
||||||
admin_or_reader_ids = admin_ids + reader_ids
|
|
||||||
|
|
||||||
result = all.delete_if do |user|
|
|
||||||
admin_or_reader_ids.include?(user['_id'])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
updater = UsersPermissionsUpdater.new(user: 'user', password: 'pass', db: 'devops_prod')
|
updater = UsersPermissionsUpdater.new
|
||||||
updater.set_priveleges_to_users(updater.admins, 'stack', 'rwx')
|
updater.set_priveleges_to_users(updater.admins, 'rwx')
|
||||||
updater.set_priveleges_to_users(updater.admins, 'stack_template', 'rwx')
|
puts "Admin privileges updated"
|
||||||
|
|
||||||
updater.set_priveleges_to_users(updater.readers, 'stack', 'r')
|
updater.set_priveleges_to_users(updater.readers, 'r')
|
||||||
updater.set_priveleges_to_users(updater.readers, 'stack_template', 'r')
|
puts "Readers privileges updated"
|
||||||
|
|
||||||
|
|
||||||
puts "Updated admins"
|
|
||||||
puts "Updated readers"
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user