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,11 +57,24 @@ module Devops
end
end
def add_deploy_env_to_project id
def add_or_update_deploy_env id, deploy_env
project = Devops::Db.connector.project(id)
env = parser.add_deploy_env_to_project
project.add_deploy_env env
"Deploy environment '#{env.identifier}' has been added to project '#{project.id}'"
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
"Deploy environment '#{env.identifier}' has been added to project '#{project.id}'"
end
end
def update_project id
@ -119,8 +132,7 @@ module Devops
project.delete
"Project '#{id}' is deleted"
else
project.remove_env deploy_env
Devops::Db.connector.project_update project
project.delete_deploy_env(deploy_env)
"Project '#{id}'. Deploy environment '#{deploy_env}' has been deleted"
end
end
@ -211,6 +223,7 @@ module Devops
return [uri]
end
=begin
def create_roles project_id, envs
all_roles = KnifeFactory.instance.roles
return " Can't get roles list" if all_roles.nil?
@ -235,7 +248,7 @@ module Devops
def create_new_roles old_project, new_project
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
create_roles new_project.id, new_project.deploy_envs
end
@ -251,6 +264,7 @@ module Devops
info
end
end
=end
end
end

View File

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

View File

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

View File

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

View File

@ -115,14 +115,17 @@ module Devops
end
=end
def remove_env env
def delete_deploy_env env
self.deploy_envs.delete_if {|e| e.identifier == env}
Devops::Db.connector.remove_deploy_env_from_project self.id, env
end
=begin
def add_env env
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
end
=end
def to_hash
h = self.to_hash_without_id

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] => :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_template_delete] => :projects_templates_connector,
[:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id,