class Confine

Common module for the Boolean confines. It currently contains just enough code to implement PUP-9336.

Attributes

name[RW]
for_binary[RW]

Mark that this confine is used for testing binary existence.

label[RW]

Used for logging.

values[R]

Public Class Methods

inherited(klass) click to toggle source
   # File lib/puppet/confine.rb
14 def self.inherited(klass)
15   name = klass.to_s.split("::").pop.downcase.to_sym
16   raise "Test #{name} is already defined" if @tests.include?(name)
17 
18   klass.name = name
19 
20   @tests[name] = klass
21 end
new(values) click to toggle source
   # File lib/puppet/confine.rb
51 def initialize(values)
52   values = [values] unless values.is_a?(Array)
53   @values = values
54 end
test(name) click to toggle source
   # File lib/puppet/confine.rb
23 def self.test(name)
24   unless @tests.include?(name)
25     begin
26       require "puppet/confine/#{name}"
27     rescue LoadError => detail
28       unless detail.to_s =~ /No such file|cannot load such file/i
29         Puppet.warning("Could not load confine test '#{name}': #{detail}")
30       end
31       # Could not find file
32       if !Puppet[:always_retry_plugins]
33         @tests[name] = nil
34       end
35     end
36   end
37   @tests[name]
38 end

Public Instance Methods

for_binary?() click to toggle source
   # File lib/puppet/confine.rb
44 def for_binary?
45   for_binary
46 end
message(value) click to toggle source

Provide a hook for the message when there's a failure.

   # File lib/puppet/confine.rb
57 def message(value)
58   ""
59 end
reset() click to toggle source

Provide a hook for subclasses.

   # File lib/puppet/confine.rb
81 def reset
82 end
result() click to toggle source

Collect the results of all of them.

   # File lib/puppet/confine.rb
62 def result
63   values.collect { |value| pass?(value) }
64 end
valid?() click to toggle source

Test whether our confine matches.

   # File lib/puppet/confine.rb
67 def valid?
68   values.each do |value|
69     unless pass?(value)
70       Puppet.debug { label + ": " + message(value) }
71       return false
72     end
73   end
74 
75   return true
76 ensure
77   reset
78 end