)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"283da3758a6ee66b66407074568f94bd3b210781","unresolved":false,"context_lines":[{"line_number":16,"context_line":"changing its functionality."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I116ac01ce5a37f28325af10a2573ae53b0734648"},{"line_number":19,"context_line":"Closes-Bug: 1536095"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a461143_71c64369","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":19},"updated":"2017-01-30 15:51:11.000000000","message":"This bug was closed as invalid multiple times. Please remove this flag.","commit_id":"933c23063d3db623a54ba030d85c182af5888245"}],"cinder/cmd/volume_usage_audit.py":[{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                   \u0027extra_info\u0027: local_extra_info})"},{"line_number":132,"context_line":"        cinder.volume.utils.notify_about_volume_usage("},{"line_number":133,"context_line":"            admin_context, volume_ref,"},{"line_number":134,"context_line":"            str(act_text)+\u0027.start\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":135,"context_line":"        cinder.volume.utils.notify_about_volume_usage("},{"line_number":136,"context_line":"            admin_context, volume_ref,"},{"line_number":137,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_1b11f1af","line":134,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace:\nShould be str(act_text) + \u0027.start\u0027","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            str(act_text)+\u0027.start\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":135,"context_line":"        cinder.volume.utils.notify_about_volume_usage("},{"line_number":136,"context_line":"            admin_context, volume_ref,"},{"line_number":137,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":138,"context_line":"    except Exception as exc_msg:"},{"line_number":139,"context_line":"        LOG.exception("},{"line_number":140,"context_line":"            _LE(str(act_text).title()+\" volume notification failed: %s\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_5b1f79b7","line":137,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace:\nShould be str(act_text) + \u0027.end\u0027","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":138,"context_line":"    except Exception as exc_msg:"},{"line_number":139,"context_line":"        LOG.exception("},{"line_number":140,"context_line":"            _LE(str(act_text).title()+\" volume notification failed: %s\"),"},{"line_number":141,"context_line":"            exc_msg, resource\u003dvolume_ref)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_bb69c527","line":140,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace:\nShould be str(act_text).title() + \" volume...\n\nAlso getting an H701, empty localization string error. Someone else with more expertise on this particular error should be able to help you with that unless you know how to fix this error!","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                   \u0027extra_info\u0027: local_extra_info})"},{"line_number":157,"context_line":"        cinder.volume.utils.notify_about_snapshot_usage("},{"line_number":158,"context_line":"            admin_context, snapshot_ref,"},{"line_number":159,"context_line":"            str(act_text)+\u0027.start\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":160,"context_line":"        cinder.volume.utils.notify_about_snapshot_usage("},{"line_number":161,"context_line":"            admin_context, snapshot_ref,"},{"line_number":162,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_dbe609b0","line":159,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace: \nShould be str(act_text) + \u0027.start\u0027","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            str(act_text)+\u0027.start\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":160,"context_line":"        cinder.volume.utils.notify_about_snapshot_usage("},{"line_number":161,"context_line":"            admin_context, snapshot_ref,"},{"line_number":162,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":163,"context_line":"    except Exception as exc_msg:"},{"line_number":164,"context_line":"        LOG.exception("},{"line_number":165,"context_line":"            _LE(str(act_text).title()+\" snapshot notification failed: %s\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_5bfbf947","line":162,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace: \nShould be str(act_text) + \u0027.end\u0027","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"e54e77393d14cb1733fc254ce111ed6e6b8b2750","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            str(act_text)+\u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":163,"context_line":"    except Exception as exc_msg:"},{"line_number":164,"context_line":"        LOG.exception("},{"line_number":165,"context_line":"            _LE(str(act_text).title()+\" snapshot notification failed: %s\"),"},{"line_number":166,"context_line":"            exc_msg, resource\u003dsnapshot_ref)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_1b9491e6","line":165,"updated":"2015-11-30 19:09:41.000000000","message":"Missing whitespace: \nShould be str(act_text).title() + \" snapshot..\n\nH701, empty localization string error again here.","commit_id":"f40ce79cf374947313b13cfbb5fe6927757639fb"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b9297c0caf40486b9b62ad8b4b3e6449b03ace06","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    rpc.init(CONF)"},{"line_number":177,"context_line":"    begin, end \u003d utils.last_completed_audit_period()"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    _time_error(LOG)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    LOG.debug(\"Starting volume usage audit\")"},{"line_number":182,"context_line":"    msg \u003d _(\"Creating usages for %(begin_period)s until %(end_period)s\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_9b261715","line":179,"updated":"2015-12-10 13:12:13.000000000","message":"It\u0027s a bit weird to pass a capitalized LOG as method parameter. In other files we usually put it as a module level variable. I think you may do it here too.\n\nE.g. https://github.com/openstack/cinder/blob/master/cinder/volume/drivers/nfs.py#L37","commit_id":"96b511bb631bbd2d21684514bec7e0e91c808ad0"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b9297c0caf40486b9b62ad8b4b3e6449b03ace06","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        if CONF.send_actions:"},{"line_number":197,"context_line":"            if begin \u003c volume_ref.created_at \u003c end:"},{"line_number":198,"context_line":"                _vol_ref_action(volume_ref, LOG, admin_context,"},{"line_number":199,"context_line":"                                \u0027created_at\u0027, \u0027create\u0027)"},{"line_number":200,"context_line":"            if begin \u003c volume_ref.deleted_at \u003c end:"},{"line_number":201,"context_line":"                _vol_ref_action(volume_ref, LOG, admin_context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_8d181a77","line":198,"updated":"2015-12-10 13:12:13.000000000","message":"IMHO, _vol_notify_usage, _vol_ref_action(..\"created_at\"..), _vol_ref_action(..\"deleted_at\"..) are all trying to notify volume usage. Why don\u0027t you merge the three, remove duplicated code, and use parameter to tell \"exists\", \"created_at\" or \"deleted_at\"?","commit_id":"96b511bb631bbd2d21684514bec7e0e91c808ad0"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b9297c0caf40486b9b62ad8b4b3e6449b03ace06","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if CONF.send_actions:"},{"line_number":211,"context_line":"            if begin \u003c snapshot_ref.created_at \u003c end:"},{"line_number":212,"context_line":"                _snap_ref_action(snapshot_ref, LOG, admin_context,"},{"line_number":213,"context_line":"                                 \u0027created_at\u0027, \u0027create\u0027)"},{"line_number":214,"context_line":"            if begin \u003c snapshot_ref.deleted_at \u003c end:"},{"line_number":215,"context_line":"                _snap_ref_action(snapshot_ref, LOG, admin_context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_0d23caa8","line":212,"updated":"2015-12-10 13:12:13.000000000","message":"Ditto.","commit_id":"96b511bb631bbd2d21684514bec7e0e91c808ad0"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"89e3836adeeab7692cffc62a7c617c8ea1de023e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            str(act_text) + \u0027.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":140,"context_line":"    except Exception as exc_msg:"},{"line_number":141,"context_line":"        LOG.exception("},{"line_number":142,"context_line":"            str(act_text).title() + \" \" + ref_type + \" notification failed: %s\","},{"line_number":143,"context_line":"            exc_msg, resource\u003dobj_ref)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a710552_8c0d6339","line":142,"updated":"2015-12-16 06:25:07.000000000","message":"Line too long (\u003e79 characters).","commit_id":"ce7e9ad68b07aa5c09e4fa6d68590914415f69fe"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"050f82989b099cefe564738d9776167448ac9693","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        end \u003d datetime.datetime.strptime("},{"line_number":80,"context_line":"            CONF.end_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":81,"context_line":"    if not end \u003e begin:"},{"line_number":82,"context_line":"        msg \u003d _(\"The end time (%(end)s) must be after the start \""},{"line_number":83,"context_line":"                \"time (%(start)s).\") % {\u0027start\u0027: begin, \u0027end\u0027: end}"},{"line_number":84,"context_line":"        LOG.error(msg)"},{"line_number":85,"context_line":"        sys.exit(-1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_875a43f0","line":82,"updated":"2016-05-23 09:17:25.000000000","message":"Use _LE for error log translation.","commit_id":"bf664aefac77beead1a6586ecd448703cea1f626"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"050f82989b099cefe564738d9776167448ac9693","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            CONF.end_time, \"%Y-%m-%d %H:%M:%S\")"},{"line_number":81,"context_line":"    if not end \u003e begin:"},{"line_number":82,"context_line":"        msg \u003d _(\"The end time (%(end)s) must be after the start \""},{"line_number":83,"context_line":"                \"time (%(start)s).\") % {\u0027start\u0027: begin, \u0027end\u0027: end}"},{"line_number":84,"context_line":"        LOG.error(msg)"},{"line_number":85,"context_line":"        sys.exit(-1)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_a70e67e2","line":83,"range":{"start_line":83,"start_character":37,"end_line":83,"end_character":38},"updated":"2016-05-23 09:17:25.000000000","message":"Use \",\" instead of \"%\"","commit_id":"bf664aefac77beead1a6586ecd448703cea1f626"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"050f82989b099cefe564738d9776167448ac9693","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        \u0027audit_period_ending\u0027: str(end),"},{"line_number":175,"context_line":"    }"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    volumes \u003d db.volume_get_active_by_window(admin_context, begin, end)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    LOG.debug(\"Found %d volumes\", len(volumes))"},{"line_number":180,"context_line":"    for volume_ref in volumes:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_c7756bcb","line":177,"range":{"start_line":177,"start_character":60,"end_line":177,"end_character":70},"updated":"2016-05-23 09:17:25.000000000","message":"The main goal of this patch is to keep the existing functionality unchanged, but here it looks like in case of \"CONF.start_time\" and \"CONF.end_time\" is passed the code below L#166 \"_time_error(LOG)\" will always use time values from utils.last_completed_audit_period().","commit_id":"bf664aefac77beead1a6586ecd448703cea1f626"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f9885ab00229ec5f4210503793ce4651aa53f141","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        notify_about_usage(admin_context, obj_ref,"},{"line_number":161,"context_line":"                           \u0027delete.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":162,"context_line":"    except Exception as exc_msg:"},{"line_number":163,"context_line":"        LOG.exception(_LE(\"Create %(type)s notification failed: %(exc_msg)s\"),"},{"line_number":164,"context_line":"                      {\u0027type\u0027: type_name, \u0027exc_msg\u0027: exc_msg},"},{"line_number":165,"context_line":"                      resource\u003dobj_ref)"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_297e1d19","line":163,"updated":"2016-10-13 19:55:19.000000000","message":"Create -\u003e Delete","commit_id":"dd2af1fcae733354aee46774b4313b76a1e326cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd55796e0f03dfb8e143bd667f52a521e6424697","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            admin_context, volume_ref, \u0027exists\u0027, extra_usage_info\u003dextra_info)"},{"line_number":106,"context_line":"    except Exception as exc_msg:"},{"line_number":107,"context_line":"        LOG.exception(_LE(\"Exists volume notification failed: %s\"),"},{"line_number":108,"context_line":"                      exc_msg, resource\u003dvolume_ref)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _snap_notify_usage(LOG, snapshot_ref, extra_info, admin_context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_51d067f6","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":29},"updated":"2017-01-30 15:55:55.000000000","message":"I see that\u0027s how the original code was, but exceptions should not be passed to LOG.exception as that will automatically log the exception details. Either remove this, or change this to LOG.error. My preference is to remove it.","commit_id":"86db780ccb2df3a00dadcd70649dfdc768484c38"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd55796e0f03dfb8e143bd667f52a521e6424697","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            admin_context, snapshot_ref, \u0027exists\u0027, extra_info)"},{"line_number":121,"context_line":"    except Exception as exc_msg:"},{"line_number":122,"context_line":"        LOG.exception(_LE(\"Exists snapshot notification failed: %s\"),"},{"line_number":123,"context_line":"                      exc_msg, resource\u003dsnapshot_ref)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def _backup_notify_usage(LOG, backup_ref, extra_info, admin_context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_31fafb75","line":123,"range":{"start_line":123,"start_character":22,"end_line":123,"end_character":29},"updated":"2017-01-30 15:55:55.000000000","message":"Same.","commit_id":"86db780ccb2df3a00dadcd70649dfdc768484c38"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd55796e0f03dfb8e143bd667f52a521e6424697","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                   \u0027project_id\u0027: backup_ref.project_id,"},{"line_number":135,"context_line":"                   \u0027extra_info\u0027: extra_info})"},{"line_number":136,"context_line":"    except Exception as exc_msg:"},{"line_number":137,"context_line":"        LOG.error(_LE(\"Exists backups notification failed: %s\"), exc_msg)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def _create_action(obj_ref, admin_context, LOG, notify_about_usage,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_b12c2b03","line":137,"range":{"start_line":137,"start_character":65,"end_line":137,"end_character":72},"updated":"2017-01-30 15:55:55.000000000","message":"Same.","commit_id":"86db780ccb2df3a00dadcd70649dfdc768484c38"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd55796e0f03dfb8e143bd667f52a521e6424697","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                           \u0027create.end\u0027, extra_usage_info\u003dlocal_extra_info)"},{"line_number":157,"context_line":"    except Exception as exc_msg:"},{"line_number":158,"context_line":"        LOG.exception(_LE(\"Create %(type)s notification failed: %(exc_msg)s\"),"},{"line_number":159,"context_line":"                      {\u0027type\u0027: type_name, \u0027exc_msg\u0027: exc_msg},"},{"line_number":160,"context_line":"                      resource\u003dobj_ref)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_11389f3c","line":159,"range":{"start_line":159,"start_character":53,"end_line":159,"end_character":60},"updated":"2017-01-30 15:55:55.000000000","message":"same.","commit_id":"86db780ccb2df3a00dadcd70649dfdc768484c38"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd55796e0f03dfb8e143bd667f52a521e6424697","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 exc_msg:"},{"line_number":181,"context_line":"        LOG.exception(_LE(\"Delete %(type)s notification failed: %(exc_msg)s\"),"},{"line_number":182,"context_line":"                      {\u0027type\u0027: type_name, \u0027exc_msg\u0027: exc_msg},"},{"line_number":183,"context_line":"                      resource\u003dobj_ref)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_513ea728","line":182,"range":{"start_line":182,"start_character":53,"end_line":182,"end_character":60},"updated":"2017-01-30 15:55:55.000000000","message":"same","commit_id":"86db780ccb2df3a00dadcd70649dfdc768484c38"}]}
