require "providers/provider_factory" require "commands/image" require "app/api2/parsers/image" require_relative "request_handler" module Devops module API2_0 module Handler class Image < RequestHandler set_parser Devops::API2_0::Parser::ImageParser extend ImageCommands def images Devops::Db.connector.images(parser.images) end def provider_images provider Image.get_available_provider_images(Devops::Db.connector, provider) end def image id Devops::Db.connector.image(id) end def create_image Devops::Db.connector.image_insert parser.image end def update_image id Devops::Db.connector.image id obj = parser.image obj.id = id Devops::Db.connector.image_update obj end def delete_image id projects = Devops::Db.connector.projects_by_image id unless projects.empty? ar = [] projects.each do |p| ar += p.deploy_envs.select{|e| e.respond_to?(:image)}.select{|e| e.image == id}.map{|e| "#{p.id}.#{e.identifier}"} end raise DependencyError.new "Deleting is forbidden: Image is used in #{ar.join(", ")}" end Devops::Db.connector.image_delete id end end end end end