68 lines
1.8 KiB
Ruby
68 lines
1.8 KiB
Ruby
require "providers/provider_factory"
|
|
require "commands/image"
|
|
|
|
module Devops
|
|
module Version2_0
|
|
module Handler
|
|
class Image
|
|
|
|
extend ImageCommands
|
|
|
|
def self.get_images
|
|
lambda {
|
|
images = settings.mongo.images(params[:provider])
|
|
json(images.map {|i| i.to_hash})
|
|
}
|
|
end
|
|
|
|
def self.get_provider_images
|
|
lambda {
|
|
json get_images(settings.mongo, params[:provider])
|
|
}
|
|
end
|
|
|
|
def self.get_image
|
|
lambda {
|
|
json settings.mongo.image(params[:image_id])
|
|
}
|
|
end
|
|
|
|
def self.create_image
|
|
lambda {
|
|
image = create_object_from_json_body
|
|
settings.mongo.image_insert Image.new(image)
|
|
create_response "Created", nil, 201
|
|
}
|
|
end
|
|
|
|
def self.update_image
|
|
lambda {
|
|
settings.mongo.image params[:image_id]
|
|
image = Image.new(create_object_from_json_body)
|
|
image.id = params[:image_id]
|
|
settings.mongo.image_update image
|
|
create_response("Image '#{params[:image_id]}' has been updated")
|
|
}
|
|
end
|
|
|
|
def self.delete_image
|
|
lambda {
|
|
projects = settings.mongo.projects_by_image params[:image_id]
|
|
unless projects.empty?
|
|
ar = []
|
|
projects.each do |p|
|
|
ar += p.deploy_envs.select{|e| e.image == params[:image_id]}.map{|e| "#{p.id}.#{e.identifier}"}
|
|
end
|
|
raise DependencyError.new "Deleting is forbidden: Image is used in #{ar.join(", ")}"
|
|
end
|
|
|
|
r = settings.mongo.image_delete params[:image_id]
|
|
create_response("Image '#{params[:image_id]}' has been removed")
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|