class OpennebulaEconeProbe
OpennebulaEconeProbe
- Econe client query service implementation.
Public Class Methods
new(opts)
click to toggle source
Calls superclass method
OpennebulaProbe::new
# File lib/probe/opennebula_econe_probe.rb, line 23 def initialize(opts) super(opts) @connection = AWS::EC2::Base.new( access_key_id: @opts.username, secret_access_key: Digest::SHA1.hexdigest(@opts.password), server: @opts.hostname, port: @opts.port, path: @opts.path, use_ssl: @opts.protocol == :https ) end
Public Instance Methods
check_crit()
click to toggle source
# File lib/probe/opennebula_econe_probe.rb, line 36 def check_crit @logger.info "Checking for basic connectivity at #{@endpoint}" begin @connection.describe_images @connection.describe_instances rescue StandardError => e @logger.error "Failed to check connectivity: #{e.message}" @logger.debug "#{e.backtrace.join("\n")}" return true end false end
check_resources(resources)
click to toggle source
# File lib/probe/opennebula_econe_probe.rb, line 50 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}" if resource_hash[:resource_type] == :image result = @connection.describe_images set = 'imagesSet' id = 'imageId' elsif resource_hash[:resource_type] == :compute result = @connection.describe_instances result = result['reservationSet']['item'][0] if result['reservationSet'] && result['reservationSet']['item'] set = 'instancesSet' id = 'amiLaunchIndex' else fail 'Wrong resource definition' end @logger.debug result fail "No #{resource_hash[:resource_string].capitalize} found" unless result && result[set] resource.each do |resource_to_look_for| found = false result[set]['item'].each { |resource_found| found = true if resource_to_look_for == resource_found[id] } 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_econe_probe.rb, line 91 def check_warn @logger.info "Checking for resource availability at #{@endpoint}" # iterate over given resources @logger.info "Not looking for networks, since it is not supported by OpenNebula's ECONE server'" if @opts.network resources = [] resources << { resource_type: :image, resource: @opts.storage, resource_string: 'image' } resources << { resource_type: :compute, resource: @opts.compute, resource_string: 'compute instance' } check_resources(resources) rescue StandardError => e @logger.error "Failed to check resource availability: #{e.message}" @logger.debug "#{e.backtrace.join("\n")}" return true end