)]}'
{"neutron/db/migration/models/head.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a8eda2463310119dfa349b7f3dc2d625975ed146","unresolved":false,"context_lines":[{"line_number":42,"context_line":"from neutron.db.metering import metering_db  # noqa"},{"line_number":43,"context_line":"from neutron.db import model_base"},{"line_number":44,"context_line":"from neutron.db import models"},{"line_number":45,"context_line":"from neutron.db.models import tag  # noqa"},{"line_number":46,"context_line":"from neutron.db import models_v2  # noqa"},{"line_number":47,"context_line":"from neutron.db.port_security import models as ps_models  # noqa"},{"line_number":48,"context_line":"from neutron.db import portbindings_db  # noqa"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_7fff3a67","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":34},"updated":"2016-08-16 20:49:21.000000000","message":"I don\u0027t think it is needed anymore if you see line above it it is importing all the models already, Ihar did that change already.","commit_id":"2627d0b1921a590d253e24e4bd2b01674eae02f9"}],"neutron/db/models/tag.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"9dd2ea063cc4c4381dde99285d3527fd5c235eb4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron.db import model_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Tag(model_base.BASEV2):"},{"line_number":22,"context_line":"    standard_attr_id \u003d sa.Column("},{"line_number":23,"context_line":"        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),"},{"line_number":24,"context_line":"        sa.ForeignKey(model_base.StandardAttribute.id, ondelete\u003d\"CASCADE\"),"},{"line_number":25,"context_line":"        nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":26,"context_line":"    tag \u003d sa.Column(sa.String(60), nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":27,"context_line":"    standard_attr \u003d orm.relationship("},{"line_number":28,"context_line":"        \u0027StandardAttribute\u0027,"},{"line_number":29,"context_line":"        backref\u003dorm.backref(\u0027tags\u0027, lazy\u003d\u0027joined\u0027, viewonly\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_79f32174","line":29,"range":{"start_line":21,"start_character":0,"end_line":29,"end_character":66},"updated":"2016-08-20 00:25:15.000000000","message":"class Tag(model_base.BASEV2):\n    standard_attr_id \u003d sa.Column(\n        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),\n        sa.ForeignKey(\u0027standardattributes.id\u0027, ondelete\u003d\"CASCADE\"),\n        nullable\u003dFalse, primary_key\u003dTrue)\n    tag \u003d sa.Column(sa.String(60), nullable\u003dFalse, primary_key\u003dTrue)\n    standard_attr \u003d orm.relationship(\n        model_base.StandardAttribute,\n        backref\u003dorm.backref(\u0027tags\u0027, lazy\u003d\u0027joined\u0027, viewonly\u003dTrue))","commit_id":"09fdab740c078bd30187b7bb8f66d0840d23de50"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"983b93527d2719ba8db5124b662376d7a06977b7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron.db import model_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Tag(model_base.BASEV2):"},{"line_number":22,"context_line":"    standard_attr_id \u003d sa.Column("},{"line_number":23,"context_line":"        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),"},{"line_number":24,"context_line":"        sa.ForeignKey(model_base.StandardAttribute.id, ondelete\u003d\"CASCADE\"),"},{"line_number":25,"context_line":"        nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":26,"context_line":"    tag \u003d sa.Column(sa.String(60), nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":27,"context_line":"    standard_attr \u003d orm.relationship("},{"line_number":28,"context_line":"        \u0027StandardAttribute\u0027,"},{"line_number":29,"context_line":"        backref\u003dorm.backref(\u0027tags\u0027, lazy\u003d\u0027joined\u0027, viewonly\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_99953de6","line":29,"range":{"start_line":21,"start_character":0,"end_line":29,"end_character":66},"in_reply_to":"1ac06dbe_79f32174","updated":"2016-08-20 00:27:03.000000000","message":"I am not sure if that\u0027s same thing as above, i see orm reference this way as well, just wanted to make sure its correct, so may be a question for reviewers if both are same things, one the way patch is other way comment i have above.","commit_id":"09fdab740c078bd30187b7bb8f66d0840d23de50"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"03a7c7a6bc42137aea2d6df6154831172c89d214","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class Tag(model_base.BASEV2):"},{"line_number":22,"context_line":"    standard_attr_id \u003d sa.Column("},{"line_number":23,"context_line":"        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),"},{"line_number":24,"context_line":"        sa.ForeignKey(model_base.StandardAttribute.id, ondelete\u003d\"CASCADE\"),"},{"line_number":25,"context_line":"        nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":26,"context_line":"    tag \u003d sa.Column(sa.String(60), nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":27,"context_line":"    standard_attr \u003d orm.relationship("}],"source_content_type":"text/x-python","patch_set":26,"id":"5a8bc5a2_51ab49d6","line":24,"range":{"start_line":24,"start_character":33,"end_line":24,"end_character":50},"updated":"2016-09-23 14:16:41.000000000","message":"StandardAttribute is not longer in model_base module[1] which is causing the failures[2]\n\n[1] https://github.com/openstack/neutron/commit/bdd7298284a2472e3fc4eb971a3b290f13be72c4\n[2] http://logs.openstack.org/36/355536/26/check/gate-neutron-python27-ubuntu-xenial/d9ce4a1/console.html#_2016-09-23_04_33_20_081198","commit_id":"d38cd7118cb229c4f377d8c7a4cf2123e5cb7627"},{"author":{"_account_id":22800,"name":"Joseph Pasque","email":"jp606j@att.com","username":"jp606j"},"change_message_id":"63095b056e75e32318ed1fc6e417c5a51379af0a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import sqlalchemy as sa"},{"line_number":16,"context_line":"from sqlalchemy import orm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.db import model_base"},{"line_number":19,"context_line":"from neutron.db import standard_attr"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_b86f5491","line":18,"updated":"2016-09-28 18:18:48.000000000","message":"Should this be neutron_lib.db instead of neutron.db? You can see in tag_db.py that the original import is neutron_lib.db. Also, should the import be grouped with the sqlalchemy imports? See https://review.openstack.org/#/c/356144/11/neutron/db/models/plugins/ml2/vlanallocation.py","commit_id":"ca2a28172fd93772cba1120990446e28683a4352"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c6f25fd63378e59345e496a6b4c2599cc1dbcc6a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import sqlalchemy as sa"},{"line_number":16,"context_line":"from sqlalchemy import orm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.db import model_base"},{"line_number":19,"context_line":"from neutron.db import standard_attr"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_fb40afa7","line":18,"in_reply_to":"3a98d1f4_b86f5491","updated":"2016-09-29 20:10:46.000000000","message":"+1","commit_id":"ca2a28172fd93772cba1120990446e28683a4352"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"4f4e931288278c0f27c636923348f5ae8329e50d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import sqlalchemy as sa"},{"line_number":16,"context_line":"from sqlalchemy import orm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.db import model_base"},{"line_number":19,"context_line":"from neutron.db import standard_attr"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_67efa0b0","line":18,"in_reply_to":"3a98d1f4_fb40afa7","updated":"2016-09-29 22:03:35.000000000","message":"+1","commit_id":"ca2a28172fd93772cba1120990446e28683a4352"}],"neutron/db/tag_db.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a8eda2463310119dfa349b7f3dc2d625975ed146","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3ac371cc_1f1606a7","updated":"2016-08-16 20:49:21.000000000","message":"you need to add deprecation warnings in this\n\n# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE\n_OLD_REF \u003d sys.modules[__name__]\nsys.modules[__name__] \u003d _deprecate._DeprecateSubset(globals(),\n                            tag_models)\n# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE","commit_id":"2627d0b1921a590d253e24e4bd2b01674eae02f9"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a8eda2463310119dfa349b7f3dc2d625975ed146","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from sqlalchemy.orm import aliased"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.db.models.tag import Tag"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def _get_tag_list(tag_strings):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_bf553251","line":17,"range":{"start_line":17,"start_character":34,"end_line":17,"end_character":37},"updated":"2016-08-16 20:49:21.000000000","message":"consider rephrasing this \nfrom neutron.db.models import tag as tag_models\n\nimporting classes is\u0027nt recommended.","commit_id":"2627d0b1921a590d253e24e4bd2b01674eae02f9"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9cdef8e68531d523f35c5815c6195de940f15620","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"},{"line_number":96,"context_line":"_OLD_REF \u003d sys.modules[__name__]"},{"line_number":97,"context_line":"sys.modules[__name__] \u003d _deprecate._DeprecateSubset(globals(), tag_models)"},{"line_number":98,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_f2ac9437","line":97,"updated":"2016-08-31 12:40:45.000000000","message":"Needs updating now that https://review.openstack.org/352601 has merged. Please follow the deprecation examples from that patch.","commit_id":"477baead14f36d1f63d3b7a2f8635a60203d68fc"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"4f4e931288278c0f27c636923348f5ae8329e50d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        query \u003d query.filter(~model.standard_attr_id.in_(subq))"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    return query"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"_deprecate._MovedGlobals()"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_677400fd","line":93,"updated":"2016-09-29 22:03:35.000000000","message":"nit: extra line","commit_id":"ca2a28172fd93772cba1120990446e28683a4352"}],"neutron/services/tag/tag_plugin.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"096a7c98662ca99ed366da9a74c76abb67dee527","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.db import common_db_mixin"},{"line_number":25,"context_line":"from neutron.db.models import tag as tag_model"},{"line_number":26,"context_line":"from neutron.db import models_v2"},{"line_number":27,"context_line":"from neutron.db import tag_db as tag_methods"},{"line_number":28,"context_line":"from neutron.extensions import tag as tag_ext"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_1ca791bd","line":27,"range":{"start_line":27,"start_character":33,"end_line":27,"end_character":44},"updated":"2016-10-03 19:21:00.000000000","message":"nit: s/tag_methods/tag_functions/\n\nUsually methods are associated with classes","commit_id":"b6a296edf6f6ae1c5b07ccafd98c000ebf1bf997"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"993c6a6f56457d7aec6d095e63ddf5304994b5b5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.db import common_db_mixin"},{"line_number":25,"context_line":"from neutron.db.models import tag as tag_model"},{"line_number":26,"context_line":"from neutron.db import models_v2"},{"line_number":27,"context_line":"from neutron.db import tag_db as tag_methods"},{"line_number":28,"context_line":"from neutron.extensions import tag as tag_ext"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_12a4d505","line":27,"range":{"start_line":27,"start_character":33,"end_line":27,"end_character":44},"in_reply_to":"3a98d1f4_02856a58","updated":"2016-10-03 21:32:07.000000000","message":"tag_db is being used as a loop variable in this file.\nwhen import as tag_db is retained, i get following error\n./neutron/services/tag/tag_plugin.py:78:17: F402 import \u0027tag_db\u0027 from line 27 shadowed by loop variable\n            for tag_db in res.standard_attr.tags:\nTherefore this import was done this way","commit_id":"b6a296edf6f6ae1c5b07ccafd98c000ebf1bf997"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c6965ba57ee5dc11c743ad2ffe2fe1ee86ab0c8b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.db import common_db_mixin"},{"line_number":25,"context_line":"from neutron.db.models import tag as tag_model"},{"line_number":26,"context_line":"from neutron.db import models_v2"},{"line_number":27,"context_line":"from neutron.db import tag_db as tag_methods"},{"line_number":28,"context_line":"from neutron.extensions import tag as tag_ext"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_6393865b","line":27,"range":{"start_line":27,"start_character":33,"end_line":27,"end_character":44},"in_reply_to":"3a98d1f4_12a4d505","updated":"2016-10-05 02:55:54.000000000","message":"I am okay to alias neutorn.db.tag_db to a different name.\n\"tag_db_funcs\" or \"tag_functions\" sounds good to me, but the current one is okay.","commit_id":"b6a296edf6f6ae1c5b07ccafd98c000ebf1bf997"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"fe23dfc6dd0063cf0897805931287ea6c843ed3c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.db import common_db_mixin"},{"line_number":25,"context_line":"from neutron.db.models import tag as tag_model"},{"line_number":26,"context_line":"from neutron.db import models_v2"},{"line_number":27,"context_line":"from neutron.db import tag_db as tag_methods"},{"line_number":28,"context_line":"from neutron.extensions import tag as tag_ext"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_02856a58","line":27,"range":{"start_line":27,"start_character":33,"end_line":27,"end_character":44},"in_reply_to":"3a98d1f4_1ca791bd","updated":"2016-10-03 20:15:09.000000000","message":"why can\u0027t you leave it is as tag_db ?, tag_methods looks bit weird, but I am happy with what reviewers suggest,","commit_id":"b6a296edf6f6ae1c5b07ccafd98c000ebf1bf997"}],"neutron/tests/unit/extensions/test_timestamp_core.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a8eda2463310119dfa349b7f3dc2d625975ed146","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron import context"},{"line_number":21,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":22,"context_line":"from neutron.db.models import tag as tag_module"},{"line_number":23,"context_line":"from neutron.db import models_v2"},{"line_number":24,"context_line":"from neutron.extensions import timestamp_core as timestamp"},{"line_number":25,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_1fcba61f","line":22,"range":{"start_line":22,"start_character":37,"end_line":22,"end_character":47},"updated":"2016-08-16 20:49:21.000000000","message":"tag_models would make more sense","commit_id":"2627d0b1921a590d253e24e4bd2b01674eae02f9"}]}
