diff --git a/lib/puppet/util/network_device/f5/device.rb b/lib/puppet/util/network_device/f5/device.rb index 7e23956..8d05088 100644 --- a/lib/puppet/util/network_device/f5/device.rb +++ b/lib/puppet/util/network_device/f5/device.rb @@ -19,11 +19,12 @@ def initialize(url, options = {}) end if @autoloader.load(*autoloader_params) @transport = Puppet::Util::NetworkDevice::Transport::F5.new(url,options[:debug]) + @fqdn = url.split("@").last.downcase end end def facts - @facts ||= Puppet::Util::NetworkDevice::F5::Facts.new(@transport) + @facts ||= Puppet::Util::NetworkDevice::F5::Facts.new(@transport, @fqdn) return @facts.retrieve end diff --git a/lib/puppet/util/network_device/f5/facts.rb b/lib/puppet/util/network_device/f5/facts.rb index 7757347..113e30c 100644 --- a/lib/puppet/util/network_device/f5/facts.rb +++ b/lib/puppet/util/network_device/f5/facts.rb @@ -2,8 +2,9 @@ class Puppet::Util::NetworkDevice::F5::Facts attr_reader :transport - def initialize(transport) + def initialize(transport, hostfqdn) @transport = transport + @hostfqdn = hostfqdn end def retrieve @@ -17,7 +18,11 @@ def parse_device_facts } if response = @transport.call('/mgmt/tm/cm/device') and items = response['items'] - result = items.first + if (items.first['name'].downcase) == @hostfqdn + result = items.first + else + result = items.last + end else Puppet.warning("Did not receive device details. iControl REST requires Administrator level access.") return facts