oxford 0.9
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/.autotest +4 -0
- data/.gitignore +2 -0
- data/.rspec +3 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +52 -0
- data/README.mkd +32 -0
- data/Rakefile +63 -0
- data/bin/oxford +18 -0
- data/config/database.yaml +7 -0
- data/inc/testing.ldif +107 -0
- data/inc/websages.schema +734 -0
- data/lib/oxford.rb +10 -0
- data/lib/oxford/facts.rb +66 -0
- data/lib/oxford/host.rb +53 -0
- data/lib/oxford/ldap.rb +33 -0
- data/lib/oxford/network.rb +6 -0
- data/lib/oxford/processor.rb +6 -0
- data/lib/oxford/runner.rb +41 -0
- data/oxford.gemspec +25 -0
- data/spec/facts_spec.rb +36 -0
- data/spec/fixtures/ldap.yaml +158 -0
- data/spec/fixtures/nossl.yaml +7 -0
- data/spec/fixtures/ssl.yaml +7 -0
- data/spec/host_spec.rb +95 -0
- data/spec/ldap_spec.rb +19 -0
- data/spec/runner_spec.rb +40 -0
- data/spec/spec_helper.rb +8 -0
- metadata +179 -0
data/spec/host_spec.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
describe Oxford::Host do
|
2
|
+
|
3
|
+
before(:all) do
|
4
|
+
Oxford::LDAPAdapter.new
|
5
|
+
@g = Oxford::Host.find('galactica')
|
6
|
+
end
|
7
|
+
|
8
|
+
context "host" do
|
9
|
+
it 'should be able to tell me all known facts about a system' do
|
10
|
+
@g.factFqdn.should eql('galactica.test.com')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should be able to write a fact' do
|
14
|
+
r = randomstring(10)
|
15
|
+
@g.factOperatingSystem = r
|
16
|
+
lambda { @g.save }.should_not raise_error
|
17
|
+
f = Oxford::Host.find('galactica')
|
18
|
+
f.factOperatingSystem.should eql(r)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should gracefully handle an unknown fact' do
|
22
|
+
lambda { @g.factBlah = 'foo' }.should raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should be able to create a new host' do
|
26
|
+
r = randomstring(10)
|
27
|
+
a = Oxford::Host.new(r)
|
28
|
+
a.save
|
29
|
+
b = Oxford::Host.find(r)
|
30
|
+
b.should eql(a)
|
31
|
+
a.delete
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "networks" do
|
36
|
+
it 'should be able to retrieve a list of network devices on a host in ldap' do
|
37
|
+
@g.networks.should_not be_nil
|
38
|
+
@g.networks.should be_an(Array)
|
39
|
+
@g.networks.first.should be_an(Oxford::Network)
|
40
|
+
@g.networks.should have(2).items
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should be able to get information about an adapter from a host in ldap' do
|
44
|
+
n = @g.networks('NetworkLo0')
|
45
|
+
n.should have(1).item
|
46
|
+
n.first.should be_a(Oxford::Network)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should be able to create a new network device' do
|
50
|
+
r = "test_interface"
|
51
|
+
v = { 'Interface' => 'eth1',
|
52
|
+
'IpAddress' => '192.168.2.100',
|
53
|
+
'MacAddress' => '22:22:22:22:22:22',
|
54
|
+
'Network' => '255.255.255.0',
|
55
|
+
}
|
56
|
+
before = @g.networks
|
57
|
+
@g.add_network(r,v)
|
58
|
+
after = @g.networks
|
59
|
+
(after - before).should have(1).item
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should be able to delete a network device' do
|
63
|
+
before = @g.networks
|
64
|
+
@g.networks.each do |n|
|
65
|
+
n.delete if n.cn == 'test_interface'
|
66
|
+
end
|
67
|
+
after = @g.networks
|
68
|
+
(before - after).should have(1).item
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "processor" do
|
73
|
+
it 'should be able to list all processors on a host in ldap' do
|
74
|
+
@g.processors.should_not be_nil
|
75
|
+
@g.processors.should be_an(Array)
|
76
|
+
@g.processors.first.should be_an(Oxford::Processor)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should be able to write a processor entry to a host in ldap' do
|
80
|
+
r = "processor" + (0...2).collect { rand(9) }.to_s
|
81
|
+
v = { "processorId" => "0", "processorInfo" => "some test stuff" }
|
82
|
+
before = @g.processors
|
83
|
+
@g.add_processor(r,v)
|
84
|
+
after = @g.processors
|
85
|
+
(after - before).should have(1).item
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should be able to delete a processor device' do
|
89
|
+
before = @g.processors
|
90
|
+
@g.processors.first.delete
|
91
|
+
after = @g.processors
|
92
|
+
(before - after).should have(1).item
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/spec/ldap_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
describe Oxford::LDAPAdapter do
|
2
|
+
it 'should connect to LDAP server from a config file' do
|
3
|
+
ldap = Oxford::LDAPAdapter.new
|
4
|
+
ldap.connected?.should == true
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'should connect to LDAP over ssl' do
|
8
|
+
pending('need to fix the SSL certificate issue - pkild?')
|
9
|
+
# Oxford::Runner.config = File.join(File.dirname(__FILE__),'/fixtures/ssl.yaml')
|
10
|
+
# ldap = Oxford::LDAPAdapter.new
|
11
|
+
# ldap.connected?.should == true
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should connec to LDAP over plain' do
|
15
|
+
Oxford::Runner.config = File.join(File.dirname(__FILE__),'/fixtures/nossl.yaml')
|
16
|
+
ldap = Oxford::LDAPAdapter.new
|
17
|
+
ldap.connected?.should == true
|
18
|
+
end
|
19
|
+
end
|
data/spec/runner_spec.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
describe Oxford::Runner do
|
2
|
+
before(:all) do
|
3
|
+
@f = Oxford::Facts.new
|
4
|
+
Oxford::LDAPAdapter.new
|
5
|
+
end
|
6
|
+
|
7
|
+
after(:all) do
|
8
|
+
g = Oxford::Host.find(@f.hostname)
|
9
|
+
g.networks.each { |n| n.delete }
|
10
|
+
g.processors.each { |p| p.delete }
|
11
|
+
g.delete
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should start with no hosts' do
|
15
|
+
g = Oxford::Host.find(@f.hostname)
|
16
|
+
g.count.should eql(0)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should write the facts to the adapters' do
|
20
|
+
Oxford::Runner.run!
|
21
|
+
g = Oxford::Host.find(@f.hostname)
|
22
|
+
g.should be_an(Oxford::Host)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should take a config file' do
|
26
|
+
Oxford::Runner.config = File.join(File.dirname(__FILE__),'/fixtures/nossl.yaml')
|
27
|
+
Oxford::Runner.config.should == File.join(File.dirname(__FILE__),'/fixtures/nossl.yaml')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should update existing facts' do
|
31
|
+
g = Oxford::Host.find(@f.hostname)
|
32
|
+
g.__send__("facthardwaremodel=", "fakearch")
|
33
|
+
g.save!
|
34
|
+
g.facthardwaremodel.should eql("fakearch")
|
35
|
+
Oxford::Runner.run!
|
36
|
+
f = Oxford::Host.find(@f.hostname)
|
37
|
+
f.facthardwaremodel.should eql(@f.hardwaremodel)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: oxford
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 9
|
9
|
+
version: "0.9"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- James Fryman
|
13
|
+
- Aziz Shamim
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-11-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: facter
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 19
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 5
|
32
|
+
- 8
|
33
|
+
version: 1.5.8
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activeldap
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 3
|
47
|
+
- 1
|
48
|
+
- 0
|
49
|
+
version: 3.1.0
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: ruby-ldap
|
54
|
+
prerelease: false
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 45
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
- 9
|
64
|
+
- 11
|
65
|
+
version: 0.9.11
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rspec
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 23
|
77
|
+
segments:
|
78
|
+
- 2
|
79
|
+
- 6
|
80
|
+
- 0
|
81
|
+
version: 2.6.0
|
82
|
+
type: :development
|
83
|
+
version_requirements: *id004
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rake
|
86
|
+
prerelease: false
|
87
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 49
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
- 8
|
96
|
+
- 7
|
97
|
+
version: 0.8.7
|
98
|
+
type: :development
|
99
|
+
version_requirements: *id005
|
100
|
+
description: ""
|
101
|
+
email:
|
102
|
+
- james@frymanet.com
|
103
|
+
- azizshamim@gmail.com
|
104
|
+
executables:
|
105
|
+
- oxford
|
106
|
+
extensions: []
|
107
|
+
|
108
|
+
extra_rdoc_files: []
|
109
|
+
|
110
|
+
files:
|
111
|
+
- .autotest
|
112
|
+
- .gitignore
|
113
|
+
- .rspec
|
114
|
+
- Gemfile
|
115
|
+
- Gemfile.lock
|
116
|
+
- README.mkd
|
117
|
+
- Rakefile
|
118
|
+
- bin/oxford
|
119
|
+
- config/database.yaml
|
120
|
+
- inc/testing.ldif
|
121
|
+
- inc/websages.schema
|
122
|
+
- lib/oxford.rb
|
123
|
+
- lib/oxford/facts.rb
|
124
|
+
- lib/oxford/host.rb
|
125
|
+
- lib/oxford/ldap.rb
|
126
|
+
- lib/oxford/network.rb
|
127
|
+
- lib/oxford/processor.rb
|
128
|
+
- lib/oxford/runner.rb
|
129
|
+
- oxford.gemspec
|
130
|
+
- spec/facts_spec.rb
|
131
|
+
- spec/fixtures/ldap.yaml
|
132
|
+
- spec/fixtures/nossl.yaml
|
133
|
+
- spec/fixtures/ssl.yaml
|
134
|
+
- spec/host_spec.rb
|
135
|
+
- spec/ldap_spec.rb
|
136
|
+
- spec/runner_spec.rb
|
137
|
+
- spec/spec_helper.rb
|
138
|
+
homepage:
|
139
|
+
licenses: []
|
140
|
+
|
141
|
+
post_install_message:
|
142
|
+
rdoc_options: []
|
143
|
+
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
version: "0"
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
hash: 3
|
161
|
+
segments:
|
162
|
+
- 0
|
163
|
+
version: "0"
|
164
|
+
requirements: []
|
165
|
+
|
166
|
+
rubyforge_project:
|
167
|
+
rubygems_version: 1.8.10
|
168
|
+
signing_key:
|
169
|
+
specification_version: 3
|
170
|
+
summary: ""
|
171
|
+
test_files:
|
172
|
+
- spec/facts_spec.rb
|
173
|
+
- spec/fixtures/ldap.yaml
|
174
|
+
- spec/fixtures/nossl.yaml
|
175
|
+
- spec/fixtures/ssl.yaml
|
176
|
+
- spec/host_spec.rb
|
177
|
+
- spec/ldap_spec.rb
|
178
|
+
- spec/runner_spec.rb
|
179
|
+
- spec/spec_helper.rb
|