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