)]}'
{"nova/tests/unit/virt/test_block_device.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d282c60ff4fb3e67ddbd513cd9428c0e316007d","unresolved":false,"context_lines":[{"line_number":799,"context_line":"        test_bdm \u003d self.driver_classes[\u0027snapshot\u0027]("},{"line_number":800,"context_line":"                fake_block_device.fake_bdm_object("},{"line_number":801,"context_line":"                        self.context, no_volume_snapshot))"},{"line_number":802,"context_line":"        # When we create a volume, we attach it using the old flow."},{"line_number":803,"context_line":"        self.attachment_id \u003d None"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        snapshot \u003d {\u0027id\u0027: \u0027fake-volume-id-1\u0027,"},{"line_number":806,"context_line":"                    \u0027attach_status\u0027: \u0027detached\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_1ad8f5ec","line":803,"range":{"start_line":802,"start_character":8,"end_line":803,"end_character":33},"updated":"2018-03-23 15:04:57.000000000","message":"This is wrong now.","commit_id":"ad2778d77cbc0501091a17bcf3ec6bc8b9b4ebc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e03919166e479aed1876907f16a780113c945abc","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"                    self.context, test_bdm.volume_size,"},{"line_number":1121,"context_line":"                    \u0027%s-blank-vol\u0027 % uuids.uuid, \u0027\u0027,"},{"line_number":1122,"context_line":"                    availability_zone\u003dNone, microversion\u003d\u00273.44\u0027)"},{"line_number":1123,"context_line":"                attachment_create.assert_called_once_with("},{"line_number":1124,"context_line":"                    self.context, volume[\u0027id\u0027], instance.uuid)"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            vol_attach.assert_called_once_with(self.context, instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_3a694ff8","line":1123,"updated":"2018-03-22 23:17:03.000000000","message":"Should assert that the test_bdm now has the attachment_id field set on it.","commit_id":"ad2778d77cbc0501091a17bcf3ec6bc8b9b4ebc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b9a1723f8178441fb1326014ceac72df8e1b392","unresolved":false,"context_lines":[{"line_number":915,"context_line":"        self.volume_api.get_snapshot.return_value \u003d snapshot"},{"line_number":916,"context_line":"        self.stub_volume_create(volume)"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        # _test_volume_attach determines if we attach with legacy or new flow"},{"line_number":919,"context_line":"        # based on self.attachment_id being set."},{"line_number":920,"context_line":"        self.attachment_id \u003d ATTACHMENT_ID"},{"line_number":921,"context_line":"        instance_uuid \u003d self._test_volume_attach("},{"line_number":922,"context_line":"            test_bdm, no_volume_snapshot, volume, wait_func\u003dwait_func)"},{"line_number":923,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2e34484a","line":920,"range":{"start_line":918,"start_character":8,"end_line":920,"end_character":42},"updated":"2019-09-16 22:48:42.000000000","message":"This is redundant, stub_volume_create does it.","commit_id":"c325ab9613a2f5b607c0d3e62d32d04680253911"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1c2e2027eb315cc996ec20961f8f9b4b6cf69bcf","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                        fake_value \u003d ATTACHMENT_ID"},{"line_number":369,"context_line":"                    else:"},{"line_number":370,"context_line":"                        fake_value \u003d \u0027fake_changed_value\u0027"},{"line_number":371,"context_line":"                    test_bdm[alias or fld] \u003d fake_value"},{"line_number":372,"context_line":"            test_bdm.save()"},{"line_number":373,"context_line":"            for fld, alias in test_bdm._update_on_save.items():"},{"line_number":374,"context_line":"                self.assertEqual(test_bdm[alias or fld],"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_e9dcbf47","line":371,"range":{"start_line":371,"start_character":29,"end_line":371,"end_character":41},"updated":"2019-09-18 23:39:01.000000000","message":"Could use \u0027field\u0027 here","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"efbfb401528fc0f164eede91114bda889e928025","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                        fake_value \u003d ATTACHMENT_ID"},{"line_number":369,"context_line":"                    else:"},{"line_number":370,"context_line":"                        fake_value \u003d \u0027fake_changed_value\u0027"},{"line_number":371,"context_line":"                    test_bdm[alias or fld] \u003d fake_value"},{"line_number":372,"context_line":"            test_bdm.save()"},{"line_number":373,"context_line":"            for fld, alias in test_bdm._update_on_save.items():"},{"line_number":374,"context_line":"                self.assertEqual(test_bdm[alias or fld],"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_20897ac9","line":371,"range":{"start_line":371,"start_character":29,"end_line":371,"end_character":41},"in_reply_to":"3fa7e38b_e9dcbf47","updated":"2019-09-19 15:45:34.000000000","message":"Ack.","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"}],"nova/virt/block_device.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2f90685cf90a6f806d75672b0a15453834576fb0","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        except exception.CinderAPIVersionNotAvailable:"},{"line_number":327,"context_line":"            return volume_api.get(context, volume_id)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _create_volume(self, context, instance, volume_api, size,"},{"line_number":330,"context_line":"                       wait_func\u003dNone, **create_kwargs):"},{"line_number":331,"context_line":"        av_zone \u003d _get_volume_create_az_value(instance)"},{"line_number":332,"context_line":"        name \u003d create_kwargs.pop(\u0027name\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_32a50648","line":329,"updated":"2018-03-22 14:05:23.000000000","message":"nit: I could have done this common code refactor in a separate change, and then add the attachment creation stuff on top. The patch would be smaller on the code side but not the tests since the majority of the changes in the tests are because of the attachment create call here.","commit_id":"ad2778d77cbc0501091a17bcf3ec6bc8b9b4ebc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"43b17d3d25b880def04fbfdf7ba49a3a8fd41a10","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        except exception.CinderAPIVersionNotAvailable:"},{"line_number":327,"context_line":"            return volume_api.get(context, volume_id)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _create_volume(self, context, instance, volume_api, size,"},{"line_number":330,"context_line":"                       wait_func\u003dNone, **create_kwargs):"},{"line_number":331,"context_line":"        av_zone \u003d _get_volume_create_az_value(instance)"},{"line_number":332,"context_line":"        name \u003d create_kwargs.pop(\u0027name\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_caea28ab","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":22},"updated":"2018-04-06 12:40:01.000000000","message":"Should we rather call this something like _create_and_reserve_volume?","commit_id":"b6e5af5ea317a82b53893db77b2e25d468653dae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"43db128c955de9adbaeaff469cf88bb7661ecb63","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        except exception.CinderAPIVersionNotAvailable:"},{"line_number":327,"context_line":"            return volume_api.get(context, volume_id)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _create_volume(self, context, instance, volume_api, size,"},{"line_number":330,"context_line":"                       wait_func\u003dNone, **create_kwargs):"},{"line_number":331,"context_line":"        av_zone \u003d _get_volume_create_az_value(instance)"},{"line_number":332,"context_line":"        name \u003d create_kwargs.pop(\u0027name\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_dfc97378","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":22},"in_reply_to":"bf659307_caea28ab","updated":"2018-04-17 22:05:23.000000000","message":"meh, it\u0027s only reserved if you\u0027re doing the attachment create too, which we might not be doing if cinder is old.","commit_id":"b6e5af5ea317a82b53893db77b2e25d468653dae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a398199ae55deddd3ec3567e1e562737bd752e5f","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        except exception.CinderAPIVersionNotAvailable:"},{"line_number":356,"context_line":"            return volume_api.get(context, volume_id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def _create_volume(self, context, instance, volume_api, size,"},{"line_number":359,"context_line":"                       wait_func\u003dNone, **create_kwargs):"},{"line_number":360,"context_line":"        av_zone \u003d _get_volume_create_az_value(instance)"},{"line_number":361,"context_line":"        name \u003d create_kwargs.pop(\u0027name\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_e4cc1a63","line":358,"updated":"2019-09-16 14:51:08.000000000","message":"This refactor without the attachment stuff is split off here:\n\nhttps://review.opendev.org/#/c/682378/","commit_id":"f13a29ee723d6d8cfd055885657a97966b585c1e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6596dde77de5999909db2ba94a4c5214a4a4ce85","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        av_zone \u003d _get_volume_create_az_value(instance)"},{"line_number":361,"context_line":"        name \u003d create_kwargs.pop(\u0027name\u0027, \u0027\u0027)"},{"line_number":362,"context_line":"        description \u003d create_kwargs.pop(\u0027description\u0027, \u0027\u0027)"},{"line_number":363,"context_line":"        # First try to create with microversion 3.44 which will tell us if"},{"line_number":364,"context_line":"        # we can create an attachment as well."},{"line_number":365,"context_line":"        create_attachment \u003d False"},{"line_number":366,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_9c7a6385","line":363,"updated":"2019-07-01 22:11:16.000000000","message":"Given https://review.opendev.org/#/c/621061/ we could probably just drop this now given we require queens-level cinder, but if we wanted to backport this we\u0027d leave this in. Given how long it\u0027s taken to get this reviewed in nova it\u0027s likely not worth backporting anyway.","commit_id":"f13a29ee723d6d8cfd055885657a97966b585c1e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d65311f2155dc9b7653e551334b8f3431205c3b3","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                       \u0027device_name\u0027: \u0027mount_device\u0027,"},{"line_number":279,"context_line":"                       \u0027device_type\u0027: None,"},{"line_number":280,"context_line":"                       # needed for boot from volume for blank/image/snapshot"},{"line_number":281,"context_line":"                       \u0027attachment_id\u0027: None}"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _transform(self):"},{"line_number":284,"context_line":"        if (not self._bdm_obj.source_type \u003d\u003d self._valid_source or"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_7a44dab7","line":281,"updated":"2019-09-21 16:34:33.000000000","message":"https://review.opendev.org/#/c/682508/3 shows that we still need this (PS2 failed without it since we didn\u0027t save the created attachment_id to the BDM).","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a8e9d39e2c31e36e3d7317c8022f2d6bf219ba76","unresolved":false,"context_lines":[{"line_number":752,"context_line":"            self.volume_id \u003d vol[\u0027id\u0027]"},{"line_number":753,"context_line":"            # It\u0027s confusing but we have to set this like a dict entry rather"},{"line_number":754,"context_line":"            # than an attribute because attributes are proxied through to the"},{"line_number":755,"context_line":"            # underlying BlockDeviceMapping object."},{"line_number":756,"context_line":"            self[\u0027attachment_id\u0027] \u003d attachment_id"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Call the volume attach now"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_a94a4724","line":755,"updated":"2019-09-18 23:07:40.000000000","message":"So... does this mean that we *don\u0027t* want attachment_id proxied through to the underlying BDM object? Why not?","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d65311f2155dc9b7653e551334b8f3431205c3b3","unresolved":false,"context_lines":[{"line_number":752,"context_line":"            self.volume_id \u003d vol[\u0027id\u0027]"},{"line_number":753,"context_line":"            # It\u0027s confusing but we have to set this like a dict entry rather"},{"line_number":754,"context_line":"            # than an attribute because attributes are proxied through to the"},{"line_number":755,"context_line":"            # underlying BlockDeviceMapping object."},{"line_number":756,"context_line":"            self[\u0027attachment_id\u0027] \u003d attachment_id"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Call the volume attach now"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_1a15a69c","line":755,"in_reply_to":"3fa7e38b_004b1eb0","updated":"2019-09-21 16:34:33.000000000","message":"I\u0027ll remove the comments.","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"efbfb401528fc0f164eede91114bda889e928025","unresolved":false,"context_lines":[{"line_number":752,"context_line":"            self.volume_id \u003d vol[\u0027id\u0027]"},{"line_number":753,"context_line":"            # It\u0027s confusing but we have to set this like a dict entry rather"},{"line_number":754,"context_line":"            # than an attribute because attributes are proxied through to the"},{"line_number":755,"context_line":"            # underlying BlockDeviceMapping object."},{"line_number":756,"context_line":"            self[\u0027attachment_id\u0027] \u003d attachment_id"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Call the volume attach now"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_004b1eb0","line":755,"in_reply_to":"3fa7e38b_4965d3b4","updated":"2019-09-19 15:45:34.000000000","message":"I\u0027m not sure I even grok this anymore but it was needed to actually get the change saved on the underlying BDM when the super.attach method\u0027s @update_db decorator exits and saves the changes to the BDM which is the attachment_id we create and set here. Maybe I should just remove the comment. It\u0027s also possible that since this patch is so old, something I was dealing with before is no longer an issue [1] and I could test removing this and see if the patch on top still works (I\u0027d just remove this in the patch on top that also makes initialize_connection blow up). I\u0027ll try that.\n\n[1] Thinking of this specifically: I35ebff9a06617aa58e612919eba81e8eea21f6a3","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0b9419c360b6f77d4c91ac570524bc16213251db","unresolved":false,"context_lines":[{"line_number":752,"context_line":"            self.volume_id \u003d vol[\u0027id\u0027]"},{"line_number":753,"context_line":"            # It\u0027s confusing but we have to set this like a dict entry rather"},{"line_number":754,"context_line":"            # than an attribute because attributes are proxied through to the"},{"line_number":755,"context_line":"            # underlying BlockDeviceMapping object."},{"line_number":756,"context_line":"            self[\u0027attachment_id\u0027] \u003d attachment_id"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        # Call the volume attach now"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_4965d3b4","line":755,"in_reply_to":"3fa7e38b_a94a4724","updated":"2019-09-18 23:09:40.000000000","message":"My point is that maybe these code comments could use a little more info.","commit_id":"059c0132898ef71b5287950d3177c36c306bfc19"}]}
