copian 1.3.2 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +15 -2
- data/Gemfile +4 -0
- data/{README → README.rdoc} +6 -1
- data/Rakefile +2 -45
- data/copian.gemspec +18 -0
- data/lib/copian.rb +3 -2
- data/lib/copian/collector/cisco/addresses.rb +29 -1
- data/lib/copian/collector/cisco/ports.rb +3 -3
- data/lib/copian/collector/generic.rb +3 -3
- data/lib/copian/version.rb +3 -0
- metadata +48 -47
- data/VERSION.yml +0 -4
    
        data/.gitignore
    CHANGED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/{README → README.rdoc}
    RENAMED
    
    | @@ -22,7 +22,7 @@ Collecting the status of all the network interfaces on a Cisco Router | |
| 22 22 | 
             
              # Port 1/e1 is 1 @ 100000000. mtu(1500)
         | 
| 23 23 | 
             
              # ...
         | 
| 24 24 |  | 
| 25 | 
            -
            presently the admin_status and oper_status are not interpreted, but equate to
         | 
| 25 | 
            +
            presently the +admin_status+ and +oper_status+ are not interpreted, but equate to
         | 
| 26 26 |  | 
| 27 27 | 
             
            1. up
         | 
| 28 28 | 
             
            2. down
         | 
| @@ -30,6 +30,11 @@ presently the admin_status and oper_status are not interpreted, but equate to | |
| 30 30 |  | 
| 31 31 | 
             
            == History
         | 
| 32 32 |  | 
| 33 | 
            +
            === 1.3.3 - 2012/02/20
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            - 1 major enhancement
         | 
| 36 | 
            +
              - Add interface description collector
         | 
| 37 | 
            +
             | 
| 33 38 | 
             
            === 1.3.2 - 2009/10/06
         | 
| 34 39 |  | 
| 35 40 | 
             
            - 1 major correction
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,45 +1,2 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require 'rake/rdoctask'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            begin
         | 
| 6 | 
            -
              require 'jeweler'
         | 
| 7 | 
            -
              Jeweler::Tasks.new do |s|
         | 
| 8 | 
            -
                s.name = "copian"
         | 
| 9 | 
            -
                s.summary = %Q{Suite of SNMP collectors for different types of network devices}
         | 
| 10 | 
            -
                s.email = "geoff@geoffgarside.co.uk"
         | 
| 11 | 
            -
                s.homepage = "http://github.com/geoffgarside/copian"
         | 
| 12 | 
            -
                s.description = "Suite of SNMP collectors for different types of network devices"
         | 
| 13 | 
            -
                s.authors = ["Geoff Garside"]
         | 
| 14 | 
            -
                s.add_dependency('snmp', '>= 1.0.2')
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
            rescue LoadError
         | 
| 17 | 
            -
              puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
         | 
| 18 | 
            -
            end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            Rake::TestTask.new do |t|
         | 
| 21 | 
            -
              t.libs << 'lib'
         | 
| 22 | 
            -
              t.pattern = 'test/**/*_test.rb'
         | 
| 23 | 
            -
              t.verbose = false
         | 
| 24 | 
            -
            end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            Rake::RDocTask.new do |rdoc|
         | 
| 27 | 
            -
              rdoc.rdoc_dir = 'rdoc'
         | 
| 28 | 
            -
              rdoc.title    = 'copian'
         | 
| 29 | 
            -
              rdoc.options << '--line-numbers' << '--inline-source'
         | 
| 30 | 
            -
              rdoc.rdoc_files.include('README*')
         | 
| 31 | 
            -
              rdoc.rdoc_files.include('LICENSE')
         | 
| 32 | 
            -
              rdoc.rdoc_files.include('lib/**/*.rb')
         | 
| 33 | 
            -
            end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            begin
         | 
| 36 | 
            -
              require 'rcov/rcovtask'
         | 
| 37 | 
            -
              Rcov::RcovTask.new do |t|
         | 
| 38 | 
            -
                t.libs << 'test'
         | 
| 39 | 
            -
                t.test_files = FileList['test/**/*_test.rb']
         | 
| 40 | 
            -
                t.verbose = true
         | 
| 41 | 
            -
              end
         | 
| 42 | 
            -
            rescue LoadError
         | 
| 43 | 
            -
            end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            task :default => :test
         | 
| 1 | 
            +
            #!/usr/bin/env rake
         | 
| 2 | 
            +
            require "bundler/gem_tasks"
         | 
    
        data/copian.gemspec
    ADDED
    
    | @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            require File.expand_path('../lib/copian/version', __FILE__)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Gem::Specification.new do |gem|
         | 
| 5 | 
            +
              gem.authors       = ["Geoff Garside"]
         | 
| 6 | 
            +
              gem.email         = ["geoff@geoffgarside.co.uk"]
         | 
| 7 | 
            +
              gem.description   = %q{Suite of SNMP collectors for different types of network devices}
         | 
| 8 | 
            +
              gem.summary       = %q{SNMP Information statistics}
         | 
| 9 | 
            +
              gem.homepage      = "http://github.com/geoffgarside/copian"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              gem.files         = `git ls-files`.split("\n")
         | 
| 12 | 
            +
              gem.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 13 | 
            +
              gem.name          = "copian"
         | 
| 14 | 
            +
              gem.require_paths = ["lib"]
         | 
| 15 | 
            +
              gem.version       = Copian::VERSION
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              gem.add_dependency "snmp", ">= 1.0.4"
         | 
| 18 | 
            +
            end
         | 
    
        data/lib/copian.rb
    CHANGED
    
    | @@ -1,3 +1,6 @@ | |
| 1 | 
            +
            require 'snmp'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'copian/version'
         | 
| 1 4 | 
             
            require 'copian/collector/abstract_collector'
         | 
| 2 5 | 
             
            require 'copian/collector/addresses_collector'
         | 
| 3 6 | 
             
            require 'copian/collector/bandwidth_collector'
         | 
| @@ -9,8 +12,6 @@ require 'copian/collector/cisco' | |
| 9 12 | 
             
            require 'copian/collector/dell'
         | 
| 10 13 | 
             
            require 'copian/collector/hp'
         | 
| 11 14 |  | 
| 12 | 
            -
            require 'snmp'
         | 
| 13 | 
            -
             | 
| 14 15 | 
             
            # :stopdoc:
         | 
| 15 16 | 
             
            class SNMP::Manager
         | 
| 16 17 | 
             
              attr_reader :host, :community, :version
         | 
| @@ -1,8 +1,12 @@ | |
| 1 1 | 
             
            module Copian
         | 
| 2 2 | 
             
              module Collector
         | 
| 3 3 | 
             
                class CiscoAddressesCollector < AddressesCollector # :nodoc:
         | 
| 4 | 
            +
                  IpNetToMediaPhysAddress     = SNMP::ObjectId.new('1.3.6.1.2.1.4.22.1.2')  # IPv4 only
         | 
| 5 | 
            +
                  IpNetToPhysicalPhysAddresss = SNMP::ObjectId.new('1.3.6.1.2.1.4.35.1.4')  # IP version agnostic
         | 
| 6 | 
            +
             | 
| 4 7 | 
             
                  def collect
         | 
| 5 | 
            -
                    oid =  | 
| 8 | 
            +
                    oid = IpNetToMediaPhysAddress
         | 
| 9 | 
            +
             | 
| 6 10 | 
             
                    @manager.walk(oid) do |r|
         | 
| 7 11 | 
             
                      r.each do |varbind|
         | 
| 8 12 | 
             
                        mac_addr = value_to_mac_address(varbind.value)
         | 
| @@ -15,6 +19,30 @@ module Copian | |
| 15 19 | 
             
                      yield mac.dup, ips if block_given?
         | 
| 16 20 | 
             
                    end
         | 
| 17 21 | 
             
                  end
         | 
| 22 | 
            +
                  protected
         | 
| 23 | 
            +
                    def name_to_ip_address(name, oid)
         | 
| 24 | 
            +
                      if oid == IpNetToMediaPhysAddress
         | 
| 25 | 
            +
                        # Strip off the parent and IDX oid
         | 
| 26 | 
            +
                        # the rest is an IPv4 address
         | 
| 27 | 
            +
                        name.index(oid)[1..-1].to_s
         | 
| 28 | 
            +
                      elsif oid == IpNetToPhysicalPhysAddresss
         | 
| 29 | 
            +
                        # Strip off the parent and IDX oid
         | 
| 30 | 
            +
                        sub = name.index(oid)[1..-1]
         | 
| 31 | 
            +
                        family = sub.shift
         | 
| 32 | 
            +
                        addrlen = sub.shift
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                        case family
         | 
| 35 | 
            +
                        when 1  # IPv4
         | 
| 36 | 
            +
                          sub[0..addrlen].to_s
         | 
| 37 | 
            +
                        when 2  # IPv6
         | 
| 38 | 
            +
                          sub[0..addrlen].map do |i|
         | 
| 39 | 
            +
                            "%02x" % i.to_i
         | 
| 40 | 
            +
                          end.join.split(/([a-f0-9]{4})/).reject do |i|
         | 
| 41 | 
            +
                            i == ""
         | 
| 42 | 
            +
                          end.join(":")
         | 
| 43 | 
            +
                        end
         | 
| 44 | 
            +
                      end
         | 
| 45 | 
            +
                    end
         | 
| 18 46 | 
             
                end
         | 
| 19 47 | 
             
              end
         | 
| 20 48 | 
             
            end
         | 
| @@ -19,9 +19,9 @@ module Copian | |
| 19 19 | 
             
                  private
         | 
| 20 20 | 
             
                    def each_vlan
         | 
| 21 21 | 
             
                      @vlans_collector.collect do |vlan_id, vlan_index|
         | 
| 22 | 
            -
                        yield SNMP::Manager.new(: | 
| 23 | 
            -
                          : | 
| 24 | 
            -
                          : | 
| 22 | 
            +
                        yield SNMP::Manager.new(:host => @manager.host,
         | 
| 23 | 
            +
                          :version => @manager.version,
         | 
| 24 | 
            +
                          :community => "#{@manager.community}@#{vlan_id}")
         | 
| 25 25 | 
             
                      end
         | 
| 26 26 | 
             
                    end
         | 
| 27 27 | 
             
                    def gather_mac_bridge_ports(manager)
         | 
| @@ -5,8 +5,8 @@ module Copian | |
| 5 5 | 
             
                    "#<#{self.class} #{@manager.host}@#{@manager.community}>"
         | 
| 6 6 | 
             
                  end
         | 
| 7 7 | 
             
                  def initialize(ip_addr, community, version = :SNMPv2c)
         | 
| 8 | 
            -
                    @manager = SNMP::Manager.new(: | 
| 9 | 
            -
                      : | 
| 8 | 
            +
                    @manager = SNMP::Manager.new(:host => ip_addr,
         | 
| 9 | 
            +
                      :community => community, :version => version)
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                  def port_stats # :yields: ifindex, name, mtu, speed, admin_status, oper_status
         | 
| 12 12 | 
             
                    load_ifnames
         | 
| @@ -23,7 +23,7 @@ module Copian | |
| 23 23 | 
             
                  #
         | 
| 24 24 | 
             
                  # Valid Options
         | 
| 25 25 | 
             
                  #   +:b64+  :Set to true to enable b64 bandwidth collection. Default false.
         | 
| 26 | 
            -
                  def bandwidth(options = {}) # :yields: ifindex, inoctets, outoctets
         | 
| 26 | 
            +
                  def bandwidth(options = {}) # :yields: ifindex, ifname, inoctets, outoctets
         | 
| 27 27 | 
             
                    load_ifnames
         | 
| 28 28 |  | 
| 29 29 | 
             
                    collect_method = options[:b64] == true ? :collect64 : :collect
         | 
    
        metadata
    CHANGED
    
    | @@ -1,47 +1,44 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: copian
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
              version: 1.3. | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 1.3.3
         | 
| 5 | 
            +
              prerelease: 
         | 
| 5 6 | 
             
            platform: ruby
         | 
| 6 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 7 8 | 
             
            - Geoff Garside
         | 
| 8 9 | 
             
            autorequire: 
         | 
| 9 10 | 
             
            bindir: bin
         | 
| 10 11 | 
             
            cert_chain: []
         | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
            dependencies: 
         | 
| 15 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 12 | 
            +
            date: 2012-02-22 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 16 15 | 
             
              name: snmp
         | 
| 16 | 
            +
              requirement: &70195160173080 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: 1.0.4
         | 
| 17 22 | 
             
              type: :runtime
         | 
| 18 | 
            -
               | 
| 19 | 
            -
              version_requirements:  | 
| 20 | 
            -
                requirements: 
         | 
| 21 | 
            -
                - - ">="
         | 
| 22 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            -
                    version: 1.0.2
         | 
| 24 | 
            -
                version: 
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *70195160173080
         | 
| 25 25 | 
             
            description: Suite of SNMP collectors for different types of network devices
         | 
| 26 | 
            -
            email: | 
| 26 | 
            +
            email:
         | 
| 27 | 
            +
            - geoff@geoffgarside.co.uk
         | 
| 27 28 | 
             
            executables: []
         | 
| 28 | 
            -
             | 
| 29 29 | 
             
            extensions: []
         | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
            - LICENSE
         | 
| 33 | 
            -
            - README
         | 
| 34 | 
            -
            files: 
         | 
| 30 | 
            +
            extra_rdoc_files: []
         | 
| 31 | 
            +
            files:
         | 
| 35 32 | 
             
            - .gitignore
         | 
| 33 | 
            +
            - Gemfile
         | 
| 36 34 | 
             
            - LICENSE
         | 
| 37 | 
            -
            - README
         | 
| 35 | 
            +
            - README.rdoc
         | 
| 38 36 | 
             
            - Rakefile
         | 
| 39 | 
            -
            -  | 
| 37 | 
            +
            - copian.gemspec
         | 
| 40 38 | 
             
            - lib/copian.rb
         | 
| 41 39 | 
             
            - lib/copian/collector/abstract_collector.rb
         | 
| 42 40 | 
             
            - lib/copian/collector/addresses_collector.rb
         | 
| 43 41 | 
             
            - lib/copian/collector/bandwidth_collector.rb
         | 
| 44 | 
            -
            - lib/copian/collector/description_collector.rb
         | 
| 45 42 | 
             
            - lib/copian/collector/cisco.rb
         | 
| 46 43 | 
             
            - lib/copian/collector/cisco/addresses.rb
         | 
| 47 44 | 
             
            - lib/copian/collector/cisco/ports.rb
         | 
| @@ -49,42 +46,46 @@ files: | |
| 49 46 | 
             
            - lib/copian/collector/dell.rb
         | 
| 50 47 | 
             
            - lib/copian/collector/dell/ports.rb
         | 
| 51 48 | 
             
            - lib/copian/collector/dell/vlans.rb
         | 
| 49 | 
            +
            - lib/copian/collector/description_collector.rb
         | 
| 52 50 | 
             
            - lib/copian/collector/generic.rb
         | 
| 53 51 | 
             
            - lib/copian/collector/hp.rb
         | 
| 54 52 | 
             
            - lib/copian/collector/hp/ports.rb
         | 
| 55 53 | 
             
            - lib/copian/collector/hp/vlans.rb
         | 
| 56 54 | 
             
            - lib/copian/collector/port_stats_collector.rb
         | 
| 57 55 | 
             
            - lib/copian/collector/ports_collector.rb
         | 
| 56 | 
            +
            - lib/copian/version.rb
         | 
| 58 57 | 
             
            - test/copian_test.rb
         | 
| 59 58 | 
             
            - test/test_helper.rb
         | 
| 60 | 
            -
            has_rdoc: true
         | 
| 61 59 | 
             
            homepage: http://github.com/geoffgarside/copian
         | 
| 62 60 | 
             
            licenses: []
         | 
| 63 | 
            -
             | 
| 64 61 | 
             
            post_install_message: 
         | 
| 65 | 
            -
            rdoc_options: 
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            require_paths: 
         | 
| 62 | 
            +
            rdoc_options: []
         | 
| 63 | 
            +
            require_paths:
         | 
| 68 64 | 
             
            - lib
         | 
| 69 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 70 | 
            -
               | 
| 71 | 
            -
               | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
               | 
| 65 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 66 | 
            +
              none: false
         | 
| 67 | 
            +
              requirements:
         | 
| 68 | 
            +
              - - ! '>='
         | 
| 69 | 
            +
                - !ruby/object:Gem::Version
         | 
| 70 | 
            +
                  version: '0'
         | 
| 71 | 
            +
                  segments:
         | 
| 72 | 
            +
                  - 0
         | 
| 73 | 
            +
                  hash: -1816480518592960478
         | 
| 74 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 75 | 
            +
              none: false
         | 
| 76 | 
            +
              requirements:
         | 
| 77 | 
            +
              - - ! '>='
         | 
| 78 | 
            +
                - !ruby/object:Gem::Version
         | 
| 79 | 
            +
                  version: '0'
         | 
| 80 | 
            +
                  segments:
         | 
| 81 | 
            +
                  - 0
         | 
| 82 | 
            +
                  hash: -1816480518592960478
         | 
| 81 83 | 
             
            requirements: []
         | 
| 82 | 
            -
             | 
| 83 84 | 
             
            rubyforge_project: 
         | 
| 84 | 
            -
            rubygems_version: 1. | 
| 85 | 
            +
            rubygems_version: 1.8.11
         | 
| 85 86 | 
             
            signing_key: 
         | 
| 86 87 | 
             
            specification_version: 3
         | 
| 87 | 
            -
            summary:  | 
| 88 | 
            -
            test_files: | 
| 88 | 
            +
            summary: SNMP Information statistics
         | 
| 89 | 
            +
            test_files:
         | 
| 89 90 | 
             
            - test/copian_test.rb
         | 
| 90 91 | 
             
            - test/test_helper.rb
         | 
    
        data/VERSION.yml
    DELETED