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

59 lines
1.5 KiB
Ruby
Raw Normal View History

2014-12-22 14:22:04 +03:00
require "providers/provider_factory"
require "commands/image"
2015-07-30 15:37:43 +03:00
require "app/api2/parsers/image"
2015-07-27 15:40:10 +03:00
require_relative "request_handler"
2014-12-22 14:22:04 +03:00
module Devops
2015-07-27 15:40:10 +03:00
module API2_0
2014-12-22 14:22:04 +03:00
module Handler
2015-07-27 15:40:10 +03:00
class Image < RequestHandler
2014-12-22 14:22:04 +03:00
2015-07-30 15:37:43 +03:00
set_parser Devops::API2_0::Parser::ImageParser
2014-12-22 14:22:04 +03:00
extend ImageCommands
2015-07-30 15:37:43 +03:00
def images
Devops::Db.connector.images(parser.images)
2014-12-22 14:22:04 +03:00
end
2015-07-27 15:40:10 +03:00
def provider_images provider
Image.get_available_provider_images(Devops::Db.connector, provider)
2014-12-22 14:22:04 +03:00
end
def provider_account_images provider, account
Image.get_available_provider_images(Devops::Db.connector, provider, account)
end
2015-07-27 18:27:52 +03:00
def image id
2015-07-27 15:40:10 +03:00
Devops::Db.connector.image(id)
2014-12-22 14:22:04 +03:00
end
2015-07-30 15:37:43 +03:00
def create_image
Devops::Db.connector.image_insert parser.image
2014-12-22 14:22:04 +03:00
end
2015-07-30 15:37:43 +03:00
def update_image id
2015-07-27 15:40:10 +03:00
Devops::Db.connector.image id
2015-07-30 15:37:43 +03:00
obj = parser.image
2015-07-27 15:40:10 +03:00
obj.id = id
2015-07-27 18:27:52 +03:00
Devops::Db.connector.image_update obj
2014-12-22 14:22:04 +03:00
end
2015-07-27 15:40:10 +03:00
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}"}
2014-12-22 14:22:04 +03:00
end
2015-07-27 15:40:10 +03:00
raise DependencyError.new "Deleting is forbidden: Image is used in #{ar.join(", ")}"
end
2014-12-22 14:22:04 +03:00
2015-07-27 15:40:10 +03:00
Devops::Db.connector.image_delete id
2014-12-22 14:22:04 +03:00
end
end
end
end
end