)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8097fc6ae9c43e10b12a50acea3e0910d6ce673d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"cases where consoles are not provided for the guest, failing is"},{"line_number":17,"context_line":"the only reasonable action, but if consoles *are* provided, it may"},{"line_number":18,"context_line":"be advantageous to still allow the guest to boot and be accessed"},{"line_number":19,"context_line":"out of band."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"DocImpact"},{"line_number":22,"context_line":"Related to blueprint admin-event-callback-api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAU3%2F%2FnY4%3D","line":19,"updated":"2014-02-25 16:53:07.000000000","message":"Given your description of the use case for this config option, it rather smells like something that ought to be configurable at a per image or instance level, rather than globally for the cloud. I\u0027d expect that most users will just want their NIC setup to be treated as a fatal error, and only a few users would care about it being ignorable.\n\nIf this global config parameter is set to false, you are inconveniencing the majority who won\u0027t want errors ignored, to serve a minority. Conversely setting it to false to suit the majority, will leave the minority without any options. \n\nAllowing it to be set as an image property would avoid this problem by letting users opt-in as they so desire, and not force a particular behaviour globally which is always going to be wrong for some % of the users.\n\nThat all said, are there really people out there asking for this ability to have a VM with broken networking, and is Neutron really expected to fail frequently enough to make this tunable behaviour worthwhile ?","commit_id":"1ba1ff6043bccda3d7717a5edfb9cdbb35bcf771"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make libvirt wait for neutron to confirm plugging before boot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes the libvirt driver use the instance event mechanism to"},{"line_number":10,"context_line":"wait for neutron to confirm that VIF plugging is complete before"},{"line_number":11,"context_line":"actually starting the VM."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Here we introduce a new configuration option of vif_plugging_is_fatal"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAU3%2F%2FgHM%3D","line":10,"updated":"2014-02-26 09:05:55.000000000","message":"Does this also take into account the unplugging of a VIF?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ffa6c08c3a238bdca3d4eccdc516d78dee77e9c1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make libvirt wait for neutron to confirm plugging before boot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes the libvirt driver use the instance event mechanism to"},{"line_number":10,"context_line":"wait for neutron to confirm that VIF plugging is complete before"},{"line_number":11,"context_line":"actually starting the VM."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Here we introduce a new configuration option of vif_plugging_is_fatal"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAU3%2F%2FbN8%3D","line":10,"in_reply_to":"AAAAU3%2F%2FgHM%3D","updated":"2014-02-26 18:11:43.000000000","message":"No, as it says here, it only covers the boot race right now. Hotplugging a VIF doesn\u0027t have the same race concern.","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e5350051042588b419b53ce7dd1f98193ecbbfa0","unresolved":false,"context_lines":[{"line_number":24,"context_line":"the oslo.messaging merge, we weren\u0027t declaring expected exceptions"},{"line_number":25,"context_line":"for run_instance() which this also fixes."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DocImpact"},{"line_number":28,"context_line":"Related to blueprint admin-event-callback-api"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I2f771d8bade513d2e54d98a176069011950830aa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"AAAAVn%2F%2B%2FyM%3D","line":27,"updated":"2014-03-10 19:56:13.000000000","message":"Looking at the new config options and this commit message it\u0027s not clear that this only happens in the neutron case.  Despite the liberal usage of neutron here it would help to add an explicit statement that this waiting only occurs if neutron is being used.","commit_id":"d7339c537fdb4c542ea7fd01c39c3cc22906e199"}],"etc/nova/nova.conf.sample":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":1953,"context_line":"# Whether to use cow images (boolean value)"},{"line_number":1954,"context_line":"#use_cow_images\u003dtrue"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"# Fail instance boot if vif plugging fails (boolean value)"},{"line_number":1957,"context_line":"#vif_plugging_is_fatal\u003dtrue"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAU3%2F%2FgFw%3D","line":1956,"updated":"2014-02-26 09:05:55.000000000","message":"Should this cover the vif hot plug or unplug? Or will that be added in a separate patch set?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ffa6c08c3a238bdca3d4eccdc516d78dee77e9c1","unresolved":false,"context_lines":[{"line_number":1953,"context_line":"# Whether to use cow images (boolean value)"},{"line_number":1954,"context_line":"#use_cow_images\u003dtrue"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"# Fail instance boot if vif plugging fails (boolean value)"},{"line_number":1957,"context_line":"#vif_plugging_is_fatal\u003dtrue"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAU3%2F%2FbNY%3D","line":1956,"in_reply_to":"AAAAU3%2F%2FgFw%3D","updated":"2014-02-26 18:11:43.000000000","message":"We already return failure if vif hotplug fails, right? We wouldn\u0027t kill the instance in that case, so this is only pertinent to the boot problem.","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"}],"nova/virt/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97c2bc15ecd079d9e5b0ab69f7805605092c6c76","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                help\u003d\u0027Whether to use cow images\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027vif_plugging_is_fatal\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                help\u003d\"Fail instance boot if vif plugging fails\"),"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2FhB0%3D","line":53,"updated":"2014-03-05 16:46:14.000000000","message":"We still need some discussion on this. I think this probably needs to be a tristate thing that is one of:\n\n require: boot fails if this fails\n optional: boot will continue if this fails with a log message\n ignore: we don\u0027t wait at all (compatibility with older neutrons, etc)","commit_id":"20dfcb8a1fe619db6d5fe880949489b81488a704"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"2f8f2eb8efbc73f9279c616a67efc3572036f395","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                help\u003d\u0027Whether to use cow images\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027vif_plugging_is_fatal\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                help\u003d\"Fail instance boot if vif plugging fails\"),"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2FeRg%3D","line":53,"in_reply_to":"AAAAVn%2F%2FgY0%3D","updated":"2014-03-05 21:43:57.000000000","message":"Both options seem good, but I think I\u0027d go the configurable timeout route.  It seems likely enough that it may need to be tuned.","commit_id":"20dfcb8a1fe619db6d5fe880949489b81488a704"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"8a2f6864f0814de9651670bac0b048b54705216c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                help\u003d\u0027Whether to use cow images\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027vif_plugging_is_fatal\u0027,"},{"line_number":52,"context_line":"                default\u003dTrue,"},{"line_number":53,"context_line":"                help\u003d\"Fail instance boot if vif plugging fails\"),"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2FgY0%3D","line":53,"in_reply_to":"AAAAVn%2F%2FhB0%3D","updated":"2014-03-05 17:50:46.000000000","message":"I\u0027m kind of on the fence with  vif_pluggin_is_fatal \u003d [require/optional/ignore] ; I wonder if we might just want: vif_pluggin_is_fatal\u003dtrue/false; vif_plugging_notification_timeout \u003d (seconds).  I think this gives us more flexibility to tune.","commit_id":"20dfcb8a1fe619db6d5fe880949489b81488a704"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"8fe569e061e97434d06c0df019cd561700b29998","unresolved":false,"context_lines":[{"line_number":846,"context_line":"                raise exception.NovaException()"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"        try:"},{"line_number":849,"context_line":"            # FIXME(danms): Perhaps we should use CONF.neutron_url_timeout ?"},{"line_number":850,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":851,"context_line":"                    instance, events, error_callback\u003d_neutron_failed_callback):"},{"line_number":852,"context_line":"                for vif in network_info:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2BfA8%3D","line":849,"updated":"2014-02-20 22:55:43.000000000","message":"that timeout is more intended for a timeout for the neutron_api to respond. It seems like like timeout would be for the neutron_backend to wire a port. I think the deadline of 300 seconds is probably more then enough right now but we might have to tune it later .","commit_id":"6d7157b7b2d3816c4ae49f77a4ab418662ed7980"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7bff29687928e880634b64deb8c68acc3ebe033e","unresolved":false,"context_lines":[{"line_number":846,"context_line":"                raise exception.NovaException()"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"        try:"},{"line_number":849,"context_line":"            # FIXME(danms): Perhaps we should use CONF.neutron_url_timeout ?"},{"line_number":850,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":851,"context_line":"                    instance, events, error_callback\u003d_neutron_failed_callback):"},{"line_number":852,"context_line":"                for vif in network_info:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2Be%2B8%3D","line":849,"in_reply_to":"AAAAUX%2F%2BfA8%3D","updated":"2014-02-20 22:58:07.000000000","message":"Okay, I\u0027ll nuke the FIXME then.","commit_id":"6d7157b7b2d3816c4ae49f77a4ab418662ed7980"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"67d588c2b51de3e009edc4e151bdc4ca6ce0fc1a","unresolved":false,"context_lines":[{"line_number":852,"context_line":"                    self.vif_driver.plug(instance, vif)"},{"line_number":853,"context_line":"        except exception.NovaException:"},{"line_number":854,"context_line":"            # Neutron reported failure and we didn\u0027t swallow it, so"},{"line_number":855,"context_line":"            # bail here"},{"line_number":856,"context_line":"            raise exception.VirtualInterfaceCreateException()"},{"line_number":857,"context_line":"        except eventlet.timeout.Timeout:"},{"line_number":858,"context_line":"            # We never heard from Neutron"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F%2FqU%3D","line":855,"updated":"2014-02-22 19:21:25.000000000","message":"for debugging it may be useful to log the exception. can we narrow this down to more specific exceptions?","commit_id":"0af6baed43c65e19e3063d5d4da56d21e3b1f733"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dc0513f88fa1c2c0a5ca90146621a1f9934755","unresolved":false,"context_lines":[{"line_number":839,"context_line":"            events \u003d []"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"        def _neutron_failed_callback(event_name):"},{"line_number":842,"context_line":"            LOG.error(_(\u0027Neutron Reported failure on event \u0027"},{"line_number":843,"context_line":"                        \u0027%(event)s for instance %(uuid)s\u0027),"},{"line_number":844,"context_line":"                      {\u0027event\u0027: event_name, \u0027instance\u0027: instance.uuid})"},{"line_number":845,"context_line":"            if CONF.vif_plugging_is_fatal:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FnhA%3D","line":842,"updated":"2014-02-25 16:44:30.000000000","message":"Move this inside the CONF.vif_plugging_is_fatal block and log it as an error there, else it\u0027s a warning (if the user doesn\u0027t consider it fatal, we shouldn\u0027t log it as an error).\n\nAlso, would be good to log the instance in the message, i.e. instance\u003dinstance.","commit_id":"8e768f38cdbccabd2f3594165fce25c241fc55f5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"10298f7dbe3aa9f6ea93474b9670034ec2a8afea","unresolved":false,"context_lines":[{"line_number":839,"context_line":"            events \u003d []"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"        def _neutron_failed_callback(event_name):"},{"line_number":842,"context_line":"            LOG.error(_(\u0027Neutron Reported failure on event \u0027"},{"line_number":843,"context_line":"                        \u0027%(event)s for instance %(uuid)s\u0027),"},{"line_number":844,"context_line":"                      {\u0027event\u0027: event_name, \u0027instance\u0027: instance.uuid})"},{"line_number":845,"context_line":"            if CONF.vif_plugging_is_fatal:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FnAQ%3D","line":842,"in_reply_to":"AAAAU3%2F%2FnhA%3D","updated":"2014-02-25 17:31:01.000000000","message":"It\u0027s not the user choosing if it\u0027s fatal, it\u0027s the admin (currently) so I think this is always an error.","commit_id":"8e768f38cdbccabd2f3594165fce25c241fc55f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dc0513f88fa1c2c0a5ca90146621a1f9934755","unresolved":false,"context_lines":[{"line_number":843,"context_line":"                        \u0027%(event)s for instance %(uuid)s\u0027),"},{"line_number":844,"context_line":"                      {\u0027event\u0027: event_name, \u0027instance\u0027: instance.uuid})"},{"line_number":845,"context_line":"            if CONF.vif_plugging_is_fatal:"},{"line_number":846,"context_line":"                raise exception.NovaException()"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"        try:"},{"line_number":849,"context_line":"            with self.virtapi.wait_for_instance_event("}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2Fngo%3D","line":846,"updated":"2014-02-25 16:44:30.000000000","message":"Could actually just move the message into the NovaException in the fatal case, and log in the warning case.","commit_id":"8e768f38cdbccabd2f3594165fce25c241fc55f5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dc0513f88fa1c2c0a5ca90146621a1f9934755","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        except eventlet.timeout.Timeout:"},{"line_number":858,"context_line":"            # We never heard from Neutron"},{"line_number":859,"context_line":"            LOG.warn(_(\u0027Timeout waiting for vif plugging callback for \u0027"},{"line_number":860,"context_line":"                       \u0027instance %(uuid)s\u0027), {\u0027uuid\u0027: instance[\u0027uuid\u0027]})"},{"line_number":861,"context_line":"            if CONF.vif_plugging_is_fatal:"},{"line_number":862,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":863,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FngM%3D","line":860,"updated":"2014-02-25 16:44:30.000000000","message":"Would prefer to just pass the instance kwarg to the log method.","commit_id":"8e768f38cdbccabd2f3594165fce25c241fc55f5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":830,"context_line":"                continue"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        return list(uuids)"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def plug_vifs(self, instance, network_info):"},{"line_number":835,"context_line":"        \"\"\"Plug VIFs into networks.\"\"\""},{"line_number":836,"context_line":"        for vif in network_info:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgIs%3D","line":833,"updated":"2014-02-26 09:05:55.000000000","message":"do we need the event treatment here?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        for vif in network_info:"},{"line_number":837,"context_line":"            self.vif_driver.plug(instance, vif)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    def unplug_vifs(self, instance, network_info):"},{"line_number":840,"context_line":"        \"\"\"Unplug VIFs from networks.\"\"\""},{"line_number":841,"context_line":"        for vif in network_info:"},{"line_number":842,"context_line":"            self.vif_driver.unplug(instance, vif)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgIo%3D","line":839,"updated":"2014-02-26 09:05:55.000000000","message":"is this relevant for the unplugging?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":3475,"context_line":"                    \u0027%(event)s for instance %(uuid)s\u0027),"},{"line_number":3476,"context_line":"                  {\u0027event\u0027: event_name, \u0027uuid\u0027: instance.uuid})"},{"line_number":3477,"context_line":"        if CONF.vif_plugging_is_fatal:"},{"line_number":3478,"context_line":"            raise exception.NovaException()"},{"line_number":3479,"context_line":""},{"line_number":3480,"context_line":"    def _create_domain_and_network(self, context, xml, instance, network_info,"},{"line_number":3481,"context_line":"                                   block_device_info\u003dNone, power_on\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgPE%3D","line":3478,"updated":"2014-02-26 09:05:55.000000000","message":"is it worth passing in the message to this exception?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ffa6c08c3a238bdca3d4eccdc516d78dee77e9c1","unresolved":false,"context_lines":[{"line_number":3475,"context_line":"                    \u0027%(event)s for instance %(uuid)s\u0027),"},{"line_number":3476,"context_line":"                  {\u0027event\u0027: event_name, \u0027uuid\u0027: instance.uuid})"},{"line_number":3477,"context_line":"        if CONF.vif_plugging_is_fatal:"},{"line_number":3478,"context_line":"            raise exception.NovaException()"},{"line_number":3479,"context_line":""},{"line_number":3480,"context_line":"    def _create_domain_and_network(self, context, xml, instance, network_info,"},{"line_number":3481,"context_line":"                                   block_device_info\u003dNone, power_on\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FbM8%3D","line":3478,"in_reply_to":"AAAAU3%2F%2FgPE%3D","updated":"2014-02-26 18:11:43.000000000","message":"Yes.","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":3537,"context_line":"            domain.destroy()"},{"line_number":3538,"context_line":"            self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3539,"context_line":"                         block_device_info\u003dblock_device_info)"},{"line_number":3540,"context_line":"            raise exception.VirtualInterfaceCreateException()"},{"line_number":3541,"context_line":"        except eventlet.timeout.Timeout:"},{"line_number":3542,"context_line":"            # We never heard from Neutron"},{"line_number":3543,"context_line":"            LOG.warn(_(\u0027Timeout waiting for vif plugging callback for \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgN4%3D","line":3540,"updated":"2014-02-26 09:05:55.000000000","message":"Can we pass the exception details to the new exception being raised","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":3539,"context_line":"                         block_device_info\u003dblock_device_info)"},{"line_number":3540,"context_line":"            raise exception.VirtualInterfaceCreateException()"},{"line_number":3541,"context_line":"        except eventlet.timeout.Timeout:"},{"line_number":3542,"context_line":"            # We never heard from Neutron"},{"line_number":3543,"context_line":"            LOG.warn(_(\u0027Timeout waiting for vif plugging callback for \u0027"},{"line_number":3544,"context_line":"                       \u0027instance %(uuid)s\u0027), {\u0027uuid\u0027: instance[\u0027uuid\u0027]})"},{"line_number":3545,"context_line":"            if CONF.vif_plugging_is_fatal:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgLo%3D","line":3542,"updated":"2014-02-26 09:05:55.000000000","message":"could there be cases of false positive here. that is, when there neutron service is under heaving load and it does not manage to treat the client requests, there could be a timeout. the default here is 30 seconds. not sure what the event timeout is. https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L44","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ffa6c08c3a238bdca3d4eccdc516d78dee77e9c1","unresolved":false,"context_lines":[{"line_number":3539,"context_line":"                         block_device_info\u003dblock_device_info)"},{"line_number":3540,"context_line":"            raise exception.VirtualInterfaceCreateException()"},{"line_number":3541,"context_line":"        except eventlet.timeout.Timeout:"},{"line_number":3542,"context_line":"            # We never heard from Neutron"},{"line_number":3543,"context_line":"            LOG.warn(_(\u0027Timeout waiting for vif plugging callback for \u0027"},{"line_number":3544,"context_line":"                       \u0027instance %(uuid)s\u0027), {\u0027uuid\u0027: instance[\u0027uuid\u0027]})"},{"line_number":3545,"context_line":"            if CONF.vif_plugging_is_fatal:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FbL4%3D","line":3542,"in_reply_to":"AAAAU3%2F%2FgLo%3D","updated":"2014-02-26 18:11:43.000000000","message":"The default is 300 seconds, not 30. The timeout being handled here is the case where we have already made all of the calls to neutron and are waiting for the events to filter back in. It doesn\u0027t have anything to do with the neutron client request timeout.","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e769788b1315b20eba99cfce2e14e48dcc023a77","unresolved":false,"context_lines":[{"line_number":4449,"context_line":"        # concurrent request occurs to iptables, then it complains."},{"line_number":4450,"context_line":"        max_retry \u003d CONF.live_migration_retry_count"},{"line_number":4451,"context_line":"        for cnt in range(max_retry):"},{"line_number":4452,"context_line":"            try:"},{"line_number":4453,"context_line":"                self.plug_vifs(instance, network_info)"},{"line_number":4454,"context_line":"                break"},{"line_number":4455,"context_line":"            except processutils.ProcessExecutionError:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FgJY%3D","line":4452,"updated":"2014-02-26 09:05:55.000000000","message":"do you need the event treatment here?","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ffa6c08c3a238bdca3d4eccdc516d78dee77e9c1","unresolved":false,"context_lines":[{"line_number":4449,"context_line":"        # concurrent request occurs to iptables, then it complains."},{"line_number":4450,"context_line":"        max_retry \u003d CONF.live_migration_retry_count"},{"line_number":4451,"context_line":"        for cnt in range(max_retry):"},{"line_number":4452,"context_line":"            try:"},{"line_number":4453,"context_line":"                self.plug_vifs(instance, network_info)"},{"line_number":4454,"context_line":"                break"},{"line_number":4455,"context_line":"            except processutils.ProcessExecutionError:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAU3%2F%2FbL0%3D","line":4452,"in_reply_to":"AAAAU3%2F%2FgJY%3D","updated":"2014-02-26 18:11:43.000000000","message":"This patch is just about boot right now.","commit_id":"c1e7d86a40271985b5c58766916f2cd44e72269b"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"3299d0bf8dd467e2de7373a9bf51da908e045fe0","unresolved":false,"context_lines":[{"line_number":3545,"context_line":"            events \u003d []"},{"line_number":3546,"context_line":""},{"line_number":3547,"context_line":"        try:"},{"line_number":3548,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":3549,"context_line":"                    instance, events,"},{"line_number":3550,"context_line":"                    error_callback\u003dself._neutron_failed_callback):"},{"line_number":3551,"context_line":"                self.plug_vifs(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F3YY%3D","line":3548,"updated":"2014-02-27 18:07:31.000000000","message":"I think it might be worthwhile adding another config option: \n\nneutron_vif_plug_notification_timeout or something like that and pass in here as deadline. This seems like this would be useful in the case that one sets vif_plugging_is_fatal\u003dFalse so one doesn\u0027t need to wait the deadline before the instance boots.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"046a58f3f0ede79b3487809afb8e438aa2770ac7","unresolved":false,"context_lines":[{"line_number":3545,"context_line":"            events \u003d []"},{"line_number":3546,"context_line":""},{"line_number":3547,"context_line":"        try:"},{"line_number":3548,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":3549,"context_line":"                    instance, events,"},{"line_number":3550,"context_line":"                    error_callback\u003dself._neutron_failed_callback):"},{"line_number":3551,"context_line":"                self.plug_vifs(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F3zI%3D","line":3548,"in_reply_to":"AAAAVX%2F%2F0Hg%3D","updated":"2014-03-03 17:46:19.000000000","message":"I *think* we do need it to wait and still not fail, as I think windowsy folks will want that. They will want their VM to boot so they can RDP in and manage it. But, feedback here would be good.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0dfb345468382a3ff4411ba778f78edb32563f07","unresolved":false,"context_lines":[{"line_number":3545,"context_line":"            events \u003d []"},{"line_number":3546,"context_line":""},{"line_number":3547,"context_line":"        try:"},{"line_number":3548,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":3549,"context_line":"                    instance, events,"},{"line_number":3550,"context_line":"                    error_callback\u003dself._neutron_failed_callback):"},{"line_number":3551,"context_line":"                self.plug_vifs(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F0Hg%3D","line":3548,"in_reply_to":"AAAAVX%2F%2F20g%3D","updated":"2014-02-28 04:17:48.000000000","message":"Hrm, good points, having a value to tune probably doesn\u0027t make much sense. I wonder if we even need the optional state then and just make it: if not vif_plugging_is_fatal then don\u0027t even wait?","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"939df8182be5b701a8ac3e5561339c06e78edb85","unresolved":false,"context_lines":[{"line_number":3545,"context_line":"            events \u003d []"},{"line_number":3546,"context_line":""},{"line_number":3547,"context_line":"        try:"},{"line_number":3548,"context_line":"            with self.virtapi.wait_for_instance_event("},{"line_number":3549,"context_line":"                    instance, events,"},{"line_number":3550,"context_line":"                    error_callback\u003dself._neutron_failed_callback):"},{"line_number":3551,"context_line":"                self.plug_vifs(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F20g%3D","line":3548,"in_reply_to":"AAAAVX%2F%2F3YY%3D","updated":"2014-02-27 19:43:19.000000000","message":"Well, it certainly seems like that should be configurable, agree. I think the general consensus is that we should try to avoid adding configuration options for things that wouldn\u0027t really need be tweaked.\n\nSo, in what case would we (a) be running neutron and (b) want to wait for a shorter period of time? IMHO, running a neutron that is not sending the events is a different case. Instead of having a timeout and setting it to zero in that case, I think I\u0027d rather change \"vif_plugging_is_fatal\" to something multi-state like:\n\n vif_plugging \u003d [required,optional,ignored]\n\nThose aren\u0027t the right names, but the first two would be \"fatal\" and \"not fatal\" and the third would be \"don\u0027t expect/wait for them at all\".\n\nThoughts?","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"fb8235c9b7b9ae328494f6ccbe1fff3442200e73","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                domain.destroy()"},{"line_number":3576,"context_line":"                self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3577,"context_line":"                             block_device_info\u003dblock_device_info)"},{"line_number":3578,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":3579,"context_line":"        domain.resume()"},{"line_number":3580,"context_line":"        return domain"},{"line_number":3581,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F3dQ%3D","line":3578,"updated":"2014-02-27 17:57:33.000000000","message":"I think we should call: deallocate_for_instance() in  neutronv2/api  here so that the neutron ports that nova allocated gets deleted in neutron when this occurs.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"046a58f3f0ede79b3487809afb8e438aa2770ac7","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                domain.destroy()"},{"line_number":3576,"context_line":"                self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3577,"context_line":"                             block_device_info\u003dblock_device_info)"},{"line_number":3578,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":3579,"context_line":"        domain.resume()"},{"line_number":3580,"context_line":"        return domain"},{"line_number":3581,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F3y0%3D","line":3578,"in_reply_to":"AAAAVX%2F%2F0Io%3D","updated":"2014-03-03 17:46:19.000000000","message":"The manager bit of this set that does that has changed in the last week, so yeah.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4c6f804eca57325ac03c5754041f7d8450bb8931","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                domain.destroy()"},{"line_number":3576,"context_line":"                self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3577,"context_line":"                             block_device_info\u003dblock_device_info)"},{"line_number":3578,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":3579,"context_line":"        domain.resume()"},{"line_number":3580,"context_line":"        return domain"},{"line_number":3581,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F2aY%3D","line":3578,"in_reply_to":"AAAAVX%2F%2F22M%3D","updated":"2014-02-27 20:46:33.000000000","message":"Actually, this will happen in manager when we raise the exception, so I think this is okay as it is. See manager.py::build_and_run_instance, last exception handler.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0dfb345468382a3ff4411ba778f78edb32563f07","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                domain.destroy()"},{"line_number":3576,"context_line":"                self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3577,"context_line":"                             block_device_info\u003dblock_device_info)"},{"line_number":3578,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":3579,"context_line":"        domain.resume()"},{"line_number":3580,"context_line":"        return domain"},{"line_number":3581,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F0Io%3D","line":3578,"in_reply_to":"AAAAVX%2F%2F2aY%3D","updated":"2014-02-28 04:17:48.000000000","message":"Hrm, I actually had tested this and noticed the ports weren\u0027t deleted. Perhaps I missed something though. I\u0027ll  check again though and get back to you.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"939df8182be5b701a8ac3e5561339c06e78edb85","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                domain.destroy()"},{"line_number":3576,"context_line":"                self.cleanup(context, instance, network_info\u003dnetwork_info,"},{"line_number":3577,"context_line":"                             block_device_info\u003dblock_device_info)"},{"line_number":3578,"context_line":"                raise exception.VirtualInterfaceCreateException()"},{"line_number":3579,"context_line":"        domain.resume()"},{"line_number":3580,"context_line":"        return domain"},{"line_number":3581,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2F22M%3D","line":3578,"in_reply_to":"AAAAVX%2F%2F3dQ%3D","updated":"2014-02-27 19:43:19.000000000","message":"Agreed.","commit_id":"3948dac5629b7a22878d99228874765adbf51161"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97c2bc15ecd079d9e5b0ab69f7805605092c6c76","unresolved":false,"context_lines":[{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    def _create_domain_and_network(self, context, xml, instance, network_info,"},{"line_number":3547,"context_line":"                                   block_device_info\u003dNone, power_on\u003dTrue,"},{"line_number":3548,"context_line":"                                   reboot\u003dFalse, vifs_already_plugged\u003dFalse):"},{"line_number":3549,"context_line":""},{"line_number":3550,"context_line":"        \"\"\"Do required network setup and create domain.\"\"\""},{"line_number":3551,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2FhCs%3D","line":3548,"updated":"2014-03-05 16:46:14.000000000","message":"I don\u0027t actually like this change, but I think it\u0027s the easiest way to get where we need to be right now, especially since it\u0027s only used in one case.\n\nIt feels like long-term we need to look at our vifs below and decide which (if any) will be generating new neutron events because they\u0027re not currently plugged. But, that\u0027s a larger project than we can undertake right now I think.","commit_id":"20dfcb8a1fe619db6d5fe880949489b81488a704"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"8a2f6864f0814de9651670bac0b048b54705216c","unresolved":false,"context_lines":[{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    def _create_domain_and_network(self, context, xml, instance, network_info,"},{"line_number":3547,"context_line":"                                   block_device_info\u003dNone, power_on\u003dTrue,"},{"line_number":3548,"context_line":"                                   reboot\u003dFalse, vifs_already_plugged\u003dFalse):"},{"line_number":3549,"context_line":""},{"line_number":3550,"context_line":"        \"\"\"Do required network setup and create domain.\"\"\""},{"line_number":3551,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2FgYU%3D","line":3548,"in_reply_to":"AAAAVn%2F%2FhCs%3D","updated":"2014-03-05 17:50:46.000000000","message":"i agree.","commit_id":"20dfcb8a1fe619db6d5fe880949489b81488a704"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"f3339a0562797ac80fba85d8c8f7fa54aeca7fee","unresolved":false,"context_lines":[{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":"        # Initialize all the necessary networking, block devices and"},{"line_number":2077,"context_line":"        # start the instance."},{"line_number":2078,"context_line":"        self._create_domain_and_network(context, xml, instance, network_info,"},{"line_number":2079,"context_line":"                                        block_device_info, reboot\u003dTrue)"},{"line_number":2080,"context_line":"        self._prepare_pci_devices_for_use("},{"line_number":2081,"context_line":"            pci_manager.get_instance_pci_devs(instance))"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2Fa6Q%3D","line":2078,"updated":"2014-03-06 06:59:29.000000000","message":"We also need to add: vifs_already_plugged\u003dTrue here otherwise hard reboot fails. This occurs only on the non voting gate \u0027check-tempest-dsvm-neutron-full\u0027","commit_id":"a8375cb7edd9e09c20858b47265ee930de47e258"}]}
