Class: Puppet::ResourceApi::Transport::Wrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb

Overview

:nocov: Puppet::ResourceApi::Transport::Wrapper` to interface between the Util::NetworkDevice

Direct Known Subclasses

Util::NetworkDevice::Cisco_ios::Device

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, url_or_config_or_transport) ⇒ Wrapper

Returns a new instance of Wrapper.



303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 303

def initialize(name, url_or_config_or_transport)
  # Check if the Puppet::Transport module exists
  # if it doesn't (RSAPI 1.6.x) then don't try to load
  # or set @transport
  begin
    Required::Module.const_get 'Puppet::Transport'
    if transport_class?(name, url_or_config_or_transport)
      @transport = url_or_config_or_transport
    end
  rescue NameError
    nil
  end

  @transport ||= Puppet::ResourceApi::Transport.connect(name, url_or_config_or_transport)
  @schema = Puppet::ResourceApi::Transport.list[name]
end

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



301
302
303
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 301

def schema
  @schema
end

#transportObject (readonly)

Returns the value of attribute transport.



301
302
303
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 301

def transport
  @transport
end

Class Method Details

.deep_symbolize(obj) ⇒ Object



337
338
339
340
341
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 337

def self.deep_symbolize(obj)
  return obj.each_with_object({}) { |(k, v), memo| memo[k.to_sym] = deep_symbolize(v); } if obj.is_a? Hash
  return obj.each_with_object([]) { |v, memo| memo << deep_symbolize(v); } if obj.is_a? Array
  obj
end

Instance Method Details

#factsObject



326
327
328
329
330
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 326

def facts
  context = Puppet::ResourceApi::PuppetContext.new(@schema)
  # @transport.facts + custom_facts  # look into custom facts work by TP
  @transport.facts(context)
end

#respond_to_missing?(name, _include_private) ⇒ Boolean

Returns:

  • (Boolean)


332
333
334
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 332

def respond_to_missing?(name, _include_private)
  (@transport.respond_to? name) || super
end

#transport_class?(name, transport) ⇒ Boolean

Returns:

  • (Boolean)


320
321
322
323
324
# File 'lib/puppet_x/puppetlabs/cisco_ios/transport_shim.rb', line 320

def transport_class?(name, transport)
  class_name = name.split('_').map { |e| e.capitalize }.join
  expected = Puppet::Transport.const_get(class_name).to_s
  expected == transport.class.to_s
end