fluke/devops-service/app/api2/handlers/image.rb

59 lines
1.5 KiB
Ruby

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 provider_account_images provider, account
Image.get_available_provider_images(Devops::Db.connector, provider, account)
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