This commit is contained in:
amartynov 2015-09-22 12:49:27 +03:00
parent c98b418552
commit 8598c98a92
6 changed files with 27 additions and 18 deletions

View File

@ -119,12 +119,9 @@ module Devops
def update_project_users id
deploy_env, users = parser.project_users
project = Devops::Db.connector.project(id)
dbusers = Devops::Db.connector.users(users).map{|u| u.id}
buf = dbusers - users
Validators::Helpers::Users.new(run_list).validate!
project.add_authorized_user users, deploy_env
Devops::Db.connector.project_update(project)
info = "Users '#{dbusers.join("', '")}' has been added to '#{id}' project's authorized users"
info << ", invalid users: '#{buf.join("', '")}'" unless buf.empty?
info = "Users '#{users.join("', '")}' has been added to '#{id}' project's authorized users."
info
end
@ -133,7 +130,6 @@ module Devops
deploy_env, users = parser.project_users
project = Devops::Db.connector.project(id)
project.remove_authorized_user users, deploy_env
Devops::Db.connector.project_update project
"Users '#{users.join("', '")}' have been removed from '#{id}' project's authorized users"
end

View File

@ -97,9 +97,13 @@ module Connectors
project
end
def set_project_deploy_env_field(project_id, env, field, value)
@collection.update({"_id" => project_id, "deploy_envs.identifier" => env}, {"$set" => {"deploy_envs.$.#{field}" => value}})
end
def set_project_env_run_list(project_id, env, run_list)
Helpers::RunList.new(run_list).validate!
@collection.update({"_id" => project_id, "deploy_envs.identifier" => env}, {"$set" => {"deploy_envs.$.run_list" => run_list}})
set_project_deploy_env_field(project_id, env, "run_list", run_list)
end
def set_project_run_list(project_id, env, run_list)

View File

@ -73,11 +73,13 @@ module Devops
self.deploy_envs.each do |e|
return unless e.users.is_a?(Array)
e.users = (e.users + new_users).uniq
Devops::Db.connector.set_project_deploy_env_field(self.id, e.identifier, "users", e.users)
end
else
e = self.deploy_env(env)
return unless e.users.is_a?(Array)
e.users = (e.users + new_users).uniq
Devops::Db.connector.set_project_deploy_env_field(self.id, e.identifier, "users", e.users)
end
end
@ -88,11 +90,13 @@ module Devops
self.deploy_envs.each do |e|
return unless e.users.is_a?(Array)
e.users = e.users - users
Devops::Db.connector.set_project_deploy_env_field(self.id, e.identifier, "users", e.users)
end
else
e = self.deploy_env(env)
return unless e.users.is_a?(Array)
e.users = e.users - users
Devops::Db.connector.set_project_deploy_env_field(self.id, e.identifier, "users", e.users)
end
end

View File

@ -21,7 +21,7 @@ class MongoConnector
[:available_images, :add_available_images, :delete_available_images] => :filters_connector,
[:project, :projects_all, :projects, :project_names_with_envs,
:projects_by_image, :projects_by_user, :project_insert, :project_update,
:project_delete, :is_project_exists?, :check_project_auth, :set_project_run_list, :set_project_env_run_list, :add_deploy_env_to_project, :remove_deploy_env_from_project, :project_update_field] => :projects_connector,
:project_delete, :is_project_exists?, :check_project_auth, :set_project_run_list, :set_project_deploy_env_field, :set_project_env_run_list, :add_deploy_env_to_project, :remove_deploy_env_from_project, :project_update_field] => :projects_connector,
[:project_templates, :project_template_insert, :project_template_update,
:project_template_delete] => :projects_templates_connector,
[:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id,

View File

@ -1,14 +1,5 @@
module Validators
class DeployEnv::Users < Base
def valid?
mongo_users = ::Devops::Db.connector.users_names(@model.users)
@nonexistent_users = @model.users - mongo_users
@nonexistent_users.empty?
end
def message
Devops::Messages.t("project.deploy_env.validation.users.not_exist", users: @nonexistent_users.join("', '"))
end
delegate_to_helper_validator { Helpers::Users.new(@model.users) }
end
end

View File

@ -0,0 +1,14 @@
module Validators
class Helpers::Users < Base
def valid?
mongo_users = ::Devops::Db.connector.users_names(@model)
@nonexistent_users = @model - mongo_users
@nonexistent_users.empty?
end
def message
Devops::Messages.t("project.deploy_env.validation.users.not_exist", users: @nonexistent_users.join("', '"))
end
end
end