From 8b017700b27b313e3b4256290fbaf09cfe6b207a Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 16 Sep 2015 14:51:29 +0300 Subject: [PATCH] #716: check if stack template is in use before deleting --- .../app/api2/handlers/stack_template.rb | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/devops-service/app/api2/handlers/stack_template.rb b/devops-service/app/api2/handlers/stack_template.rb index 0e37173..735b617 100644 --- a/devops-service/app/api2/handlers/stack_template.rb +++ b/devops-service/app/api2/handlers/stack_template.rb @@ -30,7 +30,30 @@ module Devops end def delete_stack_template id - Devops::Db.connector.stack_template_delete id + envs_with_this_template = envs_using_stack_template(id) + + 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(', ')}") + end + end + + private + + def envs_using_stack_template(id) + projects = Devops::Db.connector.projects_all + envs_with_this_template = [] + + projects.each do |project| + project.deploy_envs.each do |env| + next unless env.respond_to?(:stack_template) + if env.stack_template == id + envs_with_this_template << "#{project.id}-#{env.identifier}" + end + end + end + envs_with_this_template end end