Faidon Liambotis has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/364753 )

Change subject: (WIP): Add SNMP classes
......................................................................

(WIP): Add SNMP classes

Add an snmp class and, more importantly, and snmp::mibs::source define
that can use snmp-mibs-downloader to fetch third-party MIBs. Populate
the Juniper MIBs in a new snmp::mibs class.

Change-Id: Id34099a3abe8e97cc8fbd023ce810e8658c7f7cf
---
A modules/snmp/files/juniper-mibs
A modules/snmp/manifests/init.pp
A modules/snmp/manifests/mibs.pp
A modules/snmp/manifests/mibs/source.pp
A modules/snmp/templates/mib.conf.erb
5 files changed, 229 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/53/364753/1

diff --git a/modules/snmp/files/juniper-mibs b/modules/snmp/files/juniper-mibs
new file mode 100644
index 0000000..2b1e68f
--- /dev/null
+++ b/modules/snmp/files/juniper-mibs
@@ -0,0 +1,156 @@
+# Up to date as of 16.1R3.10
+#
+# Generate this list with:
+#   for mib in *; do
+#     new=$(sed -nr 's/\s*(.*) DEFINITIONS.*/\1/p' $mib);
+#     old=$(echo $mib |sed 's/^mib-//;s/\.txt$//');
+#     echo $old $new;
+#   done | column -t | sort
+jnx-alarm                        JUNIPER-ALARM-EXT-MIB
+jnx-analyzer                     JUNIPER-ANALYZER-MIB
+jnx-atm-cos                      JUNIPER-ATM-COS-MIB
+jnx-atm                          JUNIPER-ATM-MIB
+jnx-bfd-exp                      BFD-STD-MIB
+jnx-bfd                          JUNIPER-BFD-MIB
+jnx-bgpmib2                      BGP4-V2-MIB-JUNIPER
+jnx-bl                           JNX-OPT-IF-EXT-MIB
+jnx-cfgmgmt                      JUNIPER-CFGMGMT-MIB
+jnx-chas-defines                 JUNIPER-CHASSIS-DEFINES-MIB
+jnx-chassis-alarm                JUNIPER-ALARM-MIB
+jnx-chassis-fwdd                 JUNIPER-CHASSIS-FWDD-MIB
+jnx-chassis                      JUNIPER-MIB
+jnx-coll                         JUNIPER-COLLECTOR-MIB
+jnx-cos                          JUNIPER-COS-MIB
+jnx-dcu                          JUNIPER-DCU-MIB
+jnx-dfc                          JUNIPER-DFC-MIB
+jnx-dom                          JUNIPER-DOM-MIB
+jnx-dot3oam-capability           JNX-DOT3OAM-CAPABILITY
+jnx-event                        JUNIPER-EVENT-MIB
+jnx-ex-mac-notification          JUNIPER-EX-MAC-NOTIFICATION-MIB
+jnx-exp                          JUNIPER-EXPERIMENT-MIB
+jnx-ex-smi                       JUNIPER-EX-SMI
+jnx-fabric-chassis               JUNIPER-FABRIC-CHASSIS
+jnx-fabric                       JUNIPER-FABRIC-MIB
+jnx-firewall                     JUNIPER-FIREWALL-MIB
+jnx-fru                          JUNIPER-FRU-MIB
+jnx-gen-set                      JUNIPER-SNMP-SET-MIB
+jnx-hostresources                JUNIPER-HOSTRESOURCES-MIB
+jnx-if-accounting                JUNIPER-IF-ACCOUNTING-MIB
+jnx-if-capability                JNX-IF-CAPABILITY
+jnx-if-extensions                JUNIPER-IF-MIB
+jnx-ifotn                        JUNIPER-IFOTN-MIB
+jnx-ip-capability                JNX-IP-CAPABILITY
+jnx-ipforward                    JUNIPER-IPFORWARD-MIB
+jnx-ipmcast-capability           IPMCAST-MIB-CAPABILITY
+jnx-ipsec-flow-mon               JUNIPER-IPSEC-FLOW-MON-MIB
+jnx-ipsec-monitor-asp            JNX-IPSEC-MONITOR-MIB
+jnx-ipv4                         JUNIPER-IPv4-MIB
+jnx-ipv6                         JUNIPER-IPv6-MIB
+jnx-jdhcp                        JUNIPER-JDHCP-MIB
+jnx-jdhcpv6                      JUNIPER-JDHCPV6-MIB
+jnx-js-auth                      JUNIPER-JS-AUTH-MIB
+jnx-js-cert                      JUNIPER-JS-CERT-MIB
+jnx-js-dns                       JUNIPER-JS-DNS-MIB
+jnx-js-idp                       JUNIPER-JS-IDP-MIB
+jnx-js-if-ext                    JUNIPER-JS-IF-EXT-MIB
+jnx-js-ipsec-vpn                 JUNIPER-JS-IPSEC-VPN-MIB
+jnx-js-nat                       JUNIPER-JS-NAT-MIB
+jnx-js-packet-mirror             JUNIPER-JS-PACKET-MIRROR-MIB
+jnx-js-policy                    JUNIPER-JS-POLICY-MIB
+jnx-jsrpd                        JUNIPER-CHASSIS-CLUSTER-MIB
+jnx-js-screening                 JUNIPER-JS-SCREENING-MIB
+jnx-js-smi                       JUNIPER-JS-SMI
+jnx-js-spu-monitoring            JUNIPER-SRX5000-SPU-MONITORING-MIB
+jnx-js-utm-av                    JUNIPER-JS-UTM-AV-MIB
+jnx-jvae-infra                   JUNIPER-JVAE-INFRA-MIB
+jnx-jvae-node                    JUNIPER-JVAE-NODE-MIB
+jnx-l2ald                        JUNIPER-L2ALD-MIB
+jnx-l2cp-features                JUNIPER-L2CP-FEATURES-MIB
+jnx-l2tp                         JNX-L2TP-MIB
+jnx-ldp                          JUNIPER-LDP-MIB
+jnx-license                      JUNIPER-LICENSE-MIB
+jnx-lsys-securityprofile         JUNIPER-LSYS-SECURITYPROFILE-MIB
+jnx-lsys-sp-authentry            JUNIPER-LSYSSPAUTHENTRY-MIB
+jnx-lsys-sp-cpu                  JUNIPER-LSYSSP-CPU-MIB
+jnx-lsys-sp-flowgate             JUNIPER-LSYSSP-FLOWGATE-MIB
+jnx-lsys-sp-flowsess             JUNIPER-LSYSSP-FLOWSESS-MIB
+jnx-lsys-sp-natconebind          JUNIPER-LSYSSP-NATCONEBIND-MIB
+jnx-lsys-sp-natdstpool           JUNIPER-LSYSSP-NATDSTPOOL-MIB
+jnx-lsys-sp-natdstrule           JUNIPER-LSYSSP-NATDSTRULE-MIB
+jnx-lsys-sp-natpoipnum           JUNIPER-LSYSSP-NATPOIPNUM-MIB
+jnx-lsys-sp-natsrcnopatad        JUNIPER-LSYSSP-NATSRCNOPATAD-MIB
+jnx-lsys-sp-natsrcpatad          JUNIPER-LSYSSP-NATSRCPATAD-MIB
+jnx-lsys-sp-natsrcpool           JUNIPER-LSYSSP-NATSRCPOOL-MIB
+jnx-lsys-sp-natsrcrule           JUNIPER-LSYSSP-NATSRCRULE-MIB
+jnx-lsys-sp-natstaticrule        JUNIPER-LSYSSP-NATSTATICRULE-MIB
+jnx-lsys-sp-policy               JUNIPER-LSYSSP-POLICY-MIB
+jnx-lsys-sp-policywcnt           JUNIPER-LSYSSP-POLICYWCNT-MIB
+jnx-lsys-sp-scheduler            JUNIPER-LSYSSP-SCHEDULER-MIB
+jnx-lsys-sp-zone                 JUNIPER-LSYSSP-ZONE-MIB
+jnx-mac                          JUNIPER-MAC-MIB
+jnx-mag                          JUNIPER-MAG-MIB
+jnx-mbg-smi                      JUNIPER-MBG-SMI
+jnx-mimstp                       JUNIPER-MIMSTP-MIB
+jnx-mobile-gateway-aaa           JUNIPER-MOBILE-GATEWAY-AAA-MIB
+jnx-mobile-gateway-appfw         JUNIPER-MOBILE-GATEWAY-SM-MIB
+jnx-mobile-gateway-charging      JUNIPER-MOBILITY-CHARGING-MIB
+jnx-mobile-gateway-dhcp          JUNIPER-MOBILE-GATEWAY-DHCP-MIB
+jnx-mobile-gateway-example       JUNIPER-MOBILE-GATEWAY-EXAMPLE-MIB
+jnx-mobile-gateway-gtp           JUNIPER-MOBILE-GATEWAY-GTP-MIB
+jnx-mobile-gateway-rmps          JUNIPER-MOBILE-GATEWAY-RMPS-MIB
+jnx-mobile-gateway-sgw-charging  JUNIPER-MOBILITY-SGW-CHARGING-MIB
+jnx-mobile-gateway-sgw-gtp       JUNIPER-MOBILE-GATEWAY-SGW-GTP-MIB
+jnx-mobile-gateway-sgw-mfwd      JUNIPER-MOBILE-GW-SGW-MFWD-MIB
+jnx-mobile-gateway-sgw-sm        JUNIPER-MOBILE-GATEWAY-SGW-SM-MIB
+jnx-mobile-gateways              JUNIPER-MOBILE-GATEWAYS
+jnx-mobile-gateway-sm-ip-pool    JUNIPER-MOBILE-GATEWAY-SM-IP-POOL-MIB
+jnx-mpls-ldp                     JUNIPER-MPLS-LDP-MIB
+jnx-mpls                         MPLS-MIB
+jnx-optics                       JUNIPER-IFOPTICS-MIB
+jnx-optif                        JNX-OPT-IF-MIB
+jnx-ospfv3mib                    OSPFV3-MIB-JUNIPER
+jnx-otn                          JUNIPER-OTN-MIB
+jnx-p2mp                         JNX-MPLS-TE-P2MP-STD-MIB
+jnx-pae-extension                JUNIPER-PAE-EXTENSION-MIB
+jnx-pfe                          JUNIPER-PFE-MIB
+jnx-ping                         JUNIPER-PING-MIB
+jnx-pmon                         JUNIPER-PMon-MIB
+jnx-power-supply-unit            JUNIPER-POWER-SUPPLY-UNIT-MIB
+jnx-ppp                          JNX-PPP-MIB
+jnx-pppoe                        JNX-PPPOE-MIB
+jnx-pwatm                        JUNIPER-PW-ATM-MIB
+jnx-pwtdm                        JUNIPER-PW-TDM-MIB
+jnx-rmon                         JUNIPER-RMON-MIB
+jnx-rpf                          JUNIPER-RPF-MIB
+jnx-rpm                          JUNIPER-RPM-MIB
+jnx-rpm-twamp                    JUNIPER-TWAMP-MIB
+jnx-rps                          JUNIPER-RPS-MIB
+jnx-rsvp                         JUNIPER-RSVP-MIB
+jnx-rtm                          JUNIPER-RTM-MIB
+jnx-scu                          JUNIPER-SCU-MIB
+jnx-secure-access-port           JUNIPER-SECURE-ACCESS-PORT-MIB
+jnx-services                     JUNIPER-Services-MIB
+jnx-sipcommon                    JUNIPER-SIP-COMMON-MIB
+jnx-smi                          JUNIPER-SMI
+jnx-snmpv2-capability            JNX-SNMPv2-CAPABILITY
+jnx-soam-pm                      JUNIPER-SOAM-PM-MIB
+jnx-sonetaps                     APS-MIB
+jnx-sonet                        JUNIPER-SONET-MIB
+jnx-sp                           JUNIPER-SP-MIB
+jnx-sp-nat                       JUNIPER-NAT-MIB
+jnx-srd                          JUNIPER-SRD-MIB
+jnx-subscriber                   JUNIPER-SUBSCRIBER-MIB
+jnx-syslog                       JUNIPER-SYSLOG-MIB
+jnx-timing-notifications         JUNIPER-TIMING-NOTFNS-MIB
+jnx-tlb                          JUNIPER-TLB-MIB
+jnx-traceroute                   JUNIPER-TRACEROUTE-MIB
+jnx-user-aaa                     JUNIPER-USER-AAA-MIB
+jnx-util                         JUNIPER-UTIL-MIB
+jnx-virtualchassis               JUNIPER-VIRTUALCHASSIS-MIB
+jnx-vlan                         JUNIPER-VLAN-MIB
+jnx-vmon                         JUNIPER-VMON-MIB
+jnx-vpls-bgp                     VPLS-BGP-DRAFT-01-MIB
+jnx-vpls-generic                 VPLS-GENERIC-DRAFT-01-MIB
+jnx-vpls-ldp                     VPLS-LDP-DRAFT-01-MIB
+jnx-vpn                          JUNIPER-VPN-MIB
+rfc3813-capability               MPLS-LSR-STD-CAPABILITY
diff --git a/modules/snmp/manifests/init.pp b/modules/snmp/manifests/init.pp
new file mode 100644
index 0000000..e6e3463
--- /dev/null
+++ b/modules/snmp/manifests/init.pp
@@ -0,0 +1,6 @@
+#
+class snmp {
+    package { 'snmp':
+        ensure => present,
+    }
+}
diff --git a/modules/snmp/manifests/mibs.pp b/modules/snmp/manifests/mibs.pp
new file mode 100644
index 0000000..15d41c7
--- /dev/null
+++ b/modules/snmp/manifests/mibs.pp
@@ -0,0 +1,16 @@
+#
+class snmp::mibs {
+    package { 'snmp-mibs-downloader':
+        ensure => present,
+    }
+
+    snmp::mibs::source { 'juniper':
+        source  => 
'http://www.juniper.net/techpubs/software/junos/junos161/juniper-mibs-16.1R3.10.tgz',
+        list    => 'puppet:///modules/snmp/juniper-mibs',
+        options => {
+            'PREFIX' => 'JuniperMibs/mib-',
+            'SUFFIX' => '.txt',
+        },
+    }
+
+}
diff --git a/modules/snmp/manifests/mibs/source.pp 
b/modules/snmp/manifests/mibs/source.pp
new file mode 100644
index 0000000..257ad64
--- /dev/null
+++ b/modules/snmp/manifests/mibs/source.pp
@@ -0,0 +1,43 @@
+#
+define snmp::mibs::source(
+  $source,
+  $list,
+  $options={},
+) {
+
+    $listname = "${title}list"
+
+    # while Net-SNMP would be equally happy if we set this to $title, libsmi
+    # isn't as smart and traverses directories non-recursively. We could either
+    # modify /etc/smi.conf's path, or hardcode all of our sources to "site" but
+    # making cleanup a little more difficult. This define doesn't support
+    # ensure absent anyway, so do that for now.
+    $destdir = 'site'
+
+    file { "/etc/snmp-mibs-downloader/${title}.conf":
+        ensure  => present,
+        mode    => '0444',
+        owner   => 'root',
+        group   => 'root',
+        content => template('snmp/mib.conf.erb'),
+        require => Package['snmp-mibs-downloader'],
+        notify  => Exec["download-mibs ${title}"],
+    }
+
+    file { "/etc/snmp-mibs-downloader/${listname}":
+        ensure  => present,
+        mode    => '0444',
+        owner   => 'root',
+        group   => 'root',
+        source  => $list,
+        require => Package['snmp-mibs-downloader'],
+        notify  => Exec["download-mibs ${title}"],
+    }
+
+    exec { "download-mibs ${title}":
+        path        => '/usr/sbin:/usr/bin:/sbin:/bin',
+        require     => Package['snmp-mibs-downloader'],
+        refreshonly => true,
+    }
+
+}
diff --git a/modules/snmp/templates/mib.conf.erb 
b/modules/snmp/templates/mib.conf.erb
new file mode 100644
index 0000000..b85105d
--- /dev/null
+++ b/modules/snmp/templates/mib.conf.erb
@@ -0,0 +1,8 @@
+HOST=<%= @source.sub(/^(.+)\/([^\/]+)$/, '\1') %>
+ARCHIVE=<%= @source.sub(/^(.+)\/([^\/]+)$/, '\2') %>
+ARCHTYPE=<%= @source.sub(/.+\.(tar|tgz|zip)$/, '\1') %>
+CONF=<%= @listname %>
+DEST=<%= @destdir %>
+<%- @options.sort.each do |key, value| -%>
+<%= key %>=<%= value %>
+<%- end -%>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id34099a3abe8e97cc8fbd023ce810e8658c7f7cf
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Faidon Liambotis <fai...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to