class Cloudkeeper::One::Opennebula::ImageHandler
Constants
- EXPIRED_PERMISSIONS
- IMAGE_STATES
Public Class Methods
new()
click to toggle source
Calls superclass method
Cloudkeeper::One::Opennebula::ApplianceHandler::new
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 14 def initialize super @pool = OpenNebula::ImagePool.new client end
Public Instance Methods
delete(image)
click to toggle source
Calls superclass method
Cloudkeeper::One::Opennebula::ApplianceHandler#delete
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 25 def delete(image) raise Cloudkeeper::One::Errors::ArgumentError, 'image cannot be nil' unless image id = image.id if used? image logger.warn "Image with id #{id.inspect} cannot be removed, still in use" return end super image end
disable(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 38 def disable(image) raise Cloudkeeper::One::Errors::ArgumentError, 'image cannot be nil' unless image id = image.id if disabled? image logger.info "Image with id #{id.inspect} is already disabled, skipping" return end unless free? image logger.warn "Image with id #{id.inspect} cannot be disabled" return end handle_opennebula_error { image.disable } timeout { sleep(Cloudkeeper::One::Opennebula::Handler::API_POLLING_WAIT) until disabled? image } end
disabled?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 102 def disabled?(image) is?(image) { image.state_str == IMAGE_STATES[:disabled] } end
error?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 118 def error?(image) is?(image) { image.state_str == IMAGE_STATES[:error] } end
expire(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 58 def expire(image) raise Cloudkeeper::One::Errors::ArgumentError, 'image cannot be nil' unless image id = image.id if expired? image logger.debug("Image with id #{id.inspect} is already expired, skipping") return end chmod image, EXPIRED_PERMISSIONS disable image expiration_attribute = "#{Tags::EXPIRED} = \"yes\"" handle_opennebula_error { image.rename("EXPIRED_#{Time.now.to_i}_#{image.name}") } handle_opennebula_error { image.update(expiration_attribute, true) } end
expired()
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 19 def expired xpaths = { "TEMPLATE/#{Tags::EXPIRED}" => 'yes' } find_all xpaths end
expired?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 98 def expired?(image) is?(image) { image["TEMPLATE/#{Tags::EXPIRED}"] == 'yes' } end
free?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 114 def free?(image) is?(image) { image.state_str == IMAGE_STATES[:ready] || image.state_str == IMAGE_STATES[:error] } end
ready?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 106 def ready?(image) is?(image) { image.state_str == IMAGE_STATES[:ready] } end
register(image_template, datastore)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 77 def register(image_template, datastore) image_alloc = OpenNebula::Image.build_xml image = OpenNebula::Image.new(image_alloc, client) handle_opennebula_error { image.allocate(image_template, datastore.id) } timeout do until ready? image if error? image delete image raise Cloudkeeper::One::Errors::Opennebula::ResourceStateError, image['TEMPLATE/ERROR'] end sleep(Cloudkeeper::One::Opennebula::Handler::API_POLLING_WAIT) end end chmod image, Cloudkeeper::One::Settings[:'appliances-permissions'] image end
used?(image)
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 110 def used?(image) is?(image) { image.state_str == IMAGE_STATES[:used] } end
Private Instance Methods
is?(image) { || ... }
click to toggle source
# File lib/cloudkeeper/one/opennebula/image_handler.rb, line 124 def is?(image) raise Cloudkeeper::One::Errors::ArgumentError, 'image cannot be nil' unless image handle_opennebula_error { image.info! } yield end