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

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

Overview

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

Direct Known Subclasses

Util::NetworkDevice::Panos::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.



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

def initialize(name, url_or_config_or_transport)
  if url_or_config_or_transport.is_a? String
    url = URI.parse(url_or_config_or_transport)
    raise "Unexpected url '#{url_or_config_or_transport}' found. Only file:/// URLs for configuration supported at the moment." unless url.scheme == 'file'
    raise "Trying to load config from '#{url.path}, but file does not exist." if url && !File.exist?(url.path)
    config = self.class.deep_symbolize(Hocon.load(url.path, syntax: Hocon::ConfigSyntax::HOCON) || {})
  elsif url_or_config_or_transport.is_a? Hash
    config = url_or_config_or_transport
  elsif transport_class?(name, url_or_config_or_transport)
    @transport = url_or_config_or_transport
  end

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

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



302
303
304
# File 'lib/puppet_x/puppetlabs/panos/transport_shim.rb', line 302

def schema
  @schema
end

#transportObject (readonly)

Returns the value of attribute transport.



302
303
304
# File 'lib/puppet_x/puppetlabs/panos/transport_shim.rb', line 302

def transport
  @transport
end

Class Method Details

.deep_symbolize(obj) ⇒ Object



337
338
339
340
341
# File 'lib/puppet_x/puppetlabs/panos/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/panos/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/panos/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/panos/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