From 3d21cbfb413d740107c5fc1312033a8b519e01ca Mon Sep 17 00:00:00 2001 From: amartynov Date: Tue, 20 Oct 2015 16:12:50 +0300 Subject: [PATCH] #819: added 'projects' object into response --- devops-service/app/api2/handlers/stack_template.rb | 13 ++++++++++--- devops-service/app/api2/routes/v2.0.rb | 2 +- devops-service/exceptions/conflict_exception.rb | 7 +++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/devops-service/app/api2/handlers/stack_template.rb b/devops-service/app/api2/handlers/stack_template.rb index 1626b32..e03760c 100644 --- a/devops-service/app/api2/handlers/stack_template.rb +++ b/devops-service/app/api2/handlers/stack_template.rb @@ -35,22 +35,29 @@ module Devops if envs_with_this_template.empty? Devops::Db.connector.stack_template_delete id 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 private + # returns: + # { + # "project" => ["deploy_env"] + # } def envs_using_stack_template(id) projects = Devops::Db.connector.projects_and_deploy_envs_by_field('stack_template', id) envs_with_this_template = [] + res = {} projects.each do |project| + array = [] + res[project] = array project.deploy_envs.each do |env| - envs_with_this_template << "#{project.id}-#{env.identifier}" + array << env.identifier end end - envs_with_this_template + res end end diff --git a/devops-service/app/api2/routes/v2.0.rb b/devops-service/app/api2/routes/v2.0.rb index aa41bb5..fcf126a 100644 --- a/devops-service/app/api2/routes/v2.0.rb +++ b/devops-service/app/api2/routes/v2.0.rb @@ -114,7 +114,7 @@ module Devops error ConflictException do e = env["sinatra.error"] logger.warn e.message - halt_response(e.message, 409) + create_response(e.message, e.object, 409) end error InvalidPrivileges do diff --git a/devops-service/exceptions/conflict_exception.rb b/devops-service/exceptions/conflict_exception.rb index a392c85..632ebb1 100644 --- a/devops-service/exceptions/conflict_exception.rb +++ b/devops-service/exceptions/conflict_exception.rb @@ -1,4 +1,11 @@ class ConflictException < StandardError + attr_reader :object + + def initialize msg, object=nil + super(msg) + @object = object + end + end