sloe 0.8.7 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5397b01aa1ff0a4b4a6d0bed0c2c27b4bea22e19
4
- data.tar.gz: e87368db3b45d1819a8251b577ff06f71345fd02
3
+ metadata.gz: 16095fc62fe323dba21e6f0fd5be40a97ceee1f2
4
+ data.tar.gz: f80dab3882c5ffa2be95f1aac98c7d7789fe734f
5
5
  SHA512:
6
- metadata.gz: a6132916732e57176a32d61858f4bf4ba7d492b27deb12ad13dc5e09b2c97a5905bb420ecd9c35aaacadeb4e2c6157d547e63fbbc3742537710842ce615be704
7
- data.tar.gz: 5f869852abcdd0a2f32ba90924377ae95c5e8db48aeeebd0934d561a3c8ff7920a496fb7c513b17c5b86982bef84d0bb21e65fa33111750a62b734dbbdbd3678
6
+ metadata.gz: f2c1136ab9ff1dd2be045a04e953e8b81aecef629b1a2b62d666fea66f582b3dfe40d059cb94b09662c414fb28c2c9c81b38fd744ac89cf1c9eab51a64c690ed
7
+ data.tar.gz: ae2a27f5345e33f6903bb6ad750c457e1d8d50830e00f796029860d88592774abc0bc74f34bd3a79e2a6e36602175d9190baf573203d8fd932e745f2606743da
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ spec/reports
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ vqfx10k
@@ -0,0 +1 @@
1
+ sloe
@@ -0,0 +1 @@
1
+ ruby-2.2.1
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.0
4
+ before_install: gem install bundler -v 1.11.2
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at dgethings@juniper.net. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
@@ -0,0 +1,23 @@
1
+ guard :rspec, cmd: 'bundle exec rspec' do
2
+ # watch /lib/ files
3
+ watch(%r{^lib/(.+).rb$}) do |m|
4
+ "spec/#{m[1]}_spec.rb"
5
+ end
6
+
7
+ # watch /spec/ files
8
+ watch(%r{^spec/(.+).rb$}) do |m|
9
+ "spec/#{m[1]}.rb"
10
+ end
11
+ end
12
+
13
+ guard :bundler do
14
+ require 'guard/bundler'
15
+ require 'guard/bundler/verify'
16
+ helper = Guard::Bundler::Verify.new
17
+
18
+ files = ['Gemfile']
19
+ files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
20
+
21
+ # Assume files are symlinked from somewhere
22
+ files.each { |file| watch(helper.real_path(file)) }
23
+ end
@@ -1,22 +1,21 @@
1
- Copyright (c) 2013 TODO: Write your name
1
+ The MIT License (MIT)
2
2
 
3
- MIT License
3
+ Copyright (c) 2016 David Gethings
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
12
11
 
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
15
14
 
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/sloe.svg)](https://badge.fury.io/rb/sloe)
2
+
1
3
  # Sloe
2
4
 
3
5
  Sloe uses NETCONF and/or SNMP to gather data regarding a network device. Designed to help with automated testing this gem can also be used with things like Ruby on Rails
data/Rakefile CHANGED
@@ -1,8 +1,58 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
- require 'ci/reporter/rake/rspec'
3
+ require 'pry-byebug'
4
4
 
5
- RSpec::Core::RakeTask.new
5
+ RSpec::Core::RakeTask.new(:spec) do |task|
6
+ task.rspec_opts = ['--color', '--format', 'doc']
7
+ end
6
8
 
7
- task default: ['ci:setup:rspec', :spec]
8
- task test: ['ci:setup:rspec', :spec]
9
+ task default: :spec
10
+ task spec: ['vm:start']
11
+
12
+ require 'rubocop/rake_task'
13
+ RuboCop::RakeTask.new
14
+
15
+ namespace :vm do
16
+ require 'derelict'
17
+ desc 'list VMs'
18
+ task :list do
19
+ Dir.chdir 'vqfx10k' do
20
+ puts FileList['*'].select { |d| File.directory?(d) }
21
+ end
22
+ end
23
+
24
+ desc 'given VM(s) state'
25
+ task :status, :name do |_, args|
26
+ raise ArgumentError, 'missing vagrant project name' unless args.name
27
+
28
+ project = Derelict.instance('/usr/local').connect 'vqfx10k/' + args.name
29
+ (1..args.name.match(/\d/)[0].to_i).each do |n|
30
+ vm = project.vm("vqfx#{n}".to_sym)
31
+ puts "vqfx#{n} status is #{vm.state}"
32
+ end
33
+ end
34
+
35
+ desc 'start given VM(s)'
36
+ task :start, :na do |_, args|
37
+ raise ArgumentError, 'missing vagrant project name' unless args.name
38
+
39
+ project = Derelict.instance('/usr/local').connect 'vqfx10k/' + args.name
40
+ (1..args.name.match(/\d/)[0].to_i).each do |n|
41
+ res = project.vm("vqfx#{n}".to_sym).up!
42
+ raise "failed to start vqfx#{n}: res.stderr" unless res.success?
43
+ puts "vqfx#{n} status is " + project.vm("vqfx#{n}".to_sym).state.to_s
44
+ end
45
+ end
46
+
47
+ desc 'stop given VM(s)'
48
+ task :stop, :name do |_, args|
49
+ raise ArgumentError, 'missing vagrant project name' unless args.name
50
+
51
+ project = Derelict.instance('/usr/local').connect 'vqfx10k/' + args.name
52
+ (1..args.name.match(/\d/)[0].to_i).each do |n|
53
+ res = project.vm("vqfx#{n}".to_sym).halt!
54
+ raise "failed to start vqfx#{n}: res.stderr" unless res.success?
55
+ puts "vqfx#{n} status is " + project.vm("vqfx#{n}".to_sym).state.to_s
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "sloe"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -2,7 +2,4 @@ require 'sloe/version'
2
2
  require 'sloe/device'
3
3
  require 'sloe/junos'
4
4
 
5
- # Sloe is a module designed to ease interacting with a network device when using NETCONF
6
- module Sloe
7
-
8
- end
5
+ module Sloe; end
@@ -2,21 +2,23 @@ require 'net/scp'
2
2
  require 'snmp'
3
3
 
4
4
  module Sloe
5
- # Base class. Inherits from {http://rubydoc.info/gems/netconf/Netconf/SSH Netconf::SSH}
5
+ # Inherits from {http://rubydoc.info/gems/netconf/Netconf/SSH Netconf::SSH}
6
6
  class Common < Netconf::SSH
7
-
8
7
  # Provides access to the SNMP object
9
8
  attr_reader :snmp
10
9
  attr_accessor :logging
11
10
 
12
11
  # Create Sloe::Common object.
13
- # Accepts arguments for {http://rubydoc.info/gems/netconf/Netconf/SSH:initialize Netconf::SSH#new} and {http://rubydoc.info/gems/snmp/SNMP/Manager:initialize SNMP::Manager#new}
12
+ # Accepts arguments for
13
+ # {http://rubydoc.info/gems/netconf/Netconf/SSH:initialize Netconf::SSH#new}
14
+ # {http://rubydoc.info/gems/snmp/SNMP/Manager:initialize SNMP::Manager#new}
14
15
  def initialize(args, &block)
15
16
  @snmp_args = {
16
- :host => args[:target],
17
- :mib_dir => args[:mib_dir],
18
- :mib_modules => args[:mib_modules],
19
- :community => args[:community]
17
+ host: args[:target],
18
+ mib_dir: args[:mib_dir],
19
+ mib_modules: args[:mib_modules],
20
+ community: args[:community],
21
+ port: args[:snmp_port]
20
22
  }
21
23
  @snmp = SNMP::Manager.new(@snmp_args)
22
24
 
@@ -24,13 +26,13 @@ module Sloe
24
26
  # they must be needed/enabled. This also requires extending
25
27
  # Netconf::RPC::Executor.method_missing(), which is done below
26
28
  self.logging = args[:logging]
27
-
29
+
28
30
  if block_given?
29
- super( args, &block )
31
+ super(args, &block)
30
32
  return
31
33
  else
32
34
  super(args)
33
- self.open
35
+ open
34
36
  self
35
37
  end
36
38
  end
@@ -42,20 +44,18 @@ module Netconf
42
44
  class Transport
43
45
  attr_accessor :logging
44
46
 
45
- def initialize( &block )
46
-
47
+ def initialize(&block)
47
48
  @state = :NETCONF_CLOSED
48
49
  @os_type = @args[:os_type] || Netconf::DEFAULT_OS_TYPE
49
-
50
- @rpc = Netconf::RPC::Executor.new( self, @os_type, self.logging )
50
+
51
+ @rpc = Netconf::RPC::Executor.new(self, @os_type, self.logging)
51
52
  @rpc_message_id = 1
52
53
 
53
54
  if block_given?
54
- open( &block = nil ) # do not pass this block to open()
55
+ open(&block = nil) # do not pass this block to open()
55
56
  yield self
56
- close()
57
+ close
57
58
  end
58
-
59
59
  end
60
60
  end
61
61
  module RPC
@@ -65,10 +65,10 @@ module Netconf
65
65
  @trans = trans
66
66
  @logging = logging
67
67
  begin
68
- extend Netconf::RPC::const_get( os_type )
68
+ extend Netconf::RPC::const_get( os_type )
69
69
  rescue NameError
70
70
  # no extensions available ...
71
- end
71
+ end
72
72
  end
73
73
 
74
74
  def method_missing( method, params = nil, attrs = nil )
@@ -86,4 +86,12 @@ module Netconf
86
86
  end
87
87
  end
88
88
  end
89
+ class SSH
90
+ def scp
91
+ @scp ||= Net::SCP.start(@args[:target],
92
+ @args[:username],
93
+ password: @args[:password],
94
+ port: @args[:port] || 22)
95
+ end
96
+ end
89
97
  end
@@ -0,0 +1,134 @@
1
+ # include it globally in a spec_helper.rb file <tt>require</tt>d
2
+ # from your spec file(s):
3
+ # require 'sloe/expectations'
4
+ #
5
+ # RSpec::configure do |config|
6
+ # config.include(Sloe::Expectations::Ixia)
7
+ # config.include(Sloe::Expectations::Junos)
8
+ # end
9
+ module Sloe
10
+ module Expectations
11
+ module Ixia
12
+ def have_no_packet_loss
13
+ HaveNoPacketLoss.new
14
+ end
15
+
16
+ def have_packet_loss_duration_less_than(duration)
17
+ HavePacketLossDurationLessThan.new(duration)
18
+ end
19
+
20
+ class HavePacketLossDurationLessThan
21
+ def initialize(duration)
22
+ @duration = duration
23
+ end
24
+
25
+ def match(actual)
26
+ @lossy_flows = actual.select do |row|
27
+ if row['Packet Loss Duration (ms)'].to_f > @duration.to_f
28
+ "#{row['Traffic Item']}\t #{row['Source/Dest Endpoint Pair']}:\t\t #{row['Packet Loss Duration (ms)']}\n"
29
+ end
30
+ end
31
+ @lossy_flows.size == 0
32
+ end
33
+
34
+ def failure_message_for_should
35
+ @lossy_flows
36
+ end
37
+ end
38
+
39
+ class HaveNoPacketLoss
40
+ def match(actual)
41
+ @lossy_flows = actual.select do |row|
42
+ if row['Loss %'].to_f > 0.0
43
+ "#{row['Source/Dest Endpoint Pair']}:\t\t#{row['Loss %']}\n"
44
+ end
45
+ end
46
+ @lossy_flows.size == 0
47
+ end
48
+
49
+ def failure_message_for_should
50
+ @lossy_flows
51
+ end
52
+ end
53
+ end
54
+
55
+ class Junos
56
+ def have_pim_neighbor_on_all_interfaces
57
+ HavePimNeighborOnAllInterfaces.new
58
+ end
59
+
60
+ def non_jnpr_sfp
61
+ NonJnprSfp.new
62
+ end
63
+
64
+ def have_all_ospf_neighbors_as(state)
65
+ HaveAllOspfNeighborsAs.new(state)
66
+ end
67
+
68
+ def have_all_bgp_peers_as(state)
69
+ HaveAllBgpPeersAs.new(state)
70
+ end
71
+
72
+ class HaveAllOspfNeighborsAs
73
+ def initialize(state)
74
+ @state = state
75
+ end
76
+
77
+ def match(actual)
78
+ data = XmlSimple.xml_in(actual.to_xml)
79
+ @no_match = data['ospf-neighbor'].select do |neighbor|
80
+ if neighbor['ospf-neighbor-state'][0] != @state
81
+ "#{neighbor['neighbor-address'][0]} state is #{neighbor['os
82
+ pf-neighbor-state'][0]}"
83
+ end
84
+ end
85
+ @no_match.size == 0
86
+ end
87
+
88
+ def failure_message
89
+ @no_match
90
+ end
91
+ end
92
+
93
+ class NonJnprSfp
94
+ def match(actual)
95
+ actual.text.strip != "NON-JNPR"
96
+ end
97
+
98
+ def failure_message_for_should_not
99
+ 'Found NON Juniper SFP on chassis'
100
+ end
101
+ end
102
+
103
+ class HaveAllBgpPeersAs
104
+ def match(actual)
105
+ @no_match = actual.xpath('//bgp-peer').each do |peer|
106
+ if peer.xpath('peer-state').text != @state
107
+ "#{peer.xpath('peer-address').text} state is #{peer.xpath('peer-state').text}"
108
+ end
109
+ end
110
+ @no_match.size == 0
111
+ end
112
+
113
+ def failure_message
114
+ @no_match
115
+ end
116
+ end
117
+
118
+ class HavePimNeighborOnAllInterfaces
119
+ def match(actual)
120
+ @pim_int_without_neighbor = actual.xpath('//pim-interface[contains(pim-interface-name,"ae")]').map do |int|
121
+ if int.xpath('neighbor-count').text.to_i == 0
122
+ "#{int.xpath('pim-interface-name').text} has no neighbors"
123
+ end
124
+ end
125
+ @pim_int_without_neighbor.size == 0
126
+ end
127
+
128
+ def failure_message_for_should
129
+ @pim_int_without_neighbor
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -1,4 +1,4 @@
1
1
  module Sloe
2
2
  # Current version
3
- VERSION = '0.8.7'.freeze
3
+ VERSION = '0.8.9'.freeze
4
4
  end
@@ -1,34 +1,42 @@
1
- # -*- encoding: utf-8 -*-
1
+ # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'sloe/version'
5
5
 
6
- Gem::Specification.new do |gem|
7
- gem.name = 'sloe'
8
- gem.version = Sloe::VERSION
9
- gem.authors = ['David Gethings']
10
- gem.email = ['dgjnpr@gmail.com']
11
- gem.homepage = 'https://github.com/dgjnpr/Sloe'
12
- gem.description = <<-DESC
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'sloe'
8
+ spec.version = Sloe::VERSION
9
+ spec.authors = ['David Gethings']
10
+ spec.email = ['dgjnpr@gmail.com']
11
+ spec.homepage = 'https://github.com/dgjnpr/Sloe'
12
+ spec.license = 'MIT'
13
+ spec.description = <<-DESC
13
14
  Sloe uses NETCONF and/or SNMP to gather data regarding a network device. Designed to help with automated testing this gem can also be used with things like Ruby on Rails
14
15
  DESC
15
- gem.summary = <<-SUMM
16
+ spec.summary = <<-SUMM
16
17
  A one stop shop for collecting data from a network device using NETCONF or SNMP
17
18
  SUMM
18
19
 
19
- gem.add_dependency('snmp', '~> 1.1')
20
- gem.add_dependency('netconf', '~> 0.3')
21
- gem.add_dependency('net-scp', '~> 1.0')
22
- gem.add_development_dependency('rspec', '~> 2.12')
23
- gem.add_development_dependency('yard')
24
- # gem.add_development_dependency('pry-debugger')
25
- gem.add_development_dependency('simplecov')
26
- gem.add_development_dependency('ci_reporter')
27
- gem.add_development_dependency('rake')
28
- gem.add_development_dependency('rubocop', '~> 0.39')
20
+ spec.add_dependency 'snmp', '~> 1.1'
21
+ spec.add_dependency 'netconf', '~> 0.3'
22
+ spec.add_dependency 'net-scp', '~> 1.0'
29
23
 
30
- gem.files = `git ls-files`.split($/)
31
- gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
32
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
33
- gem.require_paths = ['lib']
24
+ # vagrant requires no later than 1.10.6
25
+ spec.add_development_dependency 'bundler', '= 1.10.6'
26
+ spec.add_development_dependency 'rspec', '~> 2.99'
27
+ spec.add_development_dependency 'yard', '~> 0.8'
28
+ spec.add_development_dependency 'pry-byebug', '~> 3.3'
29
+ spec.add_development_dependency 'simplecov', '~> 0.11'
30
+ spec.add_development_dependency 'rake', '~> 11.1'
31
+ spec.add_development_dependency 'rubocop', '~> 0.39'
32
+ spec.add_development_dependency 'envyable', '~> 1.0'
33
+ spec.add_development_dependency 'guard', '~> 2.13'
34
+ spec.add_development_dependency 'guard-rspec', '~> 4.6'
35
+ spec.add_development_dependency 'guard-bundler', '~> 2.1'
36
+ spec.add_development_dependency 'derelict', '~> 0.6'
37
+
38
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
39
+ spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
40
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
41
+ spec.require_paths = ['lib']
34
42
  end
@@ -1,52 +1,41 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sloe do
4
- context "invoked with block" do
5
- before(:all) do
6
- @login = {
7
- :target => 'capella',
8
- :username => 'netconf',
9
- :password => 'netconf'
10
- }
11
- @hostname = ''
12
- end
4
+ let(:host) { ENV['hosts'].split(':').first }
5
+ let(:login) do
6
+ {
7
+ target: Envyable.load('/tmp/env.yaml', host)['ip_address'],
8
+ username: 'root',
9
+ password: 'Juniper',
10
+ port: Envyable.load('/tmp/env.yaml', host)['ssh_port'],
11
+ snmp_port: 1161
12
+ }
13
+ end
13
14
 
14
- it "calls Netconf RPC" do
15
- Sloe::Device.new( @login ) { |dut|
16
- sw_info = dut.rpc.get_system_information
17
- @hostname = sw_info.xpath('//host-name').text
18
- }
19
- @hostname.should include @login[:target]
15
+ context 'invoked with block' do
16
+ it 'calls Netconf RPC' do
17
+ hostname = ''
18
+ Sloe::Device.new(login) do |dut|
19
+ hostname = dut.rpc.get_system_information.xpath('//host-name').text
20
+ end
21
+ expect(hostname).to include host
20
22
  end
21
23
 
22
- it "calls SNMP RPC" do
23
- Sloe::Device.new ( @login ) { |dut|
24
- @hostname = dut.snmp.get_value( 'sysName.0' ).to_s
25
- }
26
- @hostname.should include @login[:target]
24
+ it 'calls SNMP RPC' do
25
+ hostname = ''
26
+ Sloe::Device.new(login) do |dut|
27
+ hostname = dut.snmp.get_value('sysName.0').to_s
28
+ end
29
+ expect(hostname).to include host
27
30
  end
28
-
29
31
  end
30
32
 
31
- context "Junos extensions" do
32
- before(:all) do
33
- @login = {
34
- :target => 'capella',
35
- :username => 'netconf',
36
- :password => 'netconf'
37
- }
33
+ context 'Junos extensions' do
34
+ it 'Sloe::Junos responds to Junos specific RPCs' do
35
+ expect(Sloe::Junos.new(login).rpc).to respond_to(:lock_configuration)
38
36
  end
39
-
40
- it "Sloe::Junos responds to Junos specific RPCs" do
41
- Sloe::Junos.new ( @login ) { |dut|
42
- dut.rpc.respond_to?(:lock_configuration).should be true
43
- }
44
- end
45
- it "Sloe::Device does not respond to Junos specific RPCs" do
46
- Sloe::Device.new ( @login ) { |dut|
47
- dut.rpc.respond_to?(:lock_configuration).should be false
48
- }
37
+ it 'Sloe::Device does not respond to Junos specific RPCs' do
38
+ expect(Sloe::Device.new(login).rpc).to_not respond_to(:lock_configuration)
49
39
  end
50
-
51
40
  end
52
- end
41
+ end
@@ -1,107 +1,83 @@
1
- require 'sloe/junos'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Sloe do
4
-
5
- before(:all) do
6
- @jnx_mibs = Dir.glob("./mibs/JUNIPER-*.yaml").map { |f| File.basename(f, '.yaml') }
7
- @args = {
8
- :target => 'capella',
9
- :username => 'netconf',
10
- :password => 'netconf',
11
- :mib_dir => './mibs',
12
- :mib_modules => ["SNMPv2-SMI", "SNMPv2-MIB", "IF-MIB", "IP-MIB", "TCP-MIB", "UDP-MIB"].concat(@jnx_mibs)
4
+ let(:host) { ENV['hosts'].split(':').first }
5
+ let(:jnx_mibs) do
6
+ Dir.glob('./mibs/JUNIPER-*.yaml').map { |f| File.basename(f, '.yaml') }
7
+ end
8
+ let(:login) do
9
+ {
10
+ target: Envyable.load('/tmp/env.yaml', host)['ip_address'],
11
+ username: 'root',
12
+ password: 'Juniper',
13
+ port: Envyable.load('/tmp/env.yaml', host)['ssh_port'],
14
+ mib_dir: './mibs',
15
+ mib_modules: %w{SNMPv2-SMI SNMPv2-MIB IF-MIB IP-MIB TCP-MIB UDP-MIB}.concat(jnx_mibs),
16
+ snmp_port: 1161
13
17
  }
14
-
15
- @dut = Sloe::Junos.new(@args)
16
18
  end
19
+ subject(:dut) { Sloe::Junos.new(login) }
17
20
 
18
- context "SNMP API" do
19
- it "snmp.get_value() returns valid value" do
20
- @dut.snmp.get_value('sysDescr.0').should =~ /^Juniper Networks,/
21
+ context 'SNMP API' do
22
+ it 'snmp.get_value returns valid value' do
23
+ expect(dut.snmp.get_value('sysDescr.0')).to include('Juniper Networks')
21
24
  end
22
- it "snmp.get() returns one PDU" do
23
- @pdu = @dut.snmp.get('sysDescr.0')
24
- @pdu.varbind_list.should have(1).item
25
+ it 'snmp.get returns one PDU' do
26
+ expect(dut.snmp.get('sysDescr.0').varbind_list.size).to eq(1)
25
27
  end
26
- it "snmp.get_bulk() returns a list of PDUs" do
27
- @pdu = @dut.snmp.get_bulk(0, 5, 'system')
28
- @pdu.varbind_list.should have(5).items
28
+ it 'snmp.get_bulk returns a list of PDUs' do
29
+ expect(dut.snmp.get_bulk(0, 5, 'system').varbind_list.size).to eq(5)
29
30
  end
30
- it "snmp.get_next() returns one PDU" do
31
- @pdu = @dut.snmp.get_next('system')
32
- @pdu.varbind_list.should have(1).item
31
+ it 'snmp.get_next returns one PDU' do
32
+ expect(dut.snmp.get_next('system').varbind_list.size).to eq(1)
33
33
  end
34
- it "snmp.walk() returns a list of PDUs none of which are nil" do
35
- @dut.snmp.walk('system') { |vb| vb.should_not be_nil }
34
+ it 'snmp.walk returns a list of PDUs' do
35
+ vbs = []
36
+ dut.snmp.walk('system') { |vb| vbs << vb }
37
+ expect(vbs.size).to be > 0
36
38
  end
37
39
  end
38
40
 
39
- context "JNX Enterprise MIBs" do
40
- it "jnxBoxDescr.0 has a valid value" do
41
- @dut.snmp.get_value('jnxBoxDescr.0').should =~ /^Juniper/
41
+ context 'JNX Enterprise MIBs' do
42
+ it 'jnxCmCfgChgLatestUser.0 has a valid value' do
43
+ expect(dut.snmp.get_value('jnxCmCfgChgLatestUser.0')).not_to eq(SNMP::NoSuchObject)
42
44
  end
43
45
  end
44
46
 
45
- context "NETCONF API" do
46
- it "rpc.get_interface_information() functions without error" do
47
- lambda { @dut.rpc.get_interface_information() }.should_not raise_error
47
+ context 'NETCONF API' do
48
+ it 'rpc.get_interface_information functions without error' do
49
+ expect { dut.rpc.get_interface_information }.not_to raise_error
48
50
  end
49
- it "rpc.get_ospf_neighbor_information() functions without error" do
50
- lambda { @dut.rpc.get_ospf_neighbor_information() }.should_not raise_error
51
+ it 'rpc.get_ospf_neighbor_information functions without error' do
52
+ expect { dut.rpc.get_ospf_neighbor_information }.not_to raise_error
51
53
  end
52
54
  end
53
55
 
54
- context "SCP API" do
55
- it "scp.download() functions without error" do
56
- lambda { @dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.should_not raise_error
56
+ context 'SCP API' do
57
+ it 'scp.download() functions without error' do
58
+ expect { dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.not_to raise_error
57
59
  File.delete('/var/tmp/juniper.conf.gz')
58
60
  end
59
- it "scp.upload() functions without error" do
61
+ it 'scp.upload() functions without error' do
60
62
  File.new('/var/tmp/test', 'w+')
61
- lambda { @dut.scp.upload!('/var/tmp/test', 'test') }.should_not raise_error
62
- @dut.rpc.file_delete(:path => 'test')
63
+ expect { dut.scp.upload!('/var/tmp/test', 'test') }.not_to raise_error
64
+ dut.rpc.file_delete(path: 'test')
63
65
  File.delete('/var/tmp/test')
64
66
  end
65
67
  end
66
68
 
67
- context "CLI API" do
69
+ context 'CLI API' do
68
70
  it "cli('show version') functions without error" do
69
- lambda { @dut.cli("show version") }.should_not raise_error
71
+ expect { dut.cli('show version') }.not_to raise_error
70
72
  end
71
73
  it "cli('show version') contains OS information" do
72
- @dut.cli("show version").should be_a(String)
73
- @dut.cli("show version").should =~ /JUNOS Base OS/
74
+ expect(dut.cli('show version')).to include('JUNOS Base OS')
74
75
  end
75
76
  it "cli('show version', :foo => 'bar') still contains OS information" do
76
- @dut.cli("show version", :foo => 'bar').should be_a(String)
77
- @dut.cli("show version", :foo => 'bar').should =~ /JUNOS Base OS/
77
+ expect(dut.cli('show version', foo: 'bar')).to include('JUNOS Base OS')
78
78
  end
79
79
  it "cli('clear interface statistics') empty reply does not cause an error" do
80
- lambda { @dut.cli('clear interface statistics fxp0') }.should_not raise_error
81
- end
82
- end
83
-
84
- context "Helper methods" do
85
- before( :all ) do
86
- Dir.mkdir( 'configs' )
87
- @apply = File.open( "configs/capella-apply.set", "w" )
88
- @apply.write( 'set system location building "In a galaxy far, far, away"' )
89
- @apply.close
90
-
91
- @delete = File.open( "configs/capella-delete.set", "w" )
92
- @delete.write( 'delete system location')
93
- @delete.close
94
- end
95
-
96
- it "setup() with default args updates the router config" do
97
- lambda { @dut.setup() }.should_not raise_error
98
- end
99
- it "clearup() with default args updates the router config" do
100
- lambda { @dut.clearup() }.should_not raise_error
101
- end
102
-
103
- after(:all) do
104
- FileUtils.rm_rf( 'configs' )
80
+ expect { dut.cli('clear interface statistics fxp0') }.not_to raise_error
105
81
  end
106
82
  end
107
- end
83
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sloe do
4
+ it 'has a version number' do
5
+ expect(Sloe::VERSION).not_to be nil
6
+ end
7
+ end
@@ -1,6 +1,11 @@
1
+ require 'pry-byebug'
2
+ require 'envyable'
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ lib = File.expand_path('../../lib', __FILE__)
7
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
1
8
  require 'sloe'
2
9
  require 'sloe/junos'
3
- # require 'pry-debugger'
4
- require 'simplecov'
5
10
 
6
- SimpleCov.start
11
+ Envyable.load('/tmp/env.yaml', 'host_list')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sloe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Gethings
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-29 00:00:00.000000000 Z
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: snmp
@@ -52,76 +52,90 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.10.6
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.10.6
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '2.12'
75
+ version: '2.99'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '2.12'
82
+ version: '2.99'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: yard
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: '0.8'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: '0.8'
83
97
  - !ruby/object:Gem::Dependency
84
- name: simplecov
98
+ name: pry-byebug
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '3.3'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '3.3'
97
111
  - !ruby/object:Gem::Dependency
98
- name: ci_reporter
112
+ name: simplecov
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '0'
117
+ version: '0.11'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ">="
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '0'
124
+ version: '0.11'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '0'
131
+ version: '11.1'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '0'
138
+ version: '11.1'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rubocop
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -136,24 +150,103 @@ dependencies:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0.39'
153
+ - !ruby/object:Gem::Dependency
154
+ name: envyable
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.13'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.13'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '4.6'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '4.6'
195
+ - !ruby/object:Gem::Dependency
196
+ name: guard-bundler
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '2.1'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.1'
209
+ - !ruby/object:Gem::Dependency
210
+ name: derelict
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.6'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.6'
139
223
  description: |
140
224
  Sloe uses NETCONF and/or SNMP to gather data regarding a network device. Designed to help with automated testing this gem can also be used with things like Ruby on Rails
141
225
  email:
142
226
  - dgjnpr@gmail.com
143
- executables: []
227
+ executables:
228
+ - console
229
+ - setup
144
230
  extensions: []
145
231
  extra_rdoc_files: []
146
232
  files:
147
233
  - ".gitignore"
148
- - ".rspec"
234
+ - ".ruby-gemset"
235
+ - ".ruby-version"
236
+ - ".travis.yml"
237
+ - CODE_OF_CONDUCT.md
149
238
  - Gemfile
239
+ - Guardfile
150
240
  - LICENSE.txt
151
241
  - README.md
152
242
  - Rakefile
243
+ - bin/console
244
+ - bin/setup
153
245
  - lib/import-mibs.rb
154
246
  - lib/sloe.rb
155
247
  - lib/sloe/common.rb
156
248
  - lib/sloe/device.rb
249
+ - lib/sloe/expectations.rb
157
250
  - lib/sloe/ixia.rb
158
251
  - lib/sloe/junos.rb
159
252
  - lib/sloe/version.rb
@@ -301,7 +394,6 @@ files:
301
394
  - mibs/JUNIPER-DOM-MIB.yaml
302
395
  - mibs/JUNIPER-EVENT-MIB.yaml
303
396
  - mibs/JUNIPER-EX-SMI.yaml
304
- - mibs/JUNIPER-EXPERIMENT-MIB.yaml
305
397
  - mibs/JUNIPER-FIREWALL-MIB.yaml
306
398
  - mibs/JUNIPER-HOSTRESOURCES-MIB.yaml
307
399
  - mibs/JUNIPER-IF-MIB.yaml
@@ -336,7 +428,6 @@ files:
336
428
  - mibs/JUNIPER-SCU-MIB.yaml
337
429
  - mibs/JUNIPER-SMI.yaml
338
430
  - mibs/JUNIPER-SONET-MIB.yaml
339
- - mibs/JUNIPER-SP-MIB.yaml
340
431
  - mibs/JUNIPER-SUBSCRIBER-MIB.yaml
341
432
  - mibs/JUNIPER-SYSLOG-MIB.yaml
342
433
  - mibs/JUNIPER-TRACEROUTE-MIB.yaml
@@ -494,10 +585,11 @@ files:
494
585
  - sloe.gemspec
495
586
  - spec/blocks_spec.rb
496
587
  - spec/methods_spec.rb
588
+ - spec/sloe_spec.rb
497
589
  - spec/spec_helper.rb
498
- - test
499
590
  homepage: https://github.com/dgjnpr/Sloe
500
- licenses: []
591
+ licenses:
592
+ - MIT
501
593
  metadata: {}
502
594
  post_install_message:
503
595
  rdoc_options: []
@@ -523,5 +615,6 @@ summary: A one stop shop for collecting data from a network device using NETCONF
523
615
  test_files:
524
616
  - spec/blocks_spec.rb
525
617
  - spec/methods_spec.rb
618
+ - spec/sloe_spec.rb
526
619
  - spec/spec_helper.rb
527
620
  has_rdoc:
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format doc
2
- --color
@@ -1,10 +0,0 @@
1
- ---
2
- jnxExperiment: 1.3.6.1.4.1.2636.5
3
- jnxBgpM2Experiment: 1.3.6.1.4.1.2636.5.1
4
- jnxLdapExperiment: 1.3.6.1.4.1.2636.5.2
5
- jnxBfdExperiment: 1.3.6.1.4.1.2636.5.3
6
- jnxOspfv3Experiment: 1.3.6.1.4.1.2636.5.4
7
- jnxExampleMibRoot: 1.3.6.1.4.1.2636.5.5
8
- jnxInternalMibRoot: 1.3.6.1.4.1.2636.5.6
9
- jnxP2mpExperiment: 1.3.6.1.4.1.2636.5.7
10
-
@@ -1,46 +0,0 @@
1
- ---
2
- jnxSpMIB: 1.3.6.1.4.1.2636.3.32
3
- jnxSpNotifications: 1.3.6.1.4.1.2636.3.32.0
4
- jnxSpNotificationPrefix: 1.3.6.1.4.1.2636.3.32.0.0
5
- jnxSpSvcSet: 1.3.6.1.4.1.2636.3.32.1
6
- jnxSpSvcSetTable: 1.3.6.1.4.1.2636.3.32.1.1
7
- jnxSpSvcSetEntry: 1.3.6.1.4.1.2636.3.32.1.1.1
8
- jnxSpSvcSetName: 1.3.6.1.4.1.2636.3.32.1.1.1.1
9
- jnxSpSvcSetSvcType: 1.3.6.1.4.1.2636.3.32.1.1.1.2
10
- jnxSpSvcSetTypeIndex: 1.3.6.1.4.1.2636.3.32.1.1.1.3
11
- jnxSpSvcSetIfName: 1.3.6.1.4.1.2636.3.32.1.1.1.4
12
- jnxSpSvcSetIfIndex: 1.3.6.1.4.1.2636.3.32.1.1.1.5
13
- jnxSpSvcSetMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.1.1.6
14
- jnxSpSvcSetCpuUtil: 1.3.6.1.4.1.2636.3.32.1.1.1.7
15
- jnxSpSvcSetSvcStyle: 1.3.6.1.4.1.2636.3.32.1.1.1.8
16
- jnxSpSvcSetMemLimitPktDrops: 1.3.6.1.4.1.2636.3.32.1.1.1.9
17
- jnxSpSvcSetCpuLimitPktDrops: 1.3.6.1.4.1.2636.3.32.1.1.1.10
18
- jnxSpSvcSetFlowLimitPktDrops: 1.3.6.1.4.1.2636.3.32.1.1.1.11
19
- jnxSpSvcSetSvcTypeTable: 1.3.6.1.4.1.2636.3.32.1.2
20
- jnxSpSvcSetSvcTypeEntry: 1.3.6.1.4.1.2636.3.32.1.2.1
21
- jnxSpSvcSetSvcTypeIndex: 1.3.6.1.4.1.2636.3.32.1.2.1.1
22
- jnxSpSvcSetSvcTypeIfName: 1.3.6.1.4.1.2636.3.32.1.2.1.2
23
- jnxSpSvcSetSvcTypeName: 1.3.6.1.4.1.2636.3.32.1.2.1.3
24
- jnxSpSvcSetSvcTypeSvcSets: 1.3.6.1.4.1.2636.3.32.1.2.1.4
25
- jnxSpSvcSetSvcTypeMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.2.1.5
26
- jnxSpSvcSetSvcTypePctMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.2.1.6
27
- jnxSpSvcSetSvcTypeCpuUtil: 1.3.6.1.4.1.2636.3.32.1.2.1.7
28
- jnxSpSvcSetIfTable: 1.3.6.1.4.1.2636.3.32.1.3
29
- jnxSpSvcSetIfEntry: 1.3.6.1.4.1.2636.3.32.1.3.1
30
- jnxSpSvcSetIfTableName: 1.3.6.1.4.1.2636.3.32.1.3.1.1
31
- jnxSpSvcSetIfSvcSets: 1.3.6.1.4.1.2636.3.32.1.3.1.2
32
- jnxSpSvcSetIfMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.3.1.3
33
- jnxSpSvcSetIfPctMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.3.1.4
34
- jnxSpSvcSetIfPolMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.3.1.5
35
- jnxSpSvcSetIfPctPolMemoryUsage: 1.3.6.1.4.1.2636.3.32.1.3.1.6
36
- jnxSpSvcSetIfMemoryZone: 1.3.6.1.4.1.2636.3.32.1.3.1.7
37
- jnxSpSvcSetIfCpuUtil: 1.3.6.1.4.1.2636.3.32.1.3.1.8
38
- jnxFlowLimitTrapVars: 1.3.6.1.4.1.2636.3.32.2
39
- jnxSpSvcSetFlowLimitUtil: 1.3.6.1.4.1.2636.3.32.2.1
40
- jnxSpSvcSetNameUtil: 1.3.6.1.4.1.2636.3.32.2.2
41
- jnxSpSvcSetZoneEntered: 1.3.6.1.4.1.2636.3.32.0.0.1
42
- jnxSpSvcSetZoneExited: 1.3.6.1.4.1.2636.3.32.0.0.2
43
- jnxSpSvcSetCpuExceeded: 1.3.6.1.4.1.2636.3.32.0.0.3
44
- jnxSpSvcSetCpuOk: 1.3.6.1.4.1.2636.3.32.0.0.4
45
- jnxSpSvcSetFlowLimitUtilized: 1.3.6.1.4.1.2636.3.32.0.1
46
-
data/test DELETED
@@ -1 +0,0 @@
1
- spec