)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"c23162795101d2f28e1f5e59642fb0cf6062fd8f","unresolved":true,"context_lines":[{"line_number":20,"context_line":"nova-compute process which is backed by Ironic."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Additionally, using ironic tends to manage far more physical machines per"},{"line_number":23,"context_line":"per nova-compute service instance then when when operating co-installed"},{"line_number":24,"context_line":"with a hypervisor. Often this means a cluster of a thousand machines,"},{"line_number":25,"context_line":"with three controllers, will see thousands of un-needed API calls upon"},{"line_number":26,"context_line":"service start, which elongates the entire process and negatively"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d83b3c83_aa71e677","line":23,"updated":"2021-10-08 22:40:44.000000000","message":"Super minor nit:  Duplicated \"per\" and new-line","commit_id":"f5509dd63552b172313c2512c84ae5206b46390b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"1dd0f1c12bbf9749fcd73c9992a66643235308ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"025a9703_da36be44","updated":"2021-11-03 07:30:56.000000000","message":"Thanks, Julia! I totally agree with the logic, but suggest to\nchange the output and the reno to make things a little more\nclear to operators.","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7872bfa4ac0d810a1b330743a307cfe274eb577","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a905de25_ffc34f44","updated":"2021-10-19 22:07:44.000000000","message":"Yes, the slow nova-compute restarts is a big problem for us (Yahoo). Thanks for fixing!","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"91c760d04f90977e5a2a99978e0370bd5b9a496f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7567bc85_5f11a992","updated":"2021-11-02 19:50:51.000000000","message":"this is very important for users with large ironic pools. Thank you Julia!","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b206b1c8_f5de43ad","updated":"2021-11-03 19:56:18.000000000","message":"I\u0027m happy with this. See review notes inline, more for my own understanding than anything else.","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"678b8f593316a725daca68832169793ea26fed0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b5cdf527_9d9e9695","updated":"2021-11-08 12:08:20.000000000","message":"LGTM, a follow up for the releasenote would be appreciated but there\u0027s no need to respin for that.","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4f576c672eaa3058b20e388d9cfddaa724e010b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1d9f92a3_fa0d7d30","updated":"2021-11-03 13:22:52.000000000","message":"Thanks!","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"9a833bcf252d82b0ef757139626f436c485d086d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0c453deb_b353de25","updated":"2021-11-03 16:35:02.000000000","message":"Thanks, Julia!","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"67fed4e9bef428014f5f447c243030d27d2faaed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c825e61d_06c22fcd","updated":"2021-11-04 15:24:00.000000000","message":"This looks good to me. \n\nThere was a discussion in IRC about it starting here[1]\n\n[1] https://meetings.opendev.org/irclogs/%23openstack-nova/%23openstack-nova.2021-11-04.log.html#t2021-11-04T15:02:23","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"f319ab961645647a838fae4ab8a6936770a39208","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"18513aec_d35523ca","updated":"2021-11-03 18:57:19.000000000","message":"re-adding +1","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"2f72bfd492610f057943b7f8518c49aad75495c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"de6dc69f_9403e39e","updated":"2021-11-08 23:21:46.000000000","message":"recheck","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"}],"nova/compute/manager.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":true,"context_lines":[{"line_number":956,"context_line":"            instance.task_state \u003d None"},{"line_number":957,"context_line":"            instance.save(expected_task_state\u003d[task_states.MIGRATING])"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def _init_instance(self, context, instance):"},{"line_number":960,"context_line":"        \"\"\"Initialize this instance during service init.\"\"\""},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        # NOTE(danms): If the instance appears to not be owned by this"}],"source_content_type":"text/x-python","patch_set":3,"id":"65151683_337e49f8","line":959,"updated":"2021-11-03 19:56:18.000000000","message":"(2/3) ... in this _init_instance() method...","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":true,"context_lines":[{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"        net_info \u003d instance.get_network_info()"},{"line_number":1139,"context_line":"        try:"},{"line_number":1140,"context_line":"            self.driver.plug_vifs(instance, net_info)"},{"line_number":1141,"context_line":"        except NotImplementedError as e:"},{"line_number":1142,"context_line":"            LOG.debug(e, instance\u003dinstance)"},{"line_number":1143,"context_line":"        except exception.VirtualInterfacePlugException:"}],"source_content_type":"text/x-python","patch_set":3,"id":"967a77a4_35ec4ba4","line":1140,"updated":"2021-11-03 19:56:18.000000000","message":"(1/1) This is the only place we call plug_vifs() from in the compute manager...","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":true,"context_lines":[{"line_number":1443,"context_line":"            # Initialise instances on the host that are not evacuating"},{"line_number":1444,"context_line":"            for instance in instances:"},{"line_number":1445,"context_line":"                if instance.uuid not in evacuated_instances:"},{"line_number":1446,"context_line":"                    self._init_instance(context, instance)"},{"line_number":1447,"context_line":""},{"line_number":1448,"context_line":"            # NOTE(gibi): collect all the instance uuids that is in some way"},{"line_number":1449,"context_line":"            # was already handled above. Either by init_instance or by"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f6eecac_ea854006","line":1446,"updated":"2021-11-03 19:56:18.000000000","message":"(3/3) ... which is only called here in init_host().","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7872bfa4ac0d810a1b330743a307cfe274eb577","unresolved":true,"context_lines":[{"line_number":1570,"context_line":"        \"\"\""},{"line_number":1571,"context_line":"        LOG.debug(\u0027VIF plug called for instance %(instance)s, however \u0027"},{"line_number":1572,"context_line":"                  \u0027Ironic manages VIF attachments for nodes.\u0027,"},{"line_number":1573,"context_line":"                  {\u0027instance\u0027: instance.node})"},{"line_number":1574,"context_line":""},{"line_number":1575,"context_line":"    def unplug_vifs(self, instance, network_info):"},{"line_number":1576,"context_line":"        \"\"\"Unplug VIFs from networks."}],"source_content_type":"text/x-python","patch_set":2,"id":"a4a21e71_7335fb48","line":1573,"updated":"2021-10-19 22:07:44.000000000","message":"if we want the uuid of the instance, then it should be s/instance.node/instance.uuid/.\n\nif we want the uuid of the ironic node, then maybe change the string to something like s/called for instance/called for ironic node/.\n\nOr put both instance and ironic node uuids (although that seems overkill).","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"1dd0f1c12bbf9749fcd73c9992a66643235308ac","unresolved":true,"context_lines":[{"line_number":1570,"context_line":"        \"\"\""},{"line_number":1571,"context_line":"        LOG.debug(\u0027VIF plug called for instance %(instance)s, however \u0027"},{"line_number":1572,"context_line":"                  \u0027Ironic manages VIF attachments for nodes.\u0027,"},{"line_number":1573,"context_line":"                  {\u0027instance\u0027: instance.node})"},{"line_number":1574,"context_line":""},{"line_number":1575,"context_line":"    def unplug_vifs(self, instance, network_info):"},{"line_number":1576,"context_line":"        \"\"\"Unplug VIFs from networks."}],"source_content_type":"text/x-python","patch_set":2,"id":"fb8c48d4_4c917850","line":1573,"in_reply_to":"a4a21e71_7335fb48","updated":"2021-11-03 07:30:56.000000000","message":"Good catch!\n\nI think putting both does not hurt, it can only help understanding what is going on.","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ebeaa8d38b3b60b91457536aef88fd0840bf9969","unresolved":true,"context_lines":[{"line_number":1570,"context_line":"        \"\"\""},{"line_number":1571,"context_line":"        LOG.debug(\u0027VIF plug called for instance %(instance)s, however \u0027"},{"line_number":1572,"context_line":"                  \u0027Ironic manages VIF attachments for nodes.\u0027,"},{"line_number":1573,"context_line":"                  {\u0027instance\u0027: instance.node})"},{"line_number":1574,"context_line":""},{"line_number":1575,"context_line":"    def unplug_vifs(self, instance, network_info):"},{"line_number":1576,"context_line":"        \"\"\"Unplug VIFs from networks."}],"source_content_type":"text/x-python","patch_set":2,"id":"36a21f58_e0f5da27","line":1573,"in_reply_to":"fb8c48d4_4c917850","updated":"2021-11-03 12:33:02.000000000","message":"Both would actually help people a lot in trouble shooting, since there are few places where this stuff gets logged.","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":true,"context_lines":[{"line_number":1907,"context_line":"        \"\"\""},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"        try:"},{"line_number":1910,"context_line":"            self.plug_vifs(instance, network_info)"},{"line_number":1911,"context_line":"        except Exception:"},{"line_number":1912,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1913,"context_line":"                LOG.error(\"Error preparing deploy for instance \""}],"source_content_type":"text/x-python","patch_set":3,"id":"b8bd8e42_d2d58a3d","side":"PARENT","line":1910,"updated":"2021-11-03 19:56:18.000000000","message":"And this was the only place in the Ironic driver that plug_vifs() was called.","commit_id":"fdfdba265833d237e22676f9a223ab8ca0fe1e03"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ecab6fd5ad27fdaf40c3eed5f7099b4a2bc2d289","unresolved":true,"context_lines":[{"line_number":1568,"context_line":"        :param network_info: Instance network information."},{"line_number":1569,"context_line":""},{"line_number":1570,"context_line":"        \"\"\""},{"line_number":1571,"context_line":"        LOG.debug(\u0027VIF plug called for instance %(instance)s on node \u0027"},{"line_number":1572,"context_line":"                  \u0027%(node)s, however Ironic manages VIF attachments \u0027"},{"line_number":1573,"context_line":"                  \u0027for nodes.\u0027,"},{"line_number":1574,"context_line":"                  {\u0027instance\u0027: instance.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"749b5b2c_9eb09ca9","line":1571,"updated":"2021-11-03 19:56:18.000000000","message":"I suppose there\u0027s no harm in some extra debug logging, but given that this can only get called from init_host() in the compute manager, I\u0027d just as easily be happy with a `pass` here.","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"678b8f593316a725daca68832169793ea26fed0c","unresolved":true,"context_lines":[{"line_number":1568,"context_line":"        :param network_info: Instance network information."},{"line_number":1569,"context_line":""},{"line_number":1570,"context_line":"        \"\"\""},{"line_number":1571,"context_line":"        LOG.debug(\u0027VIF plug called for instance %(instance)s on node \u0027"},{"line_number":1572,"context_line":"                  \u0027%(node)s, however Ironic manages VIF attachments \u0027"},{"line_number":1573,"context_line":"                  \u0027for nodes.\u0027,"},{"line_number":1574,"context_line":"                  {\u0027instance\u0027: instance.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"14590e21_3fa01656","line":1571,"in_reply_to":"749b5b2c_9eb09ca9","updated":"2021-11-08 12:08:20.000000000","message":"I\u0027m fine with this, we could just nuke the method and let the driver raise NotImplementedError which is handled and logged by _init_instance but this adds more context.","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"}],"releasenotes/notes/fix-ironic-compute-restart-port-attachments-3282e9ea051561d4.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7872bfa4ac0d810a1b330743a307cfe274eb577","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    baremetal nodes in order to align with the security requirements of a"},{"line_number":10,"context_line":"    physical baremetal node\u0027s lifecycle. The driver now ignores calls to the"},{"line_number":11,"context_line":"    ``plug_vifs`` method as it was a redundant operation and causing operators"},{"line_number":12,"context_line":"    to wait through an excessively long service restart."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"e46ba4a8_07872552","line":12,"updated":"2021-10-19 22:07:44.000000000","message":"Maybe \u0027Since it was redundant, the plug_vifs method doesn\u0027t do anything now, and has the side effect of speeding up service restarts.\u0027","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"1dd0f1c12bbf9749fcd73c9992a66643235308ac","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    baremetal nodes in order to align with the security requirements of a"},{"line_number":10,"context_line":"    physical baremetal node\u0027s lifecycle. The driver now ignores calls to the"},{"line_number":11,"context_line":"    ``plug_vifs`` method as it was a redundant operation and causing operators"},{"line_number":12,"context_line":"    to wait through an excessively long service restart."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"8374084b_ac17d4f4","line":12,"in_reply_to":"e46ba4a8_07872552","updated":"2021-11-03 07:30:56.000000000","message":"As this goes into the release notes and is meant for operators, how about you start with the effect of this patch?\n\n\"Fixes an issue with slow service restarts by ...\" and then add more details. Otherwise the good effect of this patch is lost in the technical explanation.","commit_id":"5ebce2f8a340458013162d10045f8fbc9d51e069"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"678b8f593316a725daca68832169793ea26fed0c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes slow compute restart when using the ``nova.virt.ironic`` compute"},{"line_number":5,"context_line":"    driver where the driver was previously attempting to attach VIFS on"},{"line_number":6,"context_line":"    start-up via the ``plug_vifs`` driver method. This method has grown"},{"line_number":7,"context_line":"    otherwise unused since the introduction of the ``attach_interface``"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"36833691_c5523c57","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":9},"updated":"2021-11-08 12:08:20.000000000","message":"I don\u0027t want to force a respin here for the releasenote, could we get a followup with a reference to the bug here?","commit_id":"7f81cf28bf21ad2afa98accfde3087c83b8e269b"}]}
