)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"923fc0c6a8a9741ac2aa98e2984887d5227f6239","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow glance to delete the image, by flattening the cloned"},{"line_number":10,"context_line":"disk immediately and by storing the parent pool of the source image"},{"line_number":11,"context_line":"in the system metadata table."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This way the information required to create a successfull"},{"line_number":14,"context_line":"live-snapshot is still available, even if the glance api returns a 404."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"59bcb3e7_ef86cbc9","line":11,"updated":"2023-06-08 13:37:07.000000000","message":"So you\u0027re trading image delete-ability for space conservation and speed? That seems weird to me. As was noted already, this needs to be a spec with an explanation about why someone might want to do this en masse and what other implications there are. It\u0027s certainly not obvious to me why this is better, especially in the face of this pending work:\n\nhttps://review.opendev.org/c/openstack/glance_store/+/884524\n\nThat said, please resist the urge to explain/discuss here. That\u0027s what the spec is for.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow glance to delete the image, by flattening the cloned"},{"line_number":10,"context_line":"disk immediately and by storing the parent pool of the source image"},{"line_number":11,"context_line":"in the system metadata table."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This way the information required to create a successfull"},{"line_number":14,"context_line":"live-snapshot is still available, even if the glance api returns a 404."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"36b722ad_d43b61a6","line":11,"in_reply_to":"59bcb3e7_ef86cbc9","updated":"2023-06-08 13:57:58.000000000","message":"i was not aware of this work in glance, which might be a better solution than this. I will create a spec for discussion.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"51841bde_972fa3bf","updated":"2023-06-08 10:29:54.000000000","message":"This blueprint is still not approved so it cannot merge.\n\nignoring that for a moment there are some issue with this patch.\n\nfirst i think you have combined two things in one. 1st the ability to flatten the RBD images when we clone them. second additional changes related to the storage of the source image pool in the instance system metadata.\nThe second set of changes related to snapshot shoudl be split out into a second commit.\n\ni think we will also need some documentation updates to describe this feature \nthis note need to be updated to note that the shallow cloning behavior is now controlled by a config option https://github.com/openstack/nova/blob/308633f93aef5823ba0e03cb5284ed8f647af7e8/doc/source/admin/image-caching.rst?plain\u003d1#L45-L52\n\nwe will also need a release note the feature you are introducing is providing a way to disable an existing feature that took a lot of effort to enable\n\nhttps://github.com/openstack/nova/blob/308633f93aef5823ba0e03cb5284ed8f647af7e8/releasenotes/notes/bp-rbd-instance-snapshots-130e860b726ddc16.yaml\n\nwe will also need to have a release note to explain that its now possible to force the images to be flattened for nova managed ceph storage.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"45c849b0_21409628","updated":"2023-06-08 13:57:58.000000000","message":"Will create spec first, and update this change accordingly.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"680a92f110382d522ee7daf4e12705ea330c499e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b3e16e1e_07cff0aa","updated":"2023-06-01 14:11:33.000000000","message":"recheck","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"0ea5458800baa2c6d2f6c6e53e9cea0f0ffb7b84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bc95cec1_9ea9c184","updated":"2023-06-01 18:35:17.000000000","message":"recheck","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"2a71a879e8db0a818286d846076e78ec023dc5aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"78c4dfab_d15224ea","updated":"2023-06-02 10:01:41.000000000","message":"recheck\n\nsomehow Instance could not be found in nova-tox-functional-py38","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"3d66cb2c2cda12cf4375e49d9ca6efd366f3ff92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8e85a7f8_900c0a5d","updated":"2023-06-02 06:56:31.000000000","message":"recheck\n\nworked fine last time..","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"fdc7c1f0bf134093437a05bffa11b1806922ac4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"80b4b5f6_e9d6076e","updated":"2023-06-05 08:39:54.000000000","message":"recheck\nrandom read timeout during lvm test failed.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"nova/conf/workarounds.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":271,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":272,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":273,"context_line":"\"\"\"),"},{"line_number":274,"context_line":"    cfg.BoolOpt("},{"line_number":275,"context_line":"        \u0027always_flatten_rbd_image_on_clone\u0027,"},{"line_number":276,"context_line":"        default\u003dFalse,"},{"line_number":277,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa4442df_4434a180","line":274,"updated":"2023-06-08 10:29:54.000000000","message":"this should not be in the workarounds section unless we are planning to remove it when teh relevent bug or feature gap is adressed.\n\nthis should be moved to the libvirt section","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":271,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":272,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":273,"context_line":"\"\"\"),"},{"line_number":274,"context_line":"    cfg.BoolOpt("},{"line_number":275,"context_line":"        \u0027always_flatten_rbd_image_on_clone\u0027,"},{"line_number":276,"context_line":"        default\u003dFalse,"},{"line_number":277,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"6e4ae693_11e33ed6","line":274,"in_reply_to":"e5d7bb6d_46d2f6ff","updated":"2023-06-08 13:57:58.000000000","message":"Ack","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"923fc0c6a8a9741ac2aa98e2984887d5227f6239","unresolved":true,"context_lines":[{"line_number":271,"context_line":"* ``compute_driver`` (libvirt)"},{"line_number":272,"context_line":"* ``[libvirt]/images_type`` (rbd)"},{"line_number":273,"context_line":"\"\"\"),"},{"line_number":274,"context_line":"    cfg.BoolOpt("},{"line_number":275,"context_line":"        \u0027always_flatten_rbd_image_on_clone\u0027,"},{"line_number":276,"context_line":"        default\u003dFalse,"},{"line_number":277,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"e5d7bb6d_46d2f6ff","line":274,"in_reply_to":"fa4442df_4434a180","updated":"2023-06-08 13:37:07.000000000","message":"Yeah, this is not appropriate for the workarounds section.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":291,"context_line":"clone. This will cause significant disk usage increase in the nova storage"},{"line_number":292,"context_line":"pool."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"For more information, refer to the bug report:"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"https://bugs.launchpad.net/nova/+bug/tbd"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Related options:"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"58863f78_f11cdccd","line":296,"range":{"start_line":294,"start_character":0,"end_line":296,"end_character":40},"updated":"2023-06-08 10:29:54.000000000","message":"this can be removed","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":291,"context_line":"clone. This will cause significant disk usage increase in the nova storage"},{"line_number":292,"context_line":"pool."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"For more information, refer to the bug report:"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"https://bugs.launchpad.net/nova/+bug/tbd"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Related options:"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"27d3bbad_d7a7a536","line":296,"range":{"start_line":294,"start_character":0,"end_line":296,"end_character":40},"in_reply_to":"58863f78_f11cdccd","updated":"2023-06-08 13:57:58.000000000","message":"Ack","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":23978,"context_line":""},{"line_number":23979,"context_line":"        mock_rbd_clone.assert_called_once()"},{"line_number":23980,"context_line":"        mock_rbd_flatten.assert_called_once()"},{"line_number":23981,"context_line":"        mock_fetch.assert_not_called()"},{"line_number":23982,"context_line":""},{"line_number":23983,"context_line":"    @mock.patch(\u0027nova.virt.netutils.get_injected_network_template\u0027)"},{"line_number":23984,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.inject_data\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"b276f201_bd3295fb","line":23981,"updated":"2023-06-08 10:29:54.000000000","message":"can you add a negitive test to show that flatten is not called when the config option is false","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":23978,"context_line":""},{"line_number":23979,"context_line":"        mock_rbd_clone.assert_called_once()"},{"line_number":23980,"context_line":"        mock_rbd_flatten.assert_called_once()"},{"line_number":23981,"context_line":"        mock_fetch.assert_not_called()"},{"line_number":23982,"context_line":""},{"line_number":23983,"context_line":"    @mock.patch(\u0027nova.virt.netutils.get_injected_network_template\u0027)"},{"line_number":23984,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.inject_data\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"8c7393e2_3cb6dc3d","line":23981,"in_reply_to":"b276f201_bd3295fb","updated":"2023-06-08 13:57:58.000000000","message":"Ack","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"nova/tests/unit/virt/libvirt/test_imagebackend.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":1672,"context_line":"        test_snap \u003d \u0027rbd://%s/%s/fake-image-id/snap\u0027 % (self.FSID, image_pool)"},{"line_number":1673,"context_line":"        self.INSTANCE.system_metadata[\u0027source_rbd_pool_name\u0027] \u003d image_pool"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        # image._get_parent_pool is not mocked, as this is the one to test"},{"line_number":1676,"context_line":"        with test.nested("},{"line_number":1677,"context_line":"                mock.patch.object(rbd_utils.RBDDriver, \u0027get_fsid\u0027,"},{"line_number":1678,"context_line":"                                  return_value\u003dself.FSID),"}],"source_content_type":"text/x-python","patch_set":5,"id":"42138a13_2ee02798","line":1675,"range":{"start_line":1675,"start_character":0,"end_line":1675,"end_character":2},"updated":"2023-06-08 10:29:54.000000000","message":"this comment i think was ment for ling 1663\nbut im not sure it is required there.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":1672,"context_line":"        test_snap \u003d \u0027rbd://%s/%s/fake-image-id/snap\u0027 % (self.FSID, image_pool)"},{"line_number":1673,"context_line":"        self.INSTANCE.system_metadata[\u0027source_rbd_pool_name\u0027] \u003d image_pool"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        # image._get_parent_pool is not mocked, as this is the one to test"},{"line_number":1676,"context_line":"        with test.nested("},{"line_number":1677,"context_line":"                mock.patch.object(rbd_utils.RBDDriver, \u0027get_fsid\u0027,"},{"line_number":1678,"context_line":"                                  return_value\u003dself.FSID),"}],"source_content_type":"text/x-python","patch_set":5,"id":"e42ef34f_b18793f1","line":1675,"range":{"start_line":1675,"start_character":0,"end_line":1675,"end_character":2},"in_reply_to":"42138a13_2ee02798","updated":"2023-06-08 13:57:58.000000000","message":"Ack","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":1695,"context_line":"                                                         protect\u003dTrue)])"},{"line_number":1696,"context_line":"            mock_clone.assert_called_once_with(mock.ANY, \u0027fake-image-id\u0027,"},{"line_number":1697,"context_line":"                                               dest_pool\u003dimage_pool)"},{"line_number":1698,"context_line":"            mock_flatten.assert_called_once_with(\u0027fake-image-id\u0027,"},{"line_number":1699,"context_line":"                                                 pool\u003dimage_pool)"},{"line_number":1700,"context_line":"            mock_cleanup.assert_called_once_with(mock.ANY)"},{"line_number":1701,"context_line":"            self.assertEqual(test_snap, location)"},{"line_number":1702,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"51e8c217_8dbb2eb5","line":1699,"range":{"start_line":1698,"start_character":12,"end_line":1699,"end_character":65},"updated":"2023-06-08 10:29:54.000000000","message":"you have not enabeld the workaround so this should not be called","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":1695,"context_line":"                                                         protect\u003dTrue)])"},{"line_number":1696,"context_line":"            mock_clone.assert_called_once_with(mock.ANY, \u0027fake-image-id\u0027,"},{"line_number":1697,"context_line":"                                               dest_pool\u003dimage_pool)"},{"line_number":1698,"context_line":"            mock_flatten.assert_called_once_with(\u0027fake-image-id\u0027,"},{"line_number":1699,"context_line":"                                                 pool\u003dimage_pool)"},{"line_number":1700,"context_line":"            mock_cleanup.assert_called_once_with(mock.ANY)"},{"line_number":1701,"context_line":"            self.assertEqual(test_snap, location)"},{"line_number":1702,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da274e45_bfb2c297","line":1699,"range":{"start_line":1698,"start_character":12,"end_line":1699,"end_character":65},"in_reply_to":"51e8c217_8dbb2eb5","updated":"2023-06-08 13:57:58.000000000","message":"well, direct snapshots are always flattened (this was already the case). if a snapshot would not be flattened, you\u0027d not be able to delete the instance.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"nova/utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    \u0027mappings\u0027, \u0027block_device_mapping\u0027,"},{"line_number":75,"context_line":"    # Modern names"},{"line_number":76,"context_line":"    \u0027img_mappings\u0027, \u0027img_block_device_mapping\u0027,"},{"line_number":77,"context_line":"    \u0027source_rbd_pool_names\u0027,"},{"line_number":78,"context_line":")"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"_FILE_CACHE \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"d297f013_c90cfacb","line":77,"updated":"2023-06-08 10:29:54.000000000","message":"why are you addign this.\n\nthis is a short name and shoudl not need to be skipped.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    \u0027mappings\u0027, \u0027block_device_mapping\u0027,"},{"line_number":75,"context_line":"    # Modern names"},{"line_number":76,"context_line":"    \u0027img_mappings\u0027, \u0027img_block_device_mapping\u0027,"},{"line_number":77,"context_line":"    \u0027source_rbd_pool_names\u0027,"},{"line_number":78,"context_line":")"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"_FILE_CACHE \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"f47f59aa_e28c6de4","line":77,"in_reply_to":"d297f013_c90cfacb","updated":"2023-06-08 13:57:58.000000000","message":"this key does not need to be imported from a image, as it might/will contain old data, and this data is set during boot of the instance. therefore i added this.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"091df5e7e4b1915b8f14165c170abb270efaa46a","unresolved":true,"context_lines":[{"line_number":1086,"context_line":"        for location in locations:"},{"line_number":1087,"context_line":"            if self.driver.is_cloneable(location, image_meta):"},{"line_number":1088,"context_line":"                LOG.debug(\u0027Selected location: %(loc)s\u0027, {\u0027loc\u0027: location})"},{"line_number":1089,"context_line":"                if self.instance and self.instance.image_ref:"},{"line_number":1090,"context_line":"                    instance_image_meta \u003d self.instance.image_meta"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"                    # only store the parent information, if we are working on"}],"source_content_type":"text/x-python","patch_set":5,"id":"14b1dfdc_271d0ce5","line":1089,"updated":"2023-06-08 10:29:54.000000000","message":"this needs more explainaitn as its not cleary why this is required.\n\nthis feels like an unrealted change that should be in a differnt commit","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"b451ddd9d3f3bfb3032213e6d33a602e147165bd","unresolved":false,"context_lines":[{"line_number":1086,"context_line":"        for location in locations:"},{"line_number":1087,"context_line":"            if self.driver.is_cloneable(location, image_meta):"},{"line_number":1088,"context_line":"                LOG.debug(\u0027Selected location: %(loc)s\u0027, {\u0027loc\u0027: location})"},{"line_number":1089,"context_line":"                if self.instance and self.instance.image_ref:"},{"line_number":1090,"context_line":"                    instance_image_meta \u003d self.instance.image_meta"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"                    # only store the parent information, if we are working on"}],"source_content_type":"text/x-python","patch_set":5,"id":"fdd08b87_c20f8f98","line":1089,"in_reply_to":"14b1dfdc_271d0ce5","updated":"2023-06-08 13:57:58.000000000","message":"Since the `instance` variable is optional in the `__init__` method, one cannot assume that self.instance is always a valid instance object. \nAlso, self.instance.image_ref can be empty in case of boot from volume.","commit_id":"316b44a98a4cca6e9f6a2593df7372cf1d67927b"}]}
