vagrant-openshift 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +1 -0
  3. data/.gitignore +24 -0
  4. data/Gemfile +11 -0
  5. data/LICENSE.txt +13 -0
  6. data/README.asciidoc +379 -0
  7. data/Rakefile +53 -0
  8. data/lib/vagrant-openshift/action/build_geard.rb +41 -0
  9. data/lib/vagrant-openshift/action/build_geard_broker.rb +59 -0
  10. data/lib/vagrant-openshift/action/build_geard_console.rb +55 -0
  11. data/lib/vagrant-openshift/action/build_geard_images.rb +54 -0
  12. data/lib/vagrant-openshift/action/build_sources.rb +39 -0
  13. data/lib/vagrant-openshift/action/checkout_repositories.rb +72 -0
  14. data/lib/vagrant-openshift/action/checkout_tests.rb +57 -0
  15. data/lib/vagrant-openshift/action/clean.rb +51 -0
  16. data/lib/vagrant-openshift/action/clean_network_setup.rb +52 -0
  17. data/lib/vagrant-openshift/action/clone_upstream_repositories.rb +65 -0
  18. data/lib/vagrant-openshift/action/create_ami.rb +54 -0
  19. data/lib/vagrant-openshift/action/create_bare_repo_placeholders.rb +53 -0
  20. data/lib/vagrant-openshift/action/create_puppet_file.rb +84 -0
  21. data/lib/vagrant-openshift/action/create_test_users.rb +36 -0
  22. data/lib/vagrant-openshift/action/create_yum_repositories.rb +121 -0
  23. data/lib/vagrant-openshift/action/download_artifacts.rb +70 -0
  24. data/lib/vagrant-openshift/action/generate_template.rb +89 -0
  25. data/lib/vagrant-openshift/action/idle_all_gears.rb +36 -0
  26. data/lib/vagrant-openshift/action/install_build_dependencies.rb +48 -0
  27. data/lib/vagrant-openshift/action/install_geard.rb +76 -0
  28. data/lib/vagrant-openshift/action/install_geard_base_dependencies.rb +72 -0
  29. data/lib/vagrant-openshift/action/install_geard_broker.rb +39 -0
  30. data/lib/vagrant-openshift/action/install_geard_images.rb +51 -0
  31. data/lib/vagrant-openshift/action/install_open_shift_dependencies.rb +50 -0
  32. data/lib/vagrant-openshift/action/install_rhc.rb +42 -0
  33. data/lib/vagrant-openshift/action/local_geard_checkout.rb +58 -0
  34. data/lib/vagrant-openshift/action/local_repo_checkout.rb +47 -0
  35. data/lib/vagrant-openshift/action/modify_ami.rb +54 -0
  36. data/lib/vagrant-openshift/action/modify_instance.rb +71 -0
  37. data/lib/vagrant-openshift/action/prepare_ssh_config.rb +89 -0
  38. data/lib/vagrant-openshift/action/preserve_mcollective_logs.rb +48 -0
  39. data/lib/vagrant-openshift/action/restart_geard.rb +39 -0
  40. data/lib/vagrant-openshift/action/restart_geard_broker.rb +43 -0
  41. data/lib/vagrant-openshift/action/restart_geard_console.rb +43 -0
  42. data/lib/vagrant-openshift/action/run_geard_tests.rb +57 -0
  43. data/lib/vagrant-openshift/action/run_tests.rb +47 -0
  44. data/lib/vagrant-openshift/action/set_host_name.rb +43 -0
  45. data/lib/vagrant-openshift/action/setup_bind_dns_key.rb +38 -0
  46. data/lib/vagrant-openshift/action/setup_bind_host.rb +141 -0
  47. data/lib/vagrant-openshift/action/setup_builder_files.rb +57 -0
  48. data/lib/vagrant-openshift/action/setup_geard_broker.rb +71 -0
  49. data/lib/vagrant-openshift/action/sync_local_repository.rb +115 -0
  50. data/lib/vagrant-openshift/action/sync_upstream_repository.rb +71 -0
  51. data/lib/vagrant-openshift/action/test_exit_code.rb +36 -0
  52. data/lib/vagrant-openshift/action/uninstall_openshift_rpms.rb +37 -0
  53. data/lib/vagrant-openshift/action/yum_update.rb +67 -0
  54. data/lib/vagrant-openshift/action.rb +308 -0
  55. data/lib/vagrant-openshift/command/build_geard.rb +51 -0
  56. data/lib/vagrant-openshift/command/build_geard_base.rb +51 -0
  57. data/lib/vagrant-openshift/command/build_geard_broker.rb +59 -0
  58. data/lib/vagrant-openshift/command/build_geard_console.rb +59 -0
  59. data/lib/vagrant-openshift/command/build_geard_images.rb +68 -0
  60. data/lib/vagrant-openshift/command/build_origin_base.rb +51 -0
  61. data/lib/vagrant-openshift/command/checkout_repositories.rb +55 -0
  62. data/lib/vagrant-openshift/command/clone_upstream_repositories.rb +54 -0
  63. data/lib/vagrant-openshift/command/create_ami.rb +49 -0
  64. data/lib/vagrant-openshift/command/install_geard.rb +51 -0
  65. data/lib/vagrant-openshift/command/install_geard_broker.rb +51 -0
  66. data/lib/vagrant-openshift/command/install_rhc.rb +49 -0
  67. data/lib/vagrant-openshift/command/local_geard_setup.rb +62 -0
  68. data/lib/vagrant-openshift/command/local_repo_setup.rb +62 -0
  69. data/lib/vagrant-openshift/command/modify_ami.rb +54 -0
  70. data/lib/vagrant-openshift/command/modify_instance.rb +63 -0
  71. data/lib/vagrant-openshift/command/openshift_init.rb +83 -0
  72. data/lib/vagrant-openshift/command/repo_sync.rb +73 -0
  73. data/lib/vagrant-openshift/command/repo_sync_geard.rb +78 -0
  74. data/lib/vagrant-openshift/command/restart_geard.rb +51 -0
  75. data/lib/vagrant-openshift/command/restart_geard_broker.rb +51 -0
  76. data/lib/vagrant-openshift/command/restart_geard_console.rb +51 -0
  77. data/lib/vagrant-openshift/command/setup_geard_broker.rb +49 -0
  78. data/lib/vagrant-openshift/command/test.rb +108 -0
  79. data/lib/vagrant-openshift/command/test_geard.rb +59 -0
  80. data/lib/vagrant-openshift/command/test_geard_image.rb +147 -0
  81. data/lib/vagrant-openshift/config.rb +56 -0
  82. data/lib/vagrant-openshift/constants.rb +111 -0
  83. data/lib/vagrant-openshift/helper/command_helper.rb +213 -0
  84. data/lib/vagrant-openshift/plugin.rb +171 -0
  85. data/lib/vagrant-openshift/provisioner.rb +82 -0
  86. data/lib/vagrant-openshift/templates/builder/Rakefile +231 -0
  87. data/lib/vagrant-openshift/templates/builder/lib/.gitkeep +0 -0
  88. data/lib/vagrant-openshift/templates/builder/lib/rpm.rb +248 -0
  89. data/lib/vagrant-openshift/templates/builder/lib/test.rb +432 -0
  90. data/lib/vagrant-openshift/templates/builder/yum-listbuilddep +124 -0
  91. data/lib/vagrant-openshift/templates/command/init-openshift/Vagrantfile.erb +175 -0
  92. data/lib/vagrant-openshift/templates/command/init-openshift/box_info.yaml +152 -0
  93. data/lib/vagrant-openshift/version.rb +21 -0
  94. data/lib/vagrant-openshift.rb +34 -0
  95. data/vagrant-openshift.gemspec +43 -0
  96. metadata +234 -0
@@ -0,0 +1,432 @@
1
+ #--
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #++
16
+ require 'open3'
17
+ require 'securerandom'
18
+
19
+ class Test
20
+ @@SSH_TIMEOUT = 4800
21
+
22
+ def test(options)
23
+ @is_fedora = system("test -e /etc/fedora-release")
24
+ reset_test_dir(false)
25
+
26
+ test_queues = [[], [], [], []]
27
+
28
+ if options[:broker_extended]
29
+ (1..4).each do |i|
30
+ test_queues[i-1] << build_cucumber_command("REST API Group #{i}", ["@broker_api#{i}"])
31
+ end
32
+ (1..4).each do |i|
33
+ test_queues[i-1] << build_rake_command("OpenShift Broker Functionals Ext #{i}", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:functionals_ext#{i}")
34
+ end
35
+ test_queues[1] << build_rake_command("OpenShift Broker Integration Ext", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:integration_ext")
36
+ test_queues[2] << build_rake_command("OpenShift Broker OO Admin Scripts", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:oo_admin_scripts")
37
+ end
38
+
39
+ if options[:node_extended]
40
+ (1..3).each do |i|
41
+ test_queues[i-1] << build_cucumber_command("Extended Node Group #{i}", ["@node_extended#{i}"])
42
+ end
43
+ test_queues[3] << build_rake_command("OpenShift Node Functionals Ext", "cd /data/src/github.com/openshift/openshift-test/node; rake ext_node_func_test")
44
+ end
45
+
46
+ if options[:cart_extended]
47
+ (1..4).each do |i|
48
+ test_queues[i-1] << build_cucumber_command("Extended Cartridge Group #{i}", ["@cartridge_extended#{i}"])
49
+ end
50
+ end
51
+
52
+ if options[:gear_extended]
53
+ (1..4).each do |i|
54
+ test_queues[i-1] << build_cucumber_command("Extended Gear Group #{i}", ["@gear_extended#{i}"])
55
+ end
56
+ (1..4).each do |i|
57
+ test_queues[i-1] << build_rake_command("OpenShift Gear Functionals Ext #{i}", "cd /data/src/github.com/openshift/openshift-test/node; rake ext_gear_func_test#{i}")
58
+ end
59
+ end
60
+
61
+ if options[:rhc_extended]
62
+ test_queues[0] << build_cucumber_command("RHC Integration",[],
63
+ {"RHC_SERVER" => "broker.example.com", "RHC_DOMAIN" => "example.com"},
64
+ nil,"/data/src/github.com/openshift/openshift-test/rhc/cucumber")
65
+ end
66
+
67
+ if options[:broker]
68
+ test_queues[3] << build_rake_command("OpenShift Broker Units", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:units", {}, false)
69
+ test_queues[1] << build_rake_command("OpenShift Broker Integration", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:integration", {}, false)
70
+ (1..3).each do |i|
71
+ test_queues[i-1] << build_rake_command("OpenShift Broker Functional #{i}", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:functionals#{i}", {}, false)
72
+ end
73
+ test_queues[1] << build_rake_command("OpenShift Admin Console Functional", "cd /data/src/github.com/openshift/openshift-test/broker; rake test:admin_console_functionals", {}, false)
74
+ test_queues[3] << build_cucumber_command("Broker cucumber", ["@broker"])
75
+ end
76
+
77
+ if options[:node]
78
+ test_queues[1] << build_rake_command("Node Essentials", "cd /data/src/github.com/openshift/openshift-test/node; rake essentials_test | tail -100; exit ${PIPESTATUS[0]}", {}, false)
79
+ test_queues[3] << build_rake_command("Node Frontend Plugin ApacheDB", "cd /data/src/github.com/openshift/openshift-test/plugins/frontend/apachedb; rake test", {}, false)
80
+ test_queues[3] << build_rake_command("Node Frontend Plugin Mod Rewrite", "cd /data/src/github.com/openshift/openshift-test/plugins/frontend/apache-mod-rewrite; rake test", {}, false)
81
+ test_queues[3] << build_rake_command("Node Frontend Plugin NodeJS Websocket", "cd /data/src/github.com/openshift/openshift-test/plugins/frontend/nodejs-websocket; rake test", {}, false)
82
+ test_queues[3] << build_rake_command("Node Frontend Plugin Haproxy SNI Proxy", "cd /data/src/github.com/openshift/openshift-test/plugins/frontend/haproxy-sni-proxy; rake test", {}, false)
83
+ (1..3).each do |i|
84
+ test_queues[i] << build_cucumber_command("Node Group #{i.to_s}", ["@node#{i.to_s}"])
85
+ end
86
+ end
87
+
88
+ if options[:cart]
89
+ (1..3).each do |i|
90
+ test_queues[i] << build_cucumber_command("Cartridge Group #{i.to_s}", ["@cartridge#{i.to_s}"])
91
+ end
92
+ end
93
+
94
+ if options[:rhc]
95
+ if @is_fedora
96
+ test_queues[0] << build_rake_command("RHC Spec", 'cd /data/src/github.com/openshift/openshift-test/rhc; bundle install --local && bundle exec rake spec', {"SKIP_RUNCON" => 1}, false)
97
+ else
98
+ test_queues[0] << build_rake_command("RHC Spec", 'cd /data/src/github.com/openshift/openshift-test/rhc; bundle install --path=/tmp/rhc_bundle && bundle exec rake spec', {}, false)
99
+ test_queues[0] << build_rake_command("RHC Features", 'cd /data/src/github.com/openshift/openshift-test/rhc; export TEST_INSECURE=1; export TEST_RANDOM_USER=1; export RHC_SERVER=localhost; bundle install --path=/tmp/rhc_bundle && bundle exec rspec features/*_feature.rb', {}, false)
100
+ end
101
+ end
102
+
103
+ run_tests_with_retry(test_queues)
104
+
105
+ #These are special tests that cannot be written to work concurrently
106
+ singleton_queue = []
107
+
108
+ if options[:node_extended]
109
+ idle_all_gears
110
+ singleton_queue << build_cucumber_command("Node singletons", ["@node_singleton"])
111
+ end
112
+
113
+ if options[:gear_extended]
114
+ idle_all_gears
115
+ singleton_queue << build_cucumber_command("Gear singletons", ["@gear_singleton"])
116
+ end
117
+
118
+ run_tests_with_retry([singleton_queue])
119
+ end
120
+
121
+ def run_tests_with_retry(test_queues)
122
+ test_run_success = false
123
+ (1..3).each do |retry_cnt|
124
+ print "Test run ##{retry_cnt}\n\n\n"
125
+ failure_queue = run_tests(test_queues)
126
+ if failure_queue.empty?
127
+ test_run_success = true
128
+ break
129
+ else
130
+ reset_test_dir(true)
131
+ end
132
+ test_queues = [failure_queue]
133
+ end
134
+ exit 1 unless test_run_success
135
+ end
136
+
137
+ def run_tests(test_queues)
138
+ threads = []
139
+ failures = []
140
+
141
+ test_queues.each do |tqueue|
142
+ threads << Thread.new do
143
+ test_queue = tqueue
144
+ start_time = Time.new
145
+ test_queue.each do |test|
146
+ stdout_data = ""
147
+ stderr_data = ""
148
+ rc = -1
149
+
150
+ Open3.popen3(test[:command]) do |stdin, stdout, stderr, wait_thr|
151
+ pid = wait_thr.pid # pid of the started process.
152
+ stdin.close
153
+
154
+ stdout_data = stdout.read.chomp
155
+ stderr_data = stderr.read.chomp
156
+
157
+ stdout.close
158
+ stderr.close
159
+ rc = wait_thr.value # Process::Status object returned.
160
+ end
161
+
162
+ print %{
163
+ #######################################################################################################################
164
+ Test: #{test[:title]}
165
+ #######################################################################################################################
166
+
167
+ #{test[:command]}
168
+
169
+ #{stdout_data}
170
+ #{stderr_data}
171
+
172
+ #######################################################################################################################\n}
173
+
174
+ test[:output] = stdout_data + "\n" + stdout_data
175
+ test[:exit_code] = rc
176
+ test[:success] = rc == 0
177
+ test[:completed] = true
178
+
179
+ still_running_tests = test_queues.map do |q|
180
+ q.select{ |t| t[:completed] != true }
181
+ end
182
+
183
+ if still_running_tests.length > 0
184
+ mins, secs = (Time.new - start_time).abs.divmod(60)
185
+ print "\nStill Running Tests (#{mins}m #{secs.to_i}s):\n"
186
+ still_running_tests.each_index do |q_idx|
187
+ print "\t Queue #{q_idx}:\n"
188
+ print still_running_tests[q_idx].map{ |t| "\t\t#{t[:title]}" }.join("\n"), "\n"
189
+ end
190
+ print "\n\n\n"
191
+ end
192
+
193
+ all_tests=[]
194
+ test_queues.each do |q|
195
+ all_tests += q
196
+ end
197
+
198
+ failed_tests = all_tests.select{ |t| t[:success] == false && t[:completed] == true }
199
+ unless failed_tests.empty?
200
+ puts "Failed Tests:"
201
+ failed_tests.each do |t|
202
+ print "\t#{t[:title]}\n"
203
+ end
204
+ puts "\n\n\n"
205
+ end
206
+
207
+ passed_tests = all_tests.select{ |t| t[:success] == true && t[:completed] == true }
208
+ unless passed_tests.empty?
209
+ puts "Passed Tests:"
210
+ passed_tests.each do |t|
211
+ print "\t#{t[:title]}\n"
212
+ end
213
+ puts "\n\n\n"
214
+ end
215
+
216
+ end
217
+ end
218
+ end
219
+
220
+ threads.each { |t| t.join }
221
+
222
+ failures = test_queues.map{ |q| q.select{ |t| t[:success] == false }}
223
+ failures.flatten!
224
+ retry_queue = []
225
+ if failures.length > 0
226
+ idle_all_gears
227
+ print "Failures\n"
228
+ print failures.map{ |f| f[:title] }.join("\n")
229
+ print "\n\n\n"
230
+
231
+ #process failures
232
+ failures.each do |failed_test|
233
+ if failed_test[:options].has_key?(:cucumber_rerun_file)
234
+ retry_queue << build_cucumber_command(failed_test[:title], [], failed_test[:options][:env],
235
+ failed_test[:options][:cucumber_rerun_file],
236
+ failed_test[:options][:test_dir],
237
+ "*.feature",
238
+ failed_test[:options][:require_gemfile_dir],
239
+ failed_test[:options][:other_outputs])
240
+ elsif failed_test[:output] =~ /cucumber openshift-test\/tests\/.*\.feature:\d+/
241
+ output.lines.each do |line|
242
+ if line =~ /cucumber openshift-test\/tests\/(.*\.feature):(\d+)/
243
+ test = $1
244
+ scenario = $2
245
+ if failed_test[:options][:retry_indivigually]
246
+ retry_queue << build_cucumber_command(failed_test[:title], [], failed_test[:options][:env],
247
+ failed_test[:options][:cucumber_rerun_file],
248
+ failed_test[:options][:test_dir],
249
+ "#{test}:#{scenario}")
250
+ else
251
+ retry_queue << build_cucumber_command(failed_test[:title], [], failed_test[:options][:env],
252
+ failed_test[:options][:cucumber_rerun_file],
253
+ failed_test[:options][:test_dir],
254
+ "#{test}")
255
+ end
256
+ end
257
+ end
258
+ elsif failed_test[:options][:retry_indivigually] && failed_test[:output].include?("Failure:") && failed_test[:output].include?("rake_test_loader")
259
+ found_test = false
260
+ failed_test[:output].lines.each do |line|
261
+ if line =~ /\A(test_\w+)\((\w+Test)\) \[\/.*\/(test\/.*_test\.rb):(\d+)\]:/
262
+ found_test = true
263
+ test_name = $1
264
+ class_name = $2
265
+ file_name = $3
266
+
267
+ # determine if the first part of the command is a directory change
268
+ # if so, include that in the retry command
269
+ chdir_command = ""
270
+ if cmd =~ /\A(cd .+?; )/
271
+ chdir_command = $1
272
+ end
273
+ retry_queue << build_rake_command("#{class_name} (#{test_name})", "#{chdir_command} ruby -Ilib:test #{file_name} -n #{test_name}", true)
274
+ end
275
+ end
276
+ retry_queue << {
277
+ :command => failed_test[:command],
278
+ :options => failed_test[:options],
279
+ :title => failed_test[:title]
280
+ }
281
+ else
282
+ retry_queue << {
283
+ :command => failed_test[:command],
284
+ :options => failed_test[:options],
285
+ :title => failed_test[:title]
286
+ }
287
+ end
288
+ end
289
+ end
290
+ retry_queue
291
+ end
292
+
293
+ def build_cucumber_command(title="", tags=[], test_env = {}, old_rerun_file=nil, test_dir="/data/src/github.com/openshift/openshift-test/tests",
294
+ feature_file="*.feature", require_gemfile_dir=nil, other_outputs = nil)
295
+
296
+ other_outputs ||= {:junit => '/tmp/rhc/cucumber_results'}
297
+ rerun_file = "/tmp/rerun_#{SecureRandom.hex}.txt"
298
+ opts = []
299
+ opts << "--strict"
300
+ opts << "-f progress"
301
+ opts << "-f rerun --out #{rerun_file} "
302
+ other_outputs.each do |formatter, file|
303
+ opts << "-f #{formatter} --out #{file}"
304
+ end
305
+ if @is_fedora
306
+ tags += ["~@fedora-18-only", "~@rhel-only", "~@not-fedora-19", "~@jboss", "~@not-origin"]
307
+ else
308
+ tags += ["~@fedora-18-only", "~@fedora-19-only", "~@not-rhel", "~@jboss", "~@not-origin"]
309
+ end
310
+ opts += tags.map{ |t| "-t #{t}"}
311
+ opts << "-r #{test_dir}"
312
+ if old_rerun_file.nil?
313
+ opts << "#{test_dir}/#{feature_file}"
314
+ else
315
+ opts << "@#{old_rerun_file}"
316
+ end
317
+ if not require_gemfile_dir.nil?
318
+ {:command => wrap_test_command("cd #{require_gemfile_dir}; bundle install --path=gems; bundle exec \"cucumber #{opts.join(' ')}\"", test_env),
319
+ :options =>
320
+ {:cucumber_rerun_file => rerun_file,
321
+ :timeout => @@SSH_TIMEOUT,
322
+ :test_dir => test_dir,
323
+ :env => test_env,
324
+ :require_gemfile_dir => require_gemfile_dir,
325
+ :other_outputs => other_outputs
326
+ },
327
+ :title => title
328
+ }
329
+ else
330
+ {:command => wrap_test_command("cucumber #{opts.join(' ')}", test_env),
331
+ :options => {
332
+ :cucumber_rerun_file => rerun_file,
333
+ :timeout => @@SSH_TIMEOUT,
334
+ :test_dir => test_dir,
335
+ :env => test_env,
336
+ :other_outputs => other_outputs
337
+ },
338
+ :title => title}
339
+ end
340
+ end
341
+
342
+ def build_rake_command(title="", cmd="", test_env = {}, retry_indivigually=true)
343
+ {:command => wrap_test_command(cmd, test_env), :options => {:retry_indivigually => retry_indivigually, :timeout => @@SSH_TIMEOUT, :env => test_env}, :title => title}
344
+ end
345
+
346
+ def wrap_test_command(command, test_env={})
347
+ env_str = ""
348
+ unless test_env.nil?
349
+ test_env.each do |k,v|
350
+ env_str += "export #{k}=#{v}; "
351
+ end
352
+ end
353
+ if @is_fedora
354
+ if test_env["SKIP_RUNCON"]
355
+ "export REGISTER_USER=1 ; #{env_str} #{command}"
356
+ else
357
+ %{runcon system_u:system_r:openshift_initrc_t:s0-s0:c0.c1023 bash -c \"export REGISTER_USER=1 ; #{env_str} #{command}"}
358
+ end
359
+ else
360
+ %{/usr/bin/scl enable ruby193 "export LANG=en_US.UTF-8 ; export REGISTER_USER=1; #{env_str} #{command}"}
361
+ end
362
+ end
363
+
364
+ def reset_test_dir(backup=false)
365
+ File.open('/tmp/reset_test_dir.sh', "w") do |file|
366
+ file.write(%{
367
+ if [ -d /tmp/rhc ]
368
+ then
369
+ if #{backup}
370
+ then
371
+ if \$(ls /tmp/rhc/run_* > /dev/null 2>&1)
372
+ then
373
+ rm -rf /tmp/rhc_previous_runs
374
+ mkdir -p /tmp/rhc_previous_runs
375
+ mv /tmp/rhc/run_* /tmp/rhc_previous_runs
376
+ fi
377
+ if \$(ls /tmp/rhc/* > /dev/null 2>&1)
378
+ then
379
+ for i in {1..100}
380
+ do
381
+ if ! [ -d /tmp/rhc_previous_runs/run_$i ]
382
+ then
383
+ mkdir -p /tmp/rhc_previous_runs/run_$i
384
+ mv /tmp/rhc/* /tmp/rhc_previous_runs/run_$i
385
+ break
386
+ fi
387
+ done
388
+ fi
389
+ if \$(ls /tmp/rhc_previous_runs/run_* > /dev/null 2>&1)
390
+ then
391
+ mv /tmp/rhc_previous_runs/run_* /tmp/rhc/
392
+ rm -rf /tmp/rhc_previous_runs
393
+ fi
394
+ else
395
+ rm -rf /tmp/rhc
396
+ fi
397
+ fi
398
+ mkdir -p /tmp/rhc/junit
399
+ })
400
+ end
401
+
402
+ system 'chmod +x /tmp/reset_test_dir.sh'
403
+ system '/tmp/reset_test_dir.sh'
404
+ system 'rm -rf /var/www/openshift/broker/tmp/cache/*'
405
+ end
406
+
407
+ def idle_all_gears
408
+ is_fedora = system("test -e /etc/fedora-release")
409
+
410
+ print "Idling all gears on remote instance\n"
411
+
412
+ if is_fedora
413
+ system('/sbin/service mcollective stop; /sbin/service mcollective start')
414
+ else
415
+ system('/sbin/service ruby193-mcollective stop; /sbin/service ruby193-mcollective start')
416
+ end
417
+
418
+ system(%{
419
+ for gear in `oo-admin-ctl-gears list`; do
420
+ oo-admin-ctl-gears idlegear $gear;
421
+ done;
422
+ })
423
+
424
+ if is_fedora
425
+ system('/sbin/service httpd reload')
426
+ else
427
+ system('/sbin/service httpd graceful')
428
+ end
429
+
430
+ print "Done\n"
431
+ end
432
+ end
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/python -tt
2
+
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program; if not, write to the Free Software Foundation,
15
+ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ import sys
18
+ sys.path.insert(0,'/usr/share/yum-cli')
19
+
20
+ import yum
21
+ from yum.misc import setup_locale
22
+ from yum.i18n import exception2msg
23
+ import yum.Errors
24
+ from utils import YumUtilBase
25
+
26
+ import logging
27
+ import rpmUtils
28
+ import rpm
29
+
30
+ rhn_source_repos = False
31
+
32
+
33
+
34
+ class YumBuildDep(YumUtilBase):
35
+ NAME = 'yum-listbuilddep'
36
+ VERSION = '1.0'
37
+ USAGE = 'yum-listbuilddep package1.spec [package2.spec] [...]'
38
+
39
+ def __init__(self):
40
+ YumUtilBase.__init__(self,
41
+ YumBuildDep.NAME,
42
+ YumBuildDep.VERSION,
43
+ YumBuildDep.USAGE)
44
+ self.logger = logging.getLogger("yum.verbose.cli.yumbuildep")
45
+ # Add util commandline options to the yum-cli ones
46
+ self.optparser = self.getOptionParser()
47
+ if hasattr(rpm, 'reloadConfig'):
48
+ self.optparser.add_option("--target",
49
+ help="set target architecture for spec parsing")
50
+ self.main()
51
+
52
+ def main(self):
53
+ # Parse the commandline option and setup the basics.
54
+ try:
55
+ opts = self.doUtilConfigSetup()
56
+ except yum.Errors.RepoError, e:
57
+ self.logger.error("Cannot handle specific enablerepo/disablerepo options.")
58
+ sys.exit(50)
59
+
60
+ # turn of our local gpg checking for opening the srpm if it is turned
61
+ # off for repos :)
62
+ if (opts.nogpgcheck or
63
+ not self.conf.localpkg_gpgcheck or not self.conf.gpgcheck):
64
+ self.ts.pushVSFlags((rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
65
+
66
+ # Check if there is anything to do.
67
+ if len(self.cmds) < 1:
68
+ print self.optparser.format_help()
69
+ sys.exit(0)
70
+
71
+ try:
72
+ self.get_build_deps(opts)
73
+ except yum.Errors.MiscError, e:
74
+ msg = "There was a problem getting the build deps, exiting:\n %s" % e
75
+ self.logger.error(msg)
76
+ sys.exit(1)
77
+ sys.exit()
78
+
79
+ def get_build_deps(self,opts):
80
+ srcnames = []
81
+ specnames = []
82
+ srpms = []
83
+ specworks = False
84
+ reloadworks = False
85
+
86
+ # See if we can use spec files for buildrequires
87
+ if hasattr(rpm, 'spec') and hasattr(rpm.spec, 'sourceHeader'):
88
+ specworks = True
89
+ # See if we can reload rpm configuration
90
+ if hasattr(rpm, 'reloadConfig'):
91
+ reloadworks = True
92
+
93
+ for arg in self.cmds:
94
+ if specworks and arg.endswith('.spec'):
95
+ specnames.append(arg)
96
+
97
+ toActOn = []
98
+ for name in specnames:
99
+ # (re)load rpm config for target if set
100
+ if reloadworks and opts.target:
101
+ rpm.reloadConfig(opts.target)
102
+
103
+ try:
104
+ spec = rpm.spec(name)
105
+ except ValueError:
106
+ self.logger.error("Bad spec: %s" % name)
107
+ continue
108
+
109
+ # reset default rpm config after each parse to avoid side-effects
110
+ if reloadworks:
111
+ rpm.reloadConfig()
112
+
113
+ buildreqs = []
114
+ for d in rpm.ds(spec.sourceHeader, 'requires'):
115
+ buildreqs.append(d.DNEVR()[2:])
116
+
117
+ if len(buildreqs) > 0:
118
+ self.logger.info('["%s"]' % '","'.join(buildreqs))
119
+ else:
120
+ self.logger.info('[]')
121
+
122
+ if __name__ == '__main__':
123
+ setup_locale()
124
+ util = YumBuildDep()