)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93d0ec2b0e623cd69636803df8db9e4b82df15aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During VM rescue tests, we found nova xenserver driver failed due"},{"line_number":10,"context_line":"to waiting vif-plug event from neutron timeout. when checking"},{"line_number":11,"context_line":"nova and neutron logs, we found there are several mis-action in"},{"line_number":12,"context_line":"nova driver:"},{"line_number":13,"context_line":"(1) After several rounds of rescuing/unrescuing, it will wait for"},{"line_number":14,"context_line":"vif-plug-event, but actually, it shouldn\u0027t wait for such event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_80341ffc","line":11,"updated":"2017-01-17 23:44:17.000000000","message":"mis-action is not a word. Perhaps you meant either \"mistakes\" or \"incorrect assumptions\"?","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"97c19e06dc84414419a42ce5ac78fabebd876c51","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During VM rescue tests, we found nova xenserver driver failed due"},{"line_number":10,"context_line":"to waiting vif-plug event from neutron timeout. when checking"},{"line_number":11,"context_line":"nova and neutron logs, we found there are several mis-action in"},{"line_number":12,"context_line":"nova driver:"},{"line_number":13,"context_line":"(1) After several rounds of rescuing/unrescuing, it will wait for"},{"line_number":14,"context_line":"vif-plug-event, but actually, it shouldn\u0027t wait for such event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_ec707ca6","line":11,"in_reply_to":"7a3c09a3_80341ffc","updated":"2017-01-18 01:31:30.000000000","message":"yeah, sorry for my bad expression, will change, thanks","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93d0ec2b0e623cd69636803df8db9e4b82df15aa","unresolved":false,"context_lines":[{"line_number":20,"context_line":"the port status change which shouldn\u0027t be changed."},{"line_number":21,"context_line":"(4) When adding/deleting security groups to VM\u0027s port, it will"},{"line_number":22,"context_line":"trigger the port status change, e.g. from ACTIVE to BUILDING, but"},{"line_number":23,"context_line":"under rescue scenario, we also depends on VIF\u0027s status to determin"},{"line_number":24,"context_line":"whethere waiting for vif plug event or not which is not suitable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch is to fix the above problem and there is another patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_e014034e","line":23,"updated":"2017-01-17 23:44:17.000000000","message":"s/determin/determine/","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"97c19e06dc84414419a42ce5ac78fabebd876c51","unresolved":false,"context_lines":[{"line_number":20,"context_line":"the port status change which shouldn\u0027t be changed."},{"line_number":21,"context_line":"(4) When adding/deleting security groups to VM\u0027s port, it will"},{"line_number":22,"context_line":"trigger the port status change, e.g. from ACTIVE to BUILDING, but"},{"line_number":23,"context_line":"under rescue scenario, we also depends on VIF\u0027s status to determin"},{"line_number":24,"context_line":"whethere waiting for vif plug event or not which is not suitable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch is to fix the above problem and there is another patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_ac883472","line":23,"in_reply_to":"7a3c09a3_e014034e","updated":"2017-01-18 01:31:30.000000000","message":"my bad, will fix","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93d0ec2b0e623cd69636803df8db9e4b82df15aa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"(4) When adding/deleting security groups to VM\u0027s port, it will"},{"line_number":22,"context_line":"trigger the port status change, e.g. from ACTIVE to BUILDING, but"},{"line_number":23,"context_line":"under rescue scenario, we also depends on VIF\u0027s status to determin"},{"line_number":24,"context_line":"whethere waiting for vif plug event or not which is not suitable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch is to fix the above problem and there is another patch"},{"line_number":27,"context_line":"to enable the exclude rescue tests to test this fix"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_6001f305","line":24,"updated":"2017-01-17 23:44:17.000000000","message":"s/whethere/whether/\n\ns/or not which is not suitable/is appropriate/","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"97c19e06dc84414419a42ce5ac78fabebd876c51","unresolved":false,"context_lines":[{"line_number":21,"context_line":"(4) When adding/deleting security groups to VM\u0027s port, it will"},{"line_number":22,"context_line":"trigger the port status change, e.g. from ACTIVE to BUILDING, but"},{"line_number":23,"context_line":"under rescue scenario, we also depends on VIF\u0027s status to determin"},{"line_number":24,"context_line":"whethere waiting for vif plug event or not which is not suitable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch is to fix the above problem and there is another patch"},{"line_number":27,"context_line":"to enable the exclude rescue tests to test this fix"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_acef541c","line":24,"in_reply_to":"7a3c09a3_6001f305","updated":"2017-01-18 01:31:30.000000000","message":"Done:)","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"}],"nova/tests/unit/virt/xenapi/test_vif.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"619f4833de8d19fbcfb94d554bb15bf6c74da795","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            return_val\u003d\u0027fake_network_uuid\u0027)"},{"line_number":283,"context_line":"        mock_device_exists.return_value \u003d False"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self.ovs_driver.post_start_actions(instance, vif_ref)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertTrue(mock_VIF_get_record.called)"},{"line_number":288,"context_line":"        self.assertTrue(mock_network_get_bridge.called)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_07d20128","line":285,"updated":"2017-01-18 02:03:18.000000000","message":"Can you add a quick unit test in here that validates that none of the create/add functions except _create_linux_bridge() are called if _device_exists() returns True?\n\nYou really just do something like this:\n\n mock_devices_exists.return_value \u003d True\n mock_create_linux_bridge.reset_mock()\n mock_ovs_add_port.reset_mock()\n\n # Verify that we only call create_linux_bridge() when the vif device\n # already exists and not the OVS or veth pair creation\n self.ovs_driver.post_start_actions(instance, vif_ref)\n self.assertTrue(mock_create_linux_bridge.called)\n self.assertFalse(mock_ovs_add_port.called)","commit_id":"6e4ce2c57b7fbadea959beb54a74e9b27b595a26"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"7dafaed84d6b0a706e334dbfa02b2b479bf0c079","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            return_val\u003d\u0027fake_network_uuid\u0027)"},{"line_number":283,"context_line":"        mock_device_exists.return_value \u003d False"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self.ovs_driver.post_start_actions(instance, vif_ref)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertTrue(mock_VIF_get_record.called)"},{"line_number":288,"context_line":"        self.assertTrue(mock_network_get_bridge.called)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_a2a11bfa","line":285,"in_reply_to":"7a3c09a3_07d20128","updated":"2017-01-18 02:24:09.000000000","message":"Sure, I will do","commit_id":"6e4ce2c57b7fbadea959beb54a74e9b27b595a26"}],"nova/virt/xenapi/vif.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4acee50adfb87cce849691bd86ab3656d454b648","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        # Create Linux bridge qbrXXX"},{"line_number":393,"context_line":"        linux_br_name \u003d self._create_linux_bridge(vif_rec)"},{"line_number":394,"context_line":"        if not self._device_exists(tap_name):"},{"line_number":395,"context_line":"            LOG.debug(\"create veth pair for interim bridge %(interim_bridge)s \""},{"line_number":396,"context_line":"                      \"and linux bridge %(linux_bridge)s\","},{"line_number":397,"context_line":"                      {\u0027interim_bridge\u0027: bridge_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_e24b73af","line":394,"updated":"2016-12-21 08:58:34.000000000","message":"so at here we assume patch_port1 will co-exist with tap_name.","commit_id":"5506096aabe5c571b37242654fb043e0c4a2dfab"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"25f7e0d7e4d1e96fd61b885be4329395a3ceadcc","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        # Create Linux bridge qbrXXX"},{"line_number":393,"context_line":"        linux_br_name \u003d self._create_linux_bridge(vif_rec)"},{"line_number":394,"context_line":"        if not self._device_exists(tap_name):"},{"line_number":395,"context_line":"            LOG.debug(\"create veth pair for interim bridge %(interim_bridge)s \""},{"line_number":396,"context_line":"                      \"and linux bridge %(linux_bridge)s\","},{"line_number":397,"context_line":"                      {\u0027interim_bridge\u0027: bridge_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_15efc2e9","line":394,"in_reply_to":"1a6eadb0_e24b73af","updated":"2016-12-21 11:02:47.000000000","message":"yes, each time when tap_name is created, patch_port1 will also be created, and they will be deleted together","commit_id":"5506096aabe5c571b37242654fb043e0c4a2dfab"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"389750b14b77f74d39839587f4f8bd8dafe7de6a","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        LOG.debug(\"Create veth pair, port1:%(qvb)s, port2:%(qvo)s\","},{"line_number":323,"context_line":"                  {\u0027qvb\u0027: dev1_name, \u0027qvo\u0027: dev2_name})"},{"line_number":324,"context_line":"        for dev in [dev1_name, dev2_name]:"},{"line_number":325,"context_line":"            self._delete_net_dev(dev)"},{"line_number":326,"context_line":"        args \u003d {\u0027dev1_name\u0027: dev1_name, \u0027dev2_name\u0027: dev2_name}"},{"line_number":327,"context_line":"        self._exec_dom0_cmd(\u0027ip_link_add_veth_pair\u0027, args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_4f63d01a","side":"PARENT","line":324,"updated":"2017-01-03 09:45:42.000000000","message":"Either the function docs need changing or we should still do this.\nIs there anywhere else where create_veth_pair is expecting to delete the devices if they exist?\nNote that this change shouldn\u0027t be affecting the result since the main change is just not to attempt to create them lower down?","commit_id":"a286c16ea07f9ff6e2ee2ae805f1fd354787b1ee"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"91d675cae3fa8032c281bd1888b1d45969a3982c","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        LOG.debug(\"Create veth pair, port1:%(qvb)s, port2:%(qvo)s\","},{"line_number":323,"context_line":"                  {\u0027qvb\u0027: dev1_name, \u0027qvo\u0027: dev2_name})"},{"line_number":324,"context_line":"        for dev in [dev1_name, dev2_name]:"},{"line_number":325,"context_line":"            self._delete_net_dev(dev)"},{"line_number":326,"context_line":"        args \u003d {\u0027dev1_name\u0027: dev1_name, \u0027dev2_name\u0027: dev2_name}"},{"line_number":327,"context_line":"        self._exec_dom0_cmd(\u0027ip_link_add_veth_pair\u0027, args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_aacfcaae","side":"PARENT","line":324,"in_reply_to":"ba5201f7_4f63d01a","updated":"2017-01-03 09:55:20.000000000","message":"Currently, there are two parts which will create veth pair, one is for qvo/qvb https://github.com/openstack/nova/blob/5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf/nova/virt/xenapi/vif.py#L348\nThe other is for tap/interim https://github.com/openstack/nova/blob/5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf/nova/virt/xenapi/vif.py#L400\n\nIn qvo/qvb, we have checked the existance of qvo, it won\u0027t call _create_veth_pair\nIn tap/interim, we don\u0027t check the existance but call _create_veth_pair directly\n\nSo, I think deleting this code snippet is fine, but of course, we can keep it here but check the existance of tap fist, if already exist, don\u0027t call _create_veth_pair","commit_id":"a286c16ea07f9ff6e2ee2ae805f1fd354787b1ee"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"9ff075b8306493c4c70e621ddafc53439af8a834","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        LOG.debug(\"Create veth pair, port1:%(qvb)s, port2:%(qvo)s\","},{"line_number":323,"context_line":"                  {\u0027qvb\u0027: dev1_name, \u0027qvo\u0027: dev2_name})"},{"line_number":324,"context_line":"        for dev in [dev1_name, dev2_name]:"},{"line_number":325,"context_line":"            self._delete_net_dev(dev)"},{"line_number":326,"context_line":"        args \u003d {\u0027dev1_name\u0027: dev1_name, \u0027dev2_name\u0027: dev2_name}"},{"line_number":327,"context_line":"        self._exec_dom0_cmd(\u0027ip_link_add_veth_pair\u0027, args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_8a6da606","side":"PARENT","line":324,"in_reply_to":"ba5201f7_aacfcaae","updated":"2017-01-03 10:17:50.000000000","message":"OK - then then function docs need changing.","commit_id":"a286c16ea07f9ff6e2ee2ae805f1fd354787b1ee"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93d0ec2b0e623cd69636803df8db9e4b82df15aa","unresolved":false,"context_lines":[{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        # Create Linux bridge qbrXXX"},{"line_number":460,"context_line":"        linux_br_name \u003d self._create_linux_bridge(vif_rec)"},{"line_number":461,"context_line":"        if not self._device_exists(tap_name):"},{"line_number":462,"context_line":"            LOG.debug(\"create veth pair for interim bridge %(interim_bridge)s \""},{"line_number":463,"context_line":"                      \"and linux bridge %(linux_bridge)s\","},{"line_number":464,"context_line":"                      {\u0027interim_bridge\u0027: bridge_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_d3a7e308","line":461,"updated":"2017-01-17 23:44:17.000000000","message":"Seems to me that this particular change could probably have been a separate patch, as it\u0027s technically unrelated to the bug in question (around events firing that shouldn\u0027t be firing...)\n\nBut, that said, I\u0027m OK leaving this in the same patch.","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"97c19e06dc84414419a42ce5ac78fabebd876c51","unresolved":false,"context_lines":[{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        # Create Linux bridge qbrXXX"},{"line_number":460,"context_line":"        linux_br_name \u003d self._create_linux_bridge(vif_rec)"},{"line_number":461,"context_line":"        if not self._device_exists(tap_name):"},{"line_number":462,"context_line":"            LOG.debug(\"create veth pair for interim bridge %(interim_bridge)s \""},{"line_number":463,"context_line":"                      \"and linux bridge %(linux_bridge)s\","},{"line_number":464,"context_line":"                      {\u0027interim_bridge\u0027: bridge_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_acc03451","line":461,"in_reply_to":"7a3c09a3_d3a7e308","updated":"2017-01-18 01:31:30.000000000","message":"yeah, when first debugging this problem, I found this part is not correct logically, if the tap device exist ATM then delete and create it again cause the VIF(Port) status in neutron change, so I add this fix together in the same patch and thanks that you are OK to keep it here:)","commit_id":"b12dc8cf2cfe4b6b2c571626dd9936f19dd3cdea"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"636172c5b93054546dd5dfcdb26f12807057e9d1","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def _get_neutron_events(self, network_info, power_on, first_boot, rescue):"},{"line_number":637,"context_line":"        # Only get network-vif-plugged events with VIF\u0027s status is not active."},{"line_number":638,"context_line":"        # With VIF whose status is active, neutron may not notify such event."},{"line_number":639,"context_line":"        timeout \u003d CONF.vif_plugging_timeout"},{"line_number":640,"context_line":"        if (utils.is_neutron() and power_on and timeout and first_boot and"},{"line_number":641,"context_line":"                not rescue):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_ea7c4f22","line":638,"updated":"2017-01-11 02:40:36.000000000","message":"suggest move some comments from line587-591 to here. And add comments for rescue.","commit_id":"cd7e889eb294a2714cdb4f1018d8f99cac23c55b"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"1b1184f49bc84b1b824e009a5464bd3c7c41b11a","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def _get_neutron_events(self, network_info, power_on, first_boot, rescue):"},{"line_number":637,"context_line":"        # Only get network-vif-plugged events with VIF\u0027s status is not active."},{"line_number":638,"context_line":"        # With VIF whose status is active, neutron may not notify such event."},{"line_number":639,"context_line":"        timeout \u003d CONF.vif_plugging_timeout"},{"line_number":640,"context_line":"        if (utils.is_neutron() and power_on and timeout and first_boot and"},{"line_number":641,"context_line":"                not rescue):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_4bdc3de4","line":638,"in_reply_to":"ba5201f7_ea7c4f22","updated":"2017-01-12 06:36:09.000000000","message":"sure, I will modify the comments","commit_id":"cd7e889eb294a2714cdb4f1018d8f99cac23c55b"}]}
