)]}'
{"nova/conf/workarounds.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"920efd3c7d27b49022929a7862b0393037337c06","unresolved":false,"context_lines":[{"line_number":74,"context_line":"interruption to the guest, using coordination with a guest agent to"},{"line_number":75,"context_line":"quiesce the filesystem."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When using libvirt 1.2.2 live snapshots fail intermittently under load"},{"line_number":78,"context_line":"(likely related to concurrent libvirt/qemu operations). This config"},{"line_number":79,"context_line":"option provides a mechanism to disable live snapshot, in favor of cold"},{"line_number":80,"context_line":"snapshot, while this is resolved. Cold snapshot causes an instance"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_d940a30a","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":24},"updated":"2017-09-22 20:30:46.000000000","message":"We require a minimum of 1.2.9 now (since pike actually). So it\u0027s kind of weird to have this in here.\n\nMaybe we should deprecate this option while we\u0027re in here? I\u0027m not sure what to do about re-wording this.","commit_id":"980d0fcd75c2b15ccb0af857a9848031919c6c7d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ca2fed1ed9958e8d3658221552655f6dfc00c56f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"interruption to the guest, using coordination with a guest agent to"},{"line_number":75,"context_line":"quiesce the filesystem."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"When using libvirt 1.2.2 live snapshots fail intermittently under load"},{"line_number":78,"context_line":"(likely related to concurrent libvirt/qemu operations). This config"},{"line_number":79,"context_line":"option provides a mechanism to disable live snapshot, in favor of cold"},{"line_number":80,"context_line":"snapshot, while this is resolved. Cold snapshot causes an instance"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_513da7b9","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":24},"in_reply_to":"7f515b1d_d940a30a","updated":"2017-09-22 23:29:49.000000000","message":"I guess it depends on our confidence that similar bugs don\u0027t exist in versions later than 1.2.2... If we\u0027re confident that its all working in later releases I agree that we should just remove the workaround entirely.","commit_id":"980d0fcd75c2b15ccb0af857a9848031919c6c7d"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"f0a53f955d42b42608d848de1d4974f726911c52","unresolved":false,"context_lines":[{"line_number":19011,"context_line":"        # All paths through livesnapshot trigger a chown behind privsep"},{"line_number":19012,"context_line":"        self.privsep_chown \u003d mock.patch.object(nova.privsep.dac_admin, \u0027chown\u0027)"},{"line_number":19013,"context_line":"        self.addCleanup(self.privsep_chown.stop)"},{"line_number":19014,"context_line":"        self.privsep_chown.start()"},{"line_number":19015,"context_line":""},{"line_number":19016,"context_line":"    def test_ami(self):"},{"line_number":19017,"context_line":"        # Assign different image_ref from nova/images/fakes for testing ami"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff5d4b2f_e54e2dc0","line":19014,"updated":"2017-09-19 12:56:59.000000000","message":"I am sure there is a good reason you\u0027re setting up this mock like this, but I can\u0027t think of it. Could you please educate me?","commit_id":"523e88ebe393de88fb98ff2b89f14d1ce1e85790"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4bcf8a399a65a1e6fc3e50448924d7fd737c7523","unresolved":false,"context_lines":[{"line_number":19011,"context_line":"        # All paths through livesnapshot trigger a chown behind privsep"},{"line_number":19012,"context_line":"        self.privsep_chown \u003d mock.patch.object(nova.privsep.dac_admin, \u0027chown\u0027)"},{"line_number":19013,"context_line":"        self.addCleanup(self.privsep_chown.stop)"},{"line_number":19014,"context_line":"        self.privsep_chown.start()"},{"line_number":19015,"context_line":""},{"line_number":19016,"context_line":"    def test_ami(self):"},{"line_number":19017,"context_line":"        # Assign different image_ref from nova/images/fakes for testing ami"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff5d4b2f_3f668aef","line":19014,"in_reply_to":"ff5d4b2f_e54e2dc0","updated":"2017-09-19 19:03:58.000000000","message":"so that I don\u0027t have to do this on *every* method below","commit_id":"523e88ebe393de88fb98ff2b89f14d1ce1e85790"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3059fbf0be8222bab00c405e370870b93d005786","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"                and not CONF.workarounds.disable_libvirt_livesnapshot"},{"line_number":1653,"context_line":"                # NOTE(rmk): We cannot perform live snapshots when a"},{"line_number":1654,"context_line":"                # managedSave file is present, so we will use the cold/legacy"},{"line_number":1655,"context_line":"                # method for instances which are shutdown or paused."},{"line_number":1656,"context_line":"                and state not in (power_state.SHUTDOWN, power_state.PAUSED)):"},{"line_number":1657,"context_line":"            live_snapshot \u003d True"},{"line_number":1658,"context_line":"            # Abort is an idempotent operation, so make sure any block"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_8f9e6405","line":1655,"range":{"start_line":1655,"start_character":58,"end_line":1655,"end_character":67},"updated":"2017-09-22 15:05:31.000000000","message":"This is new, right?","commit_id":"18869c8a197a1b80041b2a26a3d56861af779c27"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8428f3fe03269f53e061314ecc16c2c5edb26c25","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"                # NOTE(rmk): We cannot perform live snapshots when a"},{"line_number":1654,"context_line":"                # managedSave file is present, so we will use the cold/legacy"},{"line_number":1655,"context_line":"                # method for instances which are shutdown or paused."},{"line_number":1656,"context_line":"                and state not in (power_state.SHUTDOWN, power_state.PAUSED)):"},{"line_number":1657,"context_line":"            live_snapshot \u003d True"},{"line_number":1658,"context_line":"            # Abort is an idempotent operation, so make sure any block"},{"line_number":1659,"context_line":"            # jobs which may have failed are ended. This operation also"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_7ba9b2dd","line":1656,"updated":"2017-09-22 12:37:30.000000000","message":"nit: that\u0027s a confusing diff, would it not haven been better to preserve the existing indentation so there was only a 4 line change?","commit_id":"18869c8a197a1b80041b2a26a3d56861af779c27"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8395eccb41061813f18faf206850a20248ea5bde","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"                # NOTE(rmk): We cannot perform live snapshots when a"},{"line_number":1654,"context_line":"                # managedSave file is present, so we will use the cold/legacy"},{"line_number":1655,"context_line":"                # method for instances which are shutdown or paused."},{"line_number":1656,"context_line":"                and state not in (power_state.SHUTDOWN, power_state.PAUSED)):"},{"line_number":1657,"context_line":"            live_snapshot \u003d True"},{"line_number":1658,"context_line":"            # Abort is an idempotent operation, so make sure any block"},{"line_number":1659,"context_line":"            # jobs which may have failed are ended. This operation also"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_9b0eaee3","line":1656,"in_reply_to":"7f515b1d_7ba9b2dd","updated":"2017-09-22 12:45:35.000000000","message":"Well, I blame matt on that front, it came in with his change.","commit_id":"18869c8a197a1b80041b2a26a3d56861af779c27"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3059fbf0be8222bab00c405e370870b93d005786","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"                # NOTE(rmk): We cannot perform live snapshots when a"},{"line_number":1654,"context_line":"                # managedSave file is present, so we will use the cold/legacy"},{"line_number":1655,"context_line":"                # method for instances which are shutdown or paused."},{"line_number":1656,"context_line":"                and state not in (power_state.SHUTDOWN, power_state.PAUSED)):"},{"line_number":1657,"context_line":"            live_snapshot \u003d True"},{"line_number":1658,"context_line":"            # Abort is an idempotent operation, so make sure any block"},{"line_number":1659,"context_line":"            # jobs which may have failed are ended. This operation also"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_6fa32851","line":1656,"in_reply_to":"7f515b1d_9b0eaee3","updated":"2017-09-22 15:05:31.000000000","message":"\u003e Well, I blame matt on that front, it came in with his change.\n\nNot sure what you\u0027re referring to.","commit_id":"18869c8a197a1b80041b2a26a3d56861af779c27"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"da887df4bcc31a0d2dee8e707c6f66e7ef3b5135","unresolved":false,"context_lines":[{"line_number":1666,"context_line":"        else:"},{"line_number":1667,"context_line":"            live_snapshot \u003d False"},{"line_number":1668,"context_line":""},{"line_number":1669,"context_line":"        # NOTE(rmk): We cannot perform live snapshots when a managedSave"},{"line_number":1670,"context_line":"        #            file is present, so we will use the cold/legacy method"},{"line_number":1671,"context_line":"        #            for instances which are shutdown."},{"line_number":1672,"context_line":"        if state \u003d\u003d power_state.SHUTDOWN:"},{"line_number":1673,"context_line":"            live_snapshot \u003d False"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        self._prepare_domain_for_snapshot(context, live_snapshot, state,"},{"line_number":1676,"context_line":"                                          instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_aad7ce23","line":1673,"range":{"start_line":1669,"start_character":8,"end_line":1673,"end_character":33},"updated":"2017-09-22 15:22:05.000000000","message":"OK, so I didn\u0027t realize I changed this way back in PS2. I think what happened back then was this would fail test_create_image_from_paused_server in Tempest, so I moved that up and added PAUSED to the power_state check. We\u0027ll see.","commit_id":"83214a084d8aac2a4724d9c284c745cd7b485173"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7a44124cdced6507b2b2c4d4d6a53fa5baa3cccc","unresolved":false,"context_lines":[{"line_number":1666,"context_line":"        else:"},{"line_number":1667,"context_line":"            live_snapshot \u003d False"},{"line_number":1668,"context_line":""},{"line_number":1669,"context_line":"        # NOTE(rmk): We cannot perform live snapshots when a managedSave"},{"line_number":1670,"context_line":"        #            file is present, so we will use the cold/legacy method"},{"line_number":1671,"context_line":"        #            for instances which are shutdown."},{"line_number":1672,"context_line":"        if state \u003d\u003d power_state.SHUTDOWN:"},{"line_number":1673,"context_line":"            live_snapshot \u003d False"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        self._prepare_domain_for_snapshot(context, live_snapshot, state,"},{"line_number":1676,"context_line":"                                          instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_92593436","line":1673,"range":{"start_line":1669,"start_character":8,"end_line":1673,"end_character":33},"in_reply_to":"7f515b1d_aad7ce23","updated":"2018-01-09 14:04:16.000000000","message":"Yeah this fails if you\u0027re snapshotting a paused instance and not using the Pike UCA and have disable_live_snapshot\u003dFalse, see bug 1741667 and change https://review.openstack.org/#/c/531386/6/lib/nova_plugins/hypervisor-libvirt that tickles it.","commit_id":"83214a084d8aac2a4724d9c284c745cd7b485173"}]}
