)]}'
{"bin/cinder-volume-usage-audit":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7bef5541be60f01764c5611ccbb9733af4561617","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                default\u003dFalse,"},{"line_number":77,"context_line":"                help\u003d\"Send appropriate create and delete notifications.\"),"},{"line_number":78,"context_line":"]"},{"line_number":79,"context_line":"CONF.register_cli_opts(script_opts)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9Phg%3D","line":79,"updated":"2013-12-13 15:58:50.000000000","message":"I think the above help strings would be more useful if they had more of the information from the commit message.  If I hadn\u0027t gone and re-read the commit message I wouldn\u0027t have known what the options did.  Should also provide a sample of the expected format for the input.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":1773,"name":"oliver-leahy-l","email":"oliver.leahy@hpe.com","username":"oliver-leahy-l"},"change_message_id":"b351cf8e539fc086a44dd22ceb429bc526d7e6b6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                default\u003dFalse,"},{"line_number":77,"context_line":"                help\u003d\"Send appropriate create and delete notifications.\"),"},{"line_number":78,"context_line":"]"},{"line_number":79,"context_line":"CONF.register_cli_opts(script_opts)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9JSQ%3D","line":79,"in_reply_to":"AAAATn%2F9Phg%3D","updated":"2013-12-16 11:08:37.000000000","message":"Done","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7bef5541be60f01764c5611ccbb9733af4561617","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    if CONF.start_time:"},{"line_number":90,"context_line":"        begin \u003d datetime.strptime(CONF.start_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":91,"context_line":"    if CONF.end_time:"},{"line_number":92,"context_line":"        end \u003d datetime.strptime(CONF.end_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":93,"context_line":"    print(_(\"Starting volume usage audit\"))"},{"line_number":94,"context_line":"    msg \u003d _(\"Creating usages for %(begin_period)s until %(end_period)s\")"},{"line_number":95,"context_line":"    print(msg % {\"begin_period\": str(begin), \"end_period\": str(end)})"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9Pe0%3D","line":92,"updated":"2013-12-13 15:58:50.000000000","message":"Is there any checking that needs to be done here in case the user specifies the option but inputs bad data?  I get nervous when we take input but don\u0027t check that we got something appropriate.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":1773,"name":"oliver-leahy-l","email":"oliver.leahy@hpe.com","username":"oliver-leahy-l"},"change_message_id":"b351cf8e539fc086a44dd22ceb429bc526d7e6b6","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    if CONF.start_time:"},{"line_number":90,"context_line":"        begin \u003d datetime.strptime(CONF.start_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":91,"context_line":"    if CONF.end_time:"},{"line_number":92,"context_line":"        end \u003d datetime.strptime(CONF.end_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":93,"context_line":"    print(_(\"Starting volume usage audit\"))"},{"line_number":94,"context_line":"    msg \u003d _(\"Creating usages for %(begin_period)s until %(end_period)s\")"},{"line_number":95,"context_line":"    print(msg % {\"begin_period\": str(begin), \"end_period\": str(end)})"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9JR0%3D","line":92,"in_reply_to":"AAAATn%2F9Pe0%3D","updated":"2013-12-16 11:08:37.000000000","message":"Not sure if I\u0027ve done what you wanted here. Since datetime.strptime() will raise an exception if the user inputs nonsense, I\u0027ve just added a test that end time is after start time.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7bef5541be60f01764c5611ccbb9733af4561617","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                           \u0027project_id\u0027: volume_ref.project_id,"},{"line_number":136,"context_line":"                           \u0027extra_info\u0027: extra_info})"},{"line_number":137,"context_line":"            except Exception as e:"},{"line_number":138,"context_line":"                print(traceback.format_exc(e))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        if (CONF.send_actions and volume_ref.deleted_at and"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9PeY%3D","line":138,"updated":"2013-12-13 15:58:50.000000000","message":"Seems like there should be some context provided here for the exception.  If debug isn\u0027t enabled we just end up with a traceback.  Would be good to add a LOG.error explaining what was going on when the exception was encountered.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":1773,"name":"oliver-leahy-l","email":"oliver.leahy@hpe.com","username":"oliver-leahy-l"},"change_message_id":"b351cf8e539fc086a44dd22ceb429bc526d7e6b6","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                           \u0027project_id\u0027: volume_ref.project_id,"},{"line_number":136,"context_line":"                           \u0027extra_info\u0027: extra_info})"},{"line_number":137,"context_line":"            except Exception as e:"},{"line_number":138,"context_line":"                print(traceback.format_exc(e))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        if (CONF.send_actions and volume_ref.deleted_at and"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9JRc%3D","line":138,"in_reply_to":"AAAATn%2F9PeY%3D","updated":"2013-12-16 11:08:37.000000000","message":"good point, I was following the pre-existing pattern, but I\u0027ve added a LOG.error at each point that traceback was called.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7bef5541be60f01764c5611ccbb9733af4561617","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                           \u0027project_id\u0027: volume_ref.project_id,"},{"line_number":157,"context_line":"                           \u0027extra_info\u0027: extra_info})"},{"line_number":158,"context_line":"            except Exception as e:"},{"line_number":159,"context_line":"                print(traceback.format_exc(e))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    snapshots \u003d db.snapshot_get_active_by_window(admin_context,"},{"line_number":162,"context_line":"                                                 begin,"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9PeU%3D","line":159,"updated":"2013-12-13 15:58:50.000000000","message":"Same comment as above.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7bef5541be60f01764c5611ccbb9733af4561617","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                           \u0027project_id\u0027: snapshot_ref.project_id,"},{"line_number":215,"context_line":"                           \u0027extra_info\u0027: extra_info})"},{"line_number":216,"context_line":"            except Exception as e:"},{"line_number":217,"context_line":"                print(traceback.format_exc(e))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    print(_(\"Volume usage audit completed\"))"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAATn%2F9PeM%3D","line":217,"updated":"2013-12-13 15:58:50.000000000","message":"Same comment as above.","commit_id":"0d10461329fa4c693214096ae0ba8c1dda8fe910"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                volume_ref,"},{"line_number":125,"context_line":"                \u0027exists\u0027, extra_usage_info\u003dextra_info)"},{"line_number":126,"context_line":"        except Exception as e:"},{"line_number":127,"context_line":"            LOG.error(_(\"Failed to send exists notification for volume %s\") %"},{"line_number":128,"context_line":"                      volume_ref.id)"},{"line_number":129,"context_line":"            print(traceback.format_exc(e))"},{"line_number":130,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVpE%3D","line":127,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                    \u0027create.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":153,"context_line":"            except Exception as e:"},{"line_number":154,"context_line":"                LOG.error(_(\"Failed to send create notification for \""},{"line_number":155,"context_line":"                            \"volume %s\") % volume_ref.id)"},{"line_number":156,"context_line":"                print(traceback.format_exc(e))"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        if (CONF.send_actions and volume_ref.deleted_at and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVo4%3D","line":155,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                    \u0027delete.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":180,"context_line":"            except Exception as e:"},{"line_number":181,"context_line":"                LOG.error(_(\"Failed to send delete notification for volume \""},{"line_number":182,"context_line":"                            \"%s\") % volume_ref.id)"},{"line_number":183,"context_line":"                print(traceback.format_exc(e))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    snapshots \u003d db.snapshot_get_active_by_window(admin_context,"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVok%3D","line":182,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                                                            \u0027exists\u0027,"},{"line_number":199,"context_line":"                                                            extra_info)"},{"line_number":200,"context_line":"        except Exception as e:"},{"line_number":201,"context_line":"            LOG.error(_(\"Failed to send exists notification for snapshot %s\") %"},{"line_number":202,"context_line":"                      snapshot_ref.id)"},{"line_number":203,"context_line":"            print(traceback.format_exc(e))"},{"line_number":204,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVog%3D","line":201,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    \u0027create.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":227,"context_line":"            except Exception as e:"},{"line_number":228,"context_line":"                LOG.error(_(\"Failed to send create notification for snapshot \""},{"line_number":229,"context_line":"                            \"%s\") % snapshot_ref.id)"},{"line_number":230,"context_line":"                print(traceback.format_exc(e))"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if (CONF.send_actions and snapshot_ref.deleted_at and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVoY%3D","line":229,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfc78d1e86f86221e39b3ab4cd38bba08ace0f64","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                    \u0027delete.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":254,"context_line":"            except Exception as e:"},{"line_number":255,"context_line":"                LOG.error(_(\"Failed to send delete notification for snapshot \""},{"line_number":256,"context_line":"                            \"%s\") % snapshot_ref.id)"},{"line_number":257,"context_line":"                print(traceback.format_exc(e))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    print(_(\"Volume usage audit completed\"))"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F%2FVoU%3D","line":256,"updated":"2014-01-14 22:10:51.000000000","message":"Should end this with a \u0027.\u0027 .","commit_id":"fdb34f6d7b093376e69562158d5affff72228db8"}]}
