bellows 1.0.12 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|