class Cloudkeeper::One::Opennebula::ApplianceHandler

Constants

LEAVE_ID_AS_IS
ONEADMIN_ID

Attributes

identifier[R]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 12
def initialize
  super

  @identifier = Cloudkeeper::One::Settings[:identifier]
end

Public Instance Methods

chmod(element, permissions) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 35
def chmod(element, permissions)
  raise Cloudkeeper::One::Errors::ArgumentError, 'element cannot be nil' unless element

  handle_opennebula_error do
    element.chmod_octet permissions
    element.info!
  end
end
delete(element) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 26
def delete(element)
  raise Cloudkeeper::One::Errors::ArgumentError, 'element cannot be nil' unless element

  id = element.id
  handle_opennebula_error { element.delete }

  timeout { sleep(Cloudkeeper::One::Opennebula::Handler::API_POLLING_WAIT) while exist? id }
end
find_by_appliance_id(appliance_id) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 18
def find_by_appliance_id(appliance_id)
  find_all_by "TEMPLATE/#{Tags::APPLIANCE_ID}" => appliance_id
end
find_by_image_list_id(image_list_id) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 22
def find_by_image_list_id(image_list_id)
  find_all_by "TEMPLATE/#{Tags::APPLIANCE_IMAGE_LIST_ID}" => image_list_id
end
update(element, template) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 44
def update(element, template)
  raise Cloudkeeper::One::Errors::ArgumentError, 'element cannot be nil' unless element

  handle_opennebula_error do
    element.update template, true
    element.info!
  end
end

Private Instance Methods

find(method, xpaths = {}) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 69
def find(method, xpaths = {})
  reload!

  pool.send(method) { |element| element["TEMPLATE/#{Tags::ID}"] == identifier && evaluate_xpaths(element, xpaths) }
end
find_all_by(attributes) click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 55
def find_all_by(attributes)
  xpaths = attributes.clone

  find_all xpaths
end
timeout() { || ... } click to toggle source
# File lib/cloudkeeper/one/opennebula/appliance_handler.rb, line 61
def timeout
  raise Cloudkeeper::One::Errors::ArgumentError, 'Timeout called without a block!' unless block_given?

  Timeout.timeout(Cloudkeeper::One::Settings[:'opennebula-api-call-timeout']) { yield }
rescue Timeout::Error
  raise Cloudkeeper::One::Errors::Opennebula::ApiCallTimeoutError, 'Operation was not successful within the timeout'
end