)]}'
{"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"319801c347e663c544ba45b96d5853e4cc90d359","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                                    stat.duration_end)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def get_meter_statistics(self, event_filter, period\u003dNone):"},{"line_number":426,"context_line":"        \"\"\"Return models.Statistics instances containing meter statistics"},{"line_number":427,"context_line":"        described by the query parameters."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        The filter must have a meter value set."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuiI%3D","line":426,"updated":"2013-04-01 03:12:08.000000000","message":"returning \"a\" Statistics instance or returning \"a list of\" Statistics instance?","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d5e21bbf5771cfc65719150a906b4d37fb345c51","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                                    stat.duration_end)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def get_meter_statistics(self, event_filter, period\u003dNone):"},{"line_number":426,"context_line":"        \"\"\"Return models.Statistics instances containing meter statistics"},{"line_number":427,"context_line":"        described by the query parameters."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        The filter must have a meter value set."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuUE%3D","line":426,"in_reply_to":"AAAAOH%2F%2FuiI%3D","updated":"2013-04-01 14:35:19.000000000","message":"Done","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ae4447b5abf06355a95a740d889524cfb85062ae","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            r \u003d {\u0027resource_id\u0027: resource_id,"},{"line_number":346,"context_line":"                 \u0027metadata\u0027: json.loads(data[\u0027f:metadata\u0027]),"},{"line_number":347,"context_line":"                 \u0027project_id\u0027: data[\u0027f:project_id\u0027],"},{"line_number":348,"context_line":"                 \u0027source\u0027: data[\u0027f:source\u0027],"},{"line_number":349,"context_line":"                 \u0027user_id\u0027: data[\u0027f:user_id\u0027],"},{"line_number":350,"context_line":"                 \u0027meter\u0027: []}"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsvs%3D","side":"PARENT","line":348,"updated":"2013-04-02 15:04:49.000000000","message":"was \u0027source\u0027 intentionally left off? hbase seemed to be only implementation that referenced source explicitly.  it\u0027s also missing in model.","commit_id":"1816a982fe6864535dc4cfc91074cd04d1ce988c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6df2def673239e8961675c6cafcf3d05ee5a0add","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            r \u003d {\u0027resource_id\u0027: resource_id,"},{"line_number":346,"context_line":"                 \u0027metadata\u0027: json.loads(data[\u0027f:metadata\u0027]),"},{"line_number":347,"context_line":"                 \u0027project_id\u0027: data[\u0027f:project_id\u0027],"},{"line_number":348,"context_line":"                 \u0027source\u0027: data[\u0027f:source\u0027],"},{"line_number":349,"context_line":"                 \u0027user_id\u0027: data[\u0027f:user_id\u0027],"},{"line_number":350,"context_line":"                 \u0027meter\u0027: []}"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsgk%3D","side":"PARENT","line":348,"in_reply_to":"AAAAOH%2F%2Fsvs%3D","updated":"2013-04-02 17:42:01.000000000","message":"The API doesn\u0027t return the source file. It probably should, but I\u0027d like to handle that across the board in a separate changeset. I opened https://bugs.launchpad.net/ceilometer/+bug/1163479 to address this.","commit_id":"1816a982fe6864535dc4cfc91074cd04d1ce988c"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"319801c347e663c544ba45b96d5853e4cc90d359","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            yield models.Sample(**s)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def get_meter_statistics(self, event_filter, period\u003dNone):"},{"line_number":503,"context_line":"        \"\"\"Return a models.Statistics instance containing meter statistics"},{"line_number":504,"context_line":"        described by the query parameters."},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        The filter must have a meter value set."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuiM%3D","line":503,"updated":"2013-04-01 03:12:08.000000000","message":"returning \"a\" Statistics instance or returning \"a list of\" Statistics instance?","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d5e21bbf5771cfc65719150a906b4d37fb345c51","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            yield models.Sample(**s)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def get_meter_statistics(self, event_filter, period\u003dNone):"},{"line_number":503,"context_line":"        \"\"\"Return a models.Statistics instance containing meter statistics"},{"line_number":504,"context_line":"        described by the query parameters."},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        The filter must have a meter value set."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuUA%3D","line":503,"in_reply_to":"AAAAOH%2F%2FuiM%3D","updated":"2013-04-01 14:35:19.000000000","message":"Done","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"319801c347e663c544ba45b96d5853e4cc90d359","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        )"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def get_meter_statistics(self, event_filter, period\u003dNone):"},{"line_number":402,"context_line":"        \"\"\"Return an api_models.Statistics instance containing meter statistics"},{"line_number":403,"context_line":"        described by the query parameters."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        The filter must have a meter value set."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuiY%3D","line":402,"updated":"2013-04-01 03:12:08.000000000","message":"returning \"a\" Statistics instance or returning \"a list of\" Statistics instance?","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"319801c347e663c544ba45b96d5853e4cc90d359","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            res \u003d self._make_stats_query(event_filter).all()[0]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if not period:"},{"line_number":411,"context_line":"            yield self._stats_result_to_model(res, 0, res.tsmin, res.tsmax)"},{"line_number":412,"context_line":"            return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        query \u003d self._make_stats_query(event_filter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuiU%3D","line":411,"updated":"2013-04-01 03:12:08.000000000","message":"why changing the originally returned list value, for sql backend especially?","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"e82d24c74a8efc2148c08a6e43bca54a3a3894e6","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            res \u003d self._make_stats_query(event_filter).all()[0]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if not period:"},{"line_number":411,"context_line":"            yield self._stats_result_to_model(res, 0, res.tsmin, res.tsmax)"},{"line_number":412,"context_line":"            return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        query \u003d self._make_stats_query(event_filter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FswQ%3D","line":411,"in_reply_to":"AAAAOH%2F%2FtXg%3D","updated":"2013-04-02 14:56:30.000000000","message":"I modified the API comments in base.py. Thanks for catching that!","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a89561deeee233bf6bf079df9db907e662f1d676","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            res \u003d self._make_stats_query(event_filter).all()[0]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if not period:"},{"line_number":411,"context_line":"            yield self._stats_result_to_model(res, 0, res.tsmin, res.tsmax)"},{"line_number":412,"context_line":"            return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        query \u003d self._make_stats_query(event_filter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fszw%3D","line":411,"in_reply_to":"AAAAOH%2F%2FtXg%3D","updated":"2013-04-02 14:33:36.000000000","message":"The method is supposed to return an iterable, not specifically a list, so this is consistent with all of the other drivers.","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5cde1aea471eda7538d1200708e800f212842548","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            res \u003d self._make_stats_query(event_filter).all()[0]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if not period:"},{"line_number":411,"context_line":"            yield self._stats_result_to_model(res, 0, res.tsmin, res.tsmax)"},{"line_number":412,"context_line":"            return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        query \u003d self._make_stats_query(event_filter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FtXg%3D","line":411,"in_reply_to":"AAAAOH%2F%2FuT0%3D","updated":"2013-04-02 02:37:03.000000000","message":"What concerns me is that we expect to see the uniform API, but this looks like different db backends would return the value in different forms for the same API interface.\n\nAlso, I think we should modify all these API comment in base.py as well.","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d5e21bbf5771cfc65719150a906b4d37fb345c51","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            res \u003d self._make_stats_query(event_filter).all()[0]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if not period:"},{"line_number":411,"context_line":"            yield self._stats_result_to_model(res, 0, res.tsmin, res.tsmax)"},{"line_number":412,"context_line":"            return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        query \u003d self._make_stats_query(event_filter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuT0%3D","line":411,"in_reply_to":"AAAAOH%2F%2FuiU%3D","updated":"2013-04-01 14:35:19.000000000","message":"The other drivers do at least part of their work in python, so they need to construct lists of the results before returning them. All of the work for the SQLAlchemy driver is done inside the database, so we don\u0027t need to construct and return a list. It\u0027s slightly more efficient, and we have similar constructs elsewhere in the driver, either returning generator expressions or yielding individual values from a generator function.","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"319801c347e663c544ba45b96d5853e4cc90d359","unresolved":false,"context_lines":[{"line_number":432,"context_line":"                                                       period_end)),"},{"line_number":433,"context_line":"                    period_start\u003dperiod_start,"},{"line_number":434,"context_line":"                    period_end\u003dperiod_end,"},{"line_number":435,"context_line":"                )"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"def row2dict(row, srcflag\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuiQ%3D","line":435,"updated":"2013-04-01 03:12:08.000000000","message":"why changing the originally returned list value, for sql backend especially?","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d5e21bbf5771cfc65719150a906b4d37fb345c51","unresolved":false,"context_lines":[{"line_number":432,"context_line":"                                                       period_end)),"},{"line_number":433,"context_line":"                    period_start\u003dperiod_start,"},{"line_number":434,"context_line":"                    period_end\u003dperiod_end,"},{"line_number":435,"context_line":"                )"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"def row2dict(row, srcflag\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FuTw%3D","line":435,"in_reply_to":"AAAAOH%2F%2FuiQ%3D","updated":"2013-04-01 14:35:19.000000000","message":"Same answer.","commit_id":"6dce86d271caf75d040ed3b8431df2c5106ef896"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ae4447b5abf06355a95a740d889524cfb85062ae","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsvk%3D","line":255,"updated":"2013-04-02 15:04:49.000000000","message":"should all these values be meter.resource.xyz... also, based on original code, should it be meter.id instead of meter.resource_id?","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9da1169f21d3623147e75b5bcc944bad09415b60","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FsYM%3D","line":255,"in_reply_to":"AAAAOH%2F%2FsY8%3D","updated":"2013-04-02 19:27:50.000000000","message":"The problem is the metadata for the resource changes, and the query includes the metadata. So we need to look at the historical view from the meter table in order to match against the metadata correctly.","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a48d9972e8aa470b6068082a98514fca5115b1ad","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FsY8%3D","line":255,"in_reply_to":"AAAAOH%2F%2Fsao%3D","updated":"2013-04-02 19:15:16.000000000","message":"ah, yes, user_id can be different... hmm. i don\u0027t understand the model fully so there may be a simple answer i\u0027m missing but why are we using values from Meter to build Resource model? similarly below, on line304, we use Resource values to build Meter model.","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"206c5c3eb8ec49e44d4927d9b8dde6cc940de98d","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsao%3D","line":255,"in_reply_to":"AAAAOH%2F%2FsbY%3D","updated":"2013-04-02 19:00:40.000000000","message":"The project_id is unlikely to change for current OpenStack resources, but we don\u0027t know about the ownership models of other projects that may feed us data. The user_id may change, because different users can trigger events.","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"47034b3b9550ab3c44a6edd80e129a8ae6457c78","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FsbY%3D","line":255,"in_reply_to":"AAAAOH%2F%2Fse8%3D","updated":"2013-04-02 18:52:38.000000000","message":"ah, yes. i see it now. thanks for explanation. it seems like meter.resource provides the same data on the resource. \n\nunrelated to this change, would a Meter ever have a different project_id or user_id from its associated Resource? seems like it\u0027s being duplicated in sqlalchemy model as both meter.project_id and meter.resource.project_id works in this case.","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"22ed028dfae0e4351b8f98f0b51b51a07a68dce3","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fse8%3D","line":255,"in_reply_to":"AAAAOH%2F%2Fsgg%3D","updated":"2013-04-02 18:08:52.000000000","message":"OK, no, the code is correct as written. The query is processing the meter table, and all of the properties being accessed are columns in that table. I will update the use of \"meter\" in the list comprehension on line 259 to eliminate any confusion about reusing that variable name.","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6df2def673239e8961675c6cafcf3d05ee5a0add","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        for meter in query.all():"},{"line_number":254,"context_line":"            yield api_models.Resource("},{"line_number":255,"context_line":"                resource_id\u003dmeter.resource_id,"},{"line_number":256,"context_line":"                project_id\u003dmeter.project_id,"},{"line_number":257,"context_line":"                user_id\u003dmeter.user_id,"},{"line_number":258,"context_line":"                metadata\u003dmeter.resource_metadata,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsgg%3D","line":255,"in_reply_to":"AAAAOH%2F%2Fsvk%3D","updated":"2013-04-02 17:42:01.000000000","message":"Hmm, yes, I think you\u0027re right. I wonder why the tests are passing..","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ae4447b5abf06355a95a740d889524cfb85062ae","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                )"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"def row2dict(row, srcflag\u003dFalse):"},{"line_number":430,"context_line":"    \"\"\"Convert User, Project, Meter, Resource instance to dictionary object"},{"line_number":431,"context_line":"       with nested Source(s) and Meter(s)"},{"line_number":432,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsvc%3D","line":429,"updated":"2013-04-02 15:04:49.000000000","message":"we can remove this method this unless we plan on using this in future","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8fbe3b9ad242eac458a04b2295ea2ecdc0d11037","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                )"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"def row2dict(row, srcflag\u003dFalse):"},{"line_number":430,"context_line":"    \"\"\"Convert User, Project, Meter, Resource instance to dictionary object"},{"line_number":431,"context_line":"       with nested Source(s) and Meter(s)"},{"line_number":432,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fseg%3D","line":429,"in_reply_to":"AAAAOH%2F%2Fsvc%3D","updated":"2013-04-02 18:10:35.000000000","message":"Done","commit_id":"7946ee74c14caabe0d412ffe611e513c19163f8f"}],"ceilometer/storage/models.py":[{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"39fdc565e04d328c3cd306e3cee78f152d72b891","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    def __init__(self,"},{"line_number":155,"context_line":"                 min, max, avg, sum, count,"},{"line_number":156,"context_line":"                 period, period_start, period_end,"},{"line_number":157,"context_line":"                 duration, duration_start, duration_end):"},{"line_number":158,"context_line":"        \"\"\""},{"line_number":159,"context_line":"        :param min: The smallest volume found"},{"line_number":160,"context_line":"        :param max: The largest volume found"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOH%2F%2FtyA%3D","line":157,"updated":"2013-04-01 21:40:36.000000000","message":"Is it worth having defaults for these to make the tests a bit more consistent\nand easier to write?\n I saw this:\n models.Statistics(\n                    min\u003d0,\n                    max\u003d0,\n                    avg\u003d0,\n\n later:\n models.Statistics(\n                 max\u003dNone,\n                 count\u003d0,\n                 avg\u003dNone,\n                 min\u003dNone,\n\n When all the tester wanted was to set the duration start/end.","commit_id":"111b881837ffdca5c7baaf5cfa7acae65783ae37"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"e86eb47dfd465277d105a549a2e8b19e5d80375d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    def __init__(self,"},{"line_number":155,"context_line":"                 min, max, avg, sum, count,"},{"line_number":156,"context_line":"                 period, period_start, period_end,"},{"line_number":157,"context_line":"                 duration, duration_start, duration_end):"},{"line_number":158,"context_line":"        \"\"\""},{"line_number":159,"context_line":"        :param min: The smallest volume found"},{"line_number":160,"context_line":"        :param max: The largest volume found"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOH%2F%2FtgE%3D","line":157,"in_reply_to":"AAAAOH%2F%2FtyA%3D","updated":"2013-04-02 00:33:53.000000000","message":"I thought about that, but decided that leaving off the defaults would do more to ensure that driver authors provided all of the required values. I don\u0027t feel too strongly, though, so I could be convinced to change it.","commit_id":"111b881837ffdca5c7baaf5cfa7acae65783ae37"}]}
