)]}'
{"placement/handlers/allocation_candidate.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from placement import exception"},{"line_number":24,"context_line":"from placement import microversion"},{"line_number":25,"context_line":"from placement.objects import resource_provider as rp_obj"},{"line_number":26,"context_line":"from placement.policies import allocation_candidate as \\"},{"line_number":27,"context_line":"    policies"},{"line_number":28,"context_line":"from placement.schemas import allocation_candidate as schema"},{"line_number":29,"context_line":"from placement import util"},{"line_number":30,"context_line":"from placement import wsgi_wrapper"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_dcd2acd1","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":12},"updated":"2018-09-03 12:38:02.000000000","message":"the backslash can be cleaned in a followup","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from placement import exception"},{"line_number":24,"context_line":"from placement import microversion"},{"line_number":25,"context_line":"from placement.objects import resource_provider as rp_obj"},{"line_number":26,"context_line":"from placement.policies import allocation_candidate as \\"},{"line_number":27,"context_line":"    policies"},{"line_number":28,"context_line":"from placement.schemas import allocation_candidate as schema"},{"line_number":29,"context_line":"from placement import util"},{"line_number":30,"context_line":"from placement import wsgi_wrapper"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_207115a9","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":12},"in_reply_to":"3f79a3b5_dcd2acd1","updated":"2018-09-04 20:52:51.000000000","message":"Done","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"}],"placement/objects/resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":3976,"context_line":""},{"line_number":3977,"context_line":"        :param context: Nova RequestContext."},{"line_number":3978,"context_line":"        :param requests: Dict, keyed by suffix, of"},{"line_number":3979,"context_line":"                         placement.util.RequestGroup"},{"line_number":3980,"context_line":"        :param limit: An integer, N, representing the maximum number of"},{"line_number":3981,"context_line":"                      allocation candidates to return. If"},{"line_number":3982,"context_line":"                      CONF.placement.randomize_allocation_candidates is True"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1ddec23d","line":3979,"range":{"start_line":3979,"start_character":35,"end_line":3979,"end_character":39},"updated":"2018-09-04 20:52:51.000000000","message":"This needs to be changed to \u0027lib\u0027.\n\n[Later] I\u0027m keeping track of this locally, will post a fup with the fix.","commit_id":"1dca56f58ec34fa7594b3c88279c097a845dd1c1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":4010,"context_line":"        (or writer) context."},{"line_number":4011,"context_line":""},{"line_number":4012,"context_line":"        :param context: Nova RequestContext."},{"line_number":4013,"context_line":"        :param request: One placement.util.RequestGroup"},{"line_number":4014,"context_line":"        :param sharing_providers: dict, keyed by resource class internal ID, of"},{"line_number":4015,"context_line":"                                  the set of provider IDs containing shared"},{"line_number":4016,"context_line":"                                  inventory of that resource class"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_dde36a04","line":4013,"range":{"start_line":4013,"start_character":38,"end_line":4013,"end_character":42},"updated":"2018-09-04 20:52:51.000000000","message":"ditto","commit_id":"1dca56f58ec34fa7594b3c88279c097a845dd1c1"}],"placement/policy.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Verifies that the action is valid on the target in this context."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    :param context: instance of"},{"line_number":66,"context_line":"        placement.context.RequestContext"},{"line_number":67,"context_line":"    :param action: string representing the action to be checked"},{"line_number":68,"context_line":"        this should be colon separated for clarity, i.e."},{"line_number":69,"context_line":"        ``placement:resource_providers:list``"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_dcb94c79","line":66,"updated":"2018-09-03 12:38:02.000000000","message":"can be reformatted in a followup","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"\"\"Verifies that the action is valid on the target in this context."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    :param context: instance of"},{"line_number":66,"context_line":"        placement.context.RequestContext"},{"line_number":67,"context_line":"    :param action: string representing the action to be checked"},{"line_number":68,"context_line":"        this should be colon separated for clarity, i.e."},{"line_number":69,"context_line":"        ``placement:resource_providers:list``"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_e0ab1dd3","line":66,"in_reply_to":"3f79a3b5_dcb94c79","updated":"2018-09-04 20:52:51.000000000","message":"Done","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        owner of the object e.g. ``{\u0027project_id\u0027: context.project_id}``."},{"line_number":73,"context_line":"    :param do_raise: if True (the default), raises PolicyNotAuthorized;"},{"line_number":74,"context_line":"        if False, returns False"},{"line_number":75,"context_line":"    :raises placement.exception.PolicyNotAuthorized: if"},{"line_number":76,"context_line":"        verification fails and do_raise is True."},{"line_number":77,"context_line":"    :returns: non-False value (not necessarily \"True\") if authorized, and the"},{"line_number":78,"context_line":"        exact value False if not authorized and do_raise is False."},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":"    init()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_9cabd41c","line":77,"range":{"start_line":75,"start_character":1,"end_line":77,"end_character":1},"updated":"2018-09-03 12:38:02.000000000","message":"can be reformatted in a followup","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        owner of the object e.g. ``{\u0027project_id\u0027: context.project_id}``."},{"line_number":73,"context_line":"    :param do_raise: if True (the default), raises PolicyNotAuthorized;"},{"line_number":74,"context_line":"        if False, returns False"},{"line_number":75,"context_line":"    :raises placement.exception.PolicyNotAuthorized: if"},{"line_number":76,"context_line":"        verification fails and do_raise is True."},{"line_number":77,"context_line":"    :returns: non-False value (not necessarily \"True\") if authorized, and the"},{"line_number":78,"context_line":"        exact value False if not authorized and do_raise is False."},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":"    init()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_c0ae21e6","line":77,"range":{"start_line":75,"start_character":1,"end_line":77,"end_character":1},"in_reply_to":"3f79a3b5_9cabd41c","updated":"2018-09-04 20:52:51.000000000","message":"Done","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"}],"placement/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from requests import adapters"},{"line_number":40,"context_line":"from wsgi_intercept import interceptor"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from compute import tenant_networks"},{"line_number":43,"context_line":"from placement import db_api as placement_db"},{"line_number":44,"context_line":"from  import wsgi_app"},{"line_number":45,"context_line":"from nova.api import wsgi"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_fc776807","line":42,"updated":"2018-09-03 12:38:02.000000000","message":"I know that this was already invalid but I think this rename made it even less understandable than before","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from requests import adapters"},{"line_number":40,"context_line":"from wsgi_intercept import interceptor"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from compute import tenant_networks"},{"line_number":43,"context_line":"from placement import db_api as placement_db"},{"line_number":44,"context_line":"from  import wsgi_app"},{"line_number":45,"context_line":"from nova.api import wsgi"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_20f4b5f0","line":42,"in_reply_to":"3f79a3b5_fc776807","updated":"2018-09-04 20:52:51.000000000","message":"This gets fixed up later.","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from compute import tenant_networks"},{"line_number":43,"context_line":"from placement import db_api as placement_db"},{"line_number":44,"context_line":"from  import wsgi_app"},{"line_number":45,"context_line":"from nova.api import wsgi"},{"line_number":46,"context_line":"from nova.compute import rpcapi as compute_rpcapi"},{"line_number":47,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_bc81f0c5","line":44,"updated":"2018-09-03 12:38:02.000000000","message":"this is a syntax error","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from compute import tenant_networks"},{"line_number":43,"context_line":"from placement import db_api as placement_db"},{"line_number":44,"context_line":"from  import wsgi_app"},{"line_number":45,"context_line":"from nova.api import wsgi"},{"line_number":46,"context_line":"from nova.compute import rpcapi as compute_rpcapi"},{"line_number":47,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_40d2115e","line":44,"in_reply_to":"3f79a3b5_bc81f0c5","updated":"2018-09-04 20:52:51.000000000","message":"ditto","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        #       nova.db.instance_get"},{"line_number":258,"context_line":"        #"},{"line_number":259,"context_line":"        # - mock at the api layer rather than the object layer, for example:"},{"line_number":260,"context_line":"        #       common.get_instance"},{"line_number":261,"context_line":"        #           vs."},{"line_number":262,"context_line":"        #       nova.objects.instance.Instance.get"},{"line_number":263,"context_line":"        #"},{"line_number":264,"context_line":"        # - mock code that requires the database but is otherwise tangential"},{"line_number":265,"context_line":"        #   to the code you\u0027re testing (for example: EventReporterStub)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_5c7a1cba","line":262,"range":{"start_line":260,"start_character":0,"end_line":262,"end_character":50},"updated":"2018-09-03 12:38:02.000000000","message":"This needs to be cleaned up in a followup","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        #       nova.db.instance_get"},{"line_number":258,"context_line":"        #"},{"line_number":259,"context_line":"        # - mock at the api layer rather than the object layer, for example:"},{"line_number":260,"context_line":"        #       common.get_instance"},{"line_number":261,"context_line":"        #           vs."},{"line_number":262,"context_line":"        #       nova.objects.instance.Instance.get"},{"line_number":263,"context_line":"        #"},{"line_number":264,"context_line":"        # - mock code that requires the database but is otherwise tangential"},{"line_number":265,"context_line":"        #   to the code you\u0027re testing (for example: EventReporterStub)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_c0c5c18f","line":262,"range":{"start_line":260,"start_character":0,"end_line":262,"end_character":50},"in_reply_to":"3f79a3b5_5c7a1cba","updated":"2018-09-04 20:52:51.000000000","message":"This goes away later.","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        #       nova.db.instance_get"},{"line_number":258,"context_line":"        #"},{"line_number":259,"context_line":"        # - mock at the api layer rather than the object layer, for example:"},{"line_number":260,"context_line":"        #       common.get_instance"},{"line_number":261,"context_line":"        #           vs."},{"line_number":262,"context_line":"        #       nova.objects.instance.Instance.get"},{"line_number":263,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_3db85ec6","line":260,"range":{"start_line":260,"start_character":16,"end_line":260,"end_character":35},"updated":"2018-09-04 20:52:51.000000000","message":"This change doesn\u0027t make sense and should probably be reverted so we don\u0027t accidentally miss it when we do the \"grep for \u0027nova\u0027 everywhere and fix by hand\" thing.\n\n[later] This whole thing goes away later in the series.","commit_id":"1dca56f58ec34fa7594b3c88279c097a845dd1c1"}],"setup.cfg":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f5be93a4871e50ffb377f939193a8f2aac26627","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    nova-xvpvncproxy \u003d nova.cmd.xvpvncproxy:main"},{"line_number":77,"context_line":"wsgi_scripts \u003d"},{"line_number":78,"context_line":"    nova-placement-api \u003d placement.wsgi:init_application"},{"line_number":79,"context_line":"    nova-api-wsgi \u003d compute.wsgi:init_application"},{"line_number":80,"context_line":"    nova-metadata-wsgi \u003d nova.api.metadata.wsgi:init_application"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"nova.ipv6_backend \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"3f79a3b5_6f3abccd","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":49},"updated":"2018-09-03 12:38:02.000000000","message":"need to be cleaned up in a followup","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fa3aa2b95f91bb678f9cee0dd9c96c2a50626a0f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    nova-xvpvncproxy \u003d nova.cmd.xvpvncproxy:main"},{"line_number":77,"context_line":"wsgi_scripts \u003d"},{"line_number":78,"context_line":"    nova-placement-api \u003d placement.wsgi:init_application"},{"line_number":79,"context_line":"    nova-api-wsgi \u003d compute.wsgi:init_application"},{"line_number":80,"context_line":"    nova-metadata-wsgi \u003d nova.api.metadata.wsgi:init_application"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"nova.ipv6_backend \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"3f79a3b5_c04aa125","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":49},"in_reply_to":"3f79a3b5_6f3abccd","updated":"2018-09-04 20:52:51.000000000","message":"that happened","commit_id":"60b6202d27bd1f988ba3df7ff7621ba54f126c5a"}]}
