#819: added 'projects' object into response

This commit is contained in:
amartynov 2015-10-20 16:12:50 +03:00
parent 3a4a9c59da
commit 3d21cbfb41
3 changed files with 18 additions and 4 deletions

View File

@ -35,22 +35,29 @@ module Devops
if envs_with_this_template.empty? if envs_with_this_template.empty?
Devops::Db.connector.stack_template_delete id Devops::Db.connector.stack_template_delete id
else else
raise ConflictException.new("Stack template '#{id}' is already in use in #{envs_with_this_template.join(', ')}") raise ConflictException.new("Stack template '#{id}' is already in use in #{envs_with_this_template.map{|project, envs| "#{project}: #{envs.join(', ')}"}.join('; ')}", {projects: envs_with_this_template})
end end
end end
private private
# returns:
# {
# "project" => ["deploy_env"]
# }
def envs_using_stack_template(id) def envs_using_stack_template(id)
projects = Devops::Db.connector.projects_and_deploy_envs_by_field('stack_template', id) projects = Devops::Db.connector.projects_and_deploy_envs_by_field('stack_template', id)
envs_with_this_template = [] envs_with_this_template = []
res = {}
projects.each do |project| projects.each do |project|
array = []
res[project] = array
project.deploy_envs.each do |env| project.deploy_envs.each do |env|
envs_with_this_template << "#{project.id}-#{env.identifier}" array << env.identifier
end end
end end
envs_with_this_template res
end end
end end

View File

@ -114,7 +114,7 @@ module Devops
error ConflictException do error ConflictException do
e = env["sinatra.error"] e = env["sinatra.error"]
logger.warn e.message logger.warn e.message
halt_response(e.message, 409) create_response(e.message, e.object, 409)
end end
error InvalidPrivileges do error InvalidPrivileges do

View File

@ -1,4 +1,11 @@
class ConflictException < StandardError class ConflictException < StandardError
attr_reader :object
def initialize msg, object=nil
super(msg)
@object = object
end
end end