55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 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 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
 | |
| 
 | 
