)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51d40bbf50544040a4d4ba48a1f4ff648103aefc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"neutron-api needs to load config files when deploy under"},{"line_number":10,"context_line":"WSGI process. This patch will do this. neutron-rpc-server"},{"line_number":11,"context_line":"aslo need to awere plugin extension."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-implements: blueprint run-in-wsgi-server"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"5f7c97a3_1ef3aca1","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":26},"updated":"2018-06-14 22:46:42.000000000","message":"\u0027also need to be aware of plugin\u0027","commit_id":"5bdf55bd7ddef4444cd3200c72c9e15d5595c2b9"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a362b07793073a3ac252bd8db82eab1815a3f866","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow neutron-api load config from WSGI process"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"neutron-api needs to load config files when deploy under"},{"line_number":10,"context_line":"WSGI process. This patch will do this. neutron-rpc-server"},{"line_number":11,"context_line":"also need to be awere of plugin extension."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5f7c97a3_5c4ae882","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":50},"updated":"2018-06-22 20:31:05.000000000","message":"deployed","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4230412d25b757269bbaf8d9fc896249b3128de1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow neutron-api load config from WSGI process"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"neutron-api needs to load config files when deploy under"},{"line_number":10,"context_line":"WSGI process. This patch will do this. neutron-rpc-server"},{"line_number":11,"context_line":"also need to be awere of plugin extension."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5f7c97a3_8e225400","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":50},"in_reply_to":"5f7c97a3_5c4ae882","updated":"2018-06-26 10:57:04.000000000","message":"Done","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a362b07793073a3ac252bd8db82eab1815a3f866","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"neutron-api needs to load config files when deploy under"},{"line_number":10,"context_line":"WSGI process. This patch will do this. neutron-rpc-server"},{"line_number":11,"context_line":"also need to be awere of plugin extension."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-implements: blueprint run-in-wsgi-server"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5f7c97a3_1c40f05e","line":11,"range":{"start_line":11,"start_character":16,"end_line":11,"end_character":21},"updated":"2018-06-22 20:31:05.000000000","message":"aware","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4230412d25b757269bbaf8d9fc896249b3128de1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"neutron-api needs to load config files when deploy under"},{"line_number":10,"context_line":"WSGI process. This patch will do this. neutron-rpc-server"},{"line_number":11,"context_line":"also need to be awere of plugin extension."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-implements: blueprint run-in-wsgi-server"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5f7c97a3_4e18bccb","line":11,"range":{"start_line":11,"start_character":16,"end_line":11,"end_character":21},"in_reply_to":"5f7c97a3_1c40f05e","updated":"2018-06-26 10:57:04.000000000","message":"Done","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"}],"neutron/common/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2c3a97e68c8ed6d73977440be371804989d0fd92","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # FIXME(ihrachys): if import is put in global, circular import"},{"line_number":81,"context_line":"    # failure occurs"},{"line_number":82,"context_line":"    from neutron.common import rpc as n_rpc"},{"line_number":83,"context_line":"    n_rpc.init(cfg.CONF)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # Validate that the base_mac is of the correct format"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_871cedc1","side":"PARENT","line":82,"updated":"2018-05-02 12:25:23.000000000","message":"this changes looks unrelated.","commit_id":"ea89748b0e4e70dfd70b1435da23c8936497123e"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"fd687182e9cba8316650b35a3a934acc2ae54791","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # FIXME(ihrachys): if import is put in global, circular import"},{"line_number":81,"context_line":"    # failure occurs"},{"line_number":82,"context_line":"    from neutron.common import rpc as n_rpc"},{"line_number":83,"context_line":"    n_rpc.init(cfg.CONF)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # Validate that the base_mac is of the correct format"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_cf19ee88","side":"PARENT","line":82,"in_reply_to":"9f6a8fd7_871cedc1","updated":"2018-05-04 06:18:14.000000000","message":"Done","commit_id":"ea89748b0e4e70dfd70b1435da23c8936497123e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51d40bbf50544040a4d4ba48a1f4ff648103aefc","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    \"\"\""},{"line_number":120,"context_line":"    loader \u003d wsgi.Loader(cfg.CONF)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    # show config files"},{"line_number":123,"context_line":"    if cfg.CONF.debug:"},{"line_number":124,"context_line":"        cfg.CONF.log_opt_values(LOG, logging.DEBUG)"},{"line_number":125,"context_line":"    app \u003d loader.load_app(app_name)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5f7c97a3_fe235005","line":122,"range":{"start_line":122,"start_character":4,"end_line":122,"end_character":23},"updated":"2018-06-14 22:46:42.000000000","message":"\u0027Log the values of registered opts\u0027 to be precise","commit_id":"5bdf55bd7ddef4444cd3200c72c9e15d5595c2b9"}],"neutron/plugins/ml2/ovo_rpc.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"eff29746d6b8f7e4bb2be048af2576766a495cb4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self._obj_class \u003d object_class"},{"line_number":39,"context_line":"        self._resource_push_api \u003d resource_push_api"},{"line_number":40,"context_line":"        self._resources_to_push \u003d {}"},{"line_number":41,"context_line":"        self._worker_pool \u003d Pool()"},{"line_number":42,"context_line":"        self._semantic_warned \u003d False"},{"line_number":43,"context_line":"        for event in (events.AFTER_CREATE, events.AFTER_UPDATE,"},{"line_number":44,"context_line":"                      events.AFTER_DELETE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_a56501b1","line":41,"range":{"start_line":41,"start_character":28,"end_line":41,"end_character":32},"updated":"2018-06-12 20:13:28.000000000","message":"Does this patch also switch the library? It is better to mention it in the commit message.","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"408dbe73ffcc47892d4905faa3655f4da52c0a0c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self._obj_class \u003d object_class"},{"line_number":39,"context_line":"        self._resource_push_api \u003d resource_push_api"},{"line_number":40,"context_line":"        self._resources_to_push \u003d {}"},{"line_number":41,"context_line":"        self._worker_pool \u003d Pool()"},{"line_number":42,"context_line":"        self._semantic_warned \u003d False"},{"line_number":43,"context_line":"        for event in (events.AFTER_CREATE, events.AFTER_UPDATE,"},{"line_number":44,"context_line":"                      events.AFTER_DELETE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_6b909897","line":41,"range":{"start_line":41,"start_character":28,"end_line":41,"end_character":32},"in_reply_to":"5f7c97a3_a56501b1","updated":"2018-06-19 06:46:53.000000000","message":"I\u0027ve put a comment for this one. Thanks!","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"600a7a7f46b04b0bd8fb4320f8da7b6021543bc7","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        # spawn worker so we don\u0027t block main AFTER_UPDATE thread"},{"line_number":96,"context_line":"        self.fts.append(self._worker_pool.submit(self.dispatch_events))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @lockutils.synchronized(\u0027event-dispatch\u0027)"},{"line_number":99,"context_line":"    def dispatch_events(self):"},{"line_number":100,"context_line":"        # this is guarded by a lock to ensure we don\u0027t get too many concurrent"},{"line_number":101,"context_line":"        # dispatchers hitting the database simultaneously."}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_da6325b0","line":98,"range":{"start_line":98,"start_character":4,"end_line":98,"end_character":45},"updated":"2018-06-13 14:43:42.000000000","message":"Do we need this?","commit_id":"7288497248b1f1a237e93aa78bc5bf5d32cf1774"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"730e1cfa7c421aa68ecbabe84581fdf8d048dc98","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self._resources_to_push \u003d {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # NOTE(annp): uWSGI seems not happy with eventlet.GreenPool."},{"line_number":45,"context_line":"        # So switching to ThreadPool"},{"line_number":46,"context_line":"        self._worker_pool \u003d futurist.ThreadPoolExecutor()"},{"line_number":47,"context_line":"        self.fts \u003d []"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_27348bfa","line":45,"updated":"2018-06-26 06:53:20.000000000","message":"I think that this should be written in commit message instead of comment here","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4230412d25b757269bbaf8d9fc896249b3128de1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self._resources_to_push \u003d {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # NOTE(annp): uWSGI seems not happy with eventlet.GreenPool."},{"line_number":45,"context_line":"        # So switching to ThreadPool"},{"line_number":46,"context_line":"        self._worker_pool \u003d futurist.ThreadPoolExecutor()"},{"line_number":47,"context_line":"        self.fts \u003d []"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_4e3f5c21","line":45,"in_reply_to":"5f7c97a3_27348bfa","updated":"2018-06-26 10:57:04.000000000","message":"Thank you, Slawek. Done. :)","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"33663e5ef24b4d200fdd26379bebe4d2a639b1ad","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def wait(self):"},{"line_number":55,"context_line":"        \"\"\"Waits for all outstanding events to be dispatched.\"\"\""},{"line_number":56,"context_line":"        waiters.wait_for_all(self.fts)"},{"line_number":57,"context_line":"        # TODO(annp): Need to clear self.futures"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _is_session_semantic_violated(self, context, resource, event):"},{"line_number":60,"context_line":"        \"\"\"Return True and print an ugly error on transaction violation."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_d08c6181","line":57,"updated":"2018-06-26 18:47:04.000000000","message":"can You explain what this comment means exactly?","commit_id":"3f3c84b94d5c1ed167a11bed2105fca4440098fa"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"192883df9f6da283a47e3f9651e72172e5bbff20","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def wait(self):"},{"line_number":55,"context_line":"        \"\"\"Waits for all outstanding events to be dispatched.\"\"\""},{"line_number":56,"context_line":"        waiters.wait_for_all(self.fts)"},{"line_number":57,"context_line":"        # TODO(annp): Need to clear self.futures"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _is_session_semantic_violated(self, context, resource, event):"},{"line_number":60,"context_line":"        \"\"\"Return True and print an ugly error on transaction violation."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_19d75951","line":57,"in_reply_to":"5f7c97a3_d08c6181","updated":"2018-06-27 07:30:14.000000000","message":"We should clear self.fts when all futures is Done, shouldn\u0027t we?","commit_id":"3f3c84b94d5c1ed167a11bed2105fca4440098fa"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"696098c97d51afb3e1bc36911ce37576e2158cb8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def wait(self):"},{"line_number":55,"context_line":"        \"\"\"Waits for all outstanding events to be dispatched.\"\"\""},{"line_number":56,"context_line":"        waiters.wait_for_all(self.fts)"},{"line_number":57,"context_line":"        # TODO(annp): We should clear self.fts, shouldn\u0027t we?"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _is_session_semantic_violated(self, context, resource, event):"},{"line_number":60,"context_line":"        \"\"\"Return True and print an ugly error on transaction violation."}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_fa0d668f","line":57,"range":{"start_line":57,"start_character":38,"end_line":57,"end_character":46},"updated":"2018-07-12 23:09:14.000000000","message":"Yes, I think we should clear self.fts. Otherwise, in production, this list can get really big and that might be a problem in the Neutron server. Having said that, do we really need to wait on self.fts? As far as I can tell, this wait method is only called in L156 below, which in turn seems to be only called in this unit test method: https://github.com/openstack/neutron/blob/master/neutron/tests/unit/plugins/ml2/test_ovo_rpc.py#L40. It doesn\u0027t seem that it is used in the production code\n\nSo maybe the way to approach this is replace L93 with something like:\n\n    thread \u003d self._worker_pool.submit(self.dispatch_events)\n    self._store_thread(thread)\n\ndef _store_thread(self, thread):\n    pass\n\nThis way, self.fts will always be empty in the production code, which doesn\u0027t seem to be a problem because wait is never actually called. In the unit test you can mock _store_thread to add the thread to self.fts","commit_id":"c309ce2c6bd416d9eb260f0d4c3f33278fae505f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"68ca40a1e66b391cae01302ce4fa32155b62e8b1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def wait(self):"},{"line_number":55,"context_line":"        \"\"\"Waits for all outstanding events to be dispatched.\"\"\""},{"line_number":56,"context_line":"        waiters.wait_for_all(self.fts)"},{"line_number":57,"context_line":"        # TODO(annp): We should clear self.fts, shouldn\u0027t we?"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _is_session_semantic_violated(self, context, resource, event):"},{"line_number":60,"context_line":"        \"\"\"Return True and print an ugly error on transaction violation."}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_232dcdad","line":57,"range":{"start_line":57,"start_character":38,"end_line":57,"end_character":46},"in_reply_to":"5f7c97a3_fa0d668f","updated":"2018-07-16 08:13:43.000000000","message":"Thanks Miguel, How about:\n\ndone, not_done \u003d waiters.wait_for_all(self.fts)\nif not not_done:\n    del self.fts[:]\n\n?","commit_id":"c309ce2c6bd416d9eb260f0d4c3f33278fae505f"}],"neutron/server/__init__.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4df5125619d3e747cba6152cb6e97a9399a2c549","unresolved":false,"context_lines":[{"line_number":37,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    if not files:"},{"line_number":40,"context_line":"            files \u003d [NEUTRON_CONF, NEUTRON_CORE_PLUGIN_CONF]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    files \u003d [os.path.join(dirname, fname) for fname in files]"},{"line_number":43,"context_line":"    return files"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_9d121c09","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":12},"updated":"2018-03-27 09:17:52.000000000","message":"nit: isn\u0027t this indentation too long?","commit_id":"d2b9109180d8a68ef6565d7ce2b295444a0d97e6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4d097869f01452b60b7571d54cd81cd866cd1f88","unresolved":false,"context_lines":[{"line_number":37,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    if not files:"},{"line_number":40,"context_line":"            files \u003d [NEUTRON_CONF, NEUTRON_CORE_PLUGIN_CONF]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    files \u003d [os.path.join(dirname, fname) for fname in files]"},{"line_number":43,"context_line":"    return files"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_3d60b001","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":12},"in_reply_to":"bf659307_9d121c09","updated":"2018-03-27 09:30:41.000000000","message":"Done","commit_id":"d2b9109180d8a68ef6565d7ce2b295444a0d97e6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4df5125619d3e747cba6152cb6e97a9399a2c549","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    if not files:"},{"line_number":40,"context_line":"            files \u003d [NEUTRON_CONF, NEUTRON_CORE_PLUGIN_CONF]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    files \u003d [os.path.join(dirname, fname) for fname in files]"},{"line_number":43,"context_line":"    return files"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_7d286833","line":42,"updated":"2018-03-27 09:17:52.000000000","message":"You can do just:\n\n    return [os.path.join(dirname, fname) for fname in files]","commit_id":"d2b9109180d8a68ef6565d7ce2b295444a0d97e6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4d097869f01452b60b7571d54cd81cd866cd1f88","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    if not files:"},{"line_number":40,"context_line":"            files \u003d [NEUTRON_CONF, NEUTRON_CORE_PLUGIN_CONF]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    files \u003d [os.path.join(dirname, fname) for fname in files]"},{"line_number":43,"context_line":"    return files"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_9d3e9cd8","line":42,"in_reply_to":"bf659307_7d286833","updated":"2018-03-27 09:30:41.000000000","message":"Cool! Thank you, Slawek. :)","commit_id":"d2b9109180d8a68ef6565d7ce2b295444a0d97e6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5fcd9e65057bf1d86821d3847911373da245beb6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron.common import profiler"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CORE_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def _get_config_files():"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_db5e5511","line":29,"updated":"2018-03-27 14:38:10.000000000","message":"what if this is a decomposed plugin?","commit_id":"9c6c2cfdf3b8471beb7de74919dcb499b69c045f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"8e38452b9ea62e8dd5598d0112ea228eed6cf0a7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron.common import profiler"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CORE_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def _get_config_files():"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_8455d0c8","line":29,"in_reply_to":"bf659307_db5e5511","updated":"2018-04-19 04:36:53.000000000","message":"This is default config file for devstack. If you have other config files, You can export these config files to OS_NEUTRON_CONFIG_FILES environment variable.","commit_id":"9c6c2cfdf3b8471beb7de74919dcb499b69c045f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1bcda8fdb3866acb52d01c92a0c601c842f6d71a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def _get_config_files():"},{"line_number":33,"context_line":"    env \u003d os.environ"},{"line_number":34,"context_line":"    dirname \u003d env.get(\u0027OS_NEUTRON_CONFIG_DIR\u0027, \u0027/etc/neutron\u0027).strip()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    files \u003d [s.strip() for s in"},{"line_number":37,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_5811ebab","line":34,"range":{"start_line":34,"start_character":47,"end_line":34,"end_character":61},"updated":"2018-03-27 14:22:16.000000000","message":"one more thing, You have constants for neutron.conf and ml2 conf file path but for this one not, why?","commit_id":"9c6c2cfdf3b8471beb7de74919dcb499b69c045f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"5827d2a5a9a60eefeafe212c81ea667c6d464f74","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def _get_config_files():"},{"line_number":33,"context_line":"    env \u003d os.environ"},{"line_number":34,"context_line":"    dirname \u003d env.get(\u0027OS_NEUTRON_CONFIG_DIR\u0027, \u0027/etc/neutron\u0027).strip()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    files \u003d [s.strip() for s in"},{"line_number":37,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_45c8cd20","line":34,"range":{"start_line":34,"start_character":47,"end_line":34,"end_character":61},"in_reply_to":"bf659307_5811ebab","updated":"2018-04-23 08:25:41.000000000","message":"Thank you, Slawek. Done!","commit_id":"9c6c2cfdf3b8471beb7de74919dcb499b69c045f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"aa4b37cfde4269eabc2ab5aacbdbd862a4f1b3d0","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_CORE_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_39bbf9e5","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":12},"updated":"2018-04-29 14:51:23.000000000","message":"to be strict it\u0027s ML2 conf path :)","commit_id":"bb4e80878e2c29eec8e8cf7e5f70bce8c861b1ee"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"946746059f3676787e435dc9414b8b77dbd3840d","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_CORE_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_9e6ca19d","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":12},"in_reply_to":"9f6a8fd7_2762c13f","updated":"2018-05-03 03:08:11.000000000","message":"@garyk: from my understanding, if they want to upgrade, then they should specify their config to NEUTRON_CORE_PLUGIN_CONF by something like \u0027export\u0027 command. What do you think?","commit_id":"bb4e80878e2c29eec8e8cf7e5f70bce8c861b1ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2c3a97e68c8ed6d73977440be371804989d0fd92","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_CORE_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_2762c13f","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":12},"in_reply_to":"9f6a8fd7_39bbf9e5","updated":"2018-05-02 12:25:23.000000000","message":"i do not think that this should be here - what about decomposed plugins? Say someone is not using ML2 and they upgrade and this file is not there...","commit_id":"bb4e80878e2c29eec8e8cf7e5f70bce8c861b1ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9c2244cfec5be73393c541650250b71c53004ddb","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_8cf52ece","line":30,"updated":"2018-05-06 07:03:42.000000000","message":"the config files should not be hard coded. once again if this is not ml2, how is that treated?","commit_id":"293040146dde6e2a8a8a79f5791d07a383ccc0df"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6cff857e43f3082f84bcdd9c743f266d865fa596","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_8cf68e8f","line":30,"in_reply_to":"5f7c97a3_8cf52ece","updated":"2018-05-06 08:11:12.000000000","message":"but, IIUC, it is only some default value which is hardcoded. If You have different plugin, You can set it with env variable then.","commit_id":"293040146dde6e2a8a8a79f5791d07a383ccc0df"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"450de09b723ea8a2d933f752c4973f5bea2f7881","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":29,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":30,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _get_config_files(env\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_6d7e8be5","line":30,"in_reply_to":"5f7c97a3_8cf68e8f","updated":"2018-05-07 03:40:02.000000000","message":"Thank you for your explanation clearly, Slawek.\n@garyk: You can set your config plugin by set it with NEUTRON_PLUGIN_CONF env variable something like:\nexport NEUTRON_PLUGIN_CONF\u003d/path/your/plugin_config1;/patch/your/plugin_config2/ ...","commit_id":"293040146dde6e2a8a8a79f5791d07a383ccc0df"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"5d638228515bdce1addf52d5c5397b2c4324a4e0","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def get_application():"},{"line_number":70,"context_line":"    _init_configuration([], default_config_files\u003d_get_config_files())"},{"line_number":71,"context_line":"    profiler.setup(\u0027neutron-server\u0027, cfg.CONF.host)"},{"line_number":72,"context_line":"    return config.load_paste_app(\u0027neutron\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_de003505","line":70,"range":{"start_line":70,"start_character":4,"end_line":70,"end_character":69},"updated":"2018-05-29 11:30:07.000000000","message":"I\u0027ve finally pinpointed it. This is the part which is creating a problem for me. Please use sys.argv[::1] here instead of an empty list, so that one can pass command line arguments. The rest of the patch is ok-ish, though really, I don\u0027t see the point in using an envvar. Here\u0027s what I use for the neutron-api uwsgi command line:\n\n/usr/bin/uwsgi_python35 \\\n  --https-socket [::]:9696,/usr/local/share/ca-certificates/puppet_openstack.crt,/etc/neutron/ssl/private/poi.infomaniak.ch.pem \\\n  --ini /etc/neutron/neutron-api-uwsgi.ini \\\n  --pyargv \"--config-file\u003d/etc/neutron/neutron.conf --config-file\u003d/etc/neutron/plugins/ml2/ml2_conf.ini\"\n\nNotice the quote when using --pyargv, it doesn\u0027t work to use anything else, like multiple --pyargv parameters.","commit_id":"5b3e128ede4204f1697a8c3ab514094b6164cb2b"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"eff29746d6b8f7e4bb2be048af2576766a495cb4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    dirname \u003d env.get(\u0027OS_NEUTRON_CONFIG_DIR\u0027, NEUTRON_CONF_DIR).strip()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    files \u003d [s.strip() for s in"},{"line_number":40,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    if not files:"},{"line_number":43,"context_line":"        files \u003d [NEUTRON_CONF, NEUTRON_PLUGIN_CONF]"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_c5c6fd9a","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":45},"updated":"2018-06-12 20:13:28.000000000","message":"Personally, I am not sure if we need to support such environmental variable, which introduces a little complexity. If we would like to do this, perhaps using the two variables below, which avoids the usage of \u0027;\u0027 and makes it more intuitive.\n\nOS_NEUTRON_CONFIG_FILE\nOS_NEUTRON_PLUGIN_CONFIG_FILE","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"eff29746d6b8f7e4bb2be048af2576766a495cb4","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def get_application():"},{"line_number":71,"context_line":"    _init_configuration(sys.argv[1:], default_config_files\u003d_get_config_files())"},{"line_number":72,"context_line":"    profiler.setup(\u0027neutron-server\u0027, cfg.CONF.host)"},{"line_number":73,"context_line":"    return config.load_paste_app(\u0027neutron\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_45850d59","line":71,"range":{"start_line":71,"start_character":38,"end_line":71,"end_character":58},"updated":"2018-06-12 20:13:28.000000000","message":"It seems that we introduce a non-standard option (--default-config-files \u003cxxx\u003e) in here to let caller specify the set of config files? However, keep in mind that there is a standard option (--config-file [1]) for that. Should we introduce another option to achieve the arguably the same? By looking at how other projects did it (e.g. nova [2]), it seems this is not the practice.\n\n[1] https://docs.openstack.org/oslo.config/ocata/cfg.html#loading-config-files\n[2] https://github.com/openstack/nova/blob/master/nova/api/openstack/placement/wsgi.py#L50","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"408dbe73ffcc47892d4905faa3655f4da52c0a0c","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def get_application():"},{"line_number":71,"context_line":"    _init_configuration(sys.argv[1:], default_config_files\u003d_get_config_files())"},{"line_number":72,"context_line":"    profiler.setup(\u0027neutron-server\u0027, cfg.CONF.host)"},{"line_number":73,"context_line":"    return config.load_paste_app(\u0027neutron\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_8b5734cb","line":71,"range":{"start_line":71,"start_character":38,"end_line":71,"end_character":58},"in_reply_to":"5f7c97a3_45850d59","updated":"2018-06-19 06:46:53.000000000","message":"Done! Thanks!","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"51d40bbf50544040a4d4ba48a1f4ff648103aefc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.common import config"},{"line_number":26,"context_line":"from neutron.common import profiler"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# These env var need for mod_wsgi"},{"line_number":29,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":30,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":31,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"5f7c97a3_9e7a5cee","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":20},"updated":"2018-06-14 22:46:42.000000000","message":"\u0027environment variables are needed\u0027","commit_id":"5bdf55bd7ddef4444cd3200c72c9e15d5595c2b9"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a362b07793073a3ac252bd8db82eab1815a3f866","unresolved":false,"context_lines":[{"line_number":34,"context_line":"def _get_config_files(env\u003dNone):"},{"line_number":35,"context_line":"    if env is None:"},{"line_number":36,"context_line":"        env \u003d os.environ"},{"line_number":37,"context_line":"    dirname \u003d env.get(\u0027OS_NEUTRON_CONFIG_DIR\u0027, NEUTRON_CONF_DIR).strip()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    files \u003d [s.strip() for s in"},{"line_number":40,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_77025f0b","line":37,"range":{"start_line":37,"start_character":22,"end_line":37,"end_character":45},"updated":"2018-06-22 20:31:05.000000000","message":"question: I don\u0027t this in environment in case of devstack, so if someone is using different tool to install neutron would it be same for all ?","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4230412d25b757269bbaf8d9fc896249b3128de1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"def _get_config_files(env\u003dNone):"},{"line_number":35,"context_line":"    if env is None:"},{"line_number":36,"context_line":"        env \u003d os.environ"},{"line_number":37,"context_line":"    dirname \u003d env.get(\u0027OS_NEUTRON_CONFIG_DIR\u0027, NEUTRON_CONF_DIR).strip()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    files \u003d [s.strip() for s in"},{"line_number":40,"context_line":"             env.get(\u0027OS_NEUTRON_CONFIG_FILES\u0027, \u0027\u0027).split(\u0027;\u0027) if s.strip()]"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_6e2498c6","line":37,"range":{"start_line":37,"start_character":22,"end_line":37,"end_character":45},"in_reply_to":"5f7c97a3_77025f0b","updated":"2018-06-26 10:57:04.000000000","message":"Yes. It would be same for all. We are expected OS_NEUTRON_CONFIG_DIR, OS_NEUTRON_CONFIG_FILES will be exported before they install neutron. \n\nIf you deploy neutron under uwsgi, then you can ignore this. Because uwsgi allow load config from cmd with option --pyargv [1].\n\n[1] http://uwsgi-docs.readthedocs.io/en/latest/Options.html#pyargv","commit_id":"1e7fb1f503bde90e1fc60a81a890c1588552247c"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"f2866a48c52795e0b3125a9710e3501eb097fcc4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.common import config"},{"line_number":26,"context_line":"from neutron.common import profiler"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# These environment variables are needed for mod_wsgi"},{"line_number":29,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":30,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":31,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_2858c154","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":53},"updated":"2018-07-20 18:26:08.000000000","message":"I\u0027d suggest to elaborate comment with warning about path of config files, in case someone is using different tool for deploying openstack may have different default, so notifying that in comment would help.","commit_id":"6e482c2b43d23fcdd0e9a73312c7628970b6fed3"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"2484f1c134bb5dae4955868bd791d1aedf92b65d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.common import config"},{"line_number":26,"context_line":"from neutron.common import profiler"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# These environment variables are needed for mod_wsgi"},{"line_number":29,"context_line":"NEUTRON_CONF \u003d \u0027neutron.conf\u0027"},{"line_number":30,"context_line":"NEUTRON_CONF_DIR \u003d \u0027/etc/neutron/\u0027"},{"line_number":31,"context_line":"NEUTRON_PLUGIN_CONF \u003d \u0027plugins/ml2/ml2_conf.ini\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_1c6db466","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":53},"in_reply_to":"5f7c97a3_2858c154","updated":"2018-07-25 08:34:04.000000000","message":"Done","commit_id":"6e482c2b43d23fcdd0e9a73312c7628970b6fed3"}],"neutron/server/rpc_eventlet.py":[{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e469b9f54f55394df25953de2218abc89642893f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        manager.init()"},{"line_number":36,"context_line":"        ext_mgr \u003d extensions.PluginAwareExtensionManager.get_instance()"},{"line_number":37,"context_line":"        ext_mgr.extend_resources(\"2.0\", attributes.RESOURCES)"},{"line_number":38,"context_line":"        rpc_workers_launcher \u003d service.start_all_workers()"},{"line_number":39,"context_line":"    except NotImplementedError:"},{"line_number":40,"context_line":"        LOG.info(\"RPC was already started in parent process by \""},{"line_number":41,"context_line":"                 \"plugin.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_4e0beed4","line":38,"range":{"start_line":38,"start_character":39,"end_line":38,"end_character":56},"updated":"2018-04-24 09:56:37.000000000","message":"Do we need to start_all_workers here? or just start_rpc_workers?","commit_id":"0f2ed735d290945b9c6d521ce6cc6f18d2dfc7d2"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"9bea62084cb075b370ab9592d9959f3ba6eb8207","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        manager.init()"},{"line_number":36,"context_line":"        ext_mgr \u003d extensions.PluginAwareExtensionManager.get_instance()"},{"line_number":37,"context_line":"        ext_mgr.extend_resources(\"2.0\", attributes.RESOURCES)"},{"line_number":38,"context_line":"        rpc_workers_launcher \u003d service.start_rpc_workers()"},{"line_number":39,"context_line":"    except NotImplementedError:"},{"line_number":40,"context_line":"        LOG.info(\"RPC was already started in parent process by \""},{"line_number":41,"context_line":"                 \"plugin.\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_da6a407f","line":38,"range":{"start_line":38,"start_character":39,"end_line":38,"end_character":56},"updated":"2018-06-01 08:36:58.000000000","message":"we shouldn\u0027t use start_all_workers, should we?","commit_id":"20e1335b1ca63dd9e8821c99d666703986c395f3"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"ee30bd3f530a45a167ae1aca6972deef8f47dda0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        manager.init()"},{"line_number":36,"context_line":"        ext_mgr \u003d extensions.PluginAwareExtensionManager.get_instance()"},{"line_number":37,"context_line":"        ext_mgr.extend_resources(\"2.0\", attributes.RESOURCES)"},{"line_number":38,"context_line":"        rpc_workers_launcher \u003d service.start_all_workers()"},{"line_number":39,"context_line":"    except NotImplementedError:"},{"line_number":40,"context_line":"        LOG.info(\"RPC was already started in parent process by \""},{"line_number":41,"context_line":"                 \"plugin.\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_57e29002","line":38,"range":{"start_line":38,"start_character":39,"end_line":38,"end_character":56},"updated":"2018-06-13 14:15:27.000000000","message":"@thomas: Can you please replace start_all_workers by start_rpc_workers and try to test with the test?","commit_id":"7288497248b1f1a237e93aa78bc5bf5d32cf1774"}],"neutron/service.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"fc09f44073e371180cc869eb4498b5a417f6366f","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    rpc_workers \u003d _get_rpc_workers()"},{"line_number":272,"context_line":"    launcher \u003d _start_workers(rpc_workers)"},{"line_number":273,"context_line":"    registry.publish(resources.PROCESS, events.AFTER_SPAWN, None)"},{"line_number":274,"context_line":"    LOG.debug(\u0027using launcher for rpc, workers\u003d%s\u0027, cfg.CONF.rpc_workers)"},{"line_number":275,"context_line":"    return launcher"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_126e022c","line":274,"range":{"start_line":274,"start_character":4,"end_line":274,"end_character":73},"updated":"2018-06-29 23:17:31.000000000","message":"shouldn\u0027t this be before L272 as it was there before calling _start_workers(rpc_workers), so I guess sequence of logging should be same and doesn\u0027t matter ?","commit_id":"3f3c84b94d5c1ed167a11bed2105fca4440098fa"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"d89e132d6ec5cfee83fb4587b71ed1037fccde44","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    rpc_workers \u003d _get_rpc_workers()"},{"line_number":272,"context_line":"    launcher \u003d _start_workers(rpc_workers)"},{"line_number":273,"context_line":"    registry.publish(resources.PROCESS, events.AFTER_SPAWN, None)"},{"line_number":274,"context_line":"    LOG.debug(\u0027using launcher for rpc, workers\u003d%s\u0027, cfg.CONF.rpc_workers)"},{"line_number":275,"context_line":"    return launcher"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_4fd7c7ef","line":274,"range":{"start_line":274,"start_character":4,"end_line":274,"end_character":73},"in_reply_to":"5f7c97a3_126e022c","updated":"2018-07-03 07:49:46.000000000","message":"Hi Manjeet,\n\nThank you! Done. :)","commit_id":"3f3c84b94d5c1ed167a11bed2105fca4440098fa"}],"requirements.txt":[{"author":{"_account_id":25254,"name":"Nguyen Van Trung","email":"trungnvfet@outlook.com","username":"trungnv"},"change_message_id":"d4978886780d4059a3bb667fa6f9d4eabc436bbc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"python-novaclient\u003e\u003d9.1.0 # Apache-2.0"},{"line_number":52,"context_line":"python-designateclient\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":53,"context_line":"os-xenapi\u003e\u003d0.3.1 # Apache-2.0"},{"line_number":54,"context_line":"gevent\u003e\u003d1.2.2 # MIT License"}],"source_content_type":"text/plain","patch_set":23,"id":"5f7c97a3_4f41a338","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":14},"updated":"2018-06-13 02:55:04.000000000","message":"Perhaps, we need to listed out gevent package into https://github.com/openstack/requirements/blob/master/global-requirements.txt","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"408dbe73ffcc47892d4905faa3655f4da52c0a0c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"python-novaclient\u003e\u003d9.1.0 # Apache-2.0"},{"line_number":52,"context_line":"python-designateclient\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":53,"context_line":"os-xenapi\u003e\u003d0.3.1 # Apache-2.0"},{"line_number":54,"context_line":"gevent\u003e\u003d1.2.2 # MIT License"}],"source_content_type":"text/plain","patch_set":23,"id":"5f7c97a3_ab41d00c","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":14},"in_reply_to":"5f7c97a3_4f41a338","updated":"2018-06-19 06:46:53.000000000","message":"Done","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"}],"test-requirements.txt":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"eff29746d6b8f7e4bb2be048af2576766a495cb4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# Needed to run DB commands in virtualenvs"},{"line_number":22,"context_line":"PyMySQL\u003e\u003d0.7.6 # MIT License"},{"line_number":23,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"},{"line_number":24,"context_line":"gevent\u003e\u003d1.2.2 # MIT License"}],"source_content_type":"text/plain","patch_set":23,"id":"5f7c97a3_2c61dea9","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":6},"updated":"2018-06-12 20:13:28.000000000","message":"Nit: I saw this has been added to requirements.txt, so perhaps we don\u0027t need to add it to here.","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"408dbe73ffcc47892d4905faa3655f4da52c0a0c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# Needed to run DB commands in virtualenvs"},{"line_number":22,"context_line":"PyMySQL\u003e\u003d0.7.6 # MIT License"},{"line_number":23,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"},{"line_number":24,"context_line":"gevent\u003e\u003d1.2.2 # MIT License"}],"source_content_type":"text/plain","patch_set":23,"id":"5f7c97a3_6b43b812","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":6},"in_reply_to":"5f7c97a3_2c61dea9","updated":"2018-06-19 06:46:53.000000000","message":"Done","commit_id":"46d1aa6a50b55b1cafc1ae25a9533a733979038f"}]}
