rouster 0.57 → 0.61

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ acpid (pid 945) is running...
2
+ atd (pid 1010) is running...
3
+ auditd (pid 853) is running...
4
+ Stopped
5
+ cgred is stopped
6
+ crond (pid 999) is running...
7
+ ip6tables: Firewall is not running.
8
+ iptables: Firewall is not running.
9
+ Kdump is not operational
10
+ mdmonitor is stopped
11
+ netconsole module not loaded
12
+ Configured devices:
13
+ lo eth0
14
+ Currently active devices:
15
+ lo eth0
16
+ rpc.svcgssd is stopped
17
+ rpc.mountd is stopped
18
+ nfsd is stopped
19
+ rpc.statd (pid 905) is running...
20
+ ntpd (pid 1587) is running...
21
+ portreserve is stopped
22
+ master is stopped
23
+ puppet is stopped
24
+ rdisc is stopped
25
+ restorecond is stopped
26
+ rhsmcertd (pid 1023) is running...
27
+ rpcbind (pid 887) is running...
28
+ rpc.gssd is stopped
29
+ rpc.idmapd is stopped
30
+ rpc.svcgssd is stopped
31
+ rsyslogd (pid 869) is running...
32
+ sandbox is stopped
33
+ saslauthd is stopped
34
+ sendmail (pid 981) is running...
35
+ sm-client (pid 990) is running...
36
+ snmpd (pid 1569) is running...
37
+ snmptrapd is stopped
38
+ openssh-daemon (pid 965) is running...
39
+ svnserve is stopped
40
+ tgtd is stopped
@@ -0,0 +1,20 @@
1
+ rc stop/waiting
2
+ tty (/dev/tty3) start/running, process 1601
3
+ tty (/dev/tty2) start/running, process 1597
4
+ tty (/dev/tty1) start/running, process 1595
5
+ tty (/dev/tty6) start/running, process 1609
6
+ tty (/dev/tty5) start/running, process 1607
7
+ tty (/dev/tty4) start/running, process 1603
8
+ plymouth-shutdown stop/waiting
9
+ control-alt-delete stop/waiting
10
+ rcS-emergency stop/waiting
11
+ kexec-disable stop/waiting
12
+ quit-plymouth stop/waiting
13
+ rcS stop/waiting
14
+ prefdm stop/waiting
15
+ named start/running, process 8959
16
+ init-system-dbus stop/waiting
17
+ splash-manager stop/waiting
18
+ start-ttys stop/waiting
19
+ rcS-sulogin stop/waiting
20
+ serial stop/waiting
@@ -0,0 +1,151 @@
1
+ require sprintf('%s/../../../path_helper', File.dirname(File.expand_path(__FILE__)))
2
+
3
+ require 'rouster'
4
+ require 'rouster/puppet'
5
+ require 'rouster/testing'
6
+ require 'test/unit'
7
+
8
+ class TestUnitGetPackages < Test::Unit::TestCase
9
+
10
+ def setup
11
+ # expose private methods
12
+ Rouster.send(:public, *Rouster.private_instance_methods)
13
+ Rouster.send(:public, *Rouster.protected_instance_methods)
14
+
15
+ @app = Rouster.new(:name => 'app', :unittest => true, :verbosity => 4)
16
+
17
+ end
18
+
19
+ def test_rhel_systemv
20
+ @app.instance_variable_set(:@ostype, :redhat)
21
+ services = {}
22
+
23
+ raw = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-systemv', File.dirname(File.expand_path(__FILE__))))
24
+
25
+ assert_nothing_raised do
26
+ services = @app.get_services(false, true, :systemv, raw)
27
+ end
28
+
29
+ expected = {
30
+ 'acpid' => 'running', # acpid (pid 945) is running...
31
+ 'ip6tables' => 'stopped', # ip6tables: Firewall is not running.
32
+ 'Kdump' => 'stopped', # Kdump is not operational
33
+ 'mdmonitor' => 'stopped', # mdmonitor is stopped
34
+ 'netconsole' => 'stopped', # netconsole module not loaded
35
+ }
36
+
37
+ expected.each_pair do |service,state|
38
+ assert(services.has_key?(service), "service[#{service}]")
39
+ assert_equal(services[service], state, "service[#{service}] state[#{state}]")
40
+ end
41
+
42
+ end
43
+
44
+ def test_rhel_upstart
45
+ @app.instance_variable_set(:@ostype, :redhat)
46
+ services = {}
47
+
48
+ raw = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-upstart', File.dirname(File.expand_path(__FILE__))))
49
+
50
+ assert_nothing_raised do
51
+ services = @app.get_services(false, true, :upstart, raw)
52
+ end
53
+
54
+ expected = {
55
+ 'rc' => 'stopped', # rc stop/waiting
56
+ 'named' => 'running', # named start/running, process 8959
57
+ 'tty' => 'running', # tty (/dev/tty3) start/running, process 1601
58
+ }
59
+
60
+ expected.each_pair do |service,state|
61
+ assert(services.has_key?(service), "service[#{service}]")
62
+ assert_equal(services[service], state, "service[#{service}] state[#{state}]")
63
+ end
64
+
65
+ end
66
+
67
+ def test_rhel_both
68
+ @app.instance_variable_set(:@ostype, :redhat)
69
+ services = {}
70
+
71
+ systemv_contents = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-systemv', File.dirname(File.expand_path(__FILE__))))
72
+ upstart_contents = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-upstart', File.dirname(File.expand_path(__FILE__))))
73
+
74
+ # TODO this isn't a great test, because the implementation will never have both outputs in the same control loop
75
+ raw = systemv_contents
76
+ raw << upstart_contents
77
+
78
+ assert_nothing_raised do
79
+ services = @app.get_services(false, true, :all, raw)
80
+ end
81
+
82
+ expected = {
83
+ 'acpid' => 'running', # initd
84
+ 'cgred' => 'stopped', # initd
85
+ 'named' => 'running', # upstart
86
+ # 'rc' => 'stopped', # upstart -- this is getting mishandled, see comment on line #74 and test_rhel_both_real for reasons this doesn't matter
87
+ }
88
+
89
+ expected.each_pair do |service,state|
90
+ assert(services.has_key?(service), "service[#{service}]")
91
+ assert_equal(services[service], state, "service[#{service}] state[#{state}]}")
92
+ end
93
+
94
+ end
95
+
96
+ def test_rhel_both_real
97
+ @app.instance_variable_set(:@ostype, :redhat)
98
+ services = {}
99
+
100
+ systemv_contents = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-systemv', File.dirname(File.expand_path(__FILE__))))
101
+ upstart_contents = File.read(sprintf('%s/../../../test/unit/testing/resources/rhel-upstart', File.dirname(File.expand_path(__FILE__))))
102
+
103
+ expected = {
104
+ 'acpid' => 'running', # initd
105
+ 'cgred' => 'stopped', # initd
106
+ 'named' => 'running', # upstart
107
+ 'rc' => 'stopped', # upstart
108
+ }
109
+
110
+ assert_nothing_raised do
111
+ systemv = @app.get_services(false, true, :systemv, systemv_contents)
112
+ upstart = @app.get_services(false, true, :upstart, upstart_contents)
113
+
114
+ services = systemv.merge(upstart) # TODO how do we ensure merge order doesn't mislead us?
115
+ end
116
+
117
+ expected.each_pair do |service,state|
118
+ assert(services.has_key?(service), "service[#{service}]")
119
+ assert_equal(services[service], state, "service[#{service}] state[#{state}]}")
120
+ end
121
+
122
+
123
+ end
124
+
125
+ def test_osx_launchd
126
+ @app.instance_variable_set(:@ostype, :osx)
127
+ services = {}
128
+
129
+ raw = File.read(sprintf('%s/../../../test/unit/testing/resources/osx-launchd', File.dirname(File.expand_path(__FILE__))))
130
+
131
+ assert_nothing_raised do
132
+ services = @app.get_services(false, true, :launchd, raw)
133
+ end
134
+
135
+ expected = {
136
+ 'com.bigfix.BESAgent' => 'running', # 100 - com.bigfix.BESAgent
137
+ 'com.trendmicro.mpm.icore.agent' => 'stopped', # - 0 com.trendmicro.mpm.icore.agent
138
+ }
139
+
140
+ expected.each_pair do |service,state|
141
+ assert(services.has_key?(service), "service[#{service}]")
142
+ assert_equal(services[service], state, "service[#{service}] state[#{state}]")
143
+ end
144
+
145
+ end
146
+
147
+ def teardown
148
+ # noop
149
+ end
150
+
151
+ end
@@ -15,8 +15,26 @@ class TestValidatePackage < Test::Unit::TestCase
15
15
  fake_facts = { 'is_virtual' => 'true', 'timezone' => 'PDT', 'uptime_days' => 42 }
16
16
 
17
17
  fake_packages = {
18
- 'abrt' => '2.0.8-15.el6.centos.x86_64',
19
- 'usermode' => '1.102-3',
18
+ 'abrt' => {
19
+ :version => '2.0.8-15',
20
+ :arch => 'x86_64',
21
+ },
22
+
23
+ 'usermode' => {
24
+ :version => '1.102-3',
25
+ :arch => 'noarch',
26
+ },
27
+
28
+ 'glibc' => [
29
+ {
30
+ :version => '2.12-1.132',
31
+ :arch => 'x86_64',
32
+ },
33
+ {
34
+ :version => '2.12-1.132',
35
+ :arch => 'i686',
36
+ }
37
+ ]
20
38
  }
21
39
 
22
40
  @app = Rouster.new(:name => 'app', :unittest => true)
@@ -29,7 +47,8 @@ class TestValidatePackage < Test::Unit::TestCase
29
47
  assert(@app.validate_package('abrt', { :ensure => true, :version => '2.0.8-15.el6.centos.x86_64' } ))
30
48
  assert(@app.validate_package('abrt', { :ensure => 'present' } ))
31
49
  assert(@app.validate_package('abrt', { :exists => true } ))
32
- assert(@app.validate_package('abrt', { :version => '> 1.0'} ))
50
+ assert(@app.validate_package('abrt', { :version => '> 1.0' } ))
51
+ assert(@app.validate_package('abrt', { :arch => 'x86_64' } ))
33
52
 
34
53
  assert(@app.validate_package('usermode', { :version => '1.102-3' } ))
35
54
  assert(@app.validate_package('usermode', { :version => '> 0.5' } )) # specifying 1 here fails because 1.102-3.to_i is 1
@@ -37,14 +56,23 @@ class TestValidatePackage < Test::Unit::TestCase
37
56
  assert(@app.validate_package('usermode', { :version => '< 5.0' } ))
38
57
 
39
58
  assert(@app.validate_package('hds', { :exists => false } ))
40
- assert(@app.validate_package('hds', { :ensure => 'absent'}))
59
+ assert(@app.validate_package('hds', { :ensure => 'absent'} ))
41
60
 
42
61
  end
43
62
 
44
63
  def test_positive_constrained
45
-
46
64
  assert(@app.validate_package('abrt', { :ensure => true, :constrain => 'is_virtual true' } ))
65
+ end
66
+
67
+ def test_arch_determination
68
+ # determine whether a package is installed with a particular arch, while remaining flexible
69
+ assert(@app.validate_package('glibc', { :ensure => true, :arch => 'x86_64' } ))
70
+ assert(@app.validate_package('glibc', { :ensure => true, :arch => 'i686' } ))
71
+ assert(@app.validate_package('glibc', { :ensure => true, :arch => [ 'i686', 'x86_64' ] } ))
72
+ assert(@app.validate_package('glibc', { :ensure => true } ))
47
73
 
74
+ assert_equal(false, @app.validate_package('glibc', { :ensure => true, :arch => [ 'noarch' ] } ))
75
+ assert_equal(false, @app.validate_package('glibc', { :ensure => true, :arch => 'review' } ))
48
76
  end
49
77
 
50
78
  def test_negative_basic
@@ -52,14 +80,12 @@ class TestValidatePackage < Test::Unit::TestCase
52
80
  assert_equal(false, @app.validate_package('abrt', { :version => 'foo.bar'} ))
53
81
  assert_equal(false, @app.validate_package('abrt', { :ensure => 'absent' } ))
54
82
  assert_equal(false, @app.validate_package('abrt', { :exists => false } ))
55
-
83
+ assert_equal(false, @app.validate_package('abrt', { :arch => 'noarch' } ))
56
84
  end
57
85
 
58
86
  def test_negative_constrained
59
-
60
- assert(@app.validate_package('abrt', { :ensure => false, :constrain => 'is_virtual false' }))
61
- assert(@app.validate_package('abrt', { :ensure => true, :constrain => 'is_virtual false' }))
62
-
87
+ assert(@app.validate_package('abrt', { :ensure => false, :constrain => 'is_virtual false' } ))
88
+ assert(@app.validate_package('abrt', { :ensure => true, :constrain => 'is_virtual false' } ))
63
89
  end
64
90
 
65
91
  def teardown
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouster
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.57'
4
+ version: '0.61'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Conor Horan-Kates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-09 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -116,10 +116,13 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - .gitignore
119
+ - Gemfile
120
+ - Gemfile.lock
119
121
  - LICENSE
120
122
  - README.md
121
123
  - Rakefile
122
124
  - Vagrantfile
125
+ - examples/aws.rb
123
126
  - examples/bootstrap.rb
124
127
  - examples/demo.rb
125
128
  - examples/error.rb
@@ -131,6 +134,7 @@ files:
131
134
  - lib/rouster/tests.rb
132
135
  - lib/rouster/vagrant.rb
133
136
  - path_helper.rb
137
+ - plugins/aws.rb
134
138
  - rouster.gemspec
135
139
  - test/basic.rb
136
140
  - test/functional/deltas/test_get_crontab.rb
@@ -165,13 +169,16 @@ files:
165
169
  - test/puppet/manifests/manifest.pp
166
170
  - test/puppet/modules/role/manifests/ui.pp
167
171
  - test/puppet/test_apply.rb
168
- - test/puppet/test_roles.rb
169
172
  - test/tunnel_vs_scp.rb
170
173
  - test/unit/puppet/test_get_puppet_star.rb
171
174
  - test/unit/test_generate_unique_mac.rb
172
175
  - test/unit/test_new.rb
173
176
  - test/unit/test_parse_ls_string.rb
174
177
  - test/unit/test_traverse_up.rb
178
+ - test/unit/testing/resources/osx-launchd
179
+ - test/unit/testing/resources/rhel-systemv
180
+ - test/unit/testing/resources/rhel-upstart
181
+ - test/unit/testing/test_get_services.rb
175
182
  - test/unit/testing/test_meets_constraint.rb
176
183
  - test/unit/testing/test_validate_cron.rb
177
184
  - test/unit/testing/test_validate_file.rb
@@ -200,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
207
  version: 1.3.6
201
208
  requirements: []
202
209
  rubyforge_project: Rouster
203
- rubygems_version: 2.2.2
210
+ rubygems_version: 2.4.2
204
211
  signing_key:
205
212
  specification_version: 4
206
213
  summary: Rouster is an abstraction layer for Vagrant
@@ -1,186 +0,0 @@
1
- require sprintf('%s/../../path_helper', File.dirname(File.expand_path(__FILE__)))
2
-
3
- require 'rouster'
4
- require 'rouster/puppet'
5
- require 'rouster/testing'
6
-
7
- require 'test/unit'
8
-
9
- class TestPuppetRoles < Test::Unit::TestCase
10
-
11
- def setup
12
-
13
- piab_vagrantfile = sprintf('%s/../../../piab/Vagrantfile', File.dirname(File.expand_path(__FILE__)))
14
-
15
- unless File.file?(piab_vagrantfile)
16
- skip(sprintf('missing SFDC specific Vagrantfile[%s], skipping', piab_vagrantfile))
17
- end
18
-
19
- assert_nothing_raised do
20
- @ppm = Rouster.new(:name => 'ppm', :vagrantfile => piab_vagrantfile)
21
- @ppm.up()
22
- @ppm.remove_existing_certs('ppm')
23
- #@ppm.rebuild() unless @ppm.status.eql?('running') # destroy / rebuild
24
- end
25
-
26
- assert_nothing_raised do
27
- @app = Rouster.new(:name => 'app', :vagrantfile => piab_vagrantfile)
28
- end
29
-
30
- assert_nothing_raised do
31
- @ppm.run_puppet('master', { :expected_exitcode => [0,2] })
32
- end
33
-
34
- assert_match(/Finished catalog run in/, @ppm.get_output())
35
-
36
- # define base here
37
- @expected_packages = {
38
- 'puppet' => { :ensure => true },
39
- 'facter' => { :ensure => 'present' }
40
- }
41
-
42
- @expected_files = {
43
- '/etc/passwd' => {
44
- :contains => [ 'vagrant', 'root'],
45
- :ensure => 'file',
46
- :group => 'root',
47
- :mode => '0644',
48
- :owner => 'root'
49
- },
50
-
51
- '/tmp' => {
52
- :ensure => 'directory',
53
- :group => 'root',
54
- :owner => 'root',
55
- }
56
- }
57
-
58
- @expected_groups = {
59
- 'root' => { :ensure => 'true' }
60
- }
61
-
62
- @expected_services = Hash.new()
63
- @expected_users = {
64
- 'root' => {
65
- :ensure => 'present',
66
- :group => 'root',
67
- }
68
- }
69
-
70
- # manually specified testing
71
- @expected_files.each_pair do |f,e|
72
- assert_equal(true, @ppm.validate_file(f,e))
73
- end
74
-
75
- @expected_groups.each_pair do |g,e|
76
- assert_equal(true, @ppm.validate_group(g,e))
77
- end
78
-
79
- @expected_packages.each_pair do |p,e|
80
- assert_equal(true, @ppm.validate_package(p, e))
81
- end
82
-
83
- @expected_services.each_pair do |s,e|
84
- assert_equal(true, @ppm.validate_service(s,e))
85
- end
86
-
87
- @expected_users.each_pair do |u,e|
88
- assert_equal(true, @ppm.validate_user(u,e))
89
- end
90
-
91
- end
92
-
93
- def test_app
94
- app_expected_packages = {
95
- 'rsync' => { :ensure => 'present' }
96
- }.merge(@expected_packages)
97
-
98
- app_expected_files = {
99
- '/etc/hosts' => {
100
- :contains => [ 'localhost', 'app' ],
101
- :ensure => 'present',
102
- :group => 'root',
103
- :owner => 'root',
104
- },
105
- }.merge(@expected_files)
106
-
107
- app_expected_groups = {
108
- 'vagrant' => {
109
- :ensure => 'present',
110
- }
111
- }.merge(@expected_groups)
112
-
113
- app_expected_services = {}.merge(@expected_services)
114
-
115
- app_expected_users = {
116
- 'vagrant' => {
117
- :ensure => 'present',
118
- },
119
- }.merge(@expected_users)
120
-
121
- assert_nothing_raised do
122
- @app.up()
123
- @app.run_puppet('master', { :expected_exitcode => [0, 2] })
124
- end
125
-
126
- assert_match(/Finished catalog run in/, @app.get_output())
127
-
128
- # manually specified testing
129
- app_expected_files.each_pair do |f,e|
130
- assert_equal(true, @app.validate_file(f,e))
131
- end
132
-
133
- app_expected_groups.each_pair do |g,e|
134
- assert_equal(true, @app.validate_group(g,e))
135
- end
136
-
137
- app_expected_packages.each_pair do |p,e|
138
- assert_equal(true, @app.validate_package(p, e))
139
- end
140
-
141
- app_expected_services.each_pair do |s,e|
142
- assert_equal(true, @app.validate_service(s,e))
143
- end
144
-
145
- app_expected_users.each_pair do |u,e|
146
- assert_equal(true, @app.validate_user(u,e))
147
- end
148
-
149
- end
150
-
151
- def dont_test_app_automated
152
- catalog = @app.get_catalog()
153
- expectations = @app.parse_catalog(catalog)
154
-
155
- assert_nothing_raised do
156
- @app.up()
157
- @app.run_puppet('master', { :expected_exitcode => 2 })
158
- end
159
-
160
- assert_match(/Finished catalog run in/, @app.get_output())
161
-
162
- expectations.each_pair do |k,v|
163
- res = nil
164
- case v[:type]
165
- when :dir, :file
166
- res = @app.validate_file(k, v)
167
- when :group
168
- res = @app.validate_group(k, v)
169
- when :package
170
- res = @app.validate_package(k, v)
171
- when :user
172
- res = @app.validate_user(k, v)
173
- when :service
174
- res = @app.validate_service(k, v)
175
- end
176
-
177
- assert_equal(true, res, sprintf('failed[%s]: %s',v, res))
178
- end
179
-
180
- end
181
-
182
- def teardown
183
- # noop
184
- end
185
-
186
- end