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 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
@@ -1,4 +1,5 @@
1
- Copyright (c) 2011 Dan Prince
1
+ Copyright (c) 2011-2012 Dan Prince
2
+ Copyright (c) 2012 Red Hat
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
4
5
  a copy of this software and associated documentation files (the
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.12
1
+ 1.1.1
@@ -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
@@ -44,13 +44,15 @@ module Bellows
44
44
  job_type_list
45
45
  end
46
46
 
47
- def self.smoke_tests(project)
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
- branch = item['smoke_test']["#{project}_package_builder"]['branch']
52
- if branch and not branch.empty? then
53
- tests.store(Bellows::Util.short_spec(branch), item['smoke_test'])
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
- Bellows::HTTP.post("/smoke_tests", post_data)
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.validate_project(project)
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(project)
19
+ smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
20
20
  configs=Util.load_configs
21
- test_suite_ids = configs['test_suite_ids'].collect {|x| x.to_s }
22
- config_template_ids = configs['config_template_ids'].collect {|x| x.to_s }
23
-
24
- Bellows::Gerrit.reviews(project) do |review|
25
- owner = review['owner']['name']
26
- refspec = review['currentPatchSet']['ref']
27
- review_id = Bellows::Util.short_spec(refspec)
28
- smoke_test = smoke_tests[review_id]
29
- desc = owner + ": " +review['subject']
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
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.validate_project(project)
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(project)
53
- reviews = Bellows::Gerrit.reviews(project, "merged")
54
- reviews += Bellows::Gerrit.reviews(project, "abandoned")
55
- reviews.each do |review|
56
- refspec = review['currentPatchSet']['ref']
57
- review_id = Bellows::Util.short_spec(refspec)
58
- smoke_test = smoke_tests[review_id]
59
- desc = review['owner']['name'] + ": " +review['subject']
60
- if smoke_test
61
- puts "Deleting... " + desc if not options[:quiet]
62
- Bellows::HTTP.delete("/smoke_tests/#{smoke_test['id']}") if not test
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.validate_project(project)
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
- data = job.values[0]
78
- if data
79
- revision = data["#{project}_revision"]
80
- if revision and not revision.empty?
81
- jobs.add(revision[0,7])
82
- end
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(project)
96
+ smoke_tests = Bellows::SmokeStack.smoke_tests(projects)
86
97
 
87
98
  count=0
88
- Bellows::Gerrit.reviews(project) do |review|
89
- revision = review['currentPatchSet']['revision'][0,7]
90
- desc = review['owner']['name'] + ": " +review['subject']
91
- if not jobs.include? revision
92
- puts "Running ... " + desc if not options[:quiet]
93
- refspec = review['currentPatchSet']['ref']
94
- review_id = Bellows::Util.short_spec(refspec)
95
- smoke_test = smoke_tests[review_id]
96
- if smoke_test then
97
- count += 1
98
- Bellows::HTTP.post("/smoke_tests/#{smoke_test['id']}/run_jobs", {}) if not test
99
- else
100
- puts "WARNING: no smoke test exists for: #{refspec}" if not options[:quiet]
101
- end
102
- if count >= limit.to_i then
103
- break
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
- end
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.validate_project(project)
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
- Bellows::Gerrit.reviews(project) do |review|
133
- revision = review['currentPatchSet']['revision'][0,7]
134
- desc = review['owner']['name'] + ": " +review['subject']
135
- if not cached_hashes.include? revision
136
- refspec = review['currentPatchSet']['ref']
137
- patchset_num = review['currentPatchSet']['number']
138
- jobs_for_rev = Bellows::SmokeStack.jobs_with_hash(revision, jobs)
139
- if jobs_for_rev.count > 0 then
140
-
141
- job_types = Bellows::SmokeStack.job_types
142
- job_datas = []
143
- job_types.each do |job_type|
144
- job_data=Bellows::SmokeStack.job_data_for_type(jobs_for_rev, job_type['name'])
145
- job_datas << [job_type, job_data]
146
- end
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
- puts message if not options[:quiet]
159
- out = Bellows::Gerrit.comment(review['currentPatchSet']['revision'], message, verify_vote) if not test
160
- puts out if not options[:quiet] and not test
161
- file.write revision + "\n" if not test
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
- end
168
- end
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
- def self.projects
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.0.12
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-05-17 00:00:00.000000000Z
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: &5858420 !ruby/object:Gem::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: *5858420
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: &5857160 !ruby/object:Gem::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: *5857160
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: &5855760 !ruby/object:Gem::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: *5855760
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: &5854600 !ruby/object:Gem::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: *5854600
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: &5853540 !ruby/object:Gem::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: *5853540
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: &5852140 !ruby/object:Gem::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: *5852140
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: &5824800 !ruby/object:Gem::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: *5824800
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: 2565287707468473955
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.15
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.