sloe 0.8.6 → 0.8.7

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: 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