)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"d69e75d63ccb172af7d66320b5a5bcaa49b48d38","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2016-04-20 14:48:03 +0800"},{"line_number":4,"context_line":"Commit:     Kebo Duan \u003cduankebo@outlook.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-20 19:30:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"When using redis as pub/sub driver, pub_sub_multiproc_driver and"},{"line_number":8,"context_line":"DF_PUB_SUB_USE_MULTIPROC should be set"},{"line_number":9,"context_line":"to false, whose default value are true."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_43fe2d06","line":6,"updated":"2016-04-22 06:48:02.000000000","message":"Please add a title for each review.\n\nDisable pub_sub_multiproc options for redis\n(blank line)\nWhen using redis...","commit_id":"504c2c34c1ca693320aeca66530068f8c9f3dfd7"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ce52ed9c38434ee299d6399d8b39ff45499819c2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2016-04-20 14:48:03 +0800"},{"line_number":4,"context_line":"Commit:     Kebo Duan \u003cduankebo@outlook.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-20 19:30:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"When using redis as pub/sub driver, pub_sub_multiproc_driver and"},{"line_number":8,"context_line":"DF_PUB_SUB_USE_MULTIPROC should be set"},{"line_number":9,"context_line":"to false, whose default value are true."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_1eb9117a","line":6,"in_reply_to":"1a122d0e_43fe2d06","updated":"2016-04-22 15:31:52.000000000","message":"Done","commit_id":"504c2c34c1ca693320aeca66530068f8c9f3dfd7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddb3f33a0b073d480dbc119566308ee0134fcec0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     duankebo \u003cduankebo@outlook.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-10 04:44:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Adjust Default configurations of Dragonflow"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"1. Set DF_PUB_SUB_USE_MULTIPROC to false if using redis pub/sub driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"dab17558_61832705","line":7,"updated":"2016-05-10 05:06:46.000000000","message":"Consider removing this blank line. This way the next line becomes the title.","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"2a64140863bf6aa589bae5fea1199b65c3c014da","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     duankebo \u003cduankebo@outlook.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-10 04:44:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Adjust Default configurations of Dragonflow"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"1. Set DF_PUB_SUB_USE_MULTIPROC to false if using redis pub/sub driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"dab17558_2fc4575d","line":7,"in_reply_to":"dab17558_61832705","updated":"2016-05-10 09:40:07.000000000","message":"Done","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"}],"devstack/plugin.sh":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6b9cc647cbd2709a151338a0a70429a77b972a9b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"fi"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if [[ \"$DF_REDIS_PUBSUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":71,"context_line":"    init_pubsub"},{"line_number":72,"context_line":"    DF_PUB_SUB_USE_MULTIPROC\u003d\"False\""},{"line_number":73,"context_line":"    source $DEST/dragonflow/devstack/redis_pubsub_driver"},{"line_number":74,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":3,"id":"1a122d0e_28e8f3e1","line":71,"updated":"2016-04-24 14:43:01.000000000","message":"Consider also replacing init_pubsub with DF_PUB_SUB\u003dTrue, since if we use redis, we don\u0027t need a publisher service. (redis is broker based).","commit_id":"7a4e7c6a1520a44a8a17eb3a3c01612e870020e4"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"c09ef128d2a81ce8d3eee4768322757c1debd8c3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"fi"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if [[ \"$DF_REDIS_PUBSUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":71,"context_line":"    init_pubsub"},{"line_number":72,"context_line":"    DF_PUB_SUB_USE_MULTIPROC\u003d\"False\""},{"line_number":73,"context_line":"    source $DEST/dragonflow/devstack/redis_pubsub_driver"},{"line_number":74,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":3,"id":"1a122d0e_0de4e9dd","line":71,"in_reply_to":"1a122d0e_28e8f3e1","updated":"2016-04-27 06:47:06.000000000","message":"Done","commit_id":"7a4e7c6a1520a44a8a17eb3a3c01612e870020e4"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf3230c17fce227127122f4d0cbf58f109cd5bf0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        fi"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if [[ \"$DF_PUB_SUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":121,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d${DF_SELECTIVE_TOPO_DIST:-\"True\"}"},{"line_number":122,"context_line":"        else"},{"line_number":123,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d\"False\""},{"line_number":124,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_f0a7bdb9","line":121,"updated":"2016-04-27 11:06:21.000000000","message":"This sets the default for DF_SELECTIVE_TOPO_DIST to true (it was false before this change). Is this intentional?\n\nIt also overrides the user\u0027s preference if DF_PUB_SUB is false. If this is desired, consider raising an error to tell the user it is an illegal configuration.\n\nThis may also be causing the fullstack tests to fail.","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"1dbc4e50f9d6fe959acad0265bcdf49ea59f7307","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        fi"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if [[ \"$DF_PUB_SUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":121,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d${DF_SELECTIVE_TOPO_DIST:-\"True\"}"},{"line_number":122,"context_line":"        else"},{"line_number":123,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d\"False\""},{"line_number":124,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_bf6cd7d0","line":121,"in_reply_to":"1a122d0e_9413c264","updated":"2016-04-28 08:00:17.000000000","message":"OK, I\u0027m checking.","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7396376129d1eb8ae7fe3a933caec90353c7e880","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        fi"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if [[ \"$DF_PUB_SUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":121,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d${DF_SELECTIVE_TOPO_DIST:-\"True\"}"},{"line_number":122,"context_line":"        else"},{"line_number":123,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d\"False\""},{"line_number":124,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_9413c264","line":121,"in_reply_to":"1a122d0e_bc29979d","updated":"2016-04-28 07:54:09.000000000","message":"I see. All right.\n\nThe only remaining issue is the fullstack tests. Can you check if the pass on your environment with this change? Maybe there are still some issues with the selective topology?","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54bfadda9062930b42294acebf4994c41cd74d9b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        fi"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if [[ \"$DF_PUB_SUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":121,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d${DF_SELECTIVE_TOPO_DIST:-\"True\"}"},{"line_number":122,"context_line":"        else"},{"line_number":123,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d\"False\""},{"line_number":124,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_bc29979d","line":121,"in_reply_to":"1a122d0e_f0a7bdb9","updated":"2016-04-27 15:37:46.000000000","message":"Answer for the first question is yes. If the pub/sub is enabled, we enable selective topology distribution by default.  This can reduce the efforts to configure dragonflow.\nIt makes no sense to enable selective topology distribution when pub/sub is disabled.  So I set it to false. \nOnly advanced users will configure DF_SELECTIVE_TOPO_DIST, can we consider them knowing that it depends on DF_PUB_SUB?","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf3230c17fce227127122f4d0cbf58f109cd5bf0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        iniset $NEUTRON_CONF df_dnat_app ex_peer_patch_port \"patch-int\""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        if [[ \"$DF_PUB_SUB\" \u003d\u003d \"True\" ]]; then"},{"line_number":165,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d${DF_SELECTIVE_TOPO_DIST:-\"True\"}"},{"line_number":166,"context_line":"        else"},{"line_number":167,"context_line":"            DF_SELECTIVE_TOPO_DIST\u003d\"False\""},{"line_number":168,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_d0ac41a1","line":165,"updated":"2016-04-27 11:06:21.000000000","message":"Same here.","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf3230c17fce227127122f4d0cbf58f109cd5bf0","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        cleanup_ovs"},{"line_number":374,"context_line":"        stop_ovs"},{"line_number":375,"context_line":"        uninstall_ovs"},{"line_number":376,"context_line":"        if is_service_enabled df-publisher-service; then"},{"line_number":377,"context_line":"            stop_pubsub_service"},{"line_number":378,"context_line":"        fi"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_d083a101","line":376,"updated":"2016-04-27 11:06:21.000000000","message":"+1","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54bfadda9062930b42294acebf4994c41cd74d9b","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        cleanup_ovs"},{"line_number":374,"context_line":"        stop_ovs"},{"line_number":375,"context_line":"        uninstall_ovs"},{"line_number":376,"context_line":"        if is_service_enabled df-publisher-service; then"},{"line_number":377,"context_line":"            stop_pubsub_service"},{"line_number":378,"context_line":"        fi"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_ff2b0180","line":376,"in_reply_to":"1a122d0e_d083a101","updated":"2016-04-27 15:37:46.000000000","message":"What\u0027s you meaning?","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7396376129d1eb8ae7fe3a933caec90353c7e880","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        cleanup_ovs"},{"line_number":374,"context_line":"        stop_ovs"},{"line_number":375,"context_line":"        uninstall_ovs"},{"line_number":376,"context_line":"        if is_service_enabled df-publisher-service; then"},{"line_number":377,"context_line":"            stop_pubsub_service"},{"line_number":378,"context_line":"        fi"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a122d0e_342e2ea5","line":376,"in_reply_to":"1a122d0e_ff2b0180","updated":"2016-04-28 07:54:09.000000000","message":"I liked this change. :)","commit_id":"5456537c9ed42a60c09eff22b4e18a20e80c1a35"}],"devstack/redis_pubsub_driver":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a7ef47ba1fc4c4c7d321c5dc06309fb07e25f5b6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    NEUTRON_CONF\u003d${NEUTRON_CONF:-\"/etc/neutron/neutron.conf\"}"},{"line_number":5,"context_line":"    PUB_SUB_DRIVER\u003d${PUB_SUB_DRIVER:-\"redis_db_pubsub_driver\"}"},{"line_number":6,"context_line":"    iniset $NEUTRON_CONF df pub_sub_driver $PUB_SUB_DRIVER"},{"line_number":7,"context_line":"    iniset $NEUTRON_CONF df pub_sub_multiproc_driver \"False\""},{"line_number":8,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a122d0e_acb5737f","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":60},"updated":"2016-04-22 05:27:10.000000000","message":"this line is redundant. the pub_sub_multiproc_driver means the class name, not bool value.","commit_id":"504c2c34c1ca693320aeca66530068f8c9f3dfd7"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ce52ed9c38434ee299d6399d8b39ff45499819c2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    NEUTRON_CONF\u003d${NEUTRON_CONF:-\"/etc/neutron/neutron.conf\"}"},{"line_number":5,"context_line":"    PUB_SUB_DRIVER\u003d${PUB_SUB_DRIVER:-\"redis_db_pubsub_driver\"}"},{"line_number":6,"context_line":"    iniset $NEUTRON_CONF df pub_sub_driver $PUB_SUB_DRIVER"},{"line_number":7,"context_line":"    iniset $NEUTRON_CONF df pub_sub_multiproc_driver \"False\""},{"line_number":8,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a122d0e_3e832dce","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":60},"in_reply_to":"1a122d0e_acb5737f","updated":"2016-04-22 15:31:52.000000000","message":"Done","commit_id":"504c2c34c1ca693320aeca66530068f8c9f3dfd7"}],"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1c0a6d68590c2a0e5208a23b8ac403abcaa1f768","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if lport.get_external_value(\u0027is_local\u0027):"},{"line_number":236,"context_line":"            LOG.info(_LI(\"Removing local logical port \u003d %s\") %"},{"line_number":237,"context_line":"                     str(lport))"},{"line_number":238,"context_line":"            if lport.get_external_value(\u0027ofport\u0027) is not None:"},{"line_number":239,"context_line":"                self.open_flow_app.notify_remove_local_port(lport)"},{"line_number":240,"context_line":"            self.db_store.delete_port(lport.get_id(), True)"},{"line_number":241,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_2c3ad0e7","line":238,"updated":"2016-05-04 06:45:29.000000000","message":"this line is fixed in https://review.openstack.org/#/c/307184.\nplease rebase your modification on master.","commit_id":"869d21455945b71f1dd6421a7a404607d95e0095"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"07f6db0c474a20278ab0ddc46ff379b1c9dbfc56","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if lport.get_external_value(\u0027is_local\u0027):"},{"line_number":236,"context_line":"            LOG.info(_LI(\"Removing local logical port \u003d %s\") %"},{"line_number":237,"context_line":"                     str(lport))"},{"line_number":238,"context_line":"            if lport.get_external_value(\u0027ofport\u0027) is not None:"},{"line_number":239,"context_line":"                self.open_flow_app.notify_remove_local_port(lport)"},{"line_number":240,"context_line":"            self.db_store.delete_port(lport.get_id(), True)"},{"line_number":241,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_f36c2c0a","line":238,"in_reply_to":"1a122d0e_2c3ad0e7","updated":"2016-05-04 11:07:12.000000000","message":"Done","commit_id":"869d21455945b71f1dd6421a7a404607d95e0095"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1c0a6d68590c2a0e5208a23b8ac403abcaa1f768","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        else:"},{"line_number":242,"context_line":"            LOG.info(_LI(\"Removing remote logical port \u003d %s\") %"},{"line_number":243,"context_line":"                     str(lport))"},{"line_number":244,"context_line":"            if lport.get_external_value(\u0027ofport\u0027) is not None:"},{"line_number":245,"context_line":"                self.open_flow_app.notify_remove_remote_port(lport)"},{"line_number":246,"context_line":"            self.db_store.delete_port(lport.get_id(), False)"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_4c1f4c70","line":244,"updated":"2016-05-04 06:45:29.000000000","message":"ditto","commit_id":"869d21455945b71f1dd6421a7a404607d95e0095"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"07f6db0c474a20278ab0ddc46ff379b1c9dbfc56","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        else:"},{"line_number":242,"context_line":"            LOG.info(_LI(\"Removing remote logical port \u003d %s\") %"},{"line_number":243,"context_line":"                     str(lport))"},{"line_number":244,"context_line":"            if lport.get_external_value(\u0027ofport\u0027) is not None:"},{"line_number":245,"context_line":"                self.open_flow_app.notify_remove_remote_port(lport)"},{"line_number":246,"context_line":"            self.db_store.delete_port(lport.get_id(), False)"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_d36f70fa","line":244,"in_reply_to":"1a122d0e_4c1f4c70","updated":"2016-05-04 11:07:12.000000000","message":"Done","commit_id":"869d21455945b71f1dd6421a7a404607d95e0095"}],"dragonflow/tests/fullstack/test_objects.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b5a4d59c6726481584a17ffbf40fd0536bde2bf6","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.closed \u003d False"},{"line_number":194,"context_line":"        self.parent \u003d parent"},{"line_number":195,"context_line":"        self.neutron \u003d neutron"},{"line_number":196,"context_line":"        cloud \u003d os_client_config.OpenStackConfig().get_one_cloud("},{"line_number":197,"context_line":"                                                        cloud\u003d\u0027devstack-admin\u0027)"},{"line_number":198,"context_line":"        creds \u003d cloud.get_auth_args()"},{"line_number":199,"context_line":"        tenant_name \u003d creds[\u0027project_name\u0027]"},{"line_number":200,"context_line":"        auth_url \u003d creds[\u0027auth_url\u0027] + \"/v2.0\""},{"line_number":201,"context_line":"        self.nova \u003d novaclient.Client(\u00272\u0027, creds[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"bab6814e_99a17bac","line":198,"range":{"start_line":196,"start_character":0,"end_line":198,"end_character":37},"updated":"2016-05-25 12:40:52.000000000","message":"Why make this change?","commit_id":"473a00b540b33023c4d310206be82fc9d0fc01c1"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"b4761ab769ef4b8d35c9685d8066bdb9134074a3","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.closed \u003d False"},{"line_number":194,"context_line":"        self.parent \u003d parent"},{"line_number":195,"context_line":"        self.neutron \u003d neutron"},{"line_number":196,"context_line":"        cloud \u003d os_client_config.OpenStackConfig().get_one_cloud("},{"line_number":197,"context_line":"                                                        cloud\u003d\u0027devstack-admin\u0027)"},{"line_number":198,"context_line":"        creds \u003d cloud.get_auth_args()"},{"line_number":199,"context_line":"        tenant_name \u003d creds[\u0027project_name\u0027]"},{"line_number":200,"context_line":"        auth_url \u003d creds[\u0027auth_url\u0027] + \"/v2.0\""},{"line_number":201,"context_line":"        self.nova \u003d novaclient.Client(\u00272\u0027, creds[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"bab6814e_64ba2be3","line":198,"range":{"start_line":196,"start_character":0,"end_line":198,"end_character":37},"in_reply_to":"bab6814e_99a17bac","updated":"2016-05-25 13:51:19.000000000","message":"Because of circular reference. Test_base has to depend on test_objects. So if test objects also depend on test base, the circular reference will occur.","commit_id":"473a00b540b33023c4d310206be82fc9d0fc01c1"}],"dragonflow/tests/fullstack/test_pub_sub.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dcb385886737616ff345dd00c3b42e4fafa63cd5","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":85,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":86,"context_line":"        network_id \u003d network.create()"},{"line_number":87,"context_line":"        if cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":88,"context_line":"            topic \u003d network.get_topic()"},{"line_number":89,"context_line":"            subscriber.register_topic(topic)"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            eventlet.sleep(test_utils.DEFAULT_CMD_TIMEOUT)"},{"line_number":92,"context_line":"            self.assertNotEqual(local_event_num, events_num)"},{"line_number":93,"context_line":"            local_event_num \u003d events_num"},{"line_number":94,"context_line":"        port \u003d self.store(objects.PortTestObj("},{"line_number":95,"context_line":"            self.neutron,"},{"line_number":96,"context_line":"            self.nb_api,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_46cc9761","line":93,"range":{"start_line":87,"start_character":0,"end_line":93,"end_character":40},"updated":"2016-05-01 06:37:25.000000000","message":"Can\u0027t you get the topic from creds[\u0027tenant_id\u0027], as you did in VMTestObj, and then keep this test?","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ed6f276fc1f1df0cfd325e9f5fb614648524b4b1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":85,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":86,"context_line":"        network_id \u003d network.create()"},{"line_number":87,"context_line":"        if cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":88,"context_line":"            topic \u003d network.get_topic()"},{"line_number":89,"context_line":"            subscriber.register_topic(topic)"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            eventlet.sleep(test_utils.DEFAULT_CMD_TIMEOUT)"},{"line_number":92,"context_line":"            self.assertNotEqual(local_event_num, events_num)"},{"line_number":93,"context_line":"            local_event_num \u003d events_num"},{"line_number":94,"context_line":"        port \u003d self.store(objects.PortTestObj("},{"line_number":95,"context_line":"            self.neutron,"},{"line_number":96,"context_line":"            self.nb_api,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_cf5c1c4f","line":93,"range":{"start_line":87,"start_character":0,"end_line":93,"end_character":40},"in_reply_to":"1a122d0e_46cc9761","updated":"2016-05-03 04:58:59.000000000","message":"In fact,the similar test will be done in the following creating port, closing port/network operation. So I don\u0027t think we need to add code for getting the tenant_id","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dcb385886737616ff345dd00c3b42e4fafa63cd5","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":128,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":129,"context_line":"        network_id \u003d network.create()"},{"line_number":130,"context_line":"        if cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":131,"context_line":"            topic \u003d network.get_topic()"},{"line_number":132,"context_line":"            subscriber.register_topic(topic)"},{"line_number":133,"context_line":"        else:"},{"line_number":134,"context_line":"            eventlet.sleep(test_utils.DEFAULT_CMD_TIMEOUT)"},{"line_number":135,"context_line":"            self.assertNotEqual(local_event_num, ns.events_num)"},{"line_number":136,"context_line":"        port \u003d self.store(objects.PortTestObj("},{"line_number":137,"context_line":"            self.neutron,"},{"line_number":138,"context_line":"            self.nb_api,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_86d6afef","line":135,"range":{"start_line":130,"start_character":0,"end_line":135,"end_character":63},"updated":"2016-05-01 06:37:25.000000000","message":"Same here.","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ed6f276fc1f1df0cfd325e9f5fb614648524b4b1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":128,"context_line":"        network \u003d self.store(objects.NetworkTestObj(self.neutron, self.nb_api))"},{"line_number":129,"context_line":"        network_id \u003d network.create()"},{"line_number":130,"context_line":"        if cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":131,"context_line":"            topic \u003d network.get_topic()"},{"line_number":132,"context_line":"            subscriber.register_topic(topic)"},{"line_number":133,"context_line":"        else:"},{"line_number":134,"context_line":"            eventlet.sleep(test_utils.DEFAULT_CMD_TIMEOUT)"},{"line_number":135,"context_line":"            self.assertNotEqual(local_event_num, ns.events_num)"},{"line_number":136,"context_line":"        port \u003d self.store(objects.PortTestObj("},{"line_number":137,"context_line":"            self.neutron,"},{"line_number":138,"context_line":"            self.nb_api,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_8f3984f5","line":135,"range":{"start_line":130,"start_character":0,"end_line":135,"end_character":63},"in_reply_to":"1a122d0e_86d6afef","updated":"2016-05-03 04:58:59.000000000","message":"The explanation is the same.","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dcb385886737616ff345dd00c3b42e4fafa63cd5","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_pub_sub_event_number_diffrent_port(self):"},{"line_number":168,"context_line":"        if not self.do_test \\"},{"line_number":169,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":170,"context_line":"            return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        ns \u003d Namespace()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_46f3f79f","line":169,"updated":"2016-05-01 06:37:25.000000000","message":"Why is this test skipped in case of selective topology? Won\u0027t assigning the tenant_id as topic be enough?","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ed6f276fc1f1df0cfd325e9f5fb614648524b4b1","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_pub_sub_event_number_diffrent_port(self):"},{"line_number":168,"context_line":"        if not self.do_test \\"},{"line_number":169,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":170,"context_line":"            return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        ns \u003d Namespace()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_0a4a8255","line":169,"in_reply_to":"1a122d0e_46f3f79f","updated":"2016-05-03 04:58:59.000000000","message":"Done","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dcb385886737616ff345dd00c3b42e4fafa63cd5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        enable_df_pub_sub \u003d cfg.CONF.df.enable_df_pub_sub"},{"line_number":300,"context_line":"        self.do_test \u003d enable_df_pub_sub"},{"line_number":301,"context_line":"        if not self.do_test \\"},{"line_number":302,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":303,"context_line":"            return"},{"line_number":304,"context_line":"        self.namespace \u003d Namespace()"},{"line_number":305,"context_line":"        self.namespace.events \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_c62d47ff","line":302,"updated":"2016-05-01 06:37:25.000000000","message":"Same here re: enabling the test if selective topology distribution is on.","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ed6f276fc1f1df0cfd325e9f5fb614648524b4b1","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        enable_df_pub_sub \u003d cfg.CONF.df.enable_df_pub_sub"},{"line_number":300,"context_line":"        self.do_test \u003d enable_df_pub_sub"},{"line_number":301,"context_line":"        if not self.do_test \\"},{"line_number":302,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":303,"context_line":"            return"},{"line_number":304,"context_line":"        self.namespace \u003d Namespace()"},{"line_number":305,"context_line":"        self.namespace.events \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_49548720","line":302,"in_reply_to":"1a122d0e_c62d47ff","updated":"2016-05-03 04:58:59.000000000","message":"Done","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dcb385886737616ff345dd00c3b42e4fafa63cd5","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def test_operations(self):"},{"line_number":336,"context_line":"        if not self.do_test \\"},{"line_number":337,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":338,"context_line":"            return"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        expected_event \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_26335b64","line":337,"updated":"2016-05-01 06:37:25.000000000","message":"And here.","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"ed6f276fc1f1df0cfd325e9f5fb614648524b4b1","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def test_operations(self):"},{"line_number":336,"context_line":"        if not self.do_test \\"},{"line_number":337,"context_line":"                or cfg.CONF.df.enable_selective_topology_distribution:"},{"line_number":338,"context_line":"            return"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        expected_event \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_a92f1ba6","line":337,"in_reply_to":"1a122d0e_26335b64","updated":"2016-05-03 04:58:59.000000000","message":"Done","commit_id":"4f029ffeed4ad8df0e700659cb52a4f194b0e92b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddb3f33a0b073d480dbc119566308ee0134fcec0","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        publisher \u003d get_publisher()"},{"line_number":182,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":183,"context_line":"        subscriber.register_topic(SEND_ALL_TOPIC)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        eventlet.sleep(2)"},{"line_number":186,"context_line":"        local_events_num \u003d ns.events_num"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_a1550f51","line":183,"updated":"2016-05-10 05:06:46.000000000","message":"This is already done in get_subscriber. Consider removing it from here.","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"2a64140863bf6aa589bae5fea1199b65c3c014da","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        publisher \u003d get_publisher()"},{"line_number":182,"context_line":"        subscriber \u003d get_subscriber(_db_change_callback)"},{"line_number":183,"context_line":"        subscriber.register_topic(SEND_ALL_TOPIC)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        eventlet.sleep(2)"},{"line_number":186,"context_line":"        local_events_num \u003d ns.events_num"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_2fed77ef","line":183,"in_reply_to":"dab17558_a1550f51","updated":"2016-05-10 09:40:07.000000000","message":"Done","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddb3f33a0b073d480dbc119566308ee0134fcec0","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        self.namespace.events \u003d []"},{"line_number":306,"context_line":"        self.publisher \u003d get_publisher()"},{"line_number":307,"context_line":"        self.subscriber \u003d get_subscriber(self._db_change_callback)"},{"line_number":308,"context_line":"        self.subscriber.register_topic(SEND_ALL_TOPIC)"},{"line_number":309,"context_line":"        self.monitor \u003d self._create_monitor(\u0027chassis\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_c14ad3ab","line":308,"updated":"2016-05-10 05:06:46.000000000","message":"Same here.","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"2a64140863bf6aa589bae5fea1199b65c3c014da","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        self.namespace.events \u003d []"},{"line_number":306,"context_line":"        self.publisher \u003d get_publisher()"},{"line_number":307,"context_line":"        self.subscriber \u003d get_subscriber(self._db_change_callback)"},{"line_number":308,"context_line":"        self.subscriber.register_topic(SEND_ALL_TOPIC)"},{"line_number":309,"context_line":"        self.monitor \u003d self._create_monitor(\u0027chassis\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_6fc13f54","line":308,"in_reply_to":"dab17558_c14ad3ab","updated":"2016-05-10 09:40:07.000000000","message":"Done","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddb3f33a0b073d480dbc119566308ee0134fcec0","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    def tearDown(self):"},{"line_number":312,"context_line":"        if self.do_test:"},{"line_number":313,"context_line":"            self.monitor.stop()"},{"line_number":314,"context_line":"            self.subscriber.unregister_topic(SEND_ALL_TOPIC)"},{"line_number":315,"context_line":"            self.subscriber.stop()"},{"line_number":316,"context_line":"        super(TestDbTableMonitors, self).tearDown()"},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_21c8ff21","line":314,"updated":"2016-05-10 05:06:46.000000000","message":"I don\u0027t think this is necessary if the next line stops the subscriber.","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"2a64140863bf6aa589bae5fea1199b65c3c014da","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    def tearDown(self):"},{"line_number":312,"context_line":"        if self.do_test:"},{"line_number":313,"context_line":"            self.monitor.stop()"},{"line_number":314,"context_line":"            self.subscriber.unregister_topic(SEND_ALL_TOPIC)"},{"line_number":315,"context_line":"            self.subscriber.stop()"},{"line_number":316,"context_line":"        super(TestDbTableMonitors, self).tearDown()"},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_8fbc63dd","line":314,"in_reply_to":"dab17558_21c8ff21","updated":"2016-05-10 09:40:07.000000000","message":"Done","commit_id":"9e4dd6cc91b56d567ff1c19b1f2abffde93673a8"}]}
