)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69e0b5e78efcabe3078d2d8a79d0dca63bf9731f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nova/db/__init__.py was importing * from nova.db.api. This meant that"},{"line_number":10,"context_line":"any time any code anywhere within the nova.db package was imported"},{"line_number":11,"context_line":"then nova.db.api was too, leading to a cascade of imports that may"},{"line_number":12,"context_line":"not have been desired. Also, in general, code in __init__.py is a pain."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Therefore, this change adjusts code that so that either:"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"5f7c97a3_cd73f64d","line":12,"range":{"start_line":12,"start_character":23,"end_line":12,"end_character":71},"updated":"2018-07-02 13:12:37.000000000","message":"It\u0027s dunderful, isn\u0027t it? :)","commit_id":"0e62b930978558d4707dcb3e37a95c53df45dd9a"}],"nova/api/openstack/compute/schemas/flavor_manage.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5287c20fcee39a7816c0e7b13f09de894b8a61cf","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.validation import parameter_types"},{"line_number":18,"context_line":"from nova.db import api as db"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"create \u003d {"},{"line_number":21,"context_line":"    \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_2493135e","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":29},"updated":"2018-07-10 08:29:40.000000000","message":"this remind me to remove this dependency and use the raw values as much as possible in schema instead of referring to other code which can always leads to backward incompatible change in API. i will fix this.","commit_id":"c29a0012ddabc9e756d050b0745aaeed43cd598f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9830d80173c35581dbdedf4458ac36f9a1372012","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.validation import parameter_types"},{"line_number":18,"context_line":"from nova.db import api as db"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"create \u003d {"},{"line_number":21,"context_line":"    \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_5fa85989","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":29},"in_reply_to":"5f7c97a3_2493135e","updated":"2018-07-10 09:36:58.000000000","message":"https://review.openstack.org/#/c/581288/","commit_id":"c29a0012ddabc9e756d050b0745aaeed43cd598f"}],"nova/hacking/checks.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"664f416a93adf1138ee95745ff4356a33a140a53","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    N307"},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if \"nova/virt\" in filename and not filename.endswith(\"fake.py\"):"},{"line_number":157,"context_line":"        if logical_line.startswith(\"from nova.db import api as db\"):"},{"line_number":158,"context_line":"            yield (0, \"N307: nova.db import not allowed in nova/virt/*\")"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_586406b3","line":157,"range":{"start_line":157,"start_character":35,"end_line":157,"end_character":66},"updated":"2018-06-26 09:04:04.000000000","message":"I overlooked this.\nIt should be just \"from nova.db import api\".\nBecause some cases (e.g. \"from nova.db import api as database_api\")  are not caught.","commit_id":"d460dcb698a06e0c042610c634a48bfa323dcdd0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"24ccdf0989c819437e3df64cfee06219f368eb18","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    N307"},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if \"nova/virt\" in filename and not filename.endswith(\"fake.py\"):"},{"line_number":157,"context_line":"        if logical_line.startswith(\"from nova.db import api as db\"):"},{"line_number":158,"context_line":"            yield (0, \"N307: nova.db import not allowed in nova/virt/*\")"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_8b30ea9f","line":157,"range":{"start_line":157,"start_character":35,"end_line":157,"end_character":66},"in_reply_to":"5f7c97a3_586406b3","updated":"2018-06-27 09:49:23.000000000","message":"Done","commit_id":"d460dcb698a06e0c042610c634a48bfa323dcdd0"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"664f416a93adf1138ee95745ff4356a33a140a53","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if \"nova/virt\" in filename and not filename.endswith(\"fake.py\"):"},{"line_number":157,"context_line":"        if logical_line.startswith(\"from nova.db import api as db\"):"},{"line_number":158,"context_line":"            yield (0, \"N307: nova.db import not allowed in nova/virt/*\")"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def no_db_session_in_public_api(logical_line, filename):"}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_58f966c2","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":36},"updated":"2018-06-26 09:04:04.000000000","message":"nova.db.api","commit_id":"d460dcb698a06e0c042610c634a48bfa323dcdd0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"24ccdf0989c819437e3df64cfee06219f368eb18","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if \"nova/virt\" in filename and not filename.endswith(\"fake.py\"):"},{"line_number":157,"context_line":"        if logical_line.startswith(\"from nova.db import api as db\"):"},{"line_number":158,"context_line":"            yield (0, \"N307: nova.db import not allowed in nova/virt/*\")"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def no_db_session_in_public_api(logical_line, filename):"}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_2b23d659","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":36},"in_reply_to":"5f7c97a3_58f966c2","updated":"2018-06-27 09:49:23.000000000","message":"Done","commit_id":"d460dcb698a06e0c042610c634a48bfa323dcdd0"}],"nova/tests/unit/cmd/test_cmd_db_blocks.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1dd179bc3aff99b948b764be6147133683cae6b6","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"@contextlib.contextmanager"},{"line_number":27,"context_line":"def restore_db():"},{"line_number":28,"context_line":"    orig \u003d db.api.IMPL"},{"line_number":29,"context_line":"    try:"},{"line_number":30,"context_line":"        yield"},{"line_number":31,"context_line":"    finally:"},{"line_number":32,"context_line":"        db.api.IMPL \u003d orig"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ComputeMainTest(test.NoDBTestCase):"},{"line_number":36,"context_line":"    @mock.patch(\u0027nova.conductor.api.API.wait_until_ready\u0027)"},{"line_number":37,"context_line":"    @mock.patch(\u0027oslo_reports.guru_meditation_report\u0027)"},{"line_number":38,"context_line":"    def _call_main(self, mod, gmr, cond):"},{"line_number":39,"context_line":"        @mock.patch.object(mod, \u0027config\u0027)"},{"line_number":40,"context_line":"        @mock.patch.object(mod, \u0027service\u0027)"},{"line_number":41,"context_line":"        def run_main(serv, conf):"},{"line_number":42,"context_line":"            mod.main()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        run_main()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_compute_main_blocks_db(self):"},{"line_number":47,"context_line":"        with restore_db():"},{"line_number":48,"context_line":"            self._call_main(compute)"},{"line_number":49,"context_line":"            self.assertRaises(exception.DBNotAllowed,"},{"line_number":50,"context_line":"                              db.api.instance_get, 1, 2)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_network_main_blocks_db(self):"},{"line_number":53,"context_line":"        self.flags(enable\u003dTrue, group\u003d\u0027cells\u0027)"},{"line_number":54,"context_line":"        with restore_db():"},{"line_number":55,"context_line":"            self._call_main(network)"},{"line_number":56,"context_line":"            self.assertRaises(exception.DBNotAllowed,"},{"line_number":57,"context_line":"                              db.api.instance_get, 1, 2)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_3308367e","side":"PARENT","line":57,"range":{"start_line":28,"start_character":0,"end_line":57,"end_character":56},"updated":"2018-07-10 12:57:19.000000000","message":"interesting","commit_id":"c0350da4a1607d7aa113caceaefb5d29303c7eed"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"293206da76043c7bb329b3d62fb1ba91c93e4214","unresolved":false,"context_lines":[{"line_number":7365,"context_line":""},{"line_number":7366,"context_line":"        # creating mocks"},{"line_number":7367,"context_line":"        with test.nested("},{"line_number":7368,"context_line":"            mock.patch.object(self.compute.db.sqlalchemy.api,"},{"line_number":7369,"context_line":"                              \u0027instance_get_all_by_filters\u0027,"},{"line_number":7370,"context_line":"                              return_value\u003dinstances),"},{"line_number":7371,"context_line":"            mock.patch.object(objects.Instance, \u0027save\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_cbd3935f","side":"PARENT","line":7368,"updated":"2018-02-11 22:12:59.000000000","message":"Of all this changes, this is the only one that makes me scratch my head. It\u0027s not clear why this test was structured like this in the first place. Ideas?","commit_id":"c2639484ed825debe8dfbd610c58374ffecaa0a0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1dd179bc3aff99b948b764be6147133683cae6b6","unresolved":false,"context_lines":[{"line_number":7427,"context_line":""},{"line_number":7428,"context_line":"        # creating mocks"},{"line_number":7429,"context_line":"        with test.nested("},{"line_number":7430,"context_line":"            mock.patch.object(db, \u0027instance_get_all_by_filters\u0027,"},{"line_number":7431,"context_line":"                              return_value\u003dinstances),"},{"line_number":7432,"context_line":"            mock.patch.object(objects.Instance, \u0027save\u0027),"},{"line_number":7433,"context_line":"        ) as ("}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_d32302ba","line":7430,"range":{"start_line":7430,"start_character":30,"end_line":7430,"end_character":32},"updated":"2018-07-10 12:57:19.000000000","message":"Was this not working as it was before?","commit_id":"c3f24af60ce6d6eba97b79a84f4d29771bf83f22"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"8d944e6b7ee22b8f1acd50c14d8b81ec76f08bfe","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"        self.assertEqual(1, len(security_groups))"},{"line_number":1788,"context_line":"        self.assertEqual(\"default\", security_groups[0][\"name\"])"},{"line_number":1789,"context_line":""},{"line_number":1790,"context_line":"    @mock.patch.object(nova.db.sqlalchemy.api, \u0027_security_group_get_by_names\u0027)"},{"line_number":1791,"context_line":"    def test_security_group_ensure_default_called_concurrently(self, sg_mock):"},{"line_number":1792,"context_line":"        # make sure NotFound is always raised here to trick Nova to insert the"},{"line_number":1793,"context_line":"        # duplicate security group entry"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_3044c846","line":1790,"range":{"start_line":1790,"start_character":23,"end_line":1790,"end_character":45},"updated":"2018-05-15 07:23:40.000000000","message":"nit: It can be \u0027sqlalchemy_api\u0027.","commit_id":"48c40a5d68e6f5f33627de4c4c7d1720d8ccf682"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"8d944e6b7ee22b8f1acd50c14d8b81ec76f08bfe","unresolved":false,"context_lines":[{"line_number":1876,"context_line":"        instance \u003d self.create_instance_with_args()"},{"line_number":1877,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(instance[\u0027uuid\u0027]))"},{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"    @mock.patch.object(nova.db.sqlalchemy.api, \u0027security_group_ensure_default\u0027)"},{"line_number":1880,"context_line":"    def test_instance_create_with_deadlock_retry(self, mock_sg):"},{"line_number":1881,"context_line":"        mock_sg.side_effect \u003d [db_exc.DBDeadlock(), None]"},{"line_number":1882,"context_line":"        instance \u003d self.create_instance_with_args()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_b071b8aa","line":1879,"range":{"start_line":1879,"start_character":23,"end_line":1879,"end_character":45},"updated":"2018-05-15 07:23:40.000000000","message":"ditto","commit_id":"48c40a5d68e6f5f33627de4c4c7d1720d8ccf682"}]}
