)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a9a7871b200c77e50652124e5261c44459d9acbd","unresolved":false,"context_lines":[{"line_number":16136,"context_line":"        mock_use_native_luks.return_value \u003d True"},{"line_number":16137,"context_line":""},{"line_number":16138,"context_line":"        # dest volume is encrypted"},{"line_number":16139,"context_line":"        mock_get_encryption.side_effects \u003d [{}, {\u0027provider\u0027: \u0027luks\u0027}]"},{"line_number":16140,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16141,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16142,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_d842dbab","line":16139,"range":{"start_line":16139,"start_character":28,"end_line":16139,"end_character":40},"updated":"2018-04-09 12:59:01.000000000","message":".side_effects isn\u0027t a thing.  You\u0027re creating an auto-mock.  This test is passing because the _get_volume_encryption mock will (by default, since you\u0027re not overriding it) return a mock, which evaluates to True.","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a9a7871b200c77e50652124e5261c44459d9acbd","unresolved":false,"context_lines":[{"line_number":16146,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16147,"context_line":""},{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.return_value \u003d {\u0027provider\u0027: \u0027luks\u0027}"},{"line_number":16150,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16151,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16152,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_78786ff7","line":16149,"range":{"start_line":16149,"start_character":27,"end_line":16149,"end_character":40},"updated":"2018-04-09 12:59:01.000000000","message":"Once you\u0027ve fixed the above, note that .return_value will be ignored (.side_effect takes precedence).  So you\u0027d be getting the successful result from the previous test.  To fix, either do this test first, or set .side_effect to None.","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"671878a6a12788da1d1fbeb1cfc87fa0808bb1a4","unresolved":false,"context_lines":[{"line_number":16146,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16147,"context_line":""},{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.return_value \u003d {\u0027provider\u0027: \u0027luks\u0027}"},{"line_number":16150,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16151,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16152,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_e6a14097","line":16149,"range":{"start_line":16149,"start_character":27,"end_line":16149,"end_character":40},"in_reply_to":"bf659307_78786ff7","updated":"2018-04-09 14:13:03.000000000","message":"Or reset the mock.","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"364ab22e721d55cf19594b1ce0e6c7d78cf9553a","unresolved":false,"context_lines":[{"line_number":16146,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16147,"context_line":""},{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.return_value \u003d {\u0027provider\u0027: \u0027luks\u0027}"},{"line_number":16150,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16151,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16152,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4cba8d6e","line":16149,"range":{"start_line":16149,"start_character":27,"end_line":16149,"end_character":40},"in_reply_to":"bf659307_e6a14097","updated":"2018-04-09 15:09:31.000000000","message":"No, reset_mock only clears the calls, it doesn\u0027t unset (or reset) side effects or return values.\n\n In [11]: m \u003d mock.Mock()\n\n In [12]: m.side_effect \u003d range(10)\n\n In [13]: m()\n Out[13]: 0\n\n In [14]: m()\n Out[14]: 1\n\n In [15]: m.return_value \u003d \u0027foo\u0027\n\n In [16]: m()\n Out[16]: 2\n\n In [17]: m.reset_mock()\n\n In [18]: m()\n Out[18]: 3\n\n In [19]: m.return_value \u003d \u0027baz\u0027\n\n In [20]: m()\n Out[20]: 4","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":16138,"context_line":"        # dest volume is encrypted"},{"line_number":16139,"context_line":"        mock_get_encryption.side_effect \u003d [{}, {\u0027provider\u0027: \u0027luks\u0027}]"},{"line_number":16140,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16141,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16142,"context_line":""},{"line_number":16143,"context_line":"        # src volume is encrypted"},{"line_number":16144,"context_line":"        mock_get_encryption.side_effect \u003d [{\u0027provider\u0027: \u0027luks\u0027}, {}]"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_1be12dfd","line":16141,"updated":"2018-04-09 13:28:46.000000000","message":"bad indent","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":16143,"context_line":"        # src volume is encrypted"},{"line_number":16144,"context_line":"        mock_get_encryption.side_effect \u003d [{\u0027provider\u0027: \u0027luks\u0027}, {}]"},{"line_number":16145,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16146,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16147,"context_line":""},{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.reset_mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_dbead5d6","line":16146,"updated":"2018-04-09 13:28:46.000000000","message":"bad indent","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":16146,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16147,"context_line":""},{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.reset_mock()"},{"line_number":16150,"context_line":"        mock_get_encryption.side_effect \u003d [{\u0027provider\u0027: \u0027luks\u0027},"},{"line_number":16151,"context_line":"                                            {\u0027provider\u0027: \u0027luks\u0027}]"},{"line_number":16152,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5b5c85ec","line":16149,"range":{"start_line":16149,"start_character":8,"end_line":16149,"end_character":40},"updated":"2018-04-09 13:28:46.000000000","message":"This isn\u0027t necessary","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":16148,"context_line":"        # both volumes are encrypted"},{"line_number":16149,"context_line":"        mock_get_encryption.reset_mock()"},{"line_number":16150,"context_line":"        mock_get_encryption.side_effect \u003d [{\u0027provider\u0027: \u0027luks\u0027},"},{"line_number":16151,"context_line":"                                            {\u0027provider\u0027: \u0027luks\u0027}]"},{"line_number":16152,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16153,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16154,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_1b6e0d96","line":16151,"range":{"start_line":16151,"start_character":43,"end_line":16151,"end_character":44},"updated":"2018-04-09 13:28:46.000000000","message":"bad indent","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":16150,"context_line":"        mock_get_encryption.side_effect \u003d [{\u0027provider\u0027: \u0027luks\u0027},"},{"line_number":16151,"context_line":"                                            {\u0027provider\u0027: \u0027luks\u0027}]"},{"line_number":16152,"context_line":"        self.assertRaises(NotImplementedError, drvr.swap_volume, self.context,"},{"line_number":16153,"context_line":"                         {}, {}, None, None, None)"},{"line_number":16154,"context_line":""},{"line_number":16155,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.guest.BlockDevice.is_job_complete\u0027,"},{"line_number":16156,"context_line":"                return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_3bb511ef","line":16153,"updated":"2018-04-09 13:28:46.000000000","message":"bad indent","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"e94671caf04ec25eea605b1a13b575fbef62dd2c","unresolved":false,"context_lines":[{"line_number":1546,"context_line":"    def swap_volume(self, context, old_connection_info,"},{"line_number":1547,"context_line":"                    new_connection_info, instance, mountpoint, resize_to):"},{"line_number":1548,"context_line":""},{"line_number":1549,"context_line":"        # NOTE(lyarwood): https://bugzilla.redhat.com/show_bug.cgi?id\u003d760547"},{"line_number":1550,"context_line":"        old_encrypt \u003d self._get_volume_encryption(context, old_connection_info)"},{"line_number":1551,"context_line":"        new_encrypt \u003d self._get_volume_encryption(context, new_connection_info)"},{"line_number":1552,"context_line":"        if (old_encrypt and self._use_native_luks(old_encrypt)) or \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0f2fd2f6","line":1549,"updated":"2018-04-06 11:30:30.000000000","message":"Not this patch\u0027s problem, pre-existing: instead of just a URL, you might want to write a note as to what is missing:\n\nThat _swap_volume() uses libvirt\u0027s blockRebase(), and libvirt\u0027s current notion of encryption key is persistent only to the  active layer (i.e. the top most image in a disk image chain, where QEMU is writing to) -- so it does not yet support mix \u0026 match encryption across a disk image chain depth greater than 1 (i.e. a \u003c- b \u003c- c), until RHBZ#760547 is fixed.","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a9a7871b200c77e50652124e5261c44459d9acbd","unresolved":false,"context_lines":[{"line_number":1549,"context_line":"        # NOTE(lyarwood): https://bugzilla.redhat.com/show_bug.cgi?id\u003d760547"},{"line_number":1550,"context_line":"        old_encrypt \u003d self._get_volume_encryption(context, old_connection_info)"},{"line_number":1551,"context_line":"        new_encrypt \u003d self._get_volume_encryption(context, new_connection_info)"},{"line_number":1552,"context_line":"        if (old_encrypt and self._use_native_luks(old_encrypt)) or \\"},{"line_number":1553,"context_line":"           (new_encrypt and self._use_native_luks(new_encrypt)):"},{"line_number":1554,"context_line":"            raise NotImplementedError(_(\"Swap volume is not supported for \""},{"line_number":1555,"context_line":"                \"encrypted volumes when native LUKS decryption is enabled.\"))"},{"line_number":1556,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_58b80be4","line":1553,"range":{"start_line":1552,"start_character":67,"end_line":1553,"end_character":64},"updated":"2018-04-09 12:59:01.000000000","message":"The backslash and the indent are bothersome, stylistically.  But meh.","commit_id":"e6c81604795217d93950498a4e38513b8ac4920a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061fea09ddf5f15dfa11abbc538ae62899c59c84","unresolved":false,"context_lines":[{"line_number":1550,"context_line":"        old_encrypt \u003d self._get_volume_encryption(context, old_connection_info)"},{"line_number":1551,"context_line":"        new_encrypt \u003d self._get_volume_encryption(context, new_connection_info)"},{"line_number":1552,"context_line":"        if ((old_encrypt and self._use_native_luks(old_encrypt)) or"},{"line_number":1553,"context_line":"            (new_encrypt and self._use_native_luks(new_encrypt))):"},{"line_number":1554,"context_line":"            raise NotImplementedError(_(\"Swap volume is not supported for \""},{"line_number":1555,"context_line":"                \"encrypted volumes when native LUKS decryption is enabled.\"))"},{"line_number":1556,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5bdfa539","line":1553,"updated":"2018-04-09 13:28:46.000000000","message":"This indent is still confusing to read with the next line.  For something like this, I would pull the conditions out, like:\n\n old_enc_luks \u003d old_encrypt and self._use_native_luks(old_encrypt)\n new_enc_luks \u003d new_encrypt and self._use_native_luks(new_encrypt)\n if old_enc_luks or new_enc_luks:\n     raise ...","commit_id":"f003f643c7ea3258f095202619dc77e2f4a9bb04"}]}
