Class: Puppet::ResourceApi::BaseContext

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/resource_api/base_context.rb

Direct Known Subclasses

IOContext, PuppetContext

Instance Method Summary collapse

Constructor Details

#initialize(typename) ⇒ BaseContext

Returns a new instance of BaseContext.



5
6
7
# File 'lib/puppet/resource_api/base_context.rb', line 5

def initialize(typename)
  @typename = typename
end

Instance Method Details

#attribute_changed(title, attribute, is, should, message: nil) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/puppet/resource_api/base_context.rb', line 102

def attribute_changed(title, attribute, is, should, message: nil)
  raise "#{__method__} only accepts a single resource title" if title.respond_to?(:each)
  printable_is = 'nil'
  printable_should = 'nil'
  if is
    printable_is = is.is_a?(Numeric) ? is : "'#{is}'"
  end
  if should
    printable_should = should.is_a?(Numeric) ? should : "'#{should}'"
  end
  notice("#{title}: attribute '#{attribute}' changed from #{printable_is} to #{printable_should}#{message ? ": #{message}" : ''}")
end

#deviceObject



9
10
11
12
13
# File 'lib/puppet/resource_api/base_context.rb', line 9

def device
  # TODO: evaluate facter_url setting for loading config if there is no `current` NetworkDevice
  raise 'no device configured' unless Puppet::Util::NetworkDevice.current
  Puppet::Util::NetworkDevice.current
end

#failed(titles, message: 'Updating has failed') ⇒ Object



115
116
117
118
119
120
121
122
123
# File 'lib/puppet/resource_api/base_context.rb', line 115

def failed(titles, message: 'Updating has failed')
  setup_context(titles)
  begin
    err(message)
    # raise message
  ensure
    @context = nil
  end
end

#failed?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/puppet/resource_api/base_context.rb', line 15

def failed?
  @failed
end

#failing(titles, message: 'Failing') ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/puppet/resource_api/base_context.rb', line 60

def failing(titles, message: 'Failing')
  start_time = Time.now
  setup_context(titles, message)
  begin
    debug('Start')
    yield
    warning("Finished failing in #{format_seconds(Time.now - start_time)} seconds")
  rescue StandardError => e
    err("Failed after #{format_seconds(Time.now - start_time)} seconds: #{e}")
    @failed = true
  ensure
    @context = nil
  end
end

#feature_support?(feature) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
23
24
25
26
27
# File 'lib/puppet/resource_api/base_context.rb', line 19

def feature_support?(feature)
  supported = Puppet::Type.type(@typename).feature_support?(feature)
  if supported
    Puppet.debug("#{@typename} supports `#{feature}`")
  else
    Puppet.debug("#{@typename} does not support `#{feature}`")
  end
  supported
end

#processed(title, is, should) ⇒ Object



97
98
99
100
# File 'lib/puppet/resource_api/base_context.rb', line 97

def processed(title, is, should)
  raise "#{__method__} only accepts a single resource title" if title.respond_to?(:each)
  notice("Processed #{title} from #{is} to #{should}")
end

#processing(title, is, should, message: 'Processing') ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/puppet/resource_api/base_context.rb', line 75

def processing(title, is, should, message: 'Processing')
  raise "#{__method__} only accepts a single resource title" if title.respond_to?(:each)
  start_time = Time.now
  setup_context(title, message)
  begin
    debug("Starting processing of #{title} from #{is} to #{should}")
    yield
    notice("Finished processing #{title} in #{format_seconds(Time.now - start_time)} seconds: #{should}")
  rescue StandardError => e
    err("Failed processing #{title} after #{format_seconds(Time.now - start_time)} seconds: #{e}")
    @failed = true
  ensure
    @context = nil
  end
end

#send_log(_level, _message) ⇒ Object



125
126
127
# File 'lib/puppet/resource_api/base_context.rb', line 125

def send_log(_level, _message)
  raise 'Received send_log() on an unprepared BaseContext. Use IOContext, or PuppetContext instead.'
end