sloe 0.8.5 → 0.8.6
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 +4 -4
- data/lib/sloe/version.rb +1 -1
- data/sloe.gemspec +10 -9
- data/spec/blocks_spec.rb +11 -32
- data/spec/methods_spec.rb +24 -57
- data/spec/spec_helper.rb +1 -1
- metadata +48 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 70dbc4a381ed8fdeedc2880478b1505fd52ca7c7
|
|
4
|
+
data.tar.gz: b0569e9879ac1c7009b040334a382d659fe0a589
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3213a4ef90102fca971c467eba65efbb3c51f1c39955eaf95cd708fafed5f1d4195a6147d1ac75baf10a63a58b8d3bdbad15100cc4eb3a270d1ded306a77b9aa
|
|
7
|
+
data.tar.gz: 2cbba263c6c19e5b3b97cc46f21a8fafe7ea0bc781f273001a7ef72826dc853663b98035efcc8b1b25f2fd363fcd51dc25376b12ab1c32337156de4c8ebabf57
|
data/lib/sloe/version.rb
CHANGED
data/sloe.gemspec
CHANGED
|
@@ -12,15 +12,16 @@ Gem::Specification.new do |gem|
|
|
|
12
12
|
gem.summary = %q{A one stop shop for collecting data from a network device using NETCONF or SNMP}
|
|
13
13
|
gem.homepage = "https://github.com/dgjnpr/Sloe"
|
|
14
14
|
|
|
15
|
-
gem.add_dependency('snmp', '~> 1.
|
|
16
|
-
gem.add_dependency('netconf', '~> 0.3')
|
|
17
|
-
gem.add_dependency('net-scp', '~> 1.
|
|
18
|
-
gem.add_development_dependency('rspec', '~>
|
|
19
|
-
gem.add_development_dependency('yard')
|
|
20
|
-
|
|
21
|
-
gem.add_development_dependency('
|
|
22
|
-
gem.add_development_dependency('
|
|
23
|
-
gem.add_development_dependency('rake')
|
|
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')
|
|
24
25
|
|
|
25
26
|
gem.files = `git ls-files`.split($/)
|
|
26
27
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/spec/blocks_spec.rb
CHANGED
|
@@ -1,52 +1,31 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Sloe do
|
|
4
|
+
let(:login) { {target: 'crtj-0dc1-0001', username: 'netadmin', password: 'pass123'} }
|
|
4
5
|
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
|
-
|
|
14
6
|
it "calls Netconf RPC" do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
hostname = ''
|
|
8
|
+
Sloe::Device.new(login) { |dut|
|
|
9
|
+
hostname = dut.rpc.get_system_information.xpath('//host-name').text
|
|
18
10
|
}
|
|
19
|
-
|
|
11
|
+
expect(hostname).to include login[:target]
|
|
20
12
|
end
|
|
21
13
|
|
|
22
14
|
it "calls SNMP RPC" do
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
hostname = ''
|
|
16
|
+
Sloe::Device.new (login) { |dut|
|
|
17
|
+
hostname = dut.snmp.get_value( 'sysName.0' ).to_s
|
|
25
18
|
}
|
|
26
|
-
|
|
19
|
+
expect(hostname).to include login[:target]
|
|
27
20
|
end
|
|
28
|
-
|
|
29
21
|
end
|
|
30
22
|
|
|
31
23
|
context "Junos extensions" do
|
|
32
|
-
before(:all) do
|
|
33
|
-
@login = {
|
|
34
|
-
:target => 'capella',
|
|
35
|
-
:username => 'netconf',
|
|
36
|
-
:password => 'netconf'
|
|
37
|
-
}
|
|
38
|
-
end
|
|
39
|
-
|
|
40
24
|
it "Sloe::Junos responds to Junos specific RPCs" do
|
|
41
|
-
Sloe::Junos.new
|
|
42
|
-
dut.rpc.respond_to?(:lock_configuration).should be true
|
|
43
|
-
}
|
|
25
|
+
expect( Sloe::Junos.new(login).rpc ).to respond_to(:lock_configuration)
|
|
44
26
|
end
|
|
45
27
|
it "Sloe::Device does not respond to Junos specific RPCs" do
|
|
46
|
-
Sloe::Device.new
|
|
47
|
-
dut.rpc.respond_to?(:lock_configuration).should be false
|
|
48
|
-
}
|
|
28
|
+
expect( Sloe::Device.new(login).rpc ).to_not respond_to(:lock_configuration)
|
|
49
29
|
end
|
|
50
|
-
|
|
51
30
|
end
|
|
52
31
|
end
|
data/spec/methods_spec.rb
CHANGED
|
@@ -1,107 +1,74 @@
|
|
|
1
1
|
require 'sloe/junos'
|
|
2
2
|
|
|
3
3
|
describe Sloe do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
@dut = Sloe::Junos.new(@args)
|
|
16
|
-
end
|
|
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) }
|
|
17
13
|
|
|
18
14
|
context "SNMP API" do
|
|
19
15
|
it "snmp.get_value() returns valid value" do
|
|
20
|
-
|
|
16
|
+
expect( dut.snmp.get_value('sysDescr.0') ).to =~ /^Juniper Networks,/
|
|
21
17
|
end
|
|
22
18
|
it "snmp.get() returns one PDU" do
|
|
23
|
-
|
|
24
|
-
@pdu.varbind_list.should have(1).item
|
|
19
|
+
expect( dut.snmp.get('sysDescr.0').varbind_list.size ).to eq(1)
|
|
25
20
|
end
|
|
26
21
|
it "snmp.get_bulk() returns a list of PDUs" do
|
|
27
|
-
|
|
28
|
-
@pdu.varbind_list.should have(5).items
|
|
22
|
+
expect( dut.snmp.get_bulk(0, 5, 'system').varbind_list.size ).to eq(5)
|
|
29
23
|
end
|
|
30
24
|
it "snmp.get_next() returns one PDU" do
|
|
31
|
-
|
|
32
|
-
@pdu.varbind_list.should have(1).item
|
|
25
|
+
expect( dut.snmp.get_next('system').varbind_list.size ).to eq(1)
|
|
33
26
|
end
|
|
34
27
|
it "snmp.walk() returns a list of PDUs none of which are nil" do
|
|
35
|
-
|
|
28
|
+
expect { dut.snmp.walk('system') }.not_to eq(nil)
|
|
36
29
|
end
|
|
37
30
|
end
|
|
38
31
|
|
|
39
32
|
context "JNX Enterprise MIBs" do
|
|
40
33
|
it "jnxBoxDescr.0 has a valid value" do
|
|
41
|
-
|
|
34
|
+
expect( dut.snmp.get_value('jnxBoxDescr.0') ).to =~ /^Juniper/
|
|
42
35
|
end
|
|
43
36
|
end
|
|
44
37
|
|
|
45
38
|
context "NETCONF API" do
|
|
46
39
|
it "rpc.get_interface_information() functions without error" do
|
|
47
|
-
|
|
40
|
+
expect { dut.rpc.get_interface_information() }.not_to raise_error
|
|
48
41
|
end
|
|
49
42
|
it "rpc.get_ospf_neighbor_information() functions without error" do
|
|
50
|
-
|
|
43
|
+
expect { dut.rpc.get_ospf_neighbor_information() }.not_to raise_error
|
|
51
44
|
end
|
|
52
45
|
end
|
|
53
46
|
|
|
54
47
|
context "SCP API" do
|
|
55
48
|
it "scp.download() functions without error" do
|
|
56
|
-
|
|
49
|
+
expect { dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.not_to raise_error
|
|
57
50
|
File.delete('/var/tmp/juniper.conf.gz')
|
|
58
51
|
end
|
|
59
52
|
it "scp.upload() functions without error" do
|
|
60
53
|
File.new('/var/tmp/test', 'w+')
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
expect { dut.scp.upload!('/var/tmp/test', 'test') }.not_to raise_error
|
|
55
|
+
dut.rpc.file_delete(:path => 'test')
|
|
63
56
|
File.delete('/var/tmp/test')
|
|
64
57
|
end
|
|
65
58
|
end
|
|
66
59
|
|
|
67
60
|
context "CLI API" do
|
|
68
61
|
it "cli('show version') functions without error" do
|
|
69
|
-
|
|
62
|
+
expect { dut.cli("show version") }.not_to raise_error
|
|
70
63
|
end
|
|
71
64
|
it "cli('show version') contains OS information" do
|
|
72
|
-
|
|
73
|
-
@dut.cli("show version").should =~ /JUNOS Base OS/
|
|
65
|
+
expect( dut.cli("show version") ).to =~ /JUNOS Base OS/
|
|
74
66
|
end
|
|
75
67
|
it "cli('show version', :foo => 'bar') still contains OS information" do
|
|
76
|
-
|
|
77
|
-
@dut.cli("show version", :foo => 'bar').should =~ /JUNOS Base OS/
|
|
68
|
+
expect( dut.cli("show version", :foo => 'bar') ).to =~ /JUNOS Base OS/
|
|
78
69
|
end
|
|
79
70
|
it "cli('clear interface statistics') empty reply does not cause an error" do
|
|
80
|
-
|
|
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' )
|
|
71
|
+
expect { dut.cli('clear interface statistics fxp0') }.not_to raise_error
|
|
105
72
|
end
|
|
106
73
|
end
|
|
107
74
|
end
|
data/spec/spec_helper.rb
CHANGED
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.
|
|
4
|
+
version: 0.8.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Gethings
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-01-25 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.
|
|
19
|
+
version: '1.2'
|
|
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.
|
|
26
|
+
version: '1.2'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: netconf
|
|
28
|
+
name: net-netconf
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
@@ -44,58 +44,72 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '1.
|
|
47
|
+
version: '1.2'
|
|
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.
|
|
54
|
+
version: '1.2'
|
|
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: '
|
|
61
|
+
version: '3.4'
|
|
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: '
|
|
68
|
+
version: '3.4'
|
|
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'
|
|
75
|
+
version: '0.8'
|
|
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'
|
|
82
|
+
version: '0.8'
|
|
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'
|
|
89
|
+
version: '0.11'
|
|
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'
|
|
96
|
+
version: '0.11'
|
|
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
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
115
|
- - ">="
|
|
@@ -114,14 +128,28 @@ dependencies:
|
|
|
114
128
|
requirements:
|
|
115
129
|
- - ">="
|
|
116
130
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
131
|
+
version: '10'
|
|
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: '
|
|
138
|
+
version: '10'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: pry-byebug
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '3.3'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '3.3'
|
|
125
153
|
description: Sloe uses NETCONF and/or SNMP to gather data regarding a network device.
|
|
126
154
|
Designed to help with automated testing this gem can also be used with things like
|
|
127
155
|
Ruby on Rails
|
|
@@ -501,7 +529,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
501
529
|
version: '0'
|
|
502
530
|
requirements: []
|
|
503
531
|
rubyforge_project:
|
|
504
|
-
rubygems_version: 2.
|
|
532
|
+
rubygems_version: 2.4.5
|
|
505
533
|
signing_key:
|
|
506
534
|
specification_version: 4
|
|
507
535
|
summary: A one stop shop for collecting data from a network device using NETCONF or
|