bellows 1.2.0 → 2.0.0
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/CHANGELOG +7 -0
- data/README.md +5 -8
- data/VERSION +1 -1
- data/lib/bellows/gerrit.rb +6 -2
- data/lib/bellows/smoke_stack.rb +55 -9
- data/lib/bellows/tasks.rb +6 -6
- data/lib/bellows/util.rb +8 -3
- data/test/fixtures/config_custom_project.yaml +1 -1
- data/test/test_smoke_stack.rb +3 -3
- data/test/test_task.rb +2 -2
- data/test/test_util.rb +1 -1
- metadata +3 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
* Mon Apr 29 2013 Dan Prince <dprince@redhat.com> - 2.0.0
|
2
|
+
- Add support for stackforge puppet modules.
|
3
|
+
|
4
|
+
This changes breaks compat with the old config file format
|
5
|
+
in that all projects must now be prefixed with their org.
|
6
|
+
Examples: openstack/nova, stackforge/puppet-nova, etc.
|
7
|
+
|
1
8
|
* Sat Nov 3 2012 Dan Prince <dprince@redhat.com> - 1.2.0
|
2
9
|
- Rename 'job_types' to 'comment_configs' in the config file.
|
3
10
|
- Add 'config_template_id' to 'comment_configs' sections. This
|
data/README.md
CHANGED
@@ -21,7 +21,6 @@ Installation
|
|
21
21
|
|
22
22
|
config_template_ids:
|
23
23
|
- 1
|
24
|
-
- 2
|
25
24
|
|
26
25
|
test_suite_ids:
|
27
26
|
- 1
|
@@ -58,22 +57,20 @@ Available bellows tasks:
|
|
58
57
|
|
59
58
|
Run bellows sync to create smokestack test configurations and update refspecs for active reviews:
|
60
59
|
|
61
|
-
bellows sync nova
|
60
|
+
bellows sync openstack/nova
|
62
61
|
|
63
62
|
Purge 'merged' reviews from SmokeStack:
|
64
63
|
|
65
|
-
bellows purge nova
|
64
|
+
bellows purge openstack/nova
|
66
65
|
|
67
66
|
Sync test suite choices for active reviews in SmokeStack (based on the selections in your .bellows.conf file):
|
68
67
|
|
69
|
-
bellows sync nova --all
|
68
|
+
bellows sync openstack/nova --all
|
70
69
|
|
71
70
|
Fire tests for reviews without results (3 at a time):
|
72
71
|
|
73
|
-
bellows fire nova --limit=3
|
74
|
-
|
75
|
-
All commands support creating and maintaining test configs for nova, glance, and keystone.
|
72
|
+
bellows fire openstack/nova --limit=3
|
76
73
|
|
77
74
|
License
|
78
75
|
-------
|
79
|
-
Copyright (c) 2011-
|
76
|
+
Copyright (c) 2011-2013 Dan Prince. Copyright 2012 Red Hat Inc. See LICENSE.txt for further details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
data/lib/bellows/gerrit.rb
CHANGED
@@ -14,11 +14,15 @@ module Bellows
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.reviews(project, status="open", branch="master")
|
17
|
+
# Assume projects without a slash are 'openstack' org projects
|
18
|
+
#if not x =~ /.*\/.*/ then
|
19
|
+
# project = "openstack/#{project}"
|
20
|
+
#end
|
17
21
|
reviews = []
|
18
|
-
out=Gerrit.run_cmd(%{query status:#{status} project
|
22
|
+
out=Gerrit.run_cmd(%{query status:#{status} project:#{project} branch:#{branch} limit:500 --current-patch-set --format JSON})
|
19
23
|
out.each_line do |line|
|
20
24
|
data = JSON.parse(line)
|
21
|
-
if data['project'] and data['project'] == "
|
25
|
+
if data['project'] and data['project'] == "#{project}" and data['branch'] and data['branch'] == branch
|
22
26
|
if block_given?
|
23
27
|
yield data
|
24
28
|
else
|
data/lib/bellows/smoke_stack.rb
CHANGED
@@ -5,6 +5,51 @@ require 'bellows/util'
|
|
5
5
|
module Bellows
|
6
6
|
class SmokeStack
|
7
7
|
|
8
|
+
PROJ_REVISIONS = {
|
9
|
+
'openstack/nova' => 'nova_revision',
|
10
|
+
'openstack/glance' => 'glance_revision',
|
11
|
+
'openstack/keystone' => 'keystone_revision',
|
12
|
+
'openstack/swift' => 'swift_revision',
|
13
|
+
'openstack/cinder' => 'cinder_revision',
|
14
|
+
'openstack/quantum' => 'quantum_revision',
|
15
|
+
'stackforge/puppet-nova' => 'nova_conf_module_revision',
|
16
|
+
'stackforge/puppet-glance' => 'glance_conf_module_revision',
|
17
|
+
'stackforge/puppet-keystone' => 'keystone_conf_module_revision',
|
18
|
+
'stackforge/puppet-swift' => 'swift_conf_module_revision',
|
19
|
+
'stackforge/puppet-cinder' => 'cinder_conf_module_revision',
|
20
|
+
'stackforge/puppet-quantum' => 'quantum_conf_module_revision',
|
21
|
+
}
|
22
|
+
|
23
|
+
OBJECT_NAMES = {
|
24
|
+
'openstack/nova' => 'nova_package_builder',
|
25
|
+
'openstack/glance' => 'glance_package_builder',
|
26
|
+
'openstack/keystone' => 'keystone_package_builder',
|
27
|
+
'openstack/swift' => 'swift_package_builder',
|
28
|
+
'openstack/cinder' => 'cinder_package_builder',
|
29
|
+
'openstack/quantum' => 'quantum_package_builder',
|
30
|
+
'stackforge/puppet-nova' => 'nova_config_module',
|
31
|
+
'stackforge/puppet-glance' => 'glance_config_module',
|
32
|
+
'stackforge/puppet-keystone' => 'keystone_config_module',
|
33
|
+
'stackforge/puppet-swift' => 'swift_config_module',
|
34
|
+
'stackforge/puppet-cinder' => 'cinder_config_module',
|
35
|
+
'stackforge/puppet-quantum' => 'quantum_config_module',
|
36
|
+
}
|
37
|
+
|
38
|
+
ATTRIBUTE_NAMES = {
|
39
|
+
'openstack/nova' => 'nova_package_builder_attributes',
|
40
|
+
'openstack/glance' => 'glance_package_builder_attributes',
|
41
|
+
'openstack/keystone' => 'keystone_package_builder_attributes',
|
42
|
+
'openstack/swift' => 'swift_package_builder_attributes',
|
43
|
+
'openstack/cinder' => 'cinder_package_builder_attributes',
|
44
|
+
'openstack/quantum' => 'quantum_package_builder_attributes',
|
45
|
+
'stackforge/puppet-nova' => 'nova_config_module_attributes',
|
46
|
+
'stackforge/puppet-glance' => 'glance_config_module_attributes',
|
47
|
+
'stackforge/puppet-keystone' => 'keystone_config_module_attributes',
|
48
|
+
'stackforge/puppet-swift' => 'swift_config_module_attributes',
|
49
|
+
'stackforge/puppet-cinder' => 'cinder_config_module_attributes',
|
50
|
+
'stackforge/puppet-quantum' => 'quantum_config_module_attributes',
|
51
|
+
}
|
52
|
+
|
8
53
|
def self.jobs()
|
9
54
|
JSON.parse(Bellows::HTTP.get("/jobs.json?limit=99999"))
|
10
55
|
end
|
@@ -17,7 +62,7 @@ module Bellows
|
|
17
62
|
jobs.each do |job|
|
18
63
|
data = job.values[0]
|
19
64
|
Util.projects.each do |project|
|
20
|
-
revision = data[
|
65
|
+
revision = data[PROJ_REVISIONS[project]]
|
21
66
|
if revision and revision == git_hash then
|
22
67
|
jobs_found << job
|
23
68
|
end
|
@@ -70,7 +115,8 @@ module Bellows
|
|
70
115
|
data = JSON.parse(Bellows::HTTP.get("/smoke_tests.json"))
|
71
116
|
data.each do |item|
|
72
117
|
projects.each do |project|
|
73
|
-
|
118
|
+
# core projects use this
|
119
|
+
branch = item['smoke_test'][OBJECT_NAMES[project]]['branch']
|
74
120
|
if branch and not branch.empty? then
|
75
121
|
tests.store(Bellows::Util.short_spec(branch), item['smoke_test'])
|
76
122
|
end
|
@@ -101,9 +147,9 @@ module Bellows
|
|
101
147
|
|
102
148
|
data = JSON.parse(Bellows::HTTP.get("/smoke_tests/#{id}.json"))
|
103
149
|
Util.projects.each do |proj|
|
104
|
-
if updates[
|
105
|
-
data["smoke_test"][
|
106
|
-
updates.delete(
|
150
|
+
if updates[OBJECT_NAMES[proj]]
|
151
|
+
data["smoke_test"][OBJECT_NAMES[proj]].merge!(updates[OBJECT_NAMES[proj]])
|
152
|
+
updates.delete(OBJECT_NAMES[proj])
|
107
153
|
end
|
108
154
|
end
|
109
155
|
data['smoke_test'].merge!(updates)
|
@@ -117,15 +163,15 @@ module Bellows
|
|
117
163
|
|
118
164
|
post_data = { "smoke_test[description]" => description }
|
119
165
|
|
120
|
-
Util.
|
121
|
-
base_name="smoke_test[#{proj}
|
166
|
+
Util::ALL_PROJECTS.each do |proj|
|
167
|
+
base_name="smoke_test[#{ATTRIBUTE_NAMES[proj]}]"
|
122
168
|
if project == proj then
|
123
|
-
post_data.store("#{base_name}[url]", "https://review.openstack.org
|
169
|
+
post_data.store("#{base_name}[url]", "https://review.openstack.org/#{proj}")
|
124
170
|
post_data.store("#{base_name}[branch]", refspec)
|
125
171
|
post_data.store("#{base_name}[merge_trunk]", "1")
|
126
172
|
else
|
127
173
|
post_data.store("#{base_name}[merge_trunk]", "0")
|
128
|
-
post_data.store("#{base_name}[url]", "git://github.com
|
174
|
+
post_data.store("#{base_name}[url]", "git://github.com/#{proj}.git")
|
129
175
|
post_data.store("#{base_name}[branch]", "master")
|
130
176
|
end
|
131
177
|
end
|
data/lib/bellows/tasks.rb
CHANGED
@@ -31,13 +31,13 @@ module Bellows
|
|
31
31
|
puts "Creating... " + desc
|
32
32
|
Bellows::SmokeStack.create_smoke_test(project, desc, refspec, config_template_ids, test_suite_ids) if not test
|
33
33
|
else
|
34
|
-
if smoke_test[
|
34
|
+
if smoke_test[Bellows::SmokeStack::OBJECT_NAMES[project]]['branch'] != refspec then
|
35
35
|
puts "Updating... " + desc if not options[:quiet]
|
36
36
|
puts "refspec: " + refspec if not options[:quiet]
|
37
|
-
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {
|
37
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {Bellows::SmokeStack::OBJECT_NAMES[project] => { "branch" => refspec}, "description" => desc, "status" => "Updated", "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
38
38
|
elsif all then
|
39
39
|
puts "Updating (all)... " + desc if not options[:quiet]
|
40
|
-
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {
|
40
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {Bellows::SmokeStack::OBJECT_NAMES[project] => { "branch" => refspec}, "description" => desc, "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end # reviews
|
@@ -86,7 +86,7 @@ module Bellows
|
|
86
86
|
projects.each do |project|
|
87
87
|
data = job.values[0]
|
88
88
|
if data
|
89
|
-
revision = data[
|
89
|
+
revision = data[Bellows::SmokeStack::PROJ_REVISIONS[project]]
|
90
90
|
if revision and not revision.empty?
|
91
91
|
jobs.add(revision[0,7])
|
92
92
|
end
|
@@ -197,7 +197,7 @@ module Bellows
|
|
197
197
|
projects = Util.projects
|
198
198
|
|
199
199
|
Bellows::Gerrit.stream_events('patchset-created') do |patchset|
|
200
|
-
project = patchset['change']['project']
|
200
|
+
project = patchset['change']['project']
|
201
201
|
patch_branch = patchset['change']['branch']
|
202
202
|
if projects.include?(project) and patch_branch == branch then
|
203
203
|
owner = patchset['change']['owner']['name']
|
@@ -217,7 +217,7 @@ module Bellows
|
|
217
217
|
# update existing smoke test
|
218
218
|
puts "Updating... " + desc if not options[:quiet]
|
219
219
|
puts "refspec: " + refspec if not options[:quiet]
|
220
|
-
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {
|
220
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {Bellows::SmokeStack::OBJECT_NAMES[project] => { "branch" => refspec}, "description" => desc, "status" => "Updated", "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
221
221
|
smoke_test_id = smoke_test['id']
|
222
222
|
|
223
223
|
end
|
data/lib/bellows/util.rb
CHANGED
@@ -3,7 +3,12 @@ require 'yaml'
|
|
3
3
|
module Bellows
|
4
4
|
module Util
|
5
5
|
|
6
|
-
|
6
|
+
CORE_PROJECTS = ['openstack/nova', 'openstack/glance', 'openstack/keystone', 'openstack/swift', 'openstack/cinder', 'openstack/quantum']
|
7
|
+
|
8
|
+
PUPPET_PROJECTS = ['stackforge/puppet-nova', 'stackforge/puppet-glance', 'stackforge/puppet-keystone', 'stackforge/puppet-swift', 'stackforge/puppet-cinder', 'stackforge/puppet-quantum']
|
9
|
+
|
10
|
+
ALL_PROJECTS = CORE_PROJECTS + PUPPET_PROJECTS
|
11
|
+
|
7
12
|
@@configs=nil
|
8
13
|
|
9
14
|
def self.load_configs
|
@@ -48,7 +53,7 @@ module Bellows
|
|
48
53
|
configs=self.load_configs
|
49
54
|
projects = configs['projects']
|
50
55
|
if projects.nil? or projects.empty? then
|
51
|
-
projects =
|
56
|
+
projects = CORE_PROJECTS + PUPPET_PROJECTS
|
52
57
|
end
|
53
58
|
if not projects.include?(project) then
|
54
59
|
puts "ERROR: Please specify a valid project name."
|
@@ -67,7 +72,7 @@ module Bellows
|
|
67
72
|
configs=self.load_configs
|
68
73
|
proj_list = configs['projects']
|
69
74
|
if proj_list.nil? or proj_list.empty? then
|
70
|
-
proj_list =
|
75
|
+
proj_list = CORE_PROJECTS + PUPPET_PROJECTS
|
71
76
|
end
|
72
77
|
return proj_list
|
73
78
|
end
|
data/test/test_smoke_stack.rb
CHANGED
@@ -40,16 +40,16 @@ class SmokeStackTest < Test::Unit::TestCase
|
|
40
40
|
assert_equal 1, Bellows::SmokeStack.comment_configs.size
|
41
41
|
|
42
42
|
# there should only be 1 set for the glance project
|
43
|
-
assert_equal 1, Bellows::SmokeStack.comment_configs("glance").size
|
43
|
+
assert_equal 1, Bellows::SmokeStack.comment_configs("openstack/glance").size
|
44
44
|
|
45
45
|
# the nova project should have custom job types defined
|
46
|
-
unit_tester_type = Bellows::SmokeStack.comment_configs("nova")[0]
|
46
|
+
unit_tester_type = Bellows::SmokeStack.comment_configs("openstack/nova")[0]
|
47
47
|
assert_equal 'job_unit_tester', unit_tester_type['name']
|
48
48
|
assert_equal 'Unit', unit_tester_type['description']
|
49
49
|
assert_nil unit_tester_type['config_template_id']
|
50
50
|
assert_equal true, unit_tester_type['auto_approved']
|
51
51
|
|
52
|
-
puppet_vpc_type = Bellows::SmokeStack.comment_configs("nova")[1]
|
52
|
+
puppet_vpc_type = Bellows::SmokeStack.comment_configs("openstack/nova")[1]
|
53
53
|
assert_equal 'job_puppet_vpc', puppet_vpc_type['name']
|
54
54
|
assert_equal 3, puppet_vpc_type['config_template_id']
|
55
55
|
assert_equal 'Libvirt (Fedora 16)', puppet_vpc_type['description']
|
data/test/test_task.rb
CHANGED
@@ -18,7 +18,7 @@ class TaskTest < Test::Unit::TestCase
|
|
18
18
|
response = mock()
|
19
19
|
Bellows::HTTP.stubs(:post).returns(response)
|
20
20
|
tasks = Bellows::Tasks.new
|
21
|
-
tasks.fire('nova', options={:quiet => true})
|
21
|
+
tasks.fire('openstack/nova', options={:quiet => true})
|
22
22
|
|
23
23
|
end
|
24
24
|
|
@@ -39,7 +39,7 @@ class TaskTest < Test::Unit::TestCase
|
|
39
39
|
Bellows::HTTP.stubs(:post).returns(response)
|
40
40
|
tasks = Bellows::Tasks.new
|
41
41
|
|
42
|
-
tasks.comment('nova', options={:quiet => true, :cache_file => cache_file.path})
|
42
|
+
tasks.comment('openstack/nova', options={:quiet => true, :cache_file => cache_file.path})
|
43
43
|
|
44
44
|
end
|
45
45
|
|
data/test/test_util.rb
CHANGED
@@ -21,7 +21,7 @@ class UtilTest < Test::Unit::TestCase
|
|
21
21
|
assert_equal "2", test_suite_ids[0]
|
22
22
|
|
23
23
|
# ensure default configs are used for project that doesn't specify them
|
24
|
-
test_suite_ids, config_template_ids = Bellows::Util.test_configs("nova")
|
24
|
+
test_suite_ids, config_template_ids = Bellows::Util.test_configs("openstack/nova")
|
25
25
|
|
26
26
|
assert_equal "1", config_template_ids[0]
|
27
27
|
assert_equal "2", config_template_ids[1]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bellows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -173,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
173
|
version: '0'
|
174
174
|
segments:
|
175
175
|
- 0
|
176
|
-
hash:
|
176
|
+
hash: 221927905361736624
|
177
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
178
|
none: false
|
179
179
|
requirements:
|