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

52 lines
1.3 KiB
Ruby
Raw Normal View History

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