Created
July 8, 2011 18:39
-
-
Save skord/1072482 to your computer and use it in GitHub Desktop.
Simple ONMS Provisioner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| require 'rubygems' | |
| require 'net/telnet' | |
| require 'net/ftp' | |
| require 'net/http' | |
| require 'uri' | |
| require 'nokogiri' | |
| require 'time' | |
| require 'net/sftp' | |
| Net::SFTP.start("IP Of Provisioner", "login_user", :password => "password") do |sftp| | |
| # All the files sit in the remote directory and end in .set. Grab them all. | |
| set_files = sftp.dir.glob('/var/www/html/data','*.set') | |
| set_files.each {|set_file| sftp.download!("/var/www/html/data/" + set_file.name, set_file.name)} | |
| end | |
| $remote_devices = [] | |
| Dir.glob('*.set').each do |set| | |
| File.open(set).readlines.collect {|x| x.chomp.split(',')}.each do |device| | |
| $remote_devices << device | |
| end | |
| File.unlink(set) | |
| end | |
| def sdv_or_broadcast(device_name) | |
| if device_name =~ /\w{1,}B\d{1,}/ | |
| return 'Broadcast' | |
| else | |
| return 'SDV' | |
| end | |
| end | |
| def create_xml | |
| builder = Nokogiri::XML::Builder.new do |xml| | |
| xml.send(:"model-import", 'foreign-source' => 'Device Class Name', 'date-stamp' => Time.now.xmlschema(fraction_digits=3), 'xmlns' => "http://xmlns.opennms.org/xsd/config/model-import") { | |
| for device in $remote_devices | |
| xml.node('foreign-id' => device[1], 'node-label' => device[1], 'building' => 'Headend') { | |
| xml.interface('status' => '1', 'snmp-primary' => 'P', 'ip-addr' => device[0], 'descr' => 'mgmt') { | |
| xml.send(:"monitored-service", "service-name" => "ICMP") | |
| xml.send(:"monitored-service", "service-name" => "SNMP") | |
| } | |
| xml.category('name' => "Production") | |
| xml.category('name' => "Modulators") | |
| xml.category('name' => "Vendor Name") | |
| xml.category('name' => "#{sdv_or_broadcast(device[1])}") | |
| xml.asset('value' => "Midwest", "name" => "region") | |
| xml.asset('value' => "Engineering", "name" => "department") | |
| xml.asset('value' => "Ohio", "name" => "state") | |
| } | |
| end | |
| } | |
| end | |
| return builder.to_xml | |
| end | |
| puts create_xml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment