)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"4e5e5c807bfe0e65aa474ce59f71b9f61b89ad13","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactoring Agent DB model"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch set is for breaking the circular dependency between"},{"line_number":10,"context_line":"Agent/AgentVersionedObject. The goal of this is to implement"},{"line_number":11,"context_line":"Agent OVO"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dada55a8_14ee478b","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":26},"updated":"2016-07-18 12:42:40.000000000","message":"Please, add a link to the patch set that introduces the circular dependency.","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"33104c4601b6c292fd6869cca36bdfd32d41167d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactoring Agent DB model"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch set is for breaking the circular dependency between"},{"line_number":10,"context_line":"Agent/AgentVersionedObject. The goal of this is to implement"},{"line_number":11,"context_line":"Agent OVO"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dada55a8_51714d75","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":26},"in_reply_to":"dada55a8_14ee478b","updated":"2016-07-21 05:35:13.000000000","message":"Done","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"4c42d9bf857bbcfb812a5b464dceac8ccefb7080","unresolved":false,"context_lines":[{"line_number":11,"context_line":"See:https://review.openstack.org/#/c/297887/ for details."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"},{"line_number":14,"context_line":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"9ad45d7e_55c4bd5d","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":67},"updated":"2016-08-10 16:34:50.000000000","message":"Partial-Bug: #1597913","commit_id":"0a66093bd35feb2fad33c92634e3a6c907c7f494"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"f7767b03c12e7937e682437929a3ef4317979b65","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch set is for breaking the circular dependency between"},{"line_number":10,"context_line":"Agent/AgentVersionedObject."},{"line_number":11,"context_line":"See:https://review.openstack.org/#/c/297887/ for details."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"},{"line_number":14,"context_line":"Partial-Bug: #1597913"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"fa7ab95a_733795b0","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":44},"updated":"2016-08-26 15:13:20.000000000","message":"nit: Given that you have the number of the bug, I don\u0027t think that this link is necessary.","commit_id":"8e4ecb18698252ac9d0f72f7ad50d7c64f24ad8c"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"a39241c6152fb8dd0aa619c3b9bd2cd7eb24b1b3","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"},{"line_number":14,"context_line":"Partial-Bug: #1597913"},{"line_number":15,"context_line":"Co-Authored-By: Victor Morales \u003cvictor.morales@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":45,"id":"1a95cdbc_1a3fda24","line":15,"updated":"2016-10-07 10:31:18.000000000","message":"Consider adding Sindhu as a co-author for the agents_db.py change","commit_id":"bbef1f442c0d0875055a72a4dbd90f80886bf4cd"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"450f3bcab45d9007ef0a5d00749d6341536bd1f2","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7be4ce2513e49e6da46a7bdffb8538613f0be7c7"},{"line_number":14,"context_line":"Partial-Bug: #1597913"},{"line_number":15,"context_line":"Co-Authored-By: Victor Morales \u003cvictor.morales@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":45,"id":"1a95cdbc_58e320a4","line":15,"in_reply_to":"1a95cdbc_1a3fda24","updated":"2016-10-07 14:50:15.000000000","message":"Done","commit_id":"bbef1f442c0d0875055a72a4dbd90f80886bf4cd"}],"neutron/conf/agent/database/agent_db.py":[{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"a39241c6152fb8dd0aa619c3b9bd2cd7eb24b1b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"1a95cdbc_bae506dd","updated":"2016-10-07 10:31:18.000000000","message":"Let\u0027s name this agents_db.py so as not to conflict too much with https://review.openstack.org/#/c/344877","commit_id":"bbef1f442c0d0875055a72a4dbd90f80886bf4cd"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"450f3bcab45d9007ef0a5d00749d6341536bd1f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"1a95cdbc_98ef6886","in_reply_to":"1a95cdbc_bae506dd","updated":"2016-10-07 14:50:15.000000000","message":"Done","commit_id":"bbef1f442c0d0875055a72a4dbd90f80886bf4cd"}],"neutron/db/agent/models.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"ae8dfa422e4ff1d4c487ccf1a0fa5bbce07d85c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bacf61ea_492968e5","updated":"2016-08-02 11:02:37.000000000","message":"Due to discussion in [1] please move this into neutron/db/models/agent.py\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2016-July/100276.htm","commit_id":"478d9071e8686020b0f95624d0ae58cbee937a08"}],"neutron/db/agent_model.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"9edf55d698aa8783bdd691f4cf1dbff4d97b0234","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"9ad45d7e_10a02a90","updated":"2016-08-08 09:47:39.000000000","message":"neutron/db/models/agent.py","commit_id":"120648bcbac322307d58c7f76631a199da7c906b"}],"neutron/db/agents_db.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"6f6baafc1b40c68283395ccfda26a270b9ac9c9e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# version_manager callback"},{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Agent \u003d agt.Agent"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_8f9a6e12","line":82,"updated":"2016-06-30 16:17:06.000000000","message":"this needs to use debtcollector.moves.moved_class to warn others about this move so this can eventually be removed.","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7916ad24b734b5ff70de4ec6838231799a883fc9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# version_manager callback"},{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Agent \u003d agt.Agent"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_bcc15482","line":82,"in_reply_to":"3aaa91ec_8f9a6e12","updated":"2016-06-30 22:18:23.000000000","message":"Here is instruction how to use debtcollector: http://docs.openstack.org/developer/debtcollector/api.html#debtcollector.moves.moved_class","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"6819d1c2535b4ff6f6321a04798a1517a48074fb","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# version_manager callback"},{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Agent \u003d agt.Agent"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_ff8287c7","line":82,"in_reply_to":"3aaa91ec_bcc15482","updated":"2016-07-06 16:06:27.000000000","message":"moved_class will show a sqlalchemy error.  Don\u0027t know of a way of getting around it yet:\nhttps://gist.github.com/tonytan4ever/0bfb61936a23bd1e46fb1b4b6eb68953","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"4e5e5c807bfe0e65aa474ce59f71b9f61b89ad13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dada55a8_cf4b7658","updated":"2016-07-18 12:42:40.000000000","message":"I suggest that since we are introducing a new \u0027neutron.db.agent\u0027 package, all of the \u0027neutron.db.agents_db\u0027 content should be moved to that package (e.g. \u0027models\u0027 and \u0027mixins\u0027 or \u0027plugin\u0027 modules).","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"33104c4601b6c292fd6869cca36bdfd32d41167d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dada55a8_76972748","in_reply_to":"dada55a8_cf4b7658","updated":"2016-07-21 05:35:13.000000000","message":"I will address this in another patch. Right now I want this patch to be focused on agent db model refactoring","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a59fcfcf8a45d520d0e6f08b547590401deae600","unresolved":false,"context_lines":[{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"new_model \u003d \u0027neutron.db.agent.models.Agent\u0027"},{"line_number":83,"context_line":"LOG.warning(_LW(\"You are using the deprecated Agent model: \""},{"line_number":84,"context_line":"                \"%(deprecated)s.Use the recommended model %(new)s instead.\"),"},{"line_number":85,"context_line":"            {\u0027deprecated\u0027: \u0027%s.Agent\u0027 % __name__,"},{"line_number":86,"context_line":"             \u0027new\u0027: new_model})"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_f93bac9a","line":83,"updated":"2016-07-18 12:02:51.000000000","message":"This will trigger the log warning irrespective if the class is used.","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"33104c4601b6c292fd6869cca36bdfd32d41167d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"new_model \u003d \u0027neutron.db.agent.models.Agent\u0027"},{"line_number":83,"context_line":"LOG.warning(_LW(\"You are using the deprecated Agent model: \""},{"line_number":84,"context_line":"                \"%(deprecated)s.Use the recommended model %(new)s instead.\"),"},{"line_number":85,"context_line":"            {\u0027deprecated\u0027: \u0027%s.Agent\u0027 % __name__,"},{"line_number":86,"context_line":"             \u0027new\u0027: new_model})"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_310db9e8","line":83,"in_reply_to":"dada55a8_14b647dc","updated":"2016-07-21 05:35:13.000000000","message":"Done, but used a variation of moved_class from debtcollector. This is just a temporary fix though, as soon as the following lbaas patch is merged, this awkward fix will go away.","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"4e5e5c807bfe0e65aa474ce59f71b9f61b89ad13","unresolved":false,"context_lines":[{"line_number":80,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"new_model \u003d \u0027neutron.db.agent.models.Agent\u0027"},{"line_number":83,"context_line":"LOG.warning(_LW(\"You are using the deprecated Agent model: \""},{"line_number":84,"context_line":"                \"%(deprecated)s.Use the recommended model %(new)s instead.\"),"},{"line_number":85,"context_line":"            {\u0027deprecated\u0027: \u0027%s.Agent\u0027 % __name__,"},{"line_number":86,"context_line":"             \u0027new\u0027: new_model})"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_14b647dc","line":83,"in_reply_to":"dada55a8_f93bac9a","updated":"2016-07-18 12:42:40.000000000","message":"+1 @Ihar","commit_id":"71a82990790ea5841942aa23d310bac7792f353e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"d35e1893ea024a8ceb36d6e75ae15a924bacf7d8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        prefix, message\u003dmessage, version\u003dversion,"},{"line_number":101,"context_line":"        removal_version\u003dremoval_version)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def decorator(f):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        @six.wraps(f, assigned\u003d_utils.get_assigned(f))"},{"line_number":106,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":107,"context_line":"            _utils.deprecation(out_message, stacklevel\u003dstacklevel,"},{"line_number":108,"context_line":"                               category\u003dcategory)"},{"line_number":109,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        return wrapper"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    return new_class"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bacf61ea_c147d349","line":111,"range":{"start_line":103,"start_character":4,"end_line":111,"end_character":22},"updated":"2016-08-02 17:55:31.000000000","message":"I don\u0027t see use of this so you can remove this it is useless code at the moment","commit_id":"478d9071e8686020b0f95624d0ae58cbee937a08"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c2d4d03e3dbae9029e39792685436c82bf024afd","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        prefix, message\u003dmessage, version\u003dversion,"},{"line_number":101,"context_line":"        removal_version\u003dremoval_version)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def decorator(f):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        @six.wraps(f, assigned\u003d_utils.get_assigned(f))"},{"line_number":106,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":107,"context_line":"            _utils.deprecation(out_message, stacklevel\u003dstacklevel,"},{"line_number":108,"context_line":"                               category\u003dcategory)"},{"line_number":109,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        return wrapper"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    return new_class"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bacf61ea_44481188","line":111,"range":{"start_line":103,"start_character":4,"end_line":111,"end_character":22},"in_reply_to":"bacf61ea_c147d349","updated":"2016-08-02 18:37:11.000000000","message":"it is incomplete actually won\u0027t do warning because decorator has logic for that and it is not being called.","commit_id":"478d9071e8686020b0f95624d0ae58cbee937a08"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"2885e09a30217178850a3fbede4c923afd9c0cd8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"DOWNTIME_VERSIONS_RATIO \u003d 2"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"# NOTE(tonytan4ever): rewrite moved_class from debtcollector"},{"line_number":86,"context_line":"# temporarily because we can\u0027t return old class in this case"},{"line_number":87,"context_line":"# as it will trigger an sqlalchemy error."},{"line_number":88,"context_line":"def moved_class(new_class, old_class_name, old_module_name,"},{"line_number":89,"context_line":"                message\u003dNone, version\u003dNone, removal_version\u003dNone,"},{"line_number":90,"context_line":"                stacklevel\u003d3, category\u003dNone):"},{"line_number":91,"context_line":"    if not inspect.isclass(new_class):"},{"line_number":92,"context_line":"        _qual, type_name \u003d _utils.get_qualified_name(type(new_class))"},{"line_number":93,"context_line":"        raise TypeError(\"Unexpected class type \u0027%s\u0027 (expected\""},{"line_number":94,"context_line":"                        \" class type only)\" % type_name)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    old_name \u003d \".\".join((old_module_name, old_class_name))"},{"line_number":97,"context_line":"    new_name \u003d _utils.get_class_name(new_class)"},{"line_number":98,"context_line":"    prefix \u003d \"Class \u0027%s\u0027 has moved to \u0027%s\u0027\" % (old_name, new_name)"},{"line_number":99,"context_line":"    out_message \u003d _utils.generate_message("},{"line_number":100,"context_line":"        prefix, message\u003dmessage, version\u003dversion,"},{"line_number":101,"context_line":"        removal_version\u003dremoval_version)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def decorator(f):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        @six.wraps(f, assigned\u003d_utils.get_assigned(f))"},{"line_number":106,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":107,"context_line":"            _utils.deprecation(out_message, stacklevel\u003dstacklevel,"},{"line_number":108,"context_line":"                               category\u003dcategory)"},{"line_number":109,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        return wrapper"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    return new_class"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Agent \u003d moved_class(agt.Agent, \u0027Agent\u0027, __name__)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_894f3533","line":113,"range":{"start_line":85,"start_character":0,"end_line":113,"end_character":20},"updated":"2016-07-26 15:10:44.000000000","message":"Given that this solution can be used by other function it would be nice to place it maybe in neutron.common.utils","commit_id":"478d9071e8686020b0f95624d0ae58cbee937a08"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"1c3901ebae77ebbbe1075c38fd39065d3b2213d8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"class Agent(object):"},{"line_number":87,"context_line":"    pass"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"orm.mapper(Agent, agt.Agent.__table__)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_ece8ce18","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":38},"updated":"2016-08-03 20:08:48.000000000","message":"Could you add # NOTE with the reason about doing this? It can be forgotten, why this is necessary.\n\nCorrect me, if I\u0027m wrong, but this change won\u0027t give a message, that Agent class is deprecated. Are you planning to add this?","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"112da2d6947394938c38b6a9735d3dbe53b46f7f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"class Agent(object):"},{"line_number":87,"context_line":"    pass"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"orm.mapper(Agent, agt.Agent.__table__)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c7361550","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":38},"in_reply_to":"bacf61ea_ece8ce18","updated":"2016-08-05 16:00:11.000000000","message":"Done","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"184017a99c5e531c57174e0352a1705308dd13de","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from neutron.common import _deprecate"},{"line_number":39,"context_line":"from neutron.common import constants as n_const"},{"line_number":40,"context_line":"from neutron import context"},{"line_number":41,"context_line":"from neutron.db.models import agent as agt"},{"line_number":42,"context_line":"from neutron.db import api as db_api"},{"line_number":43,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":44,"context_line":"from neutron.extensions import availability_zone as az_ext"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_08ca2c4e","line":41,"range":{"start_line":41,"start_character":39,"end_line":41,"end_character":42},"updated":"2016-08-19 05:20:03.000000000","message":"better use agent_model to keep it unique and self explanatory. if you get to respin","commit_id":"55a620b34ee251b64c5c835cd85b4853c6ecea4e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c6d0e6719504f1b2524b10119cd7e1442f3eb120","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"},{"line_number":507,"context_line":"_OLD_REF \u003d sys.modules[__name__]"},{"line_number":508,"context_line":"sys.modules[__name__] \u003d _deprecate._DeprecateSubset(globals(),"},{"line_number":509,"context_line":"                                                    agent_model)"},{"line_number":510,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_2d1dbdbd","line":508,"updated":"2016-08-31 12:50:37.000000000","message":"Needs updating now that https://review.openstack.org/352601 has merged. Please follow the deprecation examples from that patch.","commit_id":"cb4049d75b4d505af33421458be732544e9feef4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"a730137244a04c7f8122b933a79e8dc9be671ad6","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"},{"line_number":507,"context_line":"_OLD_REF \u003d sys.modules[__name__]"},{"line_number":508,"context_line":"sys.modules[__name__] \u003d _deprecate._DeprecateSubset(globals(),"},{"line_number":509,"context_line":"                                                    agent_model)"},{"line_number":510,"context_line":"# WARNING: THESE MUST BE THE LAST TWO LINES IN THIS MODULE"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_2a1118b0","line":508,"in_reply_to":"fa7ab95a_2d1dbdbd","updated":"2016-08-31 14:42:43.000000000","message":"Done","commit_id":"cb4049d75b4d505af33421458be732544e9feef4"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"426b726d5bbed72842889394f5b1b86681f09ce7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from eventlet import greenthread"},{"line_number":20,"context_line":"from neutron_lib.api import converters"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa7ab95a_acf29a04","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":10},"updated":"2016-08-31 17:23:06.000000000","message":"useless import need to remove","commit_id":"d2ecb25c462f51b98c6e919fe52652f44f42c304"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"91a16c797e5ba2cb0d789cbf850d2445187f2127","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from eventlet import greenthread"},{"line_number":20,"context_line":"from neutron_lib.api import converters"},{"line_number":21,"context_line":"from neutron_lib import constants"},{"line_number":22,"context_line":"from neutron_lib.db import model_base"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"import oslo_messaging"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_9cede527","line":22,"updated":"2016-09-23 14:54:05.000000000","message":"It seems like you have to remove this import[1]\n\n[1] http://logs.openstack.org/70/330870/27/check/gate-neutron-pep8-ubuntu-xenial/9de5497/console.html#_2016-09-23_03_37_10_789959","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f496f7bbcaafc5d44d19b02852d8287286a369a7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from eventlet import greenthread"},{"line_number":20,"context_line":"from neutron_lib.api import converters"},{"line_number":21,"context_line":"from neutron_lib import constants"},{"line_number":22,"context_line":"from neutron_lib.db import model_base"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"import oslo_messaging"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_9bac02a2","line":22,"in_reply_to":"5a8bc5a2_9cede527","updated":"2016-09-23 17:51:26.000000000","message":"Done","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"0283e09391af79ebb413d1861a03a37d19f005b6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from neutron import manager"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_deprecate._moved_global(\u0027Agent\u0027,"},{"line_number":46,"context_line":"                         new_module\u003dagt)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5a8bc5a2_714d0ec3","line":46,"updated":"2016-09-27 15:08:02.000000000","message":"Nit: no reason to split this line.","commit_id":"8ef087c48105ef662e1ad27e0df8c4bb3d8e3891"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"730e041b3cae028f8f0cda639c4907ce438a265f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"5a8bc5a2_4d0637cf","line":493,"updated":"2016-09-23 20:49:36.000000000","message":"I think _deprecate._MovedGlobals() should be added similar to [1].\n\n[1] - https://review.openstack.org/#/c/356144/11/neutron/plugins/ml2/drivers/type_vlan.py@248","commit_id":"8ef087c48105ef662e1ad27e0df8c4bb3d8e3891"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"71235562ac691d44635e772f06786d295b4a8bc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"5a8bc5a2_504ed06f","line":493,"in_reply_to":"5a8bc5a2_4d0637cf","updated":"2016-09-23 21:10:58.000000000","message":"+1","commit_id":"8ef087c48105ef662e1ad27e0df8c4bb3d8e3891"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from neutron.common import constants as n_const"},{"line_number":38,"context_line":"from neutron import context"},{"line_number":39,"context_line":"from neutron.db import api as db_api"},{"line_number":40,"context_line":"from neutron.db.models import agent as agt"},{"line_number":41,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":42,"context_line":"from neutron.extensions import availability_zone as az_ext"},{"line_number":43,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_9c729c48","line":40,"updated":"2016-09-27 21:29:31.000000000","message":"To improve readability it would be nice to have the name as  agt_model in all the files that is importing agent","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from neutron.common import constants as n_const"},{"line_number":38,"context_line":"from neutron import context"},{"line_number":39,"context_line":"from neutron.db import api as db_api"},{"line_number":40,"context_line":"from neutron.db.models import agent as agt"},{"line_number":41,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":42,"context_line":"from neutron.extensions import availability_zone as az_ext"},{"line_number":43,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_71fc1a3f","line":40,"in_reply_to":"5a8bc5a2_6bafbf2b","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9bdc0431b6d115f54683f33915d1d7f4cc24f2c3","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from neutron.common import constants as n_const"},{"line_number":38,"context_line":"from neutron import context"},{"line_number":39,"context_line":"from neutron.db import api as db_api"},{"line_number":40,"context_line":"from neutron.db.models import agent as agt"},{"line_number":41,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":42,"context_line":"from neutron.extensions import availability_zone as az_ext"},{"line_number":43,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_6bafbf2b","line":40,"in_reply_to":"5a8bc5a2_9c729c48","updated":"2016-09-28 01:05:54.000000000","message":"I know Ihar doesn\u0027t like too long names but I think we can use \u0027agent_models\u0027 to be consistent with other model relocation patches.","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"79de4f97ed32512d1655a742da71e22decc488c6","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        {\u0027agent_type\u0027: agent_type, \u0027agent_id\u0027: agent.id})"},{"line_number":206,"context_line":"        return agent"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @staticmethod"},{"line_number":209,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":210,"context_line":"        return timeutils.is_older_than(heart_beat_time,"},{"line_number":211,"context_line":"                                       cfg.CONF.agent_down_time)"}],"source_content_type":"text/x-python","patch_set":34,"id":"3a98d1f4_981c1179","side":"PARENT","line":208,"updated":"2016-09-29 19:51:40.000000000","message":"I don\u0027t think it\u0027s safe to remove it. Let\u0027s keep it, just replace the body of the method with a call to utils.*","commit_id":"3285afd2a4855c806963c6c256367a235a0418f4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"e141acf5227938116ffd6d144f9cba82dbb80825","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        {\u0027agent_type\u0027: agent_type, \u0027agent_id\u0027: agent.id})"},{"line_number":206,"context_line":"        return agent"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @staticmethod"},{"line_number":209,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":210,"context_line":"        return timeutils.is_older_than(heart_beat_time,"},{"line_number":211,"context_line":"                                       cfg.CONF.agent_down_time)"}],"source_content_type":"text/x-python","patch_set":34,"id":"3a98d1f4_b32378a6","side":"PARENT","line":208,"in_reply_to":"3a98d1f4_6ceea7ed","updated":"2016-09-30 16:02:23.000000000","message":"Done","commit_id":"3285afd2a4855c806963c6c256367a235a0418f4"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"84a716526f96bcbbb7391bd818a51be44592ee6e","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        {\u0027agent_type\u0027: agent_type, \u0027agent_id\u0027: agent.id})"},{"line_number":206,"context_line":"        return agent"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @staticmethod"},{"line_number":209,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":210,"context_line":"        return timeutils.is_older_than(heart_beat_time,"},{"line_number":211,"context_line":"                                       cfg.CONF.agent_down_time)"}],"source_content_type":"text/x-python","patch_set":34,"id":"3a98d1f4_6ceea7ed","side":"PARENT","line":208,"in_reply_to":"3a98d1f4_981c1179","updated":"2016-09-29 21:17:25.000000000","message":"And deprecate it so it can be removed later.","commit_id":"3285afd2a4855c806963c6c256367a235a0418f4"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"e141acf5227938116ffd6d144f9cba82dbb80825","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        {\u0027agent_type\u0027: agent_type, \u0027agent_id\u0027: agent.id})"},{"line_number":206,"context_line":"        return agent"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @staticmethod"},{"line_number":209,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":210,"context_line":"        return timeutils.is_older_than(heart_beat_time,"},{"line_number":211,"context_line":"                                       cfg.CONF.agent_down_time)"}],"source_content_type":"text/x-python","patch_set":34,"id":"3a98d1f4_7306501e","side":"PARENT","line":208,"in_reply_to":"3a98d1f4_981c1179","updated":"2016-09-30 16:02:23.000000000","message":"Done","commit_id":"3285afd2a4855c806963c6c256367a235a0418f4"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d3d368d5065d9dcafbdb77d3403d51db00f1110c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from sqlalchemy import sql"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from neutron._i18n import _, _LE, _LI, _LW"},{"line_number":33,"context_line":"from neutron.agent.common import utils"},{"line_number":34,"context_line":"from neutron.api.rpc.callbacks import version_manager"},{"line_number":35,"context_line":"from neutron.callbacks import events"},{"line_number":36,"context_line":"from neutron.callbacks import registry"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_0faf9ce2","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":38},"updated":"2016-09-30 18:38:43.000000000","message":"This is causing a cyclic import","commit_id":"8206b780a5096b5926d49337960b622040d9ec61"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"934831b18bc3fba068385eac88adfe900c3db92b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        agent_utils \u003d importutils.import_module("},{"line_number":172,"context_line":"            \u0027neutron.agent.common.utils\u0027)"},{"line_number":173,"context_line":"        if agent_utils.is_agent_down(agent.heartbeat_timestamp):"},{"line_number":174,"context_line":"            LOG.warning(_LW(\u0027%(agent_type)s agent %(agent_id)s is not active\u0027),"},{"line_number":175,"context_line":"                        {\u0027agent_type\u0027: agent_type, \u0027agent_id\u0027: agent.id})"}],"source_content_type":"text/x-python","patch_set":41,"id":"3a98d1f4_31d0d2f7","line":172,"updated":"2016-10-04 13:21:39.000000000","message":"I believe this is not the right path. We should instead decouple the config option that invokes circular import as I believe https://review.openstack.org/#/c/344877/16/neutron/db/agents_db.py proposes.","commit_id":"48c5acc3b40fa06b594a2adb68cac5ca8d0b0b92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9b8157dad48e35079d7247c2aed93ac172dd2c3b","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        message\u003d\"This will be removed in the future. \""},{"line_number":175,"context_line":"                \"Please use \u0027neutron.agent.common.utils.is_agent_down\u0027 \""},{"line_number":176,"context_line":"                \"instead.\""},{"line_number":177,"context_line":"    )"},{"line_number":178,"context_line":"    @staticmethod"},{"line_number":179,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":180,"context_line":"        return utils.is_agent_down(heart_beat_time)"}],"source_content_type":"text/x-python","patch_set":47,"id":"1a95cdbc_2798f1bf","line":177,"updated":"2016-10-07 16:48:46.000000000","message":"It is better to add version\u003d\u0027ocata\u0027 as an argument.\nWe can know when we mark it as deprecated.","commit_id":"d112e5af59361329b97792a0396de7a2d6910b92"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"a0652f101dc05106829b75d8ee70320c0d7dff54","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        message\u003d\"This will be removed in the future. \""},{"line_number":175,"context_line":"                \"Please use \u0027neutron.agent.common.utils.is_agent_down\u0027 \""},{"line_number":176,"context_line":"                \"instead.\""},{"line_number":177,"context_line":"    )"},{"line_number":178,"context_line":"    @staticmethod"},{"line_number":179,"context_line":"    def is_agent_down(heart_beat_time):"},{"line_number":180,"context_line":"        return utils.is_agent_down(heart_beat_time)"}],"source_content_type":"text/x-python","patch_set":47,"id":"1a95cdbc_470df8e6","line":177,"in_reply_to":"1a95cdbc_2798f1bf","updated":"2016-10-07 18:18:45.000000000","message":"Done","commit_id":"d112e5af59361329b97792a0396de7a2d6910b92"}],"neutron/db/agentschedulers_db.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"91a16c797e5ba2cb0d789cbf850d2445187f2127","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from neutron.common import utils"},{"line_number":33,"context_line":"from neutron import context as ncontext"},{"line_number":34,"context_line":"from neutron.db import agents_db"},{"line_number":35,"context_line":"from neutron.db.models import agent as agt"},{"line_number":36,"context_line":"from neutron.db.availability_zone import network as network_az"},{"line_number":37,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":38,"context_line":"from neutron.extensions import agent as ext_agent"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_dcaf6d92","line":35,"updated":"2016-09-23 14:54:05.000000000","message":"This line needs to be after importing availability zones[1]\n\n[1] http://logs.openstack.org/70/330870/27/check/gate-neutron-pep8-ubuntu-xenial/9de5497/console.html#_2016-09-23_03_37_10_961768","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f496f7bbcaafc5d44d19b02852d8287286a369a7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from neutron.common import utils"},{"line_number":33,"context_line":"from neutron import context as ncontext"},{"line_number":34,"context_line":"from neutron.db import agents_db"},{"line_number":35,"context_line":"from neutron.db.models import agent as agt"},{"line_number":36,"context_line":"from neutron.db.availability_zone import network as network_az"},{"line_number":37,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":38,"context_line":"from neutron.extensions import agent as ext_agent"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_1b78f229","line":35,"in_reply_to":"5a8bc5a2_dcaf6d92","updated":"2016-09-23 17:51:26.000000000","message":"Done","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from neutron import context as ncontext"},{"line_number":34,"context_line":"from neutron.db import agents_db"},{"line_number":35,"context_line":"from neutron.db.availability_zone import network as network_az"},{"line_number":36,"context_line":"from neutron.db.models import agent as agt"},{"line_number":37,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":38,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":39,"context_line":"from neutron.extensions import dhcpagentscheduler"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_dc92644b","line":36,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from neutron import context as ncontext"},{"line_number":34,"context_line":"from neutron.db import agents_db"},{"line_number":35,"context_line":"from neutron.db.availability_zone import network as network_az"},{"line_number":36,"context_line":"from neutron.db.models import agent as agt"},{"line_number":37,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":38,"context_line":"from neutron.extensions import agent as ext_agent"},{"line_number":39,"context_line":"from neutron.extensions import dhcpagentscheduler"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_f19e6a06","line":36,"in_reply_to":"5a8bc5a2_dc92644b","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/db/l3_agentschedulers_db.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from neutron.db import agents_db"},{"line_number":34,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":35,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":36,"context_line":"from neutron.db.models import agent as agt"},{"line_number":37,"context_line":"from neutron.extensions import l3agentscheduler"},{"line_number":38,"context_line":"from neutron.extensions import router_availability_zone as router_az"},{"line_number":39,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_1c9dac59","line":36,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from neutron.db import agents_db"},{"line_number":34,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":35,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":36,"context_line":"from neutron.db.models import agent as agt"},{"line_number":37,"context_line":"from neutron.extensions import l3agentscheduler"},{"line_number":38,"context_line":"from neutron.extensions import router_availability_zone as router_az"},{"line_number":39,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_b1bb0275","line":36,"in_reply_to":"5a8bc5a2_1c9dac59","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/db/l3_hamode_db.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":41,"context_line":"from neutron.db import l3_dvr_db"},{"line_number":42,"context_line":"from neutron.db.l3_dvr_db import is_distributed_router"},{"line_number":43,"context_line":"from neutron.db.models import agent as agt"},{"line_number":44,"context_line":"from neutron.db.models import l3 as l3_models"},{"line_number":45,"context_line":"from neutron.db import models_v2"},{"line_number":46,"context_line":"from neutron.extensions import l3"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_bcb4b8d4","line":43,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":41,"context_line":"from neutron.db import l3_dvr_db"},{"line_number":42,"context_line":"from neutron.db.l3_dvr_db import is_distributed_router"},{"line_number":43,"context_line":"from neutron.db.models import agent as agt"},{"line_number":44,"context_line":"from neutron.db.models import l3 as l3_models"},{"line_number":45,"context_line":"from neutron.db import models_v2"},{"line_number":46,"context_line":"from neutron.extensions import l3"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_83587d58","line":43,"in_reply_to":"5a8bc5a2_bcb4b8d4","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/db/l3_hascheduler_db.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from neutron.callbacks import resources"},{"line_number":22,"context_line":"from neutron.db import l3_agentschedulers_db as l3_sch_db"},{"line_number":23,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":24,"context_line":"from neutron.db.models import agent as agt"},{"line_number":25,"context_line":"from neutron.db.models import l3 as l3_models"},{"line_number":26,"context_line":"from neutron.extensions import portbindings"},{"line_number":27,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_dc634440","line":24,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from neutron.callbacks import resources"},{"line_number":22,"context_line":"from neutron.db import l3_agentschedulers_db as l3_sch_db"},{"line_number":23,"context_line":"from neutron.db import l3_attrs_db"},{"line_number":24,"context_line":"from neutron.db.models import agent as agt"},{"line_number":25,"context_line":"from neutron.db.models import l3 as l3_models"},{"line_number":26,"context_line":"from neutron.extensions import portbindings"},{"line_number":27,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_e31ce179","line":24,"in_reply_to":"5a8bc5a2_dc634440","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"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":"184017a99c5e531c57174e0352a1705308dd13de","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from neutron.db import l3_hamode_db  # noqa"},{"line_number":38,"context_line":"from neutron.db.metering import metering_db  # noqa"},{"line_number":39,"context_line":"from neutron.db import model_base"},{"line_number":40,"context_line":"from neutron.db.models import agent as agt  # noqa"},{"line_number":41,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":42,"context_line":"from neutron.db import models_v2  # noqa"},{"line_number":43,"context_line":"from neutron.db.port_security import models  # noqa"}],"source_content_type":"text/x-python","patch_set":18,"id":"3ac371cc_2cecde8e","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":50},"updated":"2016-08-19 05:20:03.000000000","message":"This is not needed because of https://github.com/openstack/neutron/blob/master/neutron/db/migration/models/head.py#L67","commit_id":"55a620b34ee251b64c5c835cd85b4853c6ecea4e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"91a16c797e5ba2cb0d789cbf850d2445187f2127","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.db import l3_gwmode_db  # noqa"},{"line_number":41,"context_line":"from neutron.db import l3_hamode_db  # noqa"},{"line_number":42,"context_line":"from neutron.db.metering import metering_db  # noqa"},{"line_number":43,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":44,"context_line":"from neutron.db import models_v2  # noqa"},{"line_number":45,"context_line":"from neutron.db.port_security import models as ps_models  # noqa"},{"line_number":46,"context_line":"from neutron.db import portbindings_db  # noqa"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_7c32d911","side":"PARENT","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":22},"updated":"2016-09-23 14:54:05.000000000","message":"I think that we have to keep at least one import for models\n\n[1] http://logs.openstack.org/70/330870/27/check/gate-neutron-pep8-ubuntu-xenial/9de5497/console.html#_2016-09-23_03_37_15_805051","commit_id":"2aa3cf63198a4dea9fd61e5effe44b39a283882a"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f496f7bbcaafc5d44d19b02852d8287286a369a7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.db import l3_gwmode_db  # noqa"},{"line_number":41,"context_line":"from neutron.db import l3_hamode_db  # noqa"},{"line_number":42,"context_line":"from neutron.db.metering import metering_db  # noqa"},{"line_number":43,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":44,"context_line":"from neutron.db import models_v2  # noqa"},{"line_number":45,"context_line":"from neutron.db.port_security import models as ps_models  # noqa"},{"line_number":46,"context_line":"from neutron.db import portbindings_db  # noqa"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_1b4b92ca","side":"PARENT","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":22},"in_reply_to":"5a8bc5a2_7c32d911","updated":"2016-09-23 17:51:26.000000000","message":"It should be missing a\nfrom neutron.db import models\nhere. Added back in","commit_id":"2aa3cf63198a4dea9fd61e5effe44b39a283882a"}],"neutron/db/models/agent.py":[{"author":{"_account_id":22800,"name":"Joseph Pasque","email":"jp606j@att.com","username":"jp606j"},"change_message_id":"d56a7ee8ffe394cd7ad25a4133241c80c3cf99ea","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_utils import importutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.api.v2 import attributes"},{"line_number":19,"context_line":"from neutron.db import model_base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Agent(model_base.BASEV2, model_base.HasId):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_aece2e58","line":19,"updated":"2016-09-28 19:08:39.000000000","message":"should this be neutron_lib.db instead of neutron.db? Also should this be grouped with sqlalchemy?","commit_id":"9e53027df5a96cb6a10039ef8fc122759a11c00c"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"d1c6ba52b7e47e1c9d30072834ed4063bdc1eb79","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_utils import importutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.api.v2 import attributes"},{"line_number":19,"context_line":"from neutron.db import model_base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Agent(model_base.BASEV2, model_base.HasId):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a98d1f4_c93454e0","line":19,"in_reply_to":"3a98d1f4_aece2e58","updated":"2016-09-28 19:17:52.000000000","message":"Good catch. Done","commit_id":"9e53027df5a96cb6a10039ef8fc122759a11c00c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21ec232c9478bed34399fc53354f21c6a3fa9046","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import sql"},{"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":"from neutron.api.v2 import attributes"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_46739ce7","line":17,"updated":"2016-09-29 15:33:58.000000000","message":"nit: oslo should have gone into line 14. Though I don\u0027t think you need it at all (see below).","commit_id":"8b62a7034bb95aaad119c6856ec16cbffe03dce6"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f8b987a3116f1175c461bd91cf231b91b6472daf","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import sql"},{"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":"from neutron.api.v2 import attributes"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_b8cb8da4","line":17,"in_reply_to":"3a98d1f4_46739ce7","updated":"2016-09-29 19:41:08.000000000","message":"Done","commit_id":"8b62a7034bb95aaad119c6856ec16cbffe03dce6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21ec232c9478bed34399fc53354f21c6a3fa9046","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    load \u003d sa.Column(sa.Integer, server_default\u003d\u00270\u0027, nullable\u003dFalse)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def agents_db_module(self):"},{"line_number":60,"context_line":"        # avoiding import multiple times"},{"line_number":61,"context_line":"        # might only provide limited performance but should be OK."},{"line_number":62,"context_line":"        if not hasattr(self, \u0027_agents_db_module\u0027):"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_29de636d","line":59,"updated":"2016-09-29 15:33:58.000000000","message":"I can\u0027t support that.\n\nThe goal of the patch is to untangle the model from the module using it. Here you still import it. I think the right way is to untangle is_agent_down from the mixin into another module (neutron.agent.common.utils?) and use it from there. Then you won\u0027t need to import it like that.","commit_id":"8b62a7034bb95aaad119c6856ec16cbffe03dce6"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f8b987a3116f1175c461bd91cf231b91b6472daf","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    load \u003d sa.Column(sa.Integer, server_default\u003d\u00270\u0027, nullable\u003dFalse)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def agents_db_module(self):"},{"line_number":60,"context_line":"        # avoiding import multiple times"},{"line_number":61,"context_line":"        # might only provide limited performance but should be OK."},{"line_number":62,"context_line":"        if not hasattr(self, \u0027_agents_db_module\u0027):"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_b842ad0e","line":59,"in_reply_to":"3a98d1f4_29de636d","updated":"2016-09-29 19:41:08.000000000","message":"Done. Moved is_agent_down module to neutron.agent.common.utils","commit_id":"8b62a7034bb95aaad119c6856ec16cbffe03dce6"}],"neutron/db/network_dhcp_agent_binding/models.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"91a16c797e5ba2cb0d789cbf850d2445187f2127","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import orm"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.db import agents_db"},{"line_number":18,"context_line":"from neutron.db.models import agent as agt"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_3cddb10e","line":17,"updated":"2016-09-23 14:54:05.000000000","message":"agents_db module is never used [1]\n\n[1] http://logs.openstack.org/70/330870/27/check/gate-neutron-pep8-ubuntu-xenial/9de5497/console.html#_2016-09-23_03_37_15_491048","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f496f7bbcaafc5d44d19b02852d8287286a369a7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import orm"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.db import agents_db"},{"line_number":18,"context_line":"from neutron.db.models import agent as agt"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_9b8402d5","line":17,"in_reply_to":"5a8bc5a2_3cddb10e","updated":"2016-09-23 17:51:26.000000000","message":"Good catch. Done","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import orm"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.db.models import agent as agt"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class NetworkDhcpAgentBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_9c4a9cab","line":17,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import sqlalchemy as sa"},{"line_number":15,"context_line":"from sqlalchemy import orm"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.db.models import agent as agt"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class NetworkDhcpAgentBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_c6cff3b1","line":17,"in_reply_to":"5a8bc5a2_9c4a9cab","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/plugins/ml2/drivers/l2pop/db.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":21,"context_line":"from neutron.db.models import agent as agt"},{"line_number":22,"context_line":"from neutron.db import models_v2"},{"line_number":23,"context_line":"from neutron.plugins.ml2 import models as ml2_models"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_3cda68ea","line":21,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":21,"context_line":"from neutron.db.models import agent as agt"},{"line_number":22,"context_line":"from neutron.db import models_v2"},{"line_number":23,"context_line":"from neutron.plugins.ml2 import models as ml2_models"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_a6bbc70d","line":21,"in_reply_to":"5a8bc5a2_3cda68ea","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/scheduler/dhcp_agent_scheduler.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron._i18n import _LI, _LW"},{"line_number":27,"context_line":"from neutron.db import agents_db"},{"line_number":28,"context_line":"from neutron.db import api as db_api"},{"line_number":29,"context_line":"from neutron.db.models import agent as agt"},{"line_number":30,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":31,"context_line":"from neutron.extensions import availability_zone as az_ext"},{"line_number":32,"context_line":"from neutron.scheduler import base_resource_filter"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_9ce1bc9d","line":29,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron._i18n import _LI, _LW"},{"line_number":27,"context_line":"from neutron.db import agents_db"},{"line_number":28,"context_line":"from neutron.db import api as db_api"},{"line_number":29,"context_line":"from neutron.db.models import agent as agt"},{"line_number":30,"context_line":"from neutron.db.network_dhcp_agent_binding import models as ndab_model"},{"line_number":31,"context_line":"from neutron.extensions import availability_zone as az_ext"},{"line_number":32,"context_line":"from neutron.scheduler import base_resource_filter"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_464be32b","line":29,"in_reply_to":"5a8bc5a2_9ce1bc9d","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.callbacks import resources"},{"line_number":25,"context_line":"from neutron.common import utils"},{"line_number":26,"context_line":"from neutron.db.agentschedulers_db import cfg"},{"line_number":27,"context_line":"from neutron.db.models import agent as agt"},{"line_number":28,"context_line":"from neutron.tests import base"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_bcecb893","line":27,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.callbacks import resources"},{"line_number":25,"context_line":"from neutron.common import utils"},{"line_number":26,"context_line":"from neutron.db.agentschedulers_db import cfg"},{"line_number":27,"context_line":"from neutron.db.models import agent as agt"},{"line_number":28,"context_line":"from neutron.tests import base"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_86032bb8","line":27,"in_reply_to":"5a8bc5a2_bcecb893","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}],"neutron/tests/unit/db/test_agents_db.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7916ad24b734b5ff70de4ec6838231799a883fc9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import testscenarios"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron import context"},{"line_number":29,"context_line":"from neutron.db.agent import models as agtdb"},{"line_number":30,"context_line":"from neutron.db import agents_db"},{"line_number":31,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"},{"line_number":32,"context_line":"from neutron.tests.unit import testlib_api"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_bcc79443","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":44},"updated":"2016-06-30 22:18:23.000000000","message":"Why not just ``agt`` like in other files?","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"6819d1c2535b4ff6f6321a04798a1517a48074fb","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import testscenarios"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron import context"},{"line_number":29,"context_line":"from neutron.db.agent import models as agtdb"},{"line_number":30,"context_line":"from neutron.db import agents_db"},{"line_number":31,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"},{"line_number":32,"context_line":"from neutron.tests.unit import testlib_api"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_7f4977d0","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":44},"in_reply_to":"3aaa91ec_bcc79443","updated":"2016-07-06 16:06:27.000000000","message":"See:\nhttps://review.openstack.org/#/c/330870/10/neutron/tests/unit/db/test_agents_db.py@363\nSame reason as the other file","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"1c3901ebae77ebbbe1075c38fd39065d3b2213d8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import testscenarios"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron import context"},{"line_number":29,"context_line":"from neutron.db import agent_model as agtdb"},{"line_number":30,"context_line":"from neutron.db import agents_db"},{"line_number":31,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"},{"line_number":32,"context_line":"from neutron.tests.unit import testlib_api"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_ffad0e9c","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":43},"updated":"2016-08-03 20:08:48.000000000","message":"Please be consistent with all other files, where you are importing `agent_model` as `agt` and not as `agtdb`.","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"112da2d6947394938c38b6a9735d3dbe53b46f7f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import testscenarios"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from neutron import context"},{"line_number":29,"context_line":"from neutron.db import agent_model as agtdb"},{"line_number":30,"context_line":"from neutron.db import agents_db"},{"line_number":31,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"},{"line_number":32,"context_line":"from neutron.tests.unit import testlib_api"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_afb5bded","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":43},"in_reply_to":"bacf61ea_ffad0e9c","updated":"2016-08-05 16:00:11.000000000","message":"This is because down there, there is a variable named agt, so here I will need to name it agtdb:\n\nhttps://review.openstack.org/#/c/330870/14/neutron/tests/unit/db/test_agents_db.py@363","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"}],"neutron/tests/unit/db/test_agentschedulers_db.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7916ad24b734b5ff70de4ec6838231799a883fc9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.api.v2 import attributes"},{"line_number":32,"context_line":"from neutron.common import constants as n_const"},{"line_number":33,"context_line":"from neutron import context"},{"line_number":34,"context_line":"from neutron.db.agent import models as agtdb"},{"line_number":35,"context_line":"from neutron.db import agents_db"},{"line_number":36,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":37,"context_line":"from neutron.db import l3_agentschedulers_db"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_3ce284d5","line":34,"range":{"start_line":34,"start_character":39,"end_line":34,"end_character":44},"updated":"2016-06-30 22:18:23.000000000","message":"``agt``?","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"6819d1c2535b4ff6f6321a04798a1517a48074fb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.api.v2 import attributes"},{"line_number":32,"context_line":"from neutron.common import constants as n_const"},{"line_number":33,"context_line":"from neutron import context"},{"line_number":34,"context_line":"from neutron.db.agent import models as agtdb"},{"line_number":35,"context_line":"from neutron.db import agents_db"},{"line_number":36,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":37,"context_line":"from neutron.db import l3_agentschedulers_db"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_df398b43","line":34,"range":{"start_line":34,"start_character":39,"end_line":34,"end_character":44},"in_reply_to":"3aaa91ec_3ce284d5","updated":"2016-07-06 16:06:27.000000000","message":"See here: https://review.openstack.org/#/c/330870/10/neutron/tests/unit/db/test_agentschedulers_db.py@682\nIt has another variable named agt. So here I named agtdb for clarity. Also if I am not doing this, unittest will throw: referenced before defined error.","commit_id":"bcc540e0b59a3926eb3b35ec362487e3e8501827"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"1c3901ebae77ebbbe1075c38fd39065d3b2213d8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.api.v2 import attributes"},{"line_number":32,"context_line":"from neutron.common import constants as n_const"},{"line_number":33,"context_line":"from neutron import context"},{"line_number":34,"context_line":"from neutron.db import agent_model as agtdb"},{"line_number":35,"context_line":"from neutron.db import agents_db"},{"line_number":36,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":37,"context_line":"from neutron.db import l3_agentschedulers_db"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_ff84ee0b","line":34,"range":{"start_line":34,"start_character":38,"end_line":34,"end_character":43},"updated":"2016-08-03 20:08:48.000000000","message":"ditto","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"112da2d6947394938c38b6a9735d3dbe53b46f7f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.api.v2 import attributes"},{"line_number":32,"context_line":"from neutron.common import constants as n_const"},{"line_number":33,"context_line":"from neutron import context"},{"line_number":34,"context_line":"from neutron.db import agent_model as agtdb"},{"line_number":35,"context_line":"from neutron.db import agents_db"},{"line_number":36,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":37,"context_line":"from neutron.db import l3_agentschedulers_db"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_2f70ad3f","line":34,"range":{"start_line":34,"start_character":38,"end_line":34,"end_character":43},"in_reply_to":"bacf61ea_ff84ee0b","updated":"2016-08-05 16:00:11.000000000","message":"This is because down there, there is a variable named agt, so here I will need to name it agtdb:\n\nhttps://review.openstack.org/#/c/330870/14/neutron/tests/unit/db/test_agentschedulers_db.py@672","commit_id":"76d6859cb20ffbcbe2bb431538658561d39ae58f"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d3d368d5065d9dcafbdb77d3403d51db00f1110c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from neutron.db import agents_db"},{"line_number":34,"context_line":"from neutron.db import agentschedulers_db"},{"line_number":35,"context_line":"from neutron.db.models import l3agent as rb_model"},{"line_number":36,"context_line":"from neutron.db.models import agent as agent_model"},{"line_number":37,"context_line":"from neutron.extensions import agent"},{"line_number":38,"context_line":"from neutron.extensions import dhcpagentscheduler"},{"line_number":39,"context_line":"from neutron.extensions import l3agentscheduler"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_efc6f098","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":50},"updated":"2016-09-30 18:38:43.000000000","message":"This line needs to be in 35","commit_id":"8206b780a5096b5926d49337960b622040d9ec61"}],"neutron/tests/unit/db/test_l3_hamode_db.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"91a16c797e5ba2cb0d789cbf850d2445187f2127","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron.db import common_db_mixin"},{"line_number":30,"context_line":"from neutron.db import l3_agentschedulers_db"},{"line_number":31,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":32,"context_line":"from neutron.db.models import agent as agt"},{"line_number":33,"context_line":"from neutron.extensions import external_net"},{"line_number":34,"context_line":"from neutron.extensions import l3"},{"line_number":35,"context_line":"from neutron.extensions import l3_ext_ha_mode"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_ff3b3bcf","line":32,"updated":"2016-09-23 14:54:05.000000000","message":"This line is not required[1]\n\n[1] http://logs.openstack.org/70/330870/27/check/gate-neutron-pep8-ubuntu-xenial/9de5497/console.html#_2016-09-23_03_37_43_474741","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"f496f7bbcaafc5d44d19b02852d8287286a369a7","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron.db import common_db_mixin"},{"line_number":30,"context_line":"from neutron.db import l3_agentschedulers_db"},{"line_number":31,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":32,"context_line":"from neutron.db.models import agent as agt"},{"line_number":33,"context_line":"from neutron.extensions import external_net"},{"line_number":34,"context_line":"from neutron.extensions import l3"},{"line_number":35,"context_line":"from neutron.extensions import l3_ext_ha_mode"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a8bc5a2_db55aa50","line":32,"in_reply_to":"5a8bc5a2_ff3b3bcf","updated":"2016-09-23 17:51:26.000000000","message":"Done","commit_id":"b25851956689e046af461b60deb41ba6bbcae005"}],"neutron/tests/unit/scheduler/test_l3_agent_scheduler.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.db import l3_dvrscheduler_db"},{"line_number":36,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":37,"context_line":"from neutron.db import l3_hascheduler_db"},{"line_number":38,"context_line":"from neutron.db.models import agent as agt"},{"line_number":39,"context_line":"from neutron.extensions import l3"},{"line_number":40,"context_line":"from neutron.extensions import l3_ext_ha_mode as l3_ha"},{"line_number":41,"context_line":"from neutron.extensions import l3agentscheduler as l3agent"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_7cc79064","line":38,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.db import l3_dvrscheduler_db"},{"line_number":36,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":37,"context_line":"from neutron.db import l3_hascheduler_db"},{"line_number":38,"context_line":"from neutron.db.models import agent as agt"},{"line_number":39,"context_line":"from neutron.extensions import l3"},{"line_number":40,"context_line":"from neutron.extensions import l3_ext_ha_mode as l3_ha"},{"line_number":41,"context_line":"from neutron.extensions import l3agentscheduler as l3agent"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_c6d29334","line":38,"in_reply_to":"5a8bc5a2_7cc79064","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d3d368d5065d9dcafbdb77d3403d51db00f1110c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.db import l3_hamode_db"},{"line_number":36,"context_line":"from neutron.db import l3_hascheduler_db"},{"line_number":37,"context_line":"from neutron.db.models import l3agent as rb_model"},{"line_number":38,"context_line":"from neutron.db.models import agent as agent_model"},{"line_number":39,"context_line":"from neutron.extensions import l3"},{"line_number":40,"context_line":"from neutron.extensions import l3_ext_ha_mode as l3_ha"},{"line_number":41,"context_line":"from neutron.extensions import l3agentscheduler as l3agent"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a98d1f4_cff694f8","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":50},"updated":"2016-09-30 18:38:43.000000000","message":"This line has to be in 37","commit_id":"8206b780a5096b5926d49337960b622040d9ec61"}],"neutron/tests/unit/services/metering/test_metering_plugin.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"a11f9a76c27edfe3067d1c21c2c0fa82ef5643b6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron import context"},{"line_number":20,"context_line":"from neutron.db import api as db_api"},{"line_number":21,"context_line":"from neutron.db.metering import metering_rpc"},{"line_number":22,"context_line":"from neutron.db.models import agent as agt"},{"line_number":23,"context_line":"from neutron.extensions import l3 as ext_l3"},{"line_number":24,"context_line":"from neutron.extensions import metering as ext_metering"},{"line_number":25,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a8bc5a2_fce640af","line":22,"updated":"2016-09-27 21:29:31.000000000","message":"ditto","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"8a69c87e96e330ac59b37de55c49ec40232e8f21","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron import context"},{"line_number":20,"context_line":"from neutron.db import api as db_api"},{"line_number":21,"context_line":"from neutron.db.metering import metering_rpc"},{"line_number":22,"context_line":"from neutron.db.models import agent as agt"},{"line_number":23,"context_line":"from neutron.extensions import l3 as ext_l3"},{"line_number":24,"context_line":"from neutron.extensions import metering as ext_metering"},{"line_number":25,"context_line":"from neutron import manager"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a98d1f4_26b977ea","line":22,"in_reply_to":"5a8bc5a2_fce640af","updated":"2016-09-28 14:42:37.000000000","message":"Done","commit_id":"8850c8321678d06669ed597ab706e1cd6422a401"}]}
