59 lines
1.5 KiB
Ruby
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
|
|
|