)]}'
{"nova/virt/ironic/driver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2cf9973319833b687040e653bd1cc8403a4d856b","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"            for vif in vifs:"},{"line_number":1451,"context_line":"                LOG.info(\"Detaching unexpected VIF %(vif)s from Ironic node \""},{"line_number":1452,"context_line":"                         \"%(node)s\", {\u0027vif\u0027: vif.id, \u0027node\u0027: node.uuid})"},{"line_number":1453,"context_line":"                self.ironicclient.call(\"node.vif_detach\", node.uuid, vif.id)"},{"line_number":1454,"context_line":""},{"line_number":1455,"context_line":"    def plug_vifs(self, instance, network_info):"},{"line_number":1456,"context_line":"        \"\"\"Plug VIFs into networks."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_ff516dda","line":1453,"range":{"start_line":1453,"start_character":0,"end_line":1453,"end_character":76},"updated":"2018-01-31 13:07:48.000000000","message":"I wonder if we should catch BadRequest here to avoid potential races..","commit_id":"55619c034807f644387d51ed6664e882a8160303"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"832328a58aa40012f35fdf61cf782d3ccff72aa7","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"            for vif in vifs:"},{"line_number":1451,"context_line":"                LOG.info(\"Detaching unexpected VIF %(vif)s from Ironic node \""},{"line_number":1452,"context_line":"                         \"%(node)s\", {\u0027vif\u0027: vif.id, \u0027node\u0027: node.uuid})"},{"line_number":1453,"context_line":"                self.ironicclient.call(\"node.vif_detach\", node.uuid, vif.id)"},{"line_number":1454,"context_line":""},{"line_number":1455,"context_line":"    def plug_vifs(self, instance, network_info):"},{"line_number":1456,"context_line":"        \"\"\"Plug VIFs into networks."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_eb33da60","line":1453,"range":{"start_line":1453,"start_character":0,"end_line":1453,"end_character":76},"in_reply_to":"5f93b717_ff516dda","updated":"2018-02-12 18:43:48.000000000","message":"I think that would be sensible.","commit_id":"55619c034807f644387d51ed6664e882a8160303"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0a527671ca8ac04935e732aa3151ec5326a08533","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"                LOG.debug(\"VIF %(vif)s isn\u0027t attached to Ironic node %(node)s\","},{"line_number":1449,"context_line":"                          {\u0027vif\u0027: port_id, \u0027node\u0027: node.uuid})"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"        if unplug_all:"},{"line_number":1452,"context_line":"            # NOTE(mgoddard): In some rare cases nova can lose track of some of"},{"line_number":1453,"context_line":"            # an instance\u0027s VIFs, causing them to not be detached from the"},{"line_number":1454,"context_line":"            # ironic node on tear down.  To work around this, we list any"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_3b2776ca","line":1451,"updated":"2018-06-28 23:04:16.000000000","message":"If you\u0027re just going to do this anyway, why not get the vif list from the source of true rather than rely on the instance network info cache (which I guess is racy and stale in some cases), and then remove them all that way, otherwise use what\u0027s in the network info cache?","commit_id":"810487baff1d0ba9369125410c8f99d2180ffe33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"653bc445dff51bdd2196c7f35174fe130b574128","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"                          {\u0027vif\u0027: port_id, \u0027node\u0027: node.uuid})"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"        if unplug_all:"},{"line_number":1452,"context_line":"            # NOTE(mgoddard): In some rare cases nova can lose track of some of"},{"line_number":1453,"context_line":"            # an instance\u0027s VIFs, causing them to not be detached from the"},{"line_number":1454,"context_line":"            # ironic node on tear down.  To work around this, we list any"},{"line_number":1455,"context_line":"            # remaining attached VIFs and detach them. See"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_db2c42b4","line":1452,"updated":"2018-06-28 23:01:06.000000000","message":"As noted in the comments, I\u0027m not sure why we\u0027d add this hack workaround when ironic is doing it anyway given I8d683d2d506c97535b5a8f9a5de4c070c7e887df? Then we just have this extra \"but are you really sure?!\" situation which seems pointless.","commit_id":"810487baff1d0ba9369125410c8f99d2180ffe33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0a527671ca8ac04935e732aa3151ec5326a08533","unresolved":false,"context_lines":[{"line_number":1455,"context_line":"            # remaining attached VIFs and detach them. See"},{"line_number":1456,"context_line":"            # https://bugs.launchpad.net/nova/+bug/1733861."},{"line_number":1457,"context_line":"            vifs \u003d self.ironicclient.call(\"node.vif_list\", node.uuid)"},{"line_number":1458,"context_line":"            for vif in vifs:"},{"line_number":1459,"context_line":"                LOG.info(\"Detaching unexpected VIF %(vif)s from Ironic node \""},{"line_number":1460,"context_line":"                         \"%(node)s\", {\u0027vif\u0027: vif.id, \u0027node\u0027: node.uuid})"},{"line_number":1461,"context_line":"                try:"},{"line_number":1462,"context_line":"                    self.ironicclient.call(\"node.vif_detach\", node.uuid,"},{"line_number":1463,"context_line":"                                           vif.id)"},{"line_number":1464,"context_line":"                except ironic.exc.BadRequest:"},{"line_number":1465,"context_line":"                    # NOTE(mgoddard): Handle the case where something else"},{"line_number":1466,"context_line":"                    # detaches the interface between vif_list and vif_detach."},{"line_number":1467,"context_line":"                    pass"},{"line_number":1468,"context_line":""},{"line_number":1469,"context_line":"    def plug_vifs(self, instance, network_info):"},{"line_number":1470,"context_line":"        \"\"\"Plug VIFs into networks."}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5b091230","line":1467,"range":{"start_line":1458,"start_character":12,"end_line":1467,"end_character":24},"updated":"2018-06-28 23:04:16.000000000","message":"Also, you could probably move this into a common method and just pass in the vif and node uuid so you don\u0027t need the duplication above and here.","commit_id":"810487baff1d0ba9369125410c8f99d2180ffe33"}]}
