Alexandros Kosiaris has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/167644

Change subject: Introduce an LLDP facts
......................................................................

Introduce an LLDP facts

Use lldpctl's xml format to introduce a number of facts
 * lldppeer_ethX => the switch connected on that interface
 * lldpswport_ethX => the switchport description
 * lldpswport_id => The switchport id as reported by the switch
 * lldppeers => Comma separated list of all LLDP peers

where ethX is a given interface that both it and it's connected
counterpart speak LLDP

Change-Id: Icc744872f8dfed24eea149bc05766053cc2656a5
---
A modules/base/lib/facter/lldp.rb
1 file changed, 50 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/44/167644/1

diff --git a/modules/base/lib/facter/lldp.rb b/modules/base/lib/facter/lldp.rb
new file mode 100644
index 0000000..f6ac986
--- /dev/null
+++ b/modules/base/lib/facter/lldp.rb
@@ -0,0 +1,50 @@
+require 'facter'
+require 'rexml/document'
+
+if Facter.value('virtual') == 'physical' and File.exists?('/usr/sbin/lldpctl')
+
+    lldpeers = nil
+
+    data = Facter::Util::Resolution.exec('/usr/sbin/lldpctl -f xml')
+    document = REXML::Document.new(data)
+    document.elements.each('lldp/interface') do |iface|
+        eth = iface.attributes['name']
+        iface.elements.each('chassis/name') do |switch|
+            Facter.add('lldppeer_%s' % eth) do
+                confine :kernel => %w{Linux FreeBSD OpenBSD}
+                setcode do
+                    switch.text
+                end
+            end
+            if lldppeers
+                lldppeers = lldppeers + ',' + switch.text
+            else
+                lldppeers = switch.text
+            end
+        end
+        iface.elements.each('port/descr') do |port|
+            Facter.add('lldpswport_%s' % eth) do
+                confine :kernel => %w{Linux FreeBSD OpenBSD}
+                setcode do
+                    port.text
+                end
+            end
+        end
+        iface.elements.each('port/id') do |port|
+            Facter.add('lldpswportid_%s' % eth) do
+                confine :kernel => %w{Linux FreeBSD OpenBSD}
+                setcode do
+                    port.text
+                end
+            end
+        end
+    end
+
+    # Aggregate all the lldp peers on one single variable
+    Facter.add('lldppeers') do
+        confine :kernel => %w{Linux FreeBSD OpenBSD}
+        setcode do
+            lldppeers
+        end
+    end
+end

-- 
To view, visit https://gerrit.wikimedia.org/r/167644
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icc744872f8dfed24eea149bc05766053cc2656a5
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Alexandros Kosiaris <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to