Class: Nagios::Promoo::Occi::Probes::MixinsProbe

Inherits:
BaseProbe
  • Object
show all
Defined in:
lib/nagios/promoo/occi/probes/mixins_probe.rb

Overview

Probe for checking OCCI mixins declared by sites.

Author:

Constant Summary collapse

INFRA_MIXINS =
%w[
  http://schemas.ogf.org/occi/infrastructure#os_tpl
  http://schemas.ogf.org/occi/infrastructure#resource_tpl
].freeze
CONTEXT_MIXINS =
%w[
  http://schemas.openstack.org/instance/credentials#public_key
  http://schemas.openstack.org/compute/instance#user_data
].freeze

Instance Attribute Summary

Attributes inherited from BaseProbe

#options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseProbe

#client, #initialize

Constructor Details

This class inherits a constructor from Nagios::Promoo::Occi::Probes::BaseProbe

Class Method Details

.declarationObject



36
37
38
# File 'lib/nagios/promoo/occi/probes/mixins_probe.rb', line 36

def declaration
  'mixins'
end

.descriptionObject



13
14
15
# File 'lib/nagios/promoo/occi/probes/mixins_probe.rb', line 13

def description
  ['mixins', 'Run a probe checking for mandatory OCCI mixin definitions']
end

.optionsObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/nagios/promoo/occi/probes/mixins_probe.rb', line 17

def options
  [
    [
      :mixins,
      {
        type: :string, enum: %w[infra context all],
        default: 'all', desc: 'Collection of mandatory mixins to check'
      }
    ],
    [
      :optional,
      {
        type: :array, default: [],
        desc: 'Identifiers of optional mixins (optional by force)'
      }
    ]
  ]
end

.runnable?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/nagios/promoo/occi/probes/mixins_probe.rb', line 40

def runnable?
  true
end

Instance Method Details

#run(_args = []) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/nagios/promoo/occi/probes/mixins_probe.rb', line 55

def run(_args = [])
  mixins = []
  mixins += INFRA_MIXINS if %w[infra all].include?(options[:mixins])
  mixins += CONTEXT_MIXINS if %w[context all].include?(options[:mixins])
  mixins -= options[:optional] if options[:optional]

  Timeout.timeout(options[:timeout]) do
    mixins.each { |mixin| raise "#{mixin.inspect} is missing" unless client.model.get_by_id(mixin, true) }
  end

  puts 'MIXINS OK - All specified OCCI mixins were found'
rescue => ex
  puts "MIXINS CRITICAL - #{ex.message}"
  puts ex.backtrace if options[:debug]
  exit 2
end