sloe 0.8.6 → 0.8.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 70dbc4a381ed8fdeedc2880478b1505fd52ca7c7
4
- data.tar.gz: b0569e9879ac1c7009b040334a382d659fe0a589
3
+ metadata.gz: 5397b01aa1ff0a4b4a6d0bed0c2c27b4bea22e19
4
+ data.tar.gz: e87368db3b45d1819a8251b577ff06f71345fd02
5
5
  SHA512:
6
- metadata.gz: 3213a4ef90102fca971c467eba65efbb3c51f1c39955eaf95cd708fafed5f1d4195a6147d1ac75baf10a63a58b8d3bdbad15100cc4eb3a270d1ded306a77b9aa
7
- data.tar.gz: 2cbba263c6c19e5b3b97cc46f21a8fafe7ea0bc781f273001a7ef72826dc853663b98035efcc8b1b25f2fd363fcd51dc25376b12ab1c32337156de4c8ebabf57
6
+ metadata.gz: a6132916732e57176a32d61858f4bf4ba7d492b27deb12ad13dc5e09b2c97a5905bb420ecd9c35aaacadeb4e2c6157d547e63fbbc3742537710842ce615be704
7
+ data.tar.gz: 5f869852abcdd0a2f32ba90924377ae95c5e8db48aeeebd0934d561a3c8ff7920a496fb7c513b17c5b86982bef84d0bb21e65fa33111750a62b734dbbdbd3678
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
- require 'ci/reporter/rake/rspec'
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'ci/reporter/rake/rspec'
4
4
 
5
5
  RSpec::Core::RakeTask.new
6
6
 
7
- task :default => [ 'ci:setup:rspec', :spec ]
8
- task :test => [ 'ci:setup:rspec', :spec ]
7
+ task default: ['ci:setup:rspec', :spec]
8
+ task test: ['ci:setup:rspec', :spec]
data/lib/import-mibs.rb CHANGED
@@ -1,33 +1,32 @@
1
1
  #!/usr/bin/env ruby
2
-
3
2
  require 'yaml'
4
3
 
5
4
  def eval_mib_data(mib_hash)
6
- ruby_hash = mib_hash.
7
- gsub(':', '=>'). # fix hash syntax
8
- gsub('(', '[').gsub(')', ']'). # fix tuple syntax
9
- sub('FILENAME =', 'filename ='). # get rid of constants
10
- sub('MIB =', 'mib =')
5
+ ruby_hash = mib_hash
6
+ .gsub(':', '=>') # fix hash syntax
7
+ .tr('(', '[').tr(')', ']') # fix tuple syntax
8
+ .sub('FILENAME =', 'filename =') # get rid of constants
9
+ .sub('MIB =', 'mib =')
11
10
  mib = nil
12
11
  eval(ruby_hash)
13
12
  mib
14
13
  end
15
14
 
16
15
  def module_file_name(module_name, mib_dir)
17
- File.join(mib_dir, module_name + ".yaml")
16
+ File.join(mib_dir, module_name + '.yaml')
18
17
  end
19
18
 
20
- raise "smidump tool must be installed" unless `smidump --version` =~ /^smidump 0.4/ && $? == 0
19
+ raise 'smidump tool must be installed' unless `smidump --version` =~ /^smidump 0.4/ && $CHILD_STATUS == 0
21
20
  mib_hash = `smidump -k -p mib-jnx-smi.txt -f python #{ARGV[0]}`
22
21
  mib = eval_mib_data(mib_hash)
23
22
  if mib
24
- module_name = mib["moduleName"]
23
+ module_name = mib['moduleName']
25
24
  raise "#{module_file}: invalid file format; no module name" unless module_name
26
- if mib["nodes"]
25
+ if mib['nodes']
27
26
  oid_hash = {}
28
- mib["nodes"].each { |key, value| oid_hash[key] = value["oid"] }
29
- if mib["notifications"]
30
- mib["notifications"].each { |key, value| oid_hash[key] = value["oid"] }
27
+ mib['nodes'].each { |key, value| oid_hash[key] = value['oid'] }
28
+ if mib['notifications']
29
+ mib['notifications'].each { |key, value| oid_hash[key] = value['oid'] }
31
30
  end
32
31
  File.open(module_file_name(module_name, ARGV[1]), 'w') do |file|
33
32
  YAML.dump(oid_hash, file)
data/lib/sloe/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Sloe
2
2
  # Current version
3
- VERSION = "0.8.6"
3
+ VERSION = '0.8.7'.freeze
4
4
  end
data/sloe.gemspec CHANGED
@@ -4,27 +4,31 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'sloe/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = "sloe"
7
+ gem.name = 'sloe'
8
8
  gem.version = Sloe::VERSION
9
- gem.authors = ["David Gethings"]
10
- gem.email = ["dgjnpr@gmail.com"]
11
- gem.description = %q{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}
12
- gem.summary = %q{A one stop shop for collecting data from a network device using NETCONF or SNMP}
13
- gem.homepage = "https://github.com/dgjnpr/Sloe"
9
+ gem.authors = ['David Gethings']
10
+ gem.email = ['dgjnpr@gmail.com']
11
+ gem.homepage = 'https://github.com/dgjnpr/Sloe'
12
+ gem.description = <<-DESC
13
+ 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
+ DESC
15
+ gem.summary = <<-SUMM
16
+ A one stop shop for collecting data from a network device using NETCONF or SNMP
17
+ SUMM
14
18
 
15
- gem.add_dependency('snmp', '~> 1.2')
16
- gem.add_dependency('net-netconf', '~> 0.3')
17
- gem.add_dependency('net-scp', '~> 1.2')
18
- gem.add_development_dependency('rspec', '~> 3.4')
19
- gem.add_development_dependency('yard', '~> 0.8')
20
- gem.add_development_dependency('simplecov', '~> 0.11')
21
- gem.add_development_dependency('ci_reporter', '~> 2.0')
22
- gem.add_development_dependency('ci_reporter_rspec')
23
- gem.add_development_dependency('rake', '>= 10')
24
- gem.add_development_dependency('pry-byebug', '~> 3.3')
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')
25
29
 
26
30
  gem.files = `git ls-files`.split($/)
27
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
31
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
28
32
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
29
- gem.require_paths = ["lib"]
33
+ gem.require_paths = ['lib']
30
34
  end
data/spec/blocks_spec.rb CHANGED
@@ -1,31 +1,52 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sloe do
4
- let(:login) { {target: 'crtj-0dc1-0001', username: 'netadmin', password: 'pass123'} }
5
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
13
+
6
14
  it "calls Netconf RPC" do
7
- hostname = ''
8
- Sloe::Device.new(login) { |dut|
9
- hostname = dut.rpc.get_system_information.xpath('//host-name').text
15
+ Sloe::Device.new( @login ) { |dut|
16
+ sw_info = dut.rpc.get_system_information
17
+ @hostname = sw_info.xpath('//host-name').text
10
18
  }
11
- expect(hostname).to include login[:target]
19
+ @hostname.should include @login[:target]
12
20
  end
13
21
 
14
22
  it "calls SNMP RPC" do
15
- hostname = ''
16
- Sloe::Device.new (login) { |dut|
17
- hostname = dut.snmp.get_value( 'sysName.0' ).to_s
23
+ Sloe::Device.new ( @login ) { |dut|
24
+ @hostname = dut.snmp.get_value( 'sysName.0' ).to_s
18
25
  }
19
- expect(hostname).to include login[:target]
26
+ @hostname.should include @login[:target]
20
27
  end
28
+
21
29
  end
22
30
 
23
31
  context "Junos extensions" do
32
+ before(:all) do
33
+ @login = {
34
+ :target => 'capella',
35
+ :username => 'netconf',
36
+ :password => 'netconf'
37
+ }
38
+ end
39
+
24
40
  it "Sloe::Junos responds to Junos specific RPCs" do
25
- expect( Sloe::Junos.new(login).rpc ).to respond_to(:lock_configuration)
41
+ Sloe::Junos.new ( @login ) { |dut|
42
+ dut.rpc.respond_to?(:lock_configuration).should be true
43
+ }
26
44
  end
27
45
  it "Sloe::Device does not respond to Junos specific RPCs" do
28
- expect( Sloe::Device.new(login).rpc ).to_not respond_to(:lock_configuration)
46
+ Sloe::Device.new ( @login ) { |dut|
47
+ dut.rpc.respond_to?(:lock_configuration).should be false
48
+ }
29
49
  end
50
+
30
51
  end
31
52
  end
data/spec/methods_spec.rb CHANGED
@@ -1,74 +1,107 @@
1
1
  require 'sloe/junos'
2
2
 
3
3
  describe Sloe do
4
- let(:jnx_mibs) { Dir.glob("./mibs/JUNIPER-*.yaml").map { |f| File.basename(f, '.yaml') } }
5
- let(:login) { {
6
- target: 'crtj-0dc1-0001',
7
- username: 'netadmin',
8
- password: 'pass123',
9
- mib_dir: './mibs',
10
- mib_modules: ["SNMPv2-SMI", "SNMPv2-MIB", "IF-MIB", "IP-MIB", "TCP-MIB", "UDP-MIB"].concat(jnx_mibs) }
11
- }
12
- subject(:dut) { Sloe::Junos.new(login) }
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)
13
+ }
14
+
15
+ @dut = Sloe::Junos.new(@args)
16
+ end
13
17
 
14
18
  context "SNMP API" do
15
19
  it "snmp.get_value() returns valid value" do
16
- expect( dut.snmp.get_value('sysDescr.0') ).to =~ /^Juniper Networks,/
20
+ @dut.snmp.get_value('sysDescr.0').should =~ /^Juniper Networks,/
17
21
  end
18
22
  it "snmp.get() returns one PDU" do
19
- expect( dut.snmp.get('sysDescr.0').varbind_list.size ).to eq(1)
23
+ @pdu = @dut.snmp.get('sysDescr.0')
24
+ @pdu.varbind_list.should have(1).item
20
25
  end
21
26
  it "snmp.get_bulk() returns a list of PDUs" do
22
- expect( dut.snmp.get_bulk(0, 5, 'system').varbind_list.size ).to eq(5)
27
+ @pdu = @dut.snmp.get_bulk(0, 5, 'system')
28
+ @pdu.varbind_list.should have(5).items
23
29
  end
24
30
  it "snmp.get_next() returns one PDU" do
25
- expect( dut.snmp.get_next('system').varbind_list.size ).to eq(1)
31
+ @pdu = @dut.snmp.get_next('system')
32
+ @pdu.varbind_list.should have(1).item
26
33
  end
27
34
  it "snmp.walk() returns a list of PDUs none of which are nil" do
28
- expect { dut.snmp.walk('system') }.not_to eq(nil)
35
+ @dut.snmp.walk('system') { |vb| vb.should_not be_nil }
29
36
  end
30
37
  end
31
38
 
32
39
  context "JNX Enterprise MIBs" do
33
40
  it "jnxBoxDescr.0 has a valid value" do
34
- expect( dut.snmp.get_value('jnxBoxDescr.0') ).to =~ /^Juniper/
41
+ @dut.snmp.get_value('jnxBoxDescr.0').should =~ /^Juniper/
35
42
  end
36
43
  end
37
44
 
38
45
  context "NETCONF API" do
39
46
  it "rpc.get_interface_information() functions without error" do
40
- expect { dut.rpc.get_interface_information() }.not_to raise_error
47
+ lambda { @dut.rpc.get_interface_information() }.should_not raise_error
41
48
  end
42
49
  it "rpc.get_ospf_neighbor_information() functions without error" do
43
- expect { dut.rpc.get_ospf_neighbor_information() }.not_to raise_error
50
+ lambda { @dut.rpc.get_ospf_neighbor_information() }.should_not raise_error
44
51
  end
45
52
  end
46
53
 
47
54
  context "SCP API" do
48
55
  it "scp.download() functions without error" do
49
- expect { dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.not_to raise_error
56
+ lambda { @dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.should_not raise_error
50
57
  File.delete('/var/tmp/juniper.conf.gz')
51
58
  end
52
59
  it "scp.upload() functions without error" do
53
60
  File.new('/var/tmp/test', 'w+')
54
- expect { dut.scp.upload!('/var/tmp/test', 'test') }.not_to raise_error
55
- dut.rpc.file_delete(:path => 'test')
61
+ lambda { @dut.scp.upload!('/var/tmp/test', 'test') }.should_not raise_error
62
+ @dut.rpc.file_delete(:path => 'test')
56
63
  File.delete('/var/tmp/test')
57
64
  end
58
65
  end
59
66
 
60
67
  context "CLI API" do
61
68
  it "cli('show version') functions without error" do
62
- expect { dut.cli("show version") }.not_to raise_error
69
+ lambda { @dut.cli("show version") }.should_not raise_error
63
70
  end
64
71
  it "cli('show version') contains OS information" do
65
- expect( dut.cli("show version") ).to =~ /JUNOS Base OS/
72
+ @dut.cli("show version").should be_a(String)
73
+ @dut.cli("show version").should =~ /JUNOS Base OS/
66
74
  end
67
75
  it "cli('show version', :foo => 'bar') still contains OS information" do
68
- expect( dut.cli("show version", :foo => 'bar') ).to =~ /JUNOS Base OS/
76
+ @dut.cli("show version", :foo => 'bar').should be_a(String)
77
+ @dut.cli("show version", :foo => 'bar').should =~ /JUNOS Base OS/
69
78
  end
70
79
  it "cli('clear interface statistics') empty reply does not cause an error" do
71
- expect { dut.cli('clear interface statistics fxp0') }.not_to raise_error
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' )
72
105
  end
73
106
  end
74
107
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'sloe'
2
2
  require 'sloe/junos'
3
- require 'pry-byebug'
3
+ # require 'pry-debugger'
4
4
  require 'simplecov'
5
5
 
6
6
  SimpleCov.start
data/test ADDED
@@ -0,0 +1 @@
1
+ spec
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.6
4
+ version: 0.8.7
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-01-25 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: snmp
@@ -16,16 +16,16 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '1.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.2'
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: net-netconf
28
+ name: netconf
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -44,72 +44,58 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.2'
47
+ version: '1.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.2'
54
+ version: '1.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.4'
61
+ version: '2.12'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.4'
68
+ version: '2.12'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0.8'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0.8'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0.11'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0.11'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: ci_reporter
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '2.0'
111
- - !ruby/object:Gem::Dependency
112
- name: ci_reporter_rspec
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - ">="
@@ -128,31 +114,30 @@ dependencies:
128
114
  requirements:
129
115
  - - ">="
130
116
  - !ruby/object:Gem::Version
131
- version: '10'
117
+ version: '0'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - ">="
137
123
  - !ruby/object:Gem::Version
138
- version: '10'
124
+ version: '0'
139
125
  - !ruby/object:Gem::Dependency
140
- name: pry-byebug
126
+ name: rubocop
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: '3.3'
131
+ version: '0.39'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: '3.3'
153
- description: Sloe uses NETCONF and/or SNMP to gather data regarding a network device.
154
- Designed to help with automated testing this gem can also be used with things like
155
- Ruby on Rails
138
+ version: '0.39'
139
+ description: |
140
+ 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
156
141
  email:
157
142
  - dgjnpr@gmail.com
158
143
  executables: []
@@ -510,6 +495,7 @@ files:
510
495
  - spec/blocks_spec.rb
511
496
  - spec/methods_spec.rb
512
497
  - spec/spec_helper.rb
498
+ - test
513
499
  homepage: https://github.com/dgjnpr/Sloe
514
500
  licenses: []
515
501
  metadata: {}
@@ -529,7 +515,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
529
515
  version: '0'
530
516
  requirements: []
531
517
  rubyforge_project:
532
- rubygems_version: 2.4.5
518
+ rubygems_version: 2.5.2
533
519
  signing_key:
534
520
  specification_version: 4
535
521
  summary: A one stop shop for collecting data from a network device using NETCONF or