Sha256: 65b5a5dc6ceeb2f229b3c339af30c5a2a0313568dfbad427a14f027cb3038fba

Contents?: true

Size: 1.73 KB

Versions: 8

Compression:

Stored size: 1.73 KB

Contents

# Handler for OpenNebula pools
#
# @author Michal Kimle
# @abstract
# @attr_reader [OpenNebula::Client] client
# @attr [OpenNebula::Pool] pool
class Nifty::Backends::Utils::Opennebula::Handler
  attr_reader :client
  attr_accessor :pool
  cattr_accessor :api_call_timeout

  ONEADMIN_ID = 0
  LEAVE_AS_IS = -1
  ATTRIBUTE_APPLIANCE_ID = 'NIFTY_APPLIANCE_ID'
  OWNER_OCTET = '600'
  API_POLLING_WAIT = 10

  # Constructor
  #
  # @param [OpenNebula::Client] client
  def initialize(client)
    @client = client
  end

  # Reloads the pool
  #
  def reload!
    return unless pool

    if pool.respond_to?('info_all!')
      Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { pool.info_all! }
      return
    end

    Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { pool.info! }
  end

  # Change owner of the element
  #
  # @param [OpenNebula::PoolElement] element
  # @param [Fixnum] owner_id
  # @param [Fixnum] group_id
  def self.chown(element, owner_id, group_id)
    Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { element.info! }

    old_owner_id = element['UID'].to_i
    old_group_id = element.gid
    owner_id = LEAVE_AS_IS if owner_id == old_owner_id
    group_id = LEAVE_AS_IS if group_id == old_group_id

    Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { element.chown(owner_id, group_id) }
  end

  # Change permissions on the element
  #
  # @param [OpenNebula::PoolElement] element
  # @param [String] octet UNIX-like permission octet
  def self.chmod(element, octet)
    Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { element.info! }
    Nifty::Backends::Utils::Opennebula::Helper.handle_opennebula_error { element.chmod_octet(octet) }
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nifty-0.2.12 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.11 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.10 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.9 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.8 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.7 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.6 lib/nifty/backends/utils/opennebula/handler.rb
nifty-0.2.5 lib/nifty/backends/utils/opennebula/handler.rb