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