class OpennebulaOnedProbe

OpennebulaOnedProbe - XML-RPC ONED client query service implementation.

Constants

FAILED_CONNECTIVITY
FAILED_RESOURCE

Public Class Methods

new(opts) click to toggle source
Calls superclass method OpennebulaProbe::new
# File lib/probe/opennebula_oned_probe.rb, line 27
def initialize(opts)
  super(opts)

  # OpenNebula credentials
  @credentials = "#{@opts.username}:#{@opts.password}"
  @client = Client.new(@credentials, @endpoint)
end

Public Instance Methods

check_crit() click to toggle source
# File lib/probe/opennebula_oned_probe.rb, line 40
def check_crit
  @logger.info "Checking for basic connectivity at #{@endpoint}"

  pool_class_array = [VirtualNetworkPool, ImagePool, VirtualMachinePool]
  pool_class_array.each do |pool_class|
    pool = pool_class.new(@client, -1)
    check_pool(pool, FAILED_CONNECTIVITY)
  end

  false

rescue StandardError => e
  @logger.error "Failed to check basic connectivity: #{e.message}"
  @logger.debug "#{e.backtrace.join("\n")}"
  return true
end
check_pool(pool, msg) click to toggle source
# File lib/probe/opennebula_oned_probe.rb, line 35
def check_pool(pool, msg)
  rc = pool.info
  fail "#{msg} #{rc.message}" if OpenNebula.is_error?(rc)
end
check_resources(resources) click to toggle source
# File lib/probe/opennebula_oned_probe.rb, line 57
def check_resources(resources)
  if resources.map { |x| x[:resource] }.reduce(true) { |product, resource| product && resource.nil? }
    @logger.info 'There are no resources to check, for details on how to specify resources see --help'
    return false
  end

  resources.each do |resource_hash|
    resource = resource_hash[:resource]

    next unless resource

    @logger.info "Looking for #{resource_hash[:resource_string]}s: #{resource.inspect}"
    pool = resource_hash[:resource_pool].new(@client, -1)
    check_pool(pool, FAILED_RESOURCE)

    resource.each do |resource_to_look_for|
      found = false

      pool.each do |res|
        check_pool(res, FAILED_RESOURCE)
        found = true if res.id.to_s == resource_to_look_for
      end
      fail "#{resource_hash[:resource_string].capitalize} #{resource_to_look_for} not found" unless found
    end
  end

  false
end
check_warn() click to toggle source
# File lib/probe/opennebula_oned_probe.rb, line 86
def check_warn
  @logger.info "Checking for resource availability at #{@endpoint}"

  resources = []
  resources << { resource: @opts.storage, resource_string: 'image', resource_pool: ImagePool }
  resources << { resource: @opts.compute, resource_string: 'compute instance', resource_pool: VirtualMachinePool }
  resources << { resource: @opts.network, resource_string: 'network', resource_pool: VirtualNetworkPool }

  check_resources(resources)

rescue StandardError => e
  @logger.error "Failed to check resource availability: #{e.message}"
  @logger.debug "#{e.backtrace.join("\n")}"
  return true
end