)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"c3da3e9f22de3390da496d3c16b2764514ceaf99","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jingting \u003ckangjingting@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-25 17:29:59 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"dd port \u0027up\u0027 and \u0027down\u0027 status notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds the ability syn DF db port status"},{"line_number":10,"context_line":"to Neutron db by monitoring ovsdb at each"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_185ce67b","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"updated":"2016-06-27 01:44:32.000000000","message":"what does dd mean?","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jingting \u003ckangjingting@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-25 17:29:59 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"dd port \u0027up\u0027 and \u0027down\u0027 status notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds the ability syn DF db port status"},{"line_number":10,"context_line":"to Neutron db by monitoring ovsdb at each"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_d3e6bf42","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"in_reply_to":"3aaa91ec_185ce67b","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"c3da3e9f22de3390da496d3c16b2764514ceaf99","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to Neutron db by monitoring ovsdb at each"},{"line_number":11,"context_line":"compute node."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch handles the Logical port status up/donw updates"},{"line_number":14,"context_line":"At startup, it catches the initial \u0027create\u0027 events from"},{"line_number":15,"context_line":"ovsdb server and updates the port status if not in sync."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_9848d6b4","line":13,"range":{"start_line":13,"start_character":46,"end_line":13,"end_character":50},"updated":"2016-06-27 01:44:32.000000000","message":"typo","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to Neutron db by monitoring ovsdb at each"},{"line_number":11,"context_line":"compute node."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch handles the Logical port status up/donw updates"},{"line_number":14,"context_line":"At startup, it catches the initial \u0027create\u0027 events from"},{"line_number":15,"context_line":"ovsdb server and updates the port status if not in sync."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_b3e1732c","line":13,"range":{"start_line":13,"start_character":46,"end_line":13,"end_character":50},"in_reply_to":"3aaa91ec_9848d6b4","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"c3da3e9f22de3390da496d3c16b2764514ceaf99","unresolved":false,"context_lines":[{"line_number":11,"context_line":"compute node."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch handles the Logical port status up/donw updates"},{"line_number":14,"context_line":"At startup, it catches the initial \u0027create\u0027 events from"},{"line_number":15,"context_line":"ovsdb server and updates the port status if not in sync."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"If the Logical_Port.up changes from False to True"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_f8c91a27","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":2},"updated":"2016-06-27 01:44:32.000000000","message":"at","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":11,"context_line":"compute node."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch handles the Logical port status up/donw updates"},{"line_number":14,"context_line":"At startup, it catches the initial \u0027create\u0027 events from"},{"line_number":15,"context_line":"ovsdb server and updates the port status if not in sync."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"If the Logical_Port.up changes from False to True"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3aaa91ec_f3d5bb42","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":2},"in_reply_to":"3aaa91ec_f8c91a27","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"}],"doc/source/specs/index.rst":[{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    metadata_service"},{"line_number":49,"context_line":"    redis_availability"},{"line_number":50,"context_line":"    allowed_address_pairs"},{"line_number":51,"context_line":"    update_port_status"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Indices and tables"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_18118604","line":51,"updated":"2016-06-27 01:40:21.000000000","message":"Better to use a consistent naming convention. As a suggestion here, I would recommend to use \"port_status_update\".","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"}],"doc/source/specs/port_status_update.rst":[{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b5a48135c2bf9f217ce66a175e886faca1a5f34d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Port status update\r"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":9,"context_line":"\r"},{"line_number":10,"context_line":"https://blueprints.launchpad.net/dragonflow/+spec/allowed-address-pairs\r"},{"line_number":11,"context_line":"\r"},{"line_number":12,"context_line":"This blueprint describes how to support port status update for\r"},{"line_number":13,"context_line":"Dragonflow.\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_e3233f54","line":10,"range":{"start_line":10,"start_character":50,"end_line":10,"end_character":57},"updated":"2016-06-25 08:14:33.000000000","message":"point to you own bp, ^o^","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Port status update\r"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":9,"context_line":"\r"},{"line_number":10,"context_line":"https://blueprints.launchpad.net/dragonflow/+spec/allowed-address-pairs\r"},{"line_number":11,"context_line":"\r"},{"line_number":12,"context_line":"This blueprint describes how to support port status update for\r"},{"line_number":13,"context_line":"Dragonflow.\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_e3617f06","line":10,"range":{"start_line":10,"start_character":50,"end_line":10,"end_character":57},"in_reply_to":"3aaa91ec_e3233f54","updated":"2016-06-25 09:24:46.000000000","message":"done","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b5a48135c2bf9f217ce66a175e886faca1a5f34d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port sutatus\r"},{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created,\r"},{"line_number":21,"context_line":"leaving Neutron DB port status unchanged.Because of the status of port\r"},{"line_number":22,"context_line":"in Neutron being same before and after DF db processed, thus no event\r"},{"line_number":23,"context_line":"sent to nova.\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_23f1c7cd","line":20,"updated":"2016-06-25 08:14:33.000000000","message":"Currently,","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port sutatus\r"},{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created,\r"},{"line_number":21,"context_line":"leaving Neutron DB port status unchanged.Because of the status of port\r"},{"line_number":22,"context_line":"in Neutron being same before and after DF db processed, thus no event\r"},{"line_number":23,"context_line":"sent to nova.\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_8346bb78","line":20,"in_reply_to":"3aaa91ec_23f1c7cd","updated":"2016-06-25 09:24:46.000000000","message":"Done","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b5a48135c2bf9f217ce66a175e886faca1a5f34d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created,\r"},{"line_number":21,"context_line":"leaving Neutron DB port status unchanged.Because of the status of port\r"},{"line_number":22,"context_line":"in Neutron being same before and after DF db processed, thus no event\r"},{"line_number":23,"context_line":"sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_a3b3f708","line":23,"updated":"2016-06-25 08:14:33.000000000","message":"is","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created,\r"},{"line_number":21,"context_line":"leaving Neutron DB port status unchanged.Because of the status of port\r"},{"line_number":22,"context_line":"in Neutron being same before and after DF db processed, thus no event\r"},{"line_number":23,"context_line":"sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_a343f76a","line":23,"in_reply_to":"3aaa91ec_a3b3f708","updated":"2016-06-25 09:24:46.000000000","message":"Done","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"e3937586a9c9c4f1e822b0b8be3368daad7ae5e2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_63e0efcd","line":36,"range":{"start_line":36,"start_character":60,"end_line":36,"end_character":66},"updated":"2016-06-25 08:48:58.000000000","message":"Local","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_66b91dcc","line":36,"range":{"start_line":36,"start_character":60,"end_line":36,"end_character":66},"in_reply_to":"3aaa91ec_63e0efcd","updated":"2016-06-25 09:24:46.000000000","message":"Done","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"e3937586a9c9c4f1e822b0b8be3368daad7ae5e2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"Publisher subscriber pattern\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_66775da0","line":40,"range":{"start_line":40,"start_character":53,"end_line":40,"end_character":68},"updated":"2016-06-25 08:48:58.000000000","message":"Now, to ensure df-db and neutron db are consistent, df ml2 driver has will update the \u0027version\u0027 when data record changes.\nPlease take this into account.","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"Publisher subscriber pattern\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_06bf79aa","line":40,"range":{"start_line":40,"start_character":53,"end_line":40,"end_character":68},"in_reply_to":"3aaa91ec_66775da0","updated":"2016-06-25 09:24:46.000000000","message":"Maybe only change port status in both df-db and neutron db","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"e3937586a9c9c4f1e822b0b8be3368daad7ae5e2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"Publisher subscriber pattern\r"},{"line_number":44,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_e3421fad","line":41,"range":{"start_line":40,"start_character":6,"end_line":41,"end_character":51},"updated":"2016-06-25 08:48:58.000000000","message":"DF Driver only update neturon db, does it need to call update_port_status method of the plugin, and call the other drivers\u0027 method?","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"Publisher subscriber pattern\r"},{"line_number":44,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_46318159","line":41,"range":{"start_line":40,"start_character":6,"end_line":41,"end_character":51},"in_reply_to":"3aaa91ec_e3421fad","updated":"2016-06-25 09:24:46.000000000","message":"Only neutron db need be changed, becase the  method  update_port_postcommit in update_port_status will publish event to compute node which is not what we expect.","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b5a48135c2bf9f217ce66a175e886faca1a5f34d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"create a vm which scheduled to compute A. Publisher A will send event\r"},{"line_number":48,"context_line":"with the topic(port_status_update specific).On receiving an event from\r"},{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"                                       +--------------+\r"},{"line_number":53,"context_line":"                                  \u003c----+ Publisher A  |\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_8384fb0a","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":14},"updated":"2016-06-25 08:14:33.000000000","message":"When there is more than one neutron servers, which one should process events of this kind?","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"create a vm which scheduled to compute A. Publisher A will send event\r"},{"line_number":48,"context_line":"with the topic(port_status_update specific).On receiving an event from\r"},{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"                                       +--------------+\r"},{"line_number":53,"context_line":"                                  \u003c----+ Publisher A  |\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_e6a6adac","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":14},"in_reply_to":"3aaa91ec_8384fb0a","updated":"2016-06-25 09:24:46.000000000","message":"We need to consider that there is only one neutron server to porcess the event and that all neutron servers will handle the event. A kind of loadbalance will be introduced. There are several topics(A,B,C,D...),to which each neutron server will subscribe, for example, neturon server A will subscribe to topic A, neutron server B will subscribe to topic B, etc. Each local controller will publish different topic according to the result of porcessing its hostid or something else.","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b5a48135c2bf9f217ce66a175e886faca1a5f34d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":66,"context_line":"A special topic defined for port update status event shared by all tenants.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"Pros and Cons\r"},{"line_number":69,"context_line":"-------------\r"},{"line_number":70,"context_line":"Pros\r"},{"line_number":71,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_a398176b","line":68,"updated":"2016-06-25 08:14:33.000000000","message":"By listing pros and cons of this method, do you want to compare it with other methods?","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"015b808fe69b66fc9c644cfdaaa51b3ea36938b9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":66,"context_line":"A special topic defined for port update status event shared by all tenants.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"Pros and Cons\r"},{"line_number":69,"context_line":"-------------\r"},{"line_number":70,"context_line":"Pros\r"},{"line_number":71,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3aaa91ec_a33ad7e4","line":68,"in_reply_to":"3aaa91ec_a398176b","updated":"2016-06-25 09:24:46.000000000","message":"yes. Msseage queue could be considered, but it would need modules from third party software. In addition, there will be more cpu usage as additional services would start to support it.","commit_id":"ee61f24783d8dc87a2b820cc6c6e9f2275236f5a"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Port status update\r"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":9,"context_line":"\r"},{"line_number":10,"context_line":"https://blueprints.launchpad.net/dragonflow/+spec/port-status-update\r"},{"line_number":11,"context_line":"\r"},{"line_number":12,"context_line":"This blueprint describes how to support port status update for\r"},{"line_number":13,"context_line":"Dragonflow.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_38dc4245","line":10,"updated":"2016-06-27 01:40:21.000000000","message":"You should carefully give the description on this link. Suggest to review it and correct your mistakes.","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem Description\r"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port sutatus\r"},{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_58a14e93","line":18,"updated":"2016-06-27 01:40:21.000000000","message":"Please check your typo for \"status\".\nBesides, please keep your convention consistently. Instead of \"DB\", recommend to use \"database\" through the whole document.","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem Description\r"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port sutatus\r"},{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_a534504a","line":18,"in_reply_to":"3aaa91ec_58a14e93","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron being same before and after DF db processed, thus no\r"},{"line_number":23,"context_line":"event is sent to nova.\r"},{"line_number":24,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_d8309e58","line":21,"range":{"start_line":21,"start_character":49,"end_line":21,"end_character":52},"updated":"2016-06-27 01:36:56.000000000","message":"Need a space","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":18,"context_line":"between DF db and neturon DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron being same before and after DF db processed, thus no\r"},{"line_number":23,"context_line":"event is sent to nova.\r"},{"line_number":24,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_85395444","line":21,"range":{"start_line":21,"start_character":49,"end_line":21,"end_character":52},"in_reply_to":"3aaa91ec_d8309e58","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron being same before and after DF db processed, thus no\r"},{"line_number":23,"context_line":"event is sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":27,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f8df5a0a","line":24,"updated":"2016-06-27 01:40:21.000000000","message":"Please reform your sentences...","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged.Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron being same before and after DF db processed, thus no\r"},{"line_number":23,"context_line":"event is sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":27,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_e53e5828","line":24,"in_reply_to":"3aaa91ec_f8df5a0a","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Design principle\r"},{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"The pricinple is very simple:\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_b8e67241","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":29},"updated":"2016-06-27 01:36:56.000000000","message":"I guess we can remove this sentence","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Design principle\r"},{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"The pricinple is very simple:\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_6511c8af","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":29},"in_reply_to":"3aaa91ec_b8e67241","updated":"2016-06-28 02:10:49.000000000","message":"maybe you are right","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"The pricinple is very simple:\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f87bdaf2","line":33,"updated":"2016-06-27 01:40:21.000000000","message":"DF ML2 mechanism driver subscribes a special topic sent by the publisher from each compute node.","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"The pricinple is very simple:\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_851034aa","line":33,"in_reply_to":"3aaa91ec_f87bdaf2","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_78708a0b","line":36,"updated":"2016-06-27 01:40:21.000000000","message":"*creates\n*VM","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DF ML2 mechanism driver subscribe special topic which is sent\r"},{"line_number":34,"context_line":"by publisher from each compute node\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f8d2ba5a","line":36,"range":{"start_line":36,"start_character":10,"end_line":36,"end_character":16},"updated":"2016-06-27 01:36:56.000000000","message":"creates, and vm-\u003eVM could be better","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_78c7ea95","line":38,"range":{"start_line":38,"start_character":34,"end_line":38,"end_character":44},"updated":"2016-06-27 01:36:56.000000000","message":"need a period","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_c5febc37","line":38,"range":{"start_line":38,"start_character":34,"end_line":38,"end_character":44},"in_reply_to":"3aaa91ec_78c7ea95","updated":"2016-06-28 02:10:49.000000000","message":"what do you mean here？","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"02108a154267663017c2a6b88738b4e0d9bf5e25","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"When nova create a vm, it will call neutron API create_port. Local\r"},{"line_number":37,"context_line":"controller on compute node is notified to process the port, and after\r"},{"line_number":38,"context_line":"that, it changes DF db, then publishes event\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"DF ML2 mechanism driver will update relative data in Neutron db afer\r"},{"line_number":41,"context_line":"get message from publisher with the specific topic.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_0b061220","line":38,"range":{"start_line":38,"start_character":34,"end_line":38,"end_character":44},"in_reply_to":"3aaa91ec_c5febc37","updated":"2016-06-28 03:56:37.000000000","message":"event -\u003e event.","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":44,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r"},{"line_number":45,"context_line":"Port status update feature depends on the sub-pub function shown in the\r"},{"line_number":46,"context_line":"following diagram. When there is a port status change, for example, nova\r"},{"line_number":47,"context_line":"create a vm which scheduled to compute A. Publisher A will send event\r"},{"line_number":48,"context_line":"with the topic(port_status_update specific).On receiving an event from\r"},{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_1837c64d","line":47,"updated":"2016-06-27 01:40:21.000000000","message":"ditto","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":46,"context_line":"following diagram. When there is a port status change, for example, nova\r"},{"line_number":47,"context_line":"create a vm which scheduled to compute A. Publisher A will send event\r"},{"line_number":48,"context_line":"with the topic(port_status_update specific).On receiving an event from\r"},{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_180ea68b","line":49,"updated":"2016-06-27 01:40:21.000000000","message":"the subscriber in the server node will invoke a callback function","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":46,"context_line":"following diagram. When there is a port status change, for example, nova\r"},{"line_number":47,"context_line":"create a vm which scheduled to compute A. Publisher A will send event\r"},{"line_number":48,"context_line":"with the topic(port_status_update specific).On receiving an event from\r"},{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_65bb8876","line":49,"in_reply_to":"3aaa91ec_180ea68b","updated":"2016-06-28 02:10:49.000000000","message":"nice use case!","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"},{"line_number":53,"context_line":"event and that all neutron servers will handle the event. A kind of\r"},{"line_number":54,"context_line":"loadbalance will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neturon server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f8b8fac9","line":53,"range":{"start_line":52,"start_character":33,"end_line":53,"end_character":56},"updated":"2016-06-27 01:36:56.000000000","message":"I don\u0027t understacn what you mean, can you explain it?","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":49,"context_line":"publisher, the subscriber in server node will do callback function, and\r"},{"line_number":50,"context_line":"finally change port status in neutron db.\r"},{"line_number":51,"context_line":"\r"},{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"},{"line_number":53,"context_line":"event and that all neutron servers will handle the event. A kind of\r"},{"line_number":54,"context_line":"loadbalance will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neturon server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_93d1d725","line":53,"range":{"start_line":52,"start_character":33,"end_line":53,"end_character":56},"in_reply_to":"3aaa91ec_f8b8fac9","updated":"2016-06-28 02:10:49.000000000","message":"mybe describe like this:\nWe need to consider that there is only one neutron server to porcess the event in the same time and that all neutron servers will have chance to handle the event","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"},{"line_number":53,"context_line":"event and that all neutron servers will handle the event. A kind of\r"},{"line_number":54,"context_line":"loadbalance will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neturon server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"},{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of porcessing its hostid or something else.\r"},{"line_number":59,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_78fb6a79","line":56,"range":{"start_line":55,"start_character":55,"end_line":56,"end_character":75},"updated":"2016-06-27 01:36:56.000000000","message":"1. You are going to do this in the process of neutron-server or some green thread spawned from neutron-server ? \n2. Could u explain more about how to implement the loadbalancer? IMO, it will be complicated","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":52,"context_line":"We need to consider that there is only one neutron server to porcess the\r"},{"line_number":53,"context_line":"event and that all neutron servers will handle the event. A kind of\r"},{"line_number":54,"context_line":"loadbalance will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neturon server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"},{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of porcessing its hostid or something else.\r"},{"line_number":59,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_d3c7df61","line":56,"range":{"start_line":55,"start_character":55,"end_line":56,"end_character":75},"in_reply_to":"3aaa91ec_78fb6a79","updated":"2016-06-28 02:10:49.000000000","message":"1 Actually,there is a thread running in ther server node spawned by DB driver.\n2 I will make an example.","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":71,"context_line":"\r"},{"line_number":72,"context_line":"The topic for port status\r"},{"line_number":73,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":74,"context_line":"A special topic defined for port update status event shared by all tenants.\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"Pros and Cons\r"},{"line_number":77,"context_line":"-------------\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_98c29651","line":74,"range":{"start_line":74,"start_character":53,"end_line":74,"end_character":59},"updated":"2016-06-27 01:36:56.000000000","message":"is shared","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":71,"context_line":"\r"},{"line_number":72,"context_line":"The topic for port status\r"},{"line_number":73,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":74,"context_line":"A special topic defined for port update status event shared by all tenants.\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"Pros and Cons\r"},{"line_number":77,"context_line":"-------------\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_37fed305","line":74,"range":{"start_line":74,"start_character":53,"end_line":74,"end_character":59},"in_reply_to":"3aaa91ec_98c29651","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Pros\r"},{"line_number":79,"context_line":"\r"},{"line_number":80,"context_line":"Neutron server perfermance would be considered while there are lots of\r"},{"line_number":81,"context_line":"publishers on each compute node and only several subscribersin server node\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f8063a84","line":81,"updated":"2016-06-27 01:40:21.000000000","message":"subscribersin -\u003e subscribers in the","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Pros\r"},{"line_number":79,"context_line":"\r"},{"line_number":80,"context_line":"Neutron server perfermance would be considered while there are lots of\r"},{"line_number":81,"context_line":"publishers on each compute node and only several subscribersin server node\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_18ad069b","line":81,"range":{"start_line":81,"start_character":49,"end_line":81,"end_character":62},"updated":"2016-06-27 01:36:56.000000000","message":"typo","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Pros\r"},{"line_number":79,"context_line":"\r"},{"line_number":80,"context_line":"Neutron server perfermance would be considered while there are lots of\r"},{"line_number":81,"context_line":"publishers on each compute node and only several subscribersin server node\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f71c4b6c","line":81,"in_reply_to":"3aaa91ec_f8063a84","updated":"2016-06-28 02:10:49.000000000","message":"Done","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":20128,"name":"Han Chao","email":"hanchao7@lenovo.com","username":"HanChao"},"change_message_id":"901217d48317e758696ef2ce27a6afc1358b20eb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"},{"line_number":85,"context_line":"There are rarely chagnes to the previous architecture, because of decouple\r"},{"line_number":86,"context_line":"between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_f82d9afe","line":85,"updated":"2016-06-27 01:40:21.000000000","message":"decouple -\u003e the decoupling","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"},{"line_number":85,"context_line":"There are rarely chagnes to the previous architecture, because of decouple\r"},{"line_number":86,"context_line":"between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_372533ae","line":85,"in_reply_to":"3aaa91ec_f82d9afe","updated":"2016-06-28 02:10:49.000000000","message":"good","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"2c85091ced3c2055e0f0d59d8366eca0016ffa10","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"},{"line_number":85,"context_line":"There are rarely chagnes to the previous architecture, because of decouple\r"},{"line_number":86,"context_line":"between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_9870d641","line":86,"range":{"start_line":85,"start_character":0,"end_line":86,"end_character":61},"updated":"2016-06-27 01:36:56.000000000","message":"Is this a disadvantage?","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"2744568e03faf8afe784a646930b246d93302910","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"Cons\r"},{"line_number":84,"context_line":"\r"},{"line_number":85,"context_line":"There are rarely chagnes to the previous architecture, because of decouple\r"},{"line_number":86,"context_line":"between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3aaa91ec_973d07be","line":86,"range":{"start_line":85,"start_character":0,"end_line":86,"end_character":61},"in_reply_to":"3aaa91ec_9870d641","updated":"2016-06-28 02:10:49.000000000","message":"sorry, made a mistake here","commit_id":"cc0d32afb72c70f0ca12628a7fca7c57127354cb"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"f47bde4a65ae8cccad930d9521940b2aceace1b0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"                                       +--------------+\r"},{"line_number":69,"context_line":"                                  \u003c----+ Publisher A  |\r"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_e2a48409","line":66,"range":{"start_line":62,"start_character":28,"end_line":66,"end_character":23},"updated":"2016-06-28 06:16:08.000000000","message":"What if we add/remove a compute node?","commit_id":"79028383f6ceaf10d11659ea79de05689c5e9677"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"e9c91a9b53f5ca17d6a0d230bdc83dd30783a2c8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"                                       +--------------+\r"},{"line_number":69,"context_line":"                                  \u003c----+ Publisher A  |\r"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_25afb6e4","line":66,"range":{"start_line":62,"start_character":28,"end_line":66,"end_character":23},"in_reply_to":"3aaa91ec_e2a48409","updated":"2016-06-28 06:50:14.000000000","message":"thanks, I can explain how to solve this problem: \nActually, here the parameter number of MOD could be int(IP), and divisor might be actual number of server node. So, in this case, we can ignore the impact of increasing or decreasing compute nodes.","commit_id":"79028383f6ceaf10d11659ea79de05689c5e9677"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"f47bde4a65ae8cccad930d9521940b2aceace1b0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"when all compute nodes are online concurrently.\r"},{"line_number":102,"context_line":"\r"},{"line_number":103,"context_line":"We must guarantee that the compute nodes should perceive a\r"},{"line_number":104,"context_line":"tatus(down/up) of server node to which it send event immediately, and\r"},{"line_number":105,"context_line":"rapid recovery of accessibility between server node and compute node\r"},{"line_number":106,"context_line":"if failure occurs.\r"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_22416c3a","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":14},"updated":"2016-06-28 06:16:08.000000000","message":"typo","commit_id":"79028383f6ceaf10d11659ea79de05689c5e9677"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"e9c91a9b53f5ca17d6a0d230bdc83dd30783a2c8","unresolved":false,"context_lines":[{"line_number":101,"context_line":"when all compute nodes are online concurrently.\r"},{"line_number":102,"context_line":"\r"},{"line_number":103,"context_line":"We must guarantee that the compute nodes should perceive a\r"},{"line_number":104,"context_line":"tatus(down/up) of server node to which it send event immediately, and\r"},{"line_number":105,"context_line":"rapid recovery of accessibility between server node and compute node\r"},{"line_number":106,"context_line":"if failure occurs.\r"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_421d98bc","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":14},"in_reply_to":"3aaa91ec_22416c3a","updated":"2016-06-28 06:50:14.000000000","message":"Done","commit_id":"79028383f6ceaf10d11659ea79de05689c5e9677"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"97c49b213aceb92605e383810d1d2b9f21d0043b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"Problem Description\r"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port status\r"},{"line_number":18,"context_line":"between DF DB and neutron DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_16dd8e70","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":10},"updated":"2016-06-28 08:37:26.000000000","message":"typo","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"Problem Description\r"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\r"},{"line_number":17,"context_line":"Port satus update feature will enable synchronization of port status\r"},{"line_number":18,"context_line":"between DF DB and neutron DB.\r"},{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_9e04494a","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":10},"in_reply_to":"3aaa91ec_16dd8e70","updated":"2016-07-01 02:29:37.000000000","message":"Done","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"97c49b213aceb92605e383810d1d2b9f21d0043b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged. Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron remains the same before and after DF DB processed, thus no\r"},{"line_number":23,"context_line":"event being sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_3669aa8c","line":22,"range":{"start_line":22,"start_character":11,"end_line":22,"end_character":18},"updated":"2016-06-28 08:37:26.000000000","message":"suggest use same description in this file. neutron or Neutron","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\r"},{"line_number":20,"context_line":"There is only port status in DF database updated after ports are created\r"},{"line_number":21,"context_line":"currently leaving Neutron DB port status unchanged. Because of the status\r"},{"line_number":22,"context_line":"of port in Neutron remains the same before and after DF DB processed, thus no\r"},{"line_number":23,"context_line":"event being sent to nova.\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"Proposed Change\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_3ea0b541","line":22,"range":{"start_line":22,"start_character":11,"end_line":22,"end_character":18},"in_reply_to":"3aaa91ec_3669aa8c","updated":"2016-07-01 02:29:37.000000000","message":"thanks,neutron will be ok!","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"97c49b213aceb92605e383810d1d2b9f21d0043b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Design principle\r"},{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"DF ML2 mechanism driver subscribe special a topic  sent by publisher from\r"},{"line_number":32,"context_line":"each compute node.\r"},{"line_number":33,"context_line":"\r"},{"line_number":34,"context_line":"When nova create a VM, it will call neutron API create_port. Local\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_36e40a3a","line":31,"range":{"start_line":31,"start_character":49,"end_line":31,"end_character":51},"updated":"2016-06-28 08:37:26.000000000","message":"2 spaces","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"97c49b213aceb92605e383810d1d2b9f21d0043b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_16b0ee8a","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":35},"updated":"2016-06-28 08:37:26.000000000","message":"suggest using quotation marks: \"MOD(number, divisor)\"","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_be8ca5d7","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":35},"in_reply_to":"3aaa91ec_16b0ee8a","updated":"2016-07-01 02:29:37.000000000","message":"Done","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"13b0dcac0e630cf5cec37126fdbbb6321656bf5c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of processing its HostID or something else.\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"Actually, here the parameter number of MOD might be int(compute node IP),\r"},{"line_number":69,"context_line":"and divisor might be actual number of server node. So in this case, we can\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_2ffd9e3a","line":66,"range":{"start_line":60,"start_character":0,"end_line":66,"end_character":23},"updated":"2016-06-29 01:57:32.000000000","message":"This is not stable at all. What if node3 is down when you MOD(number, divisor) and send messages to that node? We need to introduce election or health check for the node status. You can discuss with hujie who is working on the related functions.","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of processing its HostID or something else.\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and 400 compute nodes. Base on\r"},{"line_number":61,"context_line":"the previous description, there are 4 topics, A for node1, B for node2, C\r"},{"line_number":62,"context_line":"for node3, and D for node4. At the side of compute nodes, we need to have\r"},{"line_number":63,"context_line":"a MOD function MOD(number, divisor), parameter number meaning dividend, and\r"},{"line_number":64,"context_line":"parameter divisor here of course meaning divisor. Finally compute node 1,5,\r"},{"line_number":65,"context_line":"9,13...will send event to server A, and compute nodes 2,6,10,14...will send\r"},{"line_number":66,"context_line":"event to server B, etc.\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"Actually, here the parameter number of MOD might be int(compute node IP),\r"},{"line_number":69,"context_line":"and divisor might be actual number of server node. So in this case, we can\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_8c48a32e","line":66,"range":{"start_line":60,"start_character":0,"end_line":66,"end_character":23},"in_reply_to":"3aaa91ec_2ffd9e3a","updated":"2016-07-01 02:29:37.000000000","message":"Yes，we talked about it with DKB and lijunwu，I will update the implementation in new patch，please review it.","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"97c49b213aceb92605e383810d1d2b9f21d0043b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Cons\r"},{"line_number":100,"context_line":"\r"},{"line_number":101,"context_line":"There is only one thread to process events being published from several\r"},{"line_number":102,"context_line":"compute nodes at the same time. Its will not have a serious problem when\r"},{"line_number":103,"context_line":"there are a few nodes, but we should evaluate the process capability of\r"},{"line_number":104,"context_line":"the server in detail while there are too many compute nodes, especially\r"},{"line_number":105,"context_line":"when all compute nodes are online concurrently.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_b13f64d5","line":102,"range":{"start_line":102,"start_character":32,"end_line":102,"end_character":68},"updated":"2016-06-28 08:37:26.000000000","message":"It won\u0027t be a problem","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Cons\r"},{"line_number":100,"context_line":"\r"},{"line_number":101,"context_line":"There is only one thread to process events being published from several\r"},{"line_number":102,"context_line":"compute nodes at the same time. Its will not have a serious problem when\r"},{"line_number":103,"context_line":"there are a few nodes, but we should evaluate the process capability of\r"},{"line_number":104,"context_line":"the server in detail while there are too many compute nodes, especially\r"},{"line_number":105,"context_line":"when all compute nodes are online concurrently.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_2c07efca","line":102,"range":{"start_line":102,"start_character":32,"end_line":102,"end_character":68},"in_reply_to":"3aaa91ec_b13f64d5","updated":"2016-07-01 02:29:37.000000000","message":"Done","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"13b0dcac0e630cf5cec37126fdbbb6321656bf5c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"the server in detail while there are too many compute nodes, especially\r"},{"line_number":105,"context_line":"when all compute nodes are online concurrently.\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"We must guarantee that the compute nodes should perceive status(down/up)\r"},{"line_number":108,"context_line":"of server node to which it send event immediately, and rapid recovery of\r"},{"line_number":109,"context_line":"accessibility between server node and compute node if failure occurs.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_2f947ee0","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":69},"updated":"2016-06-29 01:57:32.000000000","message":"Do you have plans? We don\u0027t need to implement it at the initial stage, but we do need at least a plan for further improvement.","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"32a6c366dc661b23a003e5e3792dbe590cbdebdc","unresolved":false,"context_lines":[{"line_number":104,"context_line":"the server in detail while there are too many compute nodes, especially\r"},{"line_number":105,"context_line":"when all compute nodes are online concurrently.\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"We must guarantee that the compute nodes should perceive status(down/up)\r"},{"line_number":108,"context_line":"of server node to which it send event immediately, and rapid recovery of\r"},{"line_number":109,"context_line":"accessibility between server node and compute node if failure occurs.\r"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_ec184720","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":69},"in_reply_to":"3aaa91ec_2f947ee0","updated":"2016-07-01 02:29:37.000000000","message":"Maybe the implementation described in previous paragraph will cover this problem.","commit_id":"f8e8373d88f0648f512665d95327af88e27207c2"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"0addca6c51cde96b97829e519f53507924bf1b7f","unresolved":false,"context_lines":[{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and several compute nodes. Base\r"},{"line_number":61,"context_line":"on the previous description, there are 4 topics, which will be subscribed\r"},{"line_number":62,"context_line":"by compute node, stored in DF DB. Sever node will update its topic timestamp\r"},{"line_number":63,"context_line":"store in DF DB which representing it\u0027s alive. If new a server node is added\r"},{"line_number":64,"context_line":"in server cluster, there will be a new topic added in DF DB, and the total\r"},{"line_number":65,"context_line":"number will be updated also.\r"},{"line_number":66,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_675630cf","line":63,"range":{"start_line":63,"start_character":49,"end_line":63,"end_character":62},"updated":"2016-07-01 09:57:49.000000000","message":"a new server?","commit_id":"23d28bf592540fba53255a11e51dc616907192f5"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"68f318b485b3a0cf452091d845da32766db9cde7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and several compute nodes. Base\r"},{"line_number":61,"context_line":"on the previous description, there are 4 topics, which will be subscribed\r"},{"line_number":62,"context_line":"by compute node, stored in DF DB. Sever node will update its topic timestamp\r"},{"line_number":63,"context_line":"store in DF DB which representing it\u0027s alive. If new a server node is added\r"},{"line_number":64,"context_line":"in server cluster, there will be a new topic added in DF DB, and the total\r"},{"line_number":65,"context_line":"number will be updated also.\r"},{"line_number":66,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_69353245","line":63,"range":{"start_line":63,"start_character":49,"end_line":63,"end_character":62},"in_reply_to":"3aaa91ec_675630cf","updated":"2016-07-06 02:14:26.000000000","message":"Done","commit_id":"23d28bf592540fba53255a11e51dc616907192f5"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"0addca6c51cde96b97829e519f53507924bf1b7f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"\r"},{"line_number":67,"context_line":"On the other side, all compute nodes will have a random algorithm(the result\r"},{"line_number":68,"context_line":"can not exceed the total number) which will select random topic stored in DF\r"},{"line_number":69,"context_line":"DB to send event of port status update. What\u0027s more, to prevent compute node\r"},{"line_number":70,"context_line":"from sending event to a dead sever it has chosen, there is a thread on\r"},{"line_number":71,"context_line":"compute node to monitor state of topic in DF DB to ensure that the sever\r"},{"line_number":72,"context_line":"representing the topic is alive. In that case, the thread will replace\r"},{"line_number":73,"context_line":"previous topic with a new one generated by the random algorithm.\r"},{"line_number":74,"context_line":"\r"},{"line_number":75,"context_line":"                                       +--------------+\r"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_795b6522","line":72,"range":{"start_line":69,"start_character":40,"end_line":72,"end_character":31},"updated":"2016-07-01 09:57:49.000000000","message":"I think it is a DB consistency problem, a simple thread can not handle it. Local controller can find out if the neutron server is alive by checking out the topic\u0027s timestamp and leave DB consistency module to handle the consistency problem","commit_id":"23d28bf592540fba53255a11e51dc616907192f5"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"68f318b485b3a0cf452091d845da32766db9cde7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"\r"},{"line_number":67,"context_line":"On the other side, all compute nodes will have a random algorithm(the result\r"},{"line_number":68,"context_line":"can not exceed the total number) which will select random topic stored in DF\r"},{"line_number":69,"context_line":"DB to send event of port status update. What\u0027s more, to prevent compute node\r"},{"line_number":70,"context_line":"from sending event to a dead sever it has chosen, there is a thread on\r"},{"line_number":71,"context_line":"compute node to monitor state of topic in DF DB to ensure that the sever\r"},{"line_number":72,"context_line":"representing the topic is alive. In that case, the thread will replace\r"},{"line_number":73,"context_line":"previous topic with a new one generated by the random algorithm.\r"},{"line_number":74,"context_line":"\r"},{"line_number":75,"context_line":"                                       +--------------+\r"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_e44e8c6d","line":72,"range":{"start_line":69,"start_character":40,"end_line":72,"end_character":31},"in_reply_to":"3aaa91ec_795b6522","updated":"2016-07-06 02:14:26.000000000","message":"Yes，I will leave consistency problem to DB consistency module. Here we just ensure that compute node can send event to the alive server.","commit_id":"23d28bf592540fba53255a11e51dc616907192f5"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"328bedcf7e2294c4f35ba0b57135314132da76ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1aa78d24_5d07dec9","updated":"2016-07-06 06:36:12.000000000","message":"Please verify the .rst format is correct and has no errors.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"328bedcf7e2294c4f35ba0b57135314132da76ee","unresolved":false,"context_lines":[{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"DF ML2 mechanism driver subscribe special a topic sent by publisher from\r"},{"line_number":32,"context_line":"each compute node.\r"},{"line_number":33,"context_line":"\r"},{"line_number":34,"context_line":"When nova create a VM, it will call neutron API create_port. Local\r"},{"line_number":35,"context_line":"controller on compute node is notified to process the port, then it\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_98e034fc","line":32,"updated":"2016-07-06 06:36:12.000000000","message":"This design may be problematic. It turns every compute node into a publisher. This may have have a disastrous effect on performance. Have you tested this aspect in code?\n\nAn alternative solution is to have special tables in the database that are updated by compute nodes, and then table monitors in the controller nodes will send the update notification.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"68a95ae9949752c1667fd92af58e9a0b10acf0c1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"DF ML2 mechanism driver subscribe special a topic sent by publisher from\r"},{"line_number":32,"context_line":"each compute node.\r"},{"line_number":33,"context_line":"\r"},{"line_number":34,"context_line":"When nova create a VM, it will call neutron API create_port. Local\r"},{"line_number":35,"context_line":"controller on compute node is notified to process the port, then it\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_c1df9f0a","line":32,"in_reply_to":"1aa78d24_816401b9","updated":"2016-07-11 01:36:46.000000000","message":"Actually it is not good to run many publishers in the infra, the number of services which relies on the number of compute nodes is not optimal and even not realistic for large-scale deployments. If the PUB/SUB is based on zeromq, we can develop a dedicated service for this PUB/SUB pipeline, not using the neutron-server to digest these messages. And we can also develop a load balancer service for this purpose. Is it possible to make it out of the core plugin layer by using a dedicated HA service, like neutron-port-notifier?","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"01a62b8df7e73e59fb4a7da547ee40332a5a4ad8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"DF ML2 mechanism driver subscribe special a topic sent by publisher from\r"},{"line_number":32,"context_line":"each compute node.\r"},{"line_number":33,"context_line":"\r"},{"line_number":34,"context_line":"When nova create a VM, it will call neutron API create_port. Local\r"},{"line_number":35,"context_line":"controller on compute node is notified to process the port, then it\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_816401b9","line":32,"in_reply_to":"1aa78d24_98e034fc","updated":"2016-07-07 07:44:34.000000000","message":"I haven\u0027t tested it till now. This design indeed have impact on performance due to massive publisher node. But there is something we can do to alleviate the impactm, such as storing state in compute node. there is no clarity of thought now. As you said, there will be a thread scanning special tables in the database in control node, which still be problematic if there are lots of port status update because a thread can\u0027t handle so many changes in time, resulting timeout in creating VM. Moreover, we should consider which server will do the service and how to coordinate servers if there are many servers working simultaneously.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"a307578f2ac3c2ba31cd23182522b07797c5da03","unresolved":false,"context_lines":[{"line_number":29,"context_line":"----------------\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"DF ML2 mechanism driver subscribe special a topic sent by publisher from\r"},{"line_number":32,"context_line":"each compute node.\r"},{"line_number":33,"context_line":"\r"},{"line_number":34,"context_line":"When nova create a VM, it will call neutron API create_port. Local\r"},{"line_number":35,"context_line":"controller on compute node is notified to process the port, then it\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_b491ef48","line":32,"in_reply_to":"1aa78d24_c1df9f0a","updated":"2016-07-11 05:16:42.000000000","message":"If making it out of core plugin, I think there is no method to change port status in neutron database, as we can only call neutron method through API.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"68a95ae9949752c1667fd92af58e9a0b10acf0c1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"event simultaneously and that all neutron servers will have equal chance\r"},{"line_number":52,"context_line":"to handle the event.\r"},{"line_number":53,"context_line":"\r"},{"line_number":54,"context_line":"A kind of LB will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neutron server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"},{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of processing its HostID or something else.\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and several compute nodes. Base\r"},{"line_number":61,"context_line":"on the previous description, there are 4 topics, which will be subscribed\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_613fcb25","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":43},"updated":"2016-07-11 01:36:46.000000000","message":"In db consistency spec, we design a master election function for ml2 plugin. As a result, we are able to run the service only in master node. You can also consider that function. But I think such a load balancing method is also good for performance.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"a307578f2ac3c2ba31cd23182522b07797c5da03","unresolved":false,"context_lines":[{"line_number":51,"context_line":"event simultaneously and that all neutron servers will have equal chance\r"},{"line_number":52,"context_line":"to handle the event.\r"},{"line_number":53,"context_line":"\r"},{"line_number":54,"context_line":"A kind of LB will be introduced. There are several topics(A,B,C,D...),to\r"},{"line_number":55,"context_line":"which each neutron server will subscribe, for example, neutron server A\r"},{"line_number":56,"context_line":"will subscribe to topic A, neutron server B will subscribe to topic B, etc.\r"},{"line_number":57,"context_line":"Each local controller will publish different topic according to the result\r"},{"line_number":58,"context_line":"of processing its HostID or something else.\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"It is assumed that there are 4 server nodes and several compute nodes. Base\r"},{"line_number":61,"context_line":"on the previous description, there are 4 topics, which will be subscribed\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_5741ad38","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":43},"in_reply_to":"1aa78d24_613fcb25","updated":"2016-07-11 05:16:42.000000000","message":"I think here we should consider not using master election, and on the contrary, we should ensure that all servers will join processing message sent from compute node to achieve better performance.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"328bedcf7e2294c4f35ba0b57135314132da76ee","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\r"},{"line_number":79,"context_line":"+------------+   |    +---------+ \u003c----+--------------+\r"},{"line_number":80,"context_line":"| Subscriber \u003c---+      Topic A  +  +  | Publisher B  |\r"},{"line_number":81,"context_line":"+------------+   |    +---------+ \u003c----+--------------+\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"                                  |    +--------------+\r"},{"line_number":84,"context_line":"                                  \u003c----+ Publisher C  |\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_1851e4d8","line":81,"updated":"2016-07-06 06:36:12.000000000","message":"This diagram looks a bit corrupted.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"01a62b8df7e73e59fb4a7da547ee40332a5a4ad8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\r"},{"line_number":79,"context_line":"+------------+   |    +---------+ \u003c----+--------------+\r"},{"line_number":80,"context_line":"| Subscriber \u003c---+      Topic A  +  +  | Publisher B  |\r"},{"line_number":81,"context_line":"+------------+   |    +---------+ \u003c----+--------------+\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"                                  |    +--------------+\r"},{"line_number":84,"context_line":"                                  \u003c----+ Publisher C  |\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_61c8f574","line":81,"in_reply_to":"1aa78d24_1851e4d8","updated":"2016-07-07 07:44:34.000000000","message":"yes, I will update it","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"328bedcf7e2294c4f35ba0b57135314132da76ee","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                  |    +--------------+\r"},{"line_number":84,"context_line":"                                  \u003c----+ Publisher C  |\r"},{"line_number":85,"context_line":"                                       +--------------+\r"},{"line_number":86,"context_line":"\r"},{"line_number":87,"context_line":"The topic for port status\r"},{"line_number":88,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":89,"context_line":"A special topic defined for port update status event is shared by all tenants.\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_b8fc1073","line":86,"updated":"2016-07-06 06:36:12.000000000","message":"Alternatively, using the database-based solution above, once a controller node detects a change, it can atomically mark the record as \u0027handled\u0027 (Using the database\u0027s \u0027atomic exchange\u0027 functionality that is required of all databases used by DF). This will create a first-come first-handle mechanism, which I think will be random enough (although this randomness can be improved as well if needed).\n\nI think this solution is more stable in case of creation and removal of controllers, does not require subscription to and distribution of specific topics, and does not require compute nodes to monitor the controllers to verify they are alive.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6d97efd5a508ff0f3d98fea79076e4d1cfb64c09","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                  |    +--------------+\r"},{"line_number":84,"context_line":"                                  \u003c----+ Publisher C  |\r"},{"line_number":85,"context_line":"                                       +--------------+\r"},{"line_number":86,"context_line":"\r"},{"line_number":87,"context_line":"The topic for port status\r"},{"line_number":88,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":89,"context_line":"A special topic defined for port update status event is shared by all tenants.\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_ea20abb2","line":86,"in_reply_to":"1aa78d24_258ef82d","updated":"2016-07-11 08:34:01.000000000","message":"Distributed databases that work with dragonflow have an \u0027atomic exchange\u0027 method. This method can be used to \u0027lock\u0027 only the port that is being updated. Multiple Neutron servers will be able to handle multiple ports, since each server locks only one port.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"01a62b8df7e73e59fb4a7da547ee40332a5a4ad8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                  |    +--------------+\r"},{"line_number":84,"context_line":"                                  \u003c----+ Publisher C  |\r"},{"line_number":85,"context_line":"                                       +--------------+\r"},{"line_number":86,"context_line":"\r"},{"line_number":87,"context_line":"The topic for port status\r"},{"line_number":88,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\r"},{"line_number":89,"context_line":"A special topic defined for port update status event is shared by all tenants.\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_258ef82d","line":86,"in_reply_to":"1aa78d24_b8fc1073","updated":"2016-07-07 07:44:34.000000000","message":"Do you mean every controller will monitor changes in DF database? If it is mandatory to get \"lock\" for every controller to process changes, there will be only one controller doing the job. Can you explain more detailed how to coordinate all controllers scanning the special table in database simultaneously?","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"68a95ae9949752c1667fd92af58e9a0b10acf0c1","unresolved":false,"context_lines":[{"line_number":92,"context_line":"-------------\r"},{"line_number":93,"context_line":"Pros\r"},{"line_number":94,"context_line":"\r"},{"line_number":95,"context_line":"Neutron server performance would be considered while there are lots of\r"},{"line_number":96,"context_line":"publishers on each compute node and only several subscribers in the server\r"},{"line_number":97,"context_line":"node.\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"There are rarely changes to the previous architecture, because of the\r"},{"line_number":100,"context_line":"decoupling between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_e1ed7b8f","line":97,"range":{"start_line":95,"start_character":0,"end_line":97,"end_character":5},"updated":"2016-07-11 01:36:46.000000000","message":"This is not advantage, as far as I know. Neutron-server heavily relies on eventlet to schedule I/O which is theoretically not predictable and unscheduled. Introducing many socket I/O to Neutron-server will greatly decrease its performance in control plane. Moreover, the multi-process mode in neutron-server is not working well as expected.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"a307578f2ac3c2ba31cd23182522b07797c5da03","unresolved":false,"context_lines":[{"line_number":92,"context_line":"-------------\r"},{"line_number":93,"context_line":"Pros\r"},{"line_number":94,"context_line":"\r"},{"line_number":95,"context_line":"Neutron server performance would be considered while there are lots of\r"},{"line_number":96,"context_line":"publishers on each compute node and only several subscribers in the server\r"},{"line_number":97,"context_line":"node.\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"There are rarely changes to the previous architecture, because of the\r"},{"line_number":100,"context_line":"decoupling between server and compute node while using pub-sub function.\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_ed5c4a7f","line":97,"range":{"start_line":95,"start_character":0,"end_line":97,"end_character":5},"in_reply_to":"1aa78d24_e1ed7b8f","updated":"2016-07-11 05:16:42.000000000","message":"Maybe I have mistake here in describing advantage. I should describe like this:\n\nThere are several neutron servers which will join in processing subscriber events concurrently. Thus can alleviate the pressure of each server effectively.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"328bedcf7e2294c4f35ba0b57135314132da76ee","unresolved":false,"context_lines":[{"line_number":97,"context_line":"node.\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"There are rarely changes to the previous architecture, because of the\r"},{"line_number":100,"context_line":"decoupling between server and compute node while using pub-sub function.\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"Cons\r"},{"line_number":103,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_d86c7c37","line":100,"updated":"2016-07-06 06:36:12.000000000","message":"I think this is inaccurate. This design turns each compute node to a publisher, possibly adding another process (publisher service). It causes all nodes (compute and controller) to connect to all other nodes, rather than just have compute nodes connect to controller nodes.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6d97efd5a508ff0f3d98fea79076e4d1cfb64c09","unresolved":false,"context_lines":[{"line_number":97,"context_line":"node.\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"There are rarely changes to the previous architecture, because of the\r"},{"line_number":100,"context_line":"decoupling between server and compute node while using pub-sub function.\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"Cons\r"},{"line_number":103,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_0a26d7cd","line":100,"in_reply_to":"1aa78d24_c561f406","updated":"2016-07-11 08:34:01.000000000","message":"As Li Ma pointed out, we are using eventlet\u0027s greenthreads. This means that even when something runs in a separate thread, it interferes with the rest of the threads (always only one thread runs).","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"01a62b8df7e73e59fb4a7da547ee40332a5a4ad8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"node.\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"There are rarely changes to the previous architecture, because of the\r"},{"line_number":100,"context_line":"decoupling between server and compute node while using pub-sub function.\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"Cons\r"},{"line_number":103,"context_line":"\r"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1aa78d24_c561f406","line":100,"in_reply_to":"1aa78d24_d86c7c37","updated":"2016-07-07 07:44:34.000000000","message":"We don\u0027t need to add another process for publisher service, as there is already a process monitor port add/delete on OVS in compute node, and we can put the publisher in it.\n\nWhat I mean here is all nodes will be a integration of subscriber and publisher, there is no real connection between these nodes, all using pub/sub mechanism.","commit_id":"b8dec1dc98a37f6a688ac76fade1cfece50f8d8a"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7f5ada06032a1f750e869115299af440eadc45d9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"On the other side, all compute nodes will have a random algorithm(the result"},{"line_number":68,"context_line":"can not exceed the total number) which will select random topic stored in DF"},{"line_number":69,"context_line":"DB to send event of port status update.."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"+------------+     +---------+         +----+          +--------------+"},{"line_number":73,"context_line":"| SubscriberA \u003c---   Topic A    \u003c----  |    |     \u003c----+ Publisher X  |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a89bdaa_211f20b8","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":0},"updated":"2016-09-07 07:32:52.000000000","message":"add \"::\" and a blank line before diagram","commit_id":"1981ca3664ba7e8161f64758d23dcaaa001cc110"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7f5ada06032a1f750e869115299af440eadc45d9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"DB to send event of port status update.."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"+------------+     +---------+         +----+          +--------------+"},{"line_number":73,"context_line":"| SubscriberA \u003c---   Topic A    \u003c----  |    |     \u003c----+ Publisher X  |"},{"line_number":74,"context_line":"+------------+     +---------+         | R  |          +--------------+"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a89bdaa_214800cc","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":2},"updated":"2016-09-07 07:32:52.000000000","message":"add at least one spaces before each line in the diagram","commit_id":"1981ca3664ba7e8161f64758d23dcaaa001cc110"}]}
