)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2dcd76c95bd484d050a581231798f6d47e957138","unresolved":false,"context_lines":[{"line_number":14125,"context_line":"                }"},{"line_number":14126,"context_line":"            }"},{"line_number":14127,"context_line":"        ]"},{"line_number":14128,"context_line":"        show_port.side_effect \u003d ports_details"},{"line_number":14129,"context_line":"        virtapi \u003d manager.ComputeVirtAPI(mock.MagicMock())"},{"line_number":14130,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(virtapi, False)"},{"line_number":14131,"context_line":"        result \u003d drvr._all_ports_up(self.context, vifs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_64ba80c2","line":14128,"updated":"2016-09-28 09:02:14.000000000","message":"I think this side effect is not neccessary here as it should be not called","commit_id":"d2ea86ee23ffb65ae3c9b47745adf6ad1fb0587f"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19cc088eb02327491daa0b03ab460f837a5a7506","unresolved":false,"context_lines":[{"line_number":4863,"context_line":"        for vif in network_info:"},{"line_number":4864,"context_line":"            LOG.debug(\u0027Checking with neutron client if port %s is \u0027"},{"line_number":4865,"context_line":"                      \u0027really not configured properly\u0027, vif[\u0027id\u0027])"},{"line_number":4866,"context_line":"            network_api \u003d network.API()"},{"line_number":4867,"context_line":"            port_details \u003d network_api.show_port(context, vif[\u0027id\u0027])"},{"line_number":4868,"context_line":"            port_state \u003d port_details[\u0027port\u0027].get(\u0027status\u0027, None)"},{"line_number":4869,"context_line":"            if port_state !\u003d VIF_STATUS_ACTIVE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_75d758ed","line":4866,"updated":"2016-09-29 16:36:02.000000000","message":"I don\u0027t think this is something we want to be doing from the virt driver. If this is something we were going to do, I\u0027d do something with this as a callback before erroring on a timeout in the code that\u0027s waiting for the event in the compute manager, something here:\n\nhttps://github.com/openstack/nova/blob/2ce193e16d7ca5b93671d7f0d2e3b35761f5d386/nova/compute/manager.py#L479\n\nThe problem is we get the eventlet.timeout.Timeout raised back to the virt driver here, so we\u0027d have to intercept that somehow, because the error_callback is only called if we get an event from neutron but it\u0027s not what we wanted (vif plugging failed). The compute manager doesn\u0027t call error_callback if we hit the timeout, which I think is what you\u0027re trying to account for (rpc connection lost on the neutron side prevented the event from being sent).","commit_id":"550e69bc2adc5f7ddc91c8e76064232ac1f0bb23"},{"author":{"_account_id":20570,"name":"Adam Kijak","email":"adam.kijak@corp.ovh.com","username":"adam.kijak"},"change_message_id":"d519bbef4be65dcc8afaa94f31c642f22a2b4df1","unresolved":false,"context_lines":[{"line_number":4863,"context_line":"        for vif in network_info:"},{"line_number":4864,"context_line":"            LOG.debug(\u0027Checking with neutron client if port %s is \u0027"},{"line_number":4865,"context_line":"                      \u0027really not configured properly\u0027, vif[\u0027id\u0027])"},{"line_number":4866,"context_line":"            network_api \u003d network.API()"},{"line_number":4867,"context_line":"            port_details \u003d network_api.show_port(context, vif[\u0027id\u0027])"},{"line_number":4868,"context_line":"            port_state \u003d port_details[\u0027port\u0027].get(\u0027status\u0027, None)"},{"line_number":4869,"context_line":"            if port_state !\u003d VIF_STATUS_ACTIVE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_9b6eae2d","line":4866,"in_reply_to":"3a98d1f4_607878f3","updated":"2016-09-30 10:38:13.000000000","message":"I understand this is not the best solution on logic level but from my experience (operator of quite big infrastructures) it\u0027s been already working well on our production. Unfortunately, from the experience we can\u0027t consider RPC as reliable as we would like it to be. We\u0027ve encountered cases where a port of an instance was active but the instance was set in ERROR state because of missing notification.","commit_id":"550e69bc2adc5f7ddc91c8e76064232ac1f0bb23"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5e96d574001a198df1a99bbe2697a5f6d6d6a022","unresolved":false,"context_lines":[{"line_number":4863,"context_line":"        for vif in network_info:"},{"line_number":4864,"context_line":"            LOG.debug(\u0027Checking with neutron client if port %s is \u0027"},{"line_number":4865,"context_line":"                      \u0027really not configured properly\u0027, vif[\u0027id\u0027])"},{"line_number":4866,"context_line":"            network_api \u003d network.API()"},{"line_number":4867,"context_line":"            port_details \u003d network_api.show_port(context, vif[\u0027id\u0027])"},{"line_number":4868,"context_line":"            port_state \u003d port_details[\u0027port\u0027].get(\u0027status\u0027, None)"},{"line_number":4869,"context_line":"            if port_state !\u003d VIF_STATUS_ACTIVE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_607878f3","line":4866,"in_reply_to":"3a98d1f4_75d758ed","updated":"2016-09-29 16:59:54.000000000","message":"Agreed that we shouldn\u0027t be doing this from the virt driver, both in terms of using the network api, but also in terms of this level of logic. IMHO, if we didn\u0027t get a notification and are configured to expect them, then we should fail the build, or leave the instance in off state.\n\nIf we didn\u0027t get the notification, something is wrong or overloaded and hitting neutron\u0027s API once for each of our ports is probably not going to help anything.","commit_id":"550e69bc2adc5f7ddc91c8e76064232ac1f0bb23"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97dbaffa86044410c9d8baefb0654ad35b1ec253","unresolved":false,"context_lines":[{"line_number":4863,"context_line":"        for vif in network_info:"},{"line_number":4864,"context_line":"            LOG.debug(\u0027Checking with neutron client if port %s is \u0027"},{"line_number":4865,"context_line":"                      \u0027really not configured properly\u0027, vif[\u0027id\u0027])"},{"line_number":4866,"context_line":"            network_api \u003d network.API()"},{"line_number":4867,"context_line":"            port_details \u003d network_api.show_port(context, vif[\u0027id\u0027])"},{"line_number":4868,"context_line":"            port_state \u003d port_details[\u0027port\u0027].get(\u0027status\u0027, None)"},{"line_number":4869,"context_line":"            if port_state !\u003d VIF_STATUS_ACTIVE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_1f92354c","line":4866,"in_reply_to":"3a98d1f4_9b6eae2d","updated":"2016-10-03 13:52:19.000000000","message":"So much of nova will get into a bad state if RPC is not reliable that I think calling out this specific example, solved by a layering violation, is not a good tradeoff. I\u0027m not sure I\u0027ve heard anyone else report that, in the face of dropping RPC messages that \"failed boots due to missing the neutron event\" was the biggest concern.","commit_id":"550e69bc2adc5f7ddc91c8e76064232ac1f0bb23"}]}
