This commit is contained in:
amartynov 2015-09-11 16:18:20 +03:00
parent c7ea85c84c
commit e893beaf55
6 changed files with 36 additions and 15 deletions

View File

@ -57,12 +57,25 @@ module Devops
end end
end end
def add_deploy_env_to_project id def add_or_update_deploy_env id, deploy_env
project = Devops::Db.connector.project(id) project = Devops::Db.connector.project(id)
env = parser.add_deploy_env_to_project env = parser.add_or_update_deploy_env
begin
db_env = project.deploy_env(deploy_env)
begin
project.deploy_env(env.identifier)
raise InvalidRecord.new("Can not change environment '#{deploy_env}' to '#{env.identifier}', environment '#{env.identifier}' already exist") unless deploy_env == env.identifier
rescue RecordNotFound => e
end
project.delete_deploy_env(deploy_env)
project.add_deploy_env(env)
"Deploy environment '#{deploy_env}' has been updated in project '#{project.id}'"
rescue RecordNotFound => e
env.identifier = deploy_env
project.add_deploy_env env project.add_deploy_env env
"Deploy environment '#{env.identifier}' has been added to project '#{project.id}'" "Deploy environment '#{env.identifier}' has been added to project '#{project.id}'"
end end
end
def update_project id def update_project id
project = parser.update project = parser.update
@ -119,8 +132,7 @@ module Devops
project.delete project.delete
"Project '#{id}' is deleted" "Project '#{id}' is deleted"
else else
project.remove_env deploy_env project.delete_deploy_env(deploy_env)
Devops::Db.connector.project_update project
"Project '#{id}'. Deploy environment '#{deploy_env}' has been deleted" "Project '#{id}'. Deploy environment '#{deploy_env}' has been deleted"
end end
end end
@ -211,6 +223,7 @@ module Devops
return [uri] return [uri]
end end
=begin
def create_roles project_id, envs def create_roles project_id, envs
all_roles = KnifeFactory.instance.roles all_roles = KnifeFactory.instance.roles
return " Can't get roles list" if all_roles.nil? return " Can't get roles list" if all_roles.nil?
@ -235,7 +248,7 @@ module Devops
def create_new_roles old_project, new_project def create_new_roles old_project, new_project
old_project.deploy_envs.each do |e| old_project.deploy_envs.each do |e|
new_project.remove_env(e.identifier) new_project.deploy_envs.delete_if {|env| e.identifier == env.identifier}
end end
create_roles new_project.id, new_project.deploy_envs create_roles new_project.id, new_project.deploy_envs
end end
@ -251,6 +264,7 @@ module Devops
info info
end end
end end
=end
end end
end end

View File

@ -39,7 +39,7 @@ module Devops
Devops::Model::Project.new(body) Devops::Model::Project.new(body)
end end
def add_deploy_env_to_project def add_or_update_deploy_env
body = create_object_from_json_body body = create_object_from_json_body
Devops::Model::DeployEnvFactory.create(body) Devops::Model::DeployEnvFactory.create(body)
end end

View File

@ -247,10 +247,10 @@ module Devops
end end
end end
# Add new deploy_env to project # Add or update deploy_env
# #
# * *Request* # * *Request*
# - method : PATCH # - method : PUT
# - headers : # - headers :
# - Accept: application/json # - Accept: application/json
# - Content-Type: application/json # - Content-Type: application/json
@ -274,11 +274,11 @@ module Devops
# } # }
# #
# * *Returns* : # * *Returns* :
# 200 - Created # 200 - Updated
app.patch_with_headers "/project/:id/deploy_env", :headers => [:accept, :content_type] do |id| app.put_with_headers "/project/:id/:deploy_env", :headers => [:accept, :content_type] do |id, deploy_env|
check_privileges("project", "w") check_privileges("project", "w")
begin begin
res = Devops::API2_0::Handler::Project.new(request).add_deploy_env_to_project(id) res = Devops::API2_0::Handler::Project.new(request).add_or_update_deploy_env(id, deploy_env)
create_response(res, nil, 200) create_response(res, nil, 200)
rescue InvalidRecord => e rescue InvalidRecord => e
halt_response(e.message) halt_response(e.message)

View File

@ -108,6 +108,10 @@ module Connectors
@collection.update({"_id" => id}, {'$push' => {deploy_envs: env.to_hash} }) @collection.update({"_id" => id}, {'$push' => {deploy_envs: env.to_hash} })
end end
def remove_deploy_env_from_project id, env
@collection.update({"_id" => id}, {'$pull' => {deploy_envs: {identifier: env}} })
end
private private
def list(query={}, query_options={}) def list(query={}, query_options={})

View File

@ -115,14 +115,17 @@ module Devops
end end
=end =end
def remove_env env def delete_deploy_env env
self.deploy_envs.delete_if {|e| e.identifier == env} self.deploy_envs.delete_if {|e| e.identifier == env}
Devops::Db.connector.remove_deploy_env_from_project self.id, env
end end
=begin
def add_env env def add_env env
raise InvalidRecord.new "Deploy environment '#{env.identifier}' for project '#{self.id}' already exist" unless self.deploy_env(env.identifier).nil? raise InvalidRecord.new "Deploy environment '#{env.identifier}' for project '#{self.id}' already exist" unless self.deploy_env(env.identifier).nil?
self.deploy_envs.push env self.deploy_envs.push env
end end
=end
def to_hash def to_hash
h = self.to_hash_without_id h = self.to_hash_without_id

View File

@ -21,7 +21,7 @@ class MongoConnector
[:available_images, :add_available_images, :delete_available_images] => :filters_connector, [:available_images, :add_available_images, :delete_available_images] => :filters_connector,
[:project, :projects_all, :projects, :project_names_with_envs, [:project, :projects_all, :projects, :project_names_with_envs,
:projects_by_image, :projects_by_user, :project_insert, :project_update, :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] => :projects_connector, :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] => :projects_connector,
[:project_templates, :project_template_insert, :project_template_update, [:project_templates, :project_template_insert, :project_template_update,
:project_template_delete] => :projects_templates_connector, :project_template_delete] => :projects_templates_connector,
[:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id, [:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id,