Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: appengine/swarming/message_conversion.py

Issue 2267363004: Add CIPD pin reporting to swarming. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-py@master
Patch Set: comments and some tests Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The LUCI Authors. All rights reserved. 1 # Copyright 2015 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 """This module facilitates conversion from dictionaries to ProtoRPC messages. 5 """This module facilitates conversion from dictionaries to ProtoRPC messages.
6 6
7 Given a dictionary whose keys' names and values' types comport with the 7 Given a dictionary whose keys' names and values' types comport with the
8 fields defined for a protorpc.messages.Message subclass, this module tries to 8 fields defined for a protorpc.messages.Message subclass, this module tries to
9 generate a Message instance that corresponds to the provided dictionary. The 9 generate a Message instance that corresponds to the provided dictionary. The
10 "normal" use case is for ndb.Models which need to be represented as a 10 "normal" use case is for ndb.Models which need to be represented as a
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 properties=properties) 193 properties=properties)
194 194
195 195
196 def task_result_to_rpc(entity, send_stats): 196 def task_result_to_rpc(entity, send_stats):
197 """"Returns a swarming_rpcs.TaskResult from a task_result.TaskResultSummary or 197 """"Returns a swarming_rpcs.TaskResult from a task_result.TaskResultSummary or
198 task_result.TaskRunResult. 198 task_result.TaskRunResult.
199 """ 199 """
200 outputs_ref = ( 200 outputs_ref = (
201 _ndb_to_rpc(swarming_rpcs.FilesRef, entity.outputs_ref) 201 _ndb_to_rpc(swarming_rpcs.FilesRef, entity.outputs_ref)
202 if entity.outputs_ref else None) 202 if entity.outputs_ref else None)
203 cipd_pins = [
204 _ndb_to_rpc(swarming_rpcs.CipdPackage, pkg)
205 for pkg in (entity.cipd_pins or ())
M-A Ruel 2016/08/24 02:40:23 I've always used "or []" and never realized that (
206 ]
203 performance_stats = None 207 performance_stats = None
204 if send_stats and entity.performance_stats.is_valid: 208 if send_stats and entity.performance_stats.is_valid:
205 def op(entity): 209 def op(entity):
206 if entity: 210 if entity:
207 return _ndb_to_rpc(swarming_rpcs.OperationStats, entity) 211 return _ndb_to_rpc(swarming_rpcs.OperationStats, entity)
208 212
209 performance_stats = _ndb_to_rpc( 213 performance_stats = _ndb_to_rpc(
210 swarming_rpcs.PerformanceStats, 214 swarming_rpcs.PerformanceStats,
211 entity.performance_stats, 215 entity.performance_stats,
212 isolated_download=op(entity.performance_stats.isolated_download), 216 isolated_download=op(entity.performance_stats.isolated_download),
213 isolated_upload=op(entity.performance_stats.isolated_upload)) 217 isolated_upload=op(entity.performance_stats.isolated_upload))
214 kwargs = { 218 kwargs = {
215 'bot_dimensions': _string_list_pairs_from_dict(entity.bot_dimensions or {}), 219 'bot_dimensions': _string_list_pairs_from_dict(entity.bot_dimensions or {}),
216 'performance_stats': performance_stats, 220 'performance_stats': performance_stats,
217 'outputs_ref': outputs_ref, 221 'outputs_ref': outputs_ref,
222 'cipd_pins': cipd_pins,
218 'state': swarming_rpcs.StateField(entity.state), 223 'state': swarming_rpcs.StateField(entity.state),
219 } 224 }
220 if entity.__class__ is task_result.TaskRunResult: 225 if entity.__class__ is task_result.TaskRunResult:
221 kwargs['costs_usd'] = [] 226 kwargs['costs_usd'] = []
222 if entity.cost_usd is not None: 227 if entity.cost_usd is not None:
223 kwargs['costs_usd'].append(entity.cost_usd) 228 kwargs['costs_usd'].append(entity.cost_usd)
224 kwargs['properties_hash'] = None 229 kwargs['properties_hash'] = None
225 kwargs['tags'] = [] 230 kwargs['tags'] = []
226 kwargs['user'] = None 231 kwargs['user'] = None
227 else: 232 else:
228 assert entity.__class__ is task_result.TaskResultSummary, entity 233 assert entity.__class__ is task_result.TaskResultSummary, entity
229 kwargs['properties_hash'] = ( 234 kwargs['properties_hash'] = (
230 entity.properties_hash.encode('hex') 235 entity.properties_hash.encode('hex')
231 if entity.properties_hash else None) 236 if entity.properties_hash else None)
232 return _ndb_to_rpc(swarming_rpcs.TaskResult, entity, **kwargs) 237 return _ndb_to_rpc(swarming_rpcs.TaskResult, entity, **kwargs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698