)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce1f885e40a4bfd58adab10d1b042a5c64ea0f3a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"nova-net: Kill it"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Finish the job by removing all the now-unused modules. This also allows"},{"line_number":10,"context_line":"us to - wait for it - kill mox at long last. It\u0027s a great day in the"},{"line_number":11,"context_line":"parish."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia33ec2604b2fc2d3b6830b596cac669cc3ad6c96"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3fa7e38b_e5886d22","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":43},"updated":"2020-01-14 21:25:00.000000000","message":"We should mark this commit message as such\n\nFor that matter, we should be marking all of these as related to the nova-net removal blueprint as well","commit_id":"b123f052141bf8e0e9e5e8339822f97c3c5b9083"}],"nova/network/__init__.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce1f885e40a4bfd58adab10d1b042a5c64ea0f3a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_utils import importutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# TODO(stephenfin): Remove this layer of indirection"},{"line_number":21,"context_line":"def API():"},{"line_number":22,"context_line":"    cls \u003d importutils.import_class(\u0027nova.network.neutronv2.api.API\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_850899d8","line":19,"updated":"2020-01-14 21:25:00.000000000","message":"wouldn\u0027t this file still work as\n\n from nova.network.neutronv2 import api\n \n API \u003d api.API\n\n...with less magic? Is there some reason we need to defer the import of neutronv2.api to runtime?","commit_id":"b123f052141bf8e0e9e5e8339822f97c3c5b9083"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08dd444a31b5360692810db9571a4e2b99ed85d3","unresolved":false,"context_lines":[{"line_number":2636,"context_line":"                        \"option instead.\")"},{"line_number":2637,"context_line":"            return CONF.default_floating_pool"},{"line_number":2638,"context_line":""},{"line_number":2639,"context_line":"        return CONF.neutron.default_floating_pool"},{"line_number":2640,"context_line":""},{"line_number":2641,"context_line":"    def allocate_floating_ip(self, context, pool\u003dNone):"},{"line_number":2642,"context_line":"        \"\"\"Add a floating IP to a project from a pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_ba6280d8","side":"PARENT","line":2639,"updated":"2019-12-10 14:49:48.000000000","message":"I bet I didn\u0027t call this out in the reno","commit_id":"9c3f1df8eccd27eb7c95da6233e178e410f1f678"}],"nova/tests/unit/README.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce1f885e40a4bfd58adab10d1b042a5c64ea0f3a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"TBD"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Tests and Exceptions"},{"line_number":50,"context_line":"--------------------"},{"line_number":51,"context_line":"A properly written test asserts that particular behavior occurs. This can"},{"line_number":52,"context_line":"be a success condition or a failure condition, including an exception."},{"line_number":53,"context_line":"When asserting that a particular exception is raised, the most specific"},{"line_number":54,"context_line":"exception possible should be used."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In particular, testing for Exception being raised is almost always a"},{"line_number":57,"context_line":"mistake since it will match (almost) every exception, even those"},{"line_number":58,"context_line":"unrelated to the exception intended to be tested."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"This applies to catching exceptions manually with a try/except block,"},{"line_number":61,"context_line":"or using assertRaises()."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Example::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,"},{"line_number":66,"context_line":"                      elevated, instance_uuid)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"If a stubbed function/method needs a generic exception for testing"},{"line_number":69,"context_line":"purposes, test.TestingException is available."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Example::"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def stubbed_method(self):"},{"line_number":74,"context_line":"        raise test.TestingException()"},{"line_number":75,"context_line":"    self.stubs.Set(cls, \u0027inner_method\u0027, stubbed_method)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    obj \u003d cls()"},{"line_number":78,"context_line":"    self.assertRaises(test.TestingException, obj.outer_method)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Stubbing and Mocking"}],"source_content_type":"text/x-rst","patch_set":17,"id":"3fa7e38b_85af399c","side":"PARENT","line":78,"range":{"start_line":49,"start_character":0,"end_line":78,"end_character":62},"updated":"2020-01-14 21:25:00.000000000","message":"This is still useful information.\n\nBut it\u0027s... kind of duh, so \u003cshrug\u003e","commit_id":"828f3f269162f60c05f1517d193a3c65b99d3c36"}]}
