bellows 1.0.12 → 1.1.1
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 +15 -0
- data/LICENSE.txt +2 -1
- data/VERSION +1 -1
- data/lib/bellows/gerrit.rb +23 -0
- data/lib/bellows/smoke_stack.rb +9 -5
- data/lib/bellows/tasks.rb +159 -100
- data/lib/bellows/util.rb +25 -2
- data/test/fixtures/stream.json +1 -0
- data/test/test_task.rb +21 -0
- metadata +54 -18
data/CHANGELOG
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
* Fri July 27 2012 Dan Prince <dprince@redhat.com> - 1.1.1
|
2
|
+
- Fix issue where new tests weren't fired via stream task.
|
3
|
+
- Include swift in default project list.
|
4
|
+
- Add test for stream task.
|
5
|
+
|
6
|
+
* Fri July 27 2012 Dan Prince <dprince@redhat.com> - 1.1.0
|
7
|
+
- Add new Gerrit stream task to stream gerrit events and sync/fire
|
8
|
+
SmokeStack tests.
|
9
|
+
- Add support for per project test suite configurations.
|
10
|
+
- Optimize GET requests to SmokeStack for smoke_tests.
|
11
|
+
- Tasks now default to using the project list from the config file
|
12
|
+
if no project is specified. If a single project is specified then
|
13
|
+
the task will only operate on the specified project.
|
14
|
+
- Handle missing Gerrit owners in purge task.
|
15
|
+
|
1
16
|
* Mon May 17 2012 Dan Prince <dprince@redhat.com> - 1.0.12
|
2
17
|
- Ordering fix to ensure job types are displayed in Gerrit comments
|
3
18
|
in the same order they are listed in the config file.
|
data/LICENSE.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.1
|
data/lib/bellows/gerrit.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'pty'
|
2
3
|
|
3
4
|
module Bellows
|
4
5
|
class Gerrit
|
@@ -7,6 +8,11 @@ module Bellows
|
|
7
8
|
return %x{ssh review gerrit #{command}}
|
8
9
|
end
|
9
10
|
|
11
|
+
#defined here so we can easily stub out for testing
|
12
|
+
def self.stream_events_cmd
|
13
|
+
return "ssh review gerrit stream-events"
|
14
|
+
end
|
15
|
+
|
10
16
|
def self.reviews(project, status="open", branch="master")
|
11
17
|
reviews = []
|
12
18
|
out=Gerrit.run_cmd(%{query status:#{status} project:openstack/#{project} branch:#{branch} limit:500 --current-patch-set --format JSON})
|
@@ -27,5 +33,22 @@ module Bellows
|
|
27
33
|
Gerrit.run_cmd(%{review --verified #{verify_vote} -m \"'#{message}'\" #{revision}})
|
28
34
|
end
|
29
35
|
|
36
|
+
def self.stream_events(type=nil)
|
37
|
+
|
38
|
+
PTY.spawn stream_events_cmd do |read, write, pid|
|
39
|
+
loop do
|
40
|
+
begin
|
41
|
+
data = JSON.parse(read.gets)
|
42
|
+
if type.nil? or data['type'] == type then
|
43
|
+
yield data
|
44
|
+
end
|
45
|
+
rescue
|
46
|
+
break
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
30
53
|
end
|
31
54
|
end
|
data/lib/bellows/smoke_stack.rb
CHANGED
@@ -44,13 +44,15 @@ module Bellows
|
|
44
44
|
job_type_list
|
45
45
|
end
|
46
46
|
|
47
|
-
def self.smoke_tests(
|
47
|
+
def self.smoke_tests(projects)
|
48
48
|
tests = {}
|
49
49
|
data = JSON.parse(Bellows::HTTP.get("/smoke_tests.json"))
|
50
50
|
data.each do |item|
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
projects.each do |project|
|
52
|
+
branch = item['smoke_test']["#{project}_package_builder"]['branch']
|
53
|
+
if branch and not branch.empty? then
|
54
|
+
tests.store(Bellows::Util.short_spec(branch), item['smoke_test'])
|
55
|
+
end
|
54
56
|
end
|
55
57
|
end
|
56
58
|
tests
|
@@ -89,6 +91,7 @@ module Bellows
|
|
89
91
|
|
90
92
|
end
|
91
93
|
|
94
|
+
# returns the ID of the created SmokeTest
|
92
95
|
def self.create_smoke_test(project, description, refspec, config_template_ids, test_suite_ids)
|
93
96
|
|
94
97
|
post_data = { "smoke_test[description]" => description }
|
@@ -114,7 +117,8 @@ module Bellows
|
|
114
117
|
test_suite_ids.each {|id| test_suites << id.to_s}
|
115
118
|
post_data.store("smoke_test[test_suite_ids][]", test_suites)
|
116
119
|
|
117
|
-
|
120
|
+
# Return the ID of the created smoke test
|
121
|
+
Bellows::HTTP.post("/smoke_tests", post_data).sub(/^.*\//, '')
|
118
122
|
|
119
123
|
end
|
120
124
|
|
data/lib/bellows/tasks.rb
CHANGED
@@ -12,106 +12,119 @@ module Bellows
|
|
12
12
|
method_options :test => :boolean
|
13
13
|
method_options :all => :boolean
|
14
14
|
method_options :quiet => :boolean
|
15
|
-
def sync(project, options=(options or {}))
|
16
|
-
Util.
|
15
|
+
def sync(project=nil, options=(options or {}))
|
16
|
+
projects = Util.projects(project)
|
17
17
|
test = options[:test]
|
18
18
|
all = options[:all]
|
19
|
-
smoke_tests = Bellows::SmokeStack.smoke_tests(
|
19
|
+
smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
|
20
20
|
configs=Util.load_configs
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
21
|
+
|
22
|
+
projects.each do |project|
|
23
|
+
Bellows::Gerrit.reviews(project) do |review|
|
24
|
+
owner = review['owner']['name']
|
25
|
+
refspec = review['currentPatchSet']['ref']
|
26
|
+
review_id = Bellows::Util.short_spec(refspec)
|
27
|
+
smoke_test = smoke_tests[review_id]
|
28
|
+
desc = owner + ": " +review['subject']
|
29
|
+
test_suite_ids, config_template_ids = Util.test_configs(project)
|
30
|
+
if not smoke_test
|
31
|
+
puts "Creating... " + desc
|
32
|
+
Bellows::SmokeStack.create_smoke_test(project, desc, refspec, config_template_ids, test_suite_ids) if not test
|
33
|
+
else
|
34
|
+
if smoke_test["#{project}_package_builder"]['branch'] != refspec then
|
35
|
+
puts "Updating... " + desc if not options[:quiet]
|
36
|
+
puts "refspec: " + refspec if not options[:quiet]
|
37
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {"#{project}_package_builder" => { "branch" => refspec}, "description" => desc, "status" => "Updated", "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
38
|
+
elsif all then
|
39
|
+
puts "Updating (all)... " + desc if not options[:quiet]
|
40
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {"#{project}_package_builder" => { "branch" => refspec}, "description" => desc, "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
41
|
+
end
|
41
42
|
end
|
42
|
-
end
|
43
|
-
end
|
43
|
+
end # reviews
|
44
|
+
end # projects
|
44
45
|
end
|
45
46
|
|
46
47
|
desc "purge PROJECT", "Purge merged reviews from SmokeStack"
|
47
48
|
method_options :test => :boolean
|
48
49
|
method_options :quiet => :boolean
|
49
|
-
def purge(project, options=(options or {}))
|
50
|
-
Util.
|
50
|
+
def purge(project=nil, options=(options or {}))
|
51
|
+
projects = Util.projects(project)
|
51
52
|
test = options[:test]
|
52
|
-
smoke_tests = Bellows::SmokeStack.smoke_tests(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
53
|
+
smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
|
54
|
+
projects.each do |project|
|
55
|
+
reviews = Bellows::Gerrit.reviews(project, "merged")
|
56
|
+
reviews += Bellows::Gerrit.reviews(project, "abandoned")
|
57
|
+
reviews.each do |review|
|
58
|
+
refspec = review['currentPatchSet']['ref']
|
59
|
+
review_id = Bellows::Util.short_spec(refspec)
|
60
|
+
smoke_test = smoke_tests[review_id]
|
61
|
+
desc = ""
|
62
|
+
if review['owner']['name'] then
|
63
|
+
desc = review['owner']['name']
|
64
|
+
end
|
65
|
+
if review['subject'] then
|
66
|
+
desc += ": " +review['subject']
|
67
|
+
end
|
68
|
+
if smoke_test
|
69
|
+
puts "Deleting... " + desc if not options[:quiet]
|
70
|
+
Bellows::HTTP.delete("/smoke_tests/#{smoke_test['id']}") if not test
|
71
|
+
end
|
63
72
|
end
|
64
|
-
end
|
73
|
+
end #projects
|
65
74
|
end
|
66
75
|
|
67
76
|
desc "fire PROJECT", "Run jobs for reviews without results."
|
68
77
|
method_options :test => :boolean
|
69
78
|
method_options :quiet => :boolean
|
70
79
|
method_options :limit => :integer
|
71
|
-
def fire(project, options=(options or {}))
|
72
|
-
Util.
|
80
|
+
def fire(project=nil, options=(options or {}))
|
81
|
+
projects = Util.projects(project)
|
73
82
|
test = options[:test]
|
74
83
|
limit = options[:limit] || 5
|
75
84
|
jobs = Set.new
|
76
85
|
Bellows::SmokeStack.jobs.each do |job|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
86
|
+
projects.each do |project|
|
87
|
+
data = job.values[0]
|
88
|
+
if data
|
89
|
+
revision = data["#{project}_revision"]
|
90
|
+
if revision and not revision.empty?
|
91
|
+
jobs.add(revision[0,7])
|
92
|
+
end
|
93
|
+
end
|
83
94
|
end
|
84
95
|
end
|
85
|
-
smoke_tests = Bellows::SmokeStack.smoke_tests(
|
96
|
+
smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
|
86
97
|
|
87
98
|
count=0
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
99
|
+
projects.each do |project|
|
100
|
+
Bellows::Gerrit.reviews(project) do |review|
|
101
|
+
revision = review['currentPatchSet']['revision'][0,7]
|
102
|
+
desc = review['owner']['name'] + ": " +review['subject']
|
103
|
+
if not jobs.include? revision
|
104
|
+
puts "Running ... " + desc if not options[:quiet]
|
105
|
+
refspec = review['currentPatchSet']['ref']
|
106
|
+
review_id = Bellows::Util.short_spec(refspec)
|
107
|
+
smoke_test = smoke_tests[review_id]
|
108
|
+
if smoke_test then
|
109
|
+
count += 1
|
110
|
+
Bellows::HTTP.post("/smoke_tests/#{smoke_test['id']}/run_jobs", {}) if not test
|
111
|
+
else
|
112
|
+
puts "WARNING: no smoke test exists for: #{refspec}" if not options[:quiet]
|
113
|
+
end
|
114
|
+
if count >= limit.to_i then
|
115
|
+
break
|
116
|
+
end
|
104
117
|
end
|
105
|
-
end
|
106
|
-
|
118
|
+
end # reviews
|
119
|
+
end # project
|
107
120
|
end
|
108
121
|
|
109
122
|
desc "comment PROJECT", "Add gerrit comments for reviews w/ results."
|
110
123
|
method_options :test => :boolean
|
111
124
|
method_options :quiet => :boolean
|
112
125
|
method_options :cache_file => :string, :required => true
|
113
|
-
def comment(project, options=(options or {}))
|
114
|
-
Util.
|
126
|
+
def comment(project=nil, options=(options or {}))
|
127
|
+
projects = Util.projects(project)
|
115
128
|
test = options[:test]
|
116
129
|
cache_file = options[:cache_file]
|
117
130
|
jobs = Bellows::SmokeStack.jobs
|
@@ -129,43 +142,89 @@ module Bellows
|
|
129
142
|
end
|
130
143
|
|
131
144
|
File.open(cache_file, 'a') do |file|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
if Bellows::SmokeStack.complete?(job_datas) then
|
149
|
-
puts "Commenting ... " + desc if not options[:quiet]
|
150
|
-
message = "SmokeStack Results (patch set #{patchset_num}):\n"
|
151
|
-
verify_vote = 1
|
152
|
-
job_datas.each do |arr|
|
153
|
-
job_type = arr[0]
|
154
|
-
job_data = arr[1]
|
155
|
-
message += "\t#{job_type['description']} #{job_data['status']}:#{job_data['msg']} http://smokestack.openstack.org/?go=/jobs/#{job_data['id']}\n"
|
156
|
-
verify_vote = -1 if job_data['status'] == 'Failed'
|
145
|
+
projects.each do |project|
|
146
|
+
Bellows::Gerrit.reviews(project) do |review|
|
147
|
+
revision = review['currentPatchSet']['revision'][0,7]
|
148
|
+
desc = review['owner']['name'] + ": " +review['subject']
|
149
|
+
if not cached_hashes.include? revision
|
150
|
+
refspec = review['currentPatchSet']['ref']
|
151
|
+
patchset_num = review['currentPatchSet']['number']
|
152
|
+
jobs_for_rev = Bellows::SmokeStack.jobs_with_hash(revision, jobs)
|
153
|
+
if jobs_for_rev.count > 0 then
|
154
|
+
|
155
|
+
job_types = Bellows::SmokeStack.job_types
|
156
|
+
job_datas = []
|
157
|
+
job_types.each do |job_type|
|
158
|
+
job_data=Bellows::SmokeStack.job_data_for_type(jobs_for_rev, job_type['name'])
|
159
|
+
job_datas << [job_type, job_data]
|
157
160
|
end
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
161
|
+
|
162
|
+
if Bellows::SmokeStack.complete?(job_datas) then
|
163
|
+
puts "Commenting ... " + desc if not options[:quiet]
|
164
|
+
message = "SmokeStack Results (patch set #{patchset_num}):\n"
|
165
|
+
verify_vote = 1
|
166
|
+
job_datas.each do |arr|
|
167
|
+
job_type = arr[0]
|
168
|
+
job_data = arr[1]
|
169
|
+
message += "\t#{job_type['description']} #{job_data['status']}:#{job_data['msg']} http://smokestack.openstack.org/?go=/jobs/#{job_data['id']}\n"
|
170
|
+
verify_vote = -1 if job_data['status'] == 'Failed'
|
171
|
+
end
|
172
|
+
puts message if not options[:quiet]
|
173
|
+
out = Bellows::Gerrit.comment(review['currentPatchSet']['revision'], message, verify_vote) if not test
|
174
|
+
puts out if not options[:quiet] and not test
|
175
|
+
file.write revision + "\n" if not test
|
176
|
+
end
|
177
|
+
|
162
178
|
end
|
163
|
-
|
179
|
+
|
164
180
|
end
|
181
|
+
end # reviews
|
182
|
+
end # projects
|
183
|
+
end # file
|
184
|
+
end
|
185
|
+
|
186
|
+
desc "stream", "Stream Gerrit events and sync data to SmokeStack."
|
187
|
+
method_options :test => :boolean
|
188
|
+
method_options :fire => :boolean
|
189
|
+
method_options :quiet => :boolean
|
190
|
+
def stream(options=(options or {}))
|
191
|
+
test = options[:test]
|
192
|
+
fire = options[:fire]
|
193
|
+
configs=Util.load_configs
|
194
|
+
projects = Util.projects
|
195
|
+
|
196
|
+
Bellows::Gerrit.stream_events('patchset-created') do |patchset|
|
197
|
+
project = patchset['change']['project'].sub(/.*\//, '')
|
198
|
+
if projects.include?(project) then
|
199
|
+
owner = patchset['change']['owner']['name']
|
200
|
+
refspec = patchset['patchSet']['ref']
|
201
|
+
review_id = Bellows::Util.short_spec(refspec)
|
202
|
+
smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
|
203
|
+
smoke_test = smoke_tests[review_id]
|
204
|
+
desc = owner + ": " +patchset['change']['subject']
|
205
|
+
test_suite_ids, config_template_ids = Util.test_configs(project)
|
206
|
+
|
207
|
+
smoke_test_id = nil
|
208
|
+
if not smoke_test
|
209
|
+
# create new smoke test
|
210
|
+
puts "Creating... " + desc
|
211
|
+
smoke_test_id = Bellows::SmokeStack.create_smoke_test(project, desc, refspec, config_template_ids, test_suite_ids) if not test
|
212
|
+
else
|
213
|
+
# update existing smoke test
|
214
|
+
puts "Updating... " + desc if not options[:quiet]
|
215
|
+
puts "refspec: " + refspec if not options[:quiet]
|
216
|
+
Bellows::SmokeStack.update_smoke_test(smoke_test['id'], {"#{project}_package_builder" => { "branch" => refspec}, "description" => desc, "status" => "Updated", "test_suite_ids" => test_suite_ids, "config_template_ids" => config_template_ids}) if not test
|
217
|
+
smoke_test_id = smoke_test['id']
|
165
218
|
|
166
219
|
end
|
167
|
-
|
168
|
-
|
220
|
+
|
221
|
+
# fire off tests
|
222
|
+
if not test and fire then
|
223
|
+
Bellows::HTTP.post("/smoke_tests/#{smoke_test_id}/run_jobs", {})
|
224
|
+
end
|
225
|
+
|
226
|
+
end # reviews
|
227
|
+
end # stream_events
|
169
228
|
end
|
170
229
|
|
171
230
|
end
|
data/lib/bellows/util.rb
CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
|
|
3
3
|
module Bellows
|
4
4
|
module Util
|
5
5
|
|
6
|
-
DEFAULT_PROJECTS = ['nova', 'glance', 'keystone']
|
6
|
+
DEFAULT_PROJECTS = ['nova', 'glance', 'keystone', 'swift']
|
7
7
|
@@configs=nil
|
8
8
|
|
9
9
|
def self.load_configs
|
@@ -56,7 +56,14 @@ module Bellows
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
|
59
|
+
# If a single project is provided return an array of that.
|
60
|
+
# Otherwise return the default projects from the config file or the default
|
61
|
+
# project list.
|
62
|
+
def self.projects(project=nil)
|
63
|
+
if not project.nil?
|
64
|
+
validate_project(project)
|
65
|
+
return [project]
|
66
|
+
end
|
60
67
|
configs=self.load_configs
|
61
68
|
proj_list = configs['projects']
|
62
69
|
if proj_list.nil? or proj_list.empty? then
|
@@ -65,5 +72,21 @@ module Bellows
|
|
65
72
|
return proj_list
|
66
73
|
end
|
67
74
|
|
75
|
+
def self.test_configs(project=nil)
|
76
|
+
configs=load_configs
|
77
|
+
test_suite_ids = nil
|
78
|
+
config_template_ids = nil
|
79
|
+
# per project configs may be specified in the config file
|
80
|
+
if not project.nil? and configs[project] then
|
81
|
+
test_suite_ids = configs[project]['test_suite_ids'].collect {|x| x.to_s }
|
82
|
+
config_template_ids = configs[project]['config_template_ids'].collect {|x| x.to_s }
|
83
|
+
else
|
84
|
+
# if no configs specified use the configured defaults
|
85
|
+
test_suite_ids = configs['test_suite_ids'].collect {|x| x.to_s }
|
86
|
+
config_template_ids = configs['config_template_ids'].collect {|x| x.to_s }
|
87
|
+
end
|
88
|
+
return test_suite_ids, config_template_ids
|
89
|
+
end
|
90
|
+
|
68
91
|
end
|
69
92
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"type":"patchset-created","change":{"project":"openstack/nova","branch":"master","topic":"bug/993663","id":"I2060d39cbdabd20f410ebd501160a04c51641755","number":"7139","subject":"Create a utf8 version of the dns_domains table.","owner":{"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"url":"https://review.openstack.org/7139"},"patchSet":{"number":"5","revision":"f0c5b60445e4dc9f500c49332878b115362f0c83","ref":"refs/changes/39/7139/5","uploader":{"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"createdOn":1336495406},"uploader":{"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"}}
|
data/test/test_task.rb
CHANGED
@@ -43,4 +43,25 @@ class TaskTest < Test::Unit::TestCase
|
|
43
43
|
|
44
44
|
end
|
45
45
|
|
46
|
+
def test_stream
|
47
|
+
|
48
|
+
sample_config = fixture('config.yaml')
|
49
|
+
Bellows::Util.stubs(:load_configs).returns(YAML::load(sample_config))
|
50
|
+
|
51
|
+
smoke_tests_data = fixture('nova_smoke_tests.json')
|
52
|
+
Bellows::HTTP.stubs(:get).returns(smoke_tests_data)
|
53
|
+
|
54
|
+
cache_file=Tempfile.new('smokestack')
|
55
|
+
|
56
|
+
response = mock()
|
57
|
+
Bellows::HTTP.stubs(:post).returns(response)
|
58
|
+
tasks = Bellows::Tasks.new
|
59
|
+
|
60
|
+
stream_data = fixture('stream.json')
|
61
|
+
Bellows::Gerrit.stubs(:stream_events_cmd).returns("echo '#{stream_data}'")
|
62
|
+
|
63
|
+
tasks.stream(options={:quiet => true})
|
64
|
+
|
65
|
+
end
|
66
|
+
|
46
67
|
end
|
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: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 1.0.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: jeweler
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.6.4
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.4
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: thor
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 0.14.6
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.14.6
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: json
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: 1.4.6
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.4.6
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: mocha
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: 0.9.9
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.9.9
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: json
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :runtime
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: thor
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,7 +117,12 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :runtime
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
description: CLI to drive SmokeStack test creation and maintenance based on Gerrit
|
92
127
|
reviews.
|
93
128
|
email: dan.prince@rackspace.com
|
@@ -117,6 +152,7 @@ files:
|
|
117
152
|
- test/fixtures/gerrit.json
|
118
153
|
- test/fixtures/jobs.json
|
119
154
|
- test/fixtures/nova_smoke_tests.json
|
155
|
+
- test/fixtures/stream.json
|
120
156
|
- test/helper.rb
|
121
157
|
- test/test_smoke_stack.rb
|
122
158
|
- test/test_task.rb
|
@@ -136,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
172
|
version: '0'
|
137
173
|
segments:
|
138
174
|
- 0
|
139
|
-
hash:
|
175
|
+
hash: -3831371658779170082
|
140
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
177
|
none: false
|
142
178
|
requirements:
|
@@ -145,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
181
|
version: '0'
|
146
182
|
requirements: []
|
147
183
|
rubyforge_project:
|
148
|
-
rubygems_version: 1.8.
|
184
|
+
rubygems_version: 1.8.24
|
149
185
|
signing_key:
|
150
186
|
specification_version: 3
|
151
187
|
summary: Fire it up! SmokeStack automation w/ Gerrit.
|