2014-12-22 14:22:04 +03:00
|
|
|
require "providers/provider_factory"
|
|
|
|
|
require "commands/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
|
|
|
|
|
|
|
|
extend ImageCommands
|
|
|
|
|
|
2015-07-27 15:40:10 +03:00
|
|
|
def images provider
|
|
|
|
|
Devops::Db.connector.images(provider)
|
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
|
|
|
|
|
|
2015-07-27 15:40:10 +03:00
|
|
|
def get_image id
|
|
|
|
|
Devops::Db.connector.image(id)
|
2014-12-22 14:22:04 +03:00
|
|
|
end
|
|
|
|
|
|
2015-07-27 15:40:10 +03:00
|
|
|
def create_image image
|
|
|
|
|
Devops::Db.connector.image_insert Devops::Model::Image.new(image)
|
2014-12-22 14:22:04 +03:00
|
|
|
end
|
|
|
|
|
|
2015-07-27 15:40:10 +03:00
|
|
|
def update_image id, image
|
|
|
|
|
Devops::Db.connector.image id
|
|
|
|
|
obj = Devops::Model::Image.new(image)
|
|
|
|
|
obj.id = id
|
|
|
|
|
Devops::Db.connector.image_update image
|
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
|
|
|
|
|
|