)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"7cb388417146ecd5deb614cb4ec0bb0813f52829","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"78afb09e_5ffb542b","updated":"2026-02-19 15:29:19.000000000","message":"Adding netapp reviewers","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"9d711d5bfb9ccbdccc2d3e3e4db87b6aa71f8357","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"adf43dbb_367e7752","updated":"2026-02-23 09:12:31.000000000","message":"Good idea, please see my concern inline about losing the import timestamp","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"8f9bdf8e86dd97fb8968a93e3cc9115ff4ccfcf8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8f2b7642_5366238e","in_reply_to":"adf43dbb_367e7752","updated":"2026-02-24 04:43:27.000000000","message":"I have updated the code based on your feedback. Could you please review it again?","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"4b4fb6669f6f4e2126a8c16bf33e76a35fa9fd77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d67be258_3faa507e","updated":"2026-02-24 07:04:41.000000000","message":"Thanks, lgtm","commit_id":"8dd603fb8fd1d4a5c73c712bb18b095eaa92db50"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"82faaa0cc90ee4722385997c91b64c0b334af2d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"338ba504_b51963de","updated":"2026-02-24 07:59:35.000000000","message":"I fixed some test case. please review again.","commit_id":"0b41edb23ea494283e494fd73b4a9756442d81ae"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"09038d9a4ee48b48700b5d3d12bb0056fd1ea64b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e0cfa96f_80e840a9","updated":"2026-02-24 08:01:27.000000000","message":"recheck","commit_id":"0b41edb23ea494283e494fd73b4a9756442d81ae"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"7d3f2b934552c6fb2b3b87adc24aa5fa33c76168","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ca9226a1_7904329a","updated":"2026-03-04 10:42:47.000000000","message":"I applied Goutham\u0027s feedback. please review again.\nAnd I chanaged admin_only_metadata config default value.","commit_id":"10ba07fd70e202942370763f496b6723df134453"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25e47a5ecfd361c99a9b26b3babe02791e8851db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fb7c0c8a_32ebc85d","updated":"2026-03-09 19:41:30.000000000","message":"I think we can get this in and get any further changes in a different patchset. Thank you @inyong.hong@samsung.com","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"7fb522d0fe23f593eb94d99ff180c532f03e74e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"a14c9642_58f06d92","updated":"2026-03-05 07:22:24.000000000","message":"LGTM","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"00708173db72f89ea7bd4fe75e8a6d17a5248c2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"4db9759b_c94721ed","updated":"2026-03-06 16:53:21.000000000","message":"LGTM, thank you!","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"498acf0166af1d077ac1c239cc2041b96e868aa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d495675a_29e531d0","updated":"2026-03-04 14:58:34.000000000","message":"recheck","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"}],"manila/common/config.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25e47a5ecfd361c99a9b26b3babe02791e8851db","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                    \u0027awaiting_transfer state, after timeout, the share will \u0027"},{"line_number":138,"context_line":"                    \u0027automatically be rolled back to the available state\u0027),"},{"line_number":139,"context_line":"    cfg.ListOpt(\u0027admin_only_metadata\u0027,"},{"line_number":140,"context_line":"                default\u003dconstants.AdminOnlyMetadata.ADMIN_METADATA_KEYS,"},{"line_number":141,"context_line":"                help\u003d\u0027Metadata keys that should only be manipulated by \u0027"},{"line_number":142,"context_line":"                     \u0027administrators.\u0027),"},{"line_number":143,"context_line":"    cfg.ListOpt(\u0027driver_updatable_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f017e43b_baf17bfd","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":72},"updated":"2026-03-09 19:41:30.000000000","message":"It\u0027s possible deployers have customized this configuration option; so they need to be alerted about this default value changing\n\nYou\u0027ll need to call this out in the \"upgrade\" section of the release note you\u0027re adding.","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"7fb522d0fe23f593eb94d99ff180c532f03e74e9","unresolved":true,"context_lines":[{"line_number":3534,"context_line":"            \u0027adaptive-qos-policy-group-name\u0027: ("},{"line_number":3535,"context_line":"                volume_qos_attributes.get_child_content("},{"line_number":3536,"context_line":"                    \u0027adaptive-policy-group-name\u0027)),"},{"line_number":3537,"context_line":"            \u0027created_at\u0027: creation_time_iso"},{"line_number":3538,"context_line":""},{"line_number":3539,"context_line":"        }"},{"line_number":3540,"context_line":"        return volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"a89dffe9_0529c793","line":3537,"updated":"2026-03-05 07:22:24.000000000","message":"nit: We are using creation_time and created_at in places. Should we keep the same naming?","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"1cff81a9fd8d5cb228de4379a7c226f478e2c2c3","unresolved":false,"context_lines":[{"line_number":3534,"context_line":"            \u0027adaptive-qos-policy-group-name\u0027: ("},{"line_number":3535,"context_line":"                volume_qos_attributes.get_child_content("},{"line_number":3536,"context_line":"                    \u0027adaptive-policy-group-name\u0027)),"},{"line_number":3537,"context_line":"            \u0027created_at\u0027: creation_time_iso"},{"line_number":3538,"context_line":""},{"line_number":3539,"context_line":"        }"},{"line_number":3540,"context_line":"        return volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"b1a02514_705b8ebc","line":3537,"in_reply_to":"96f28c12_e6a3061a","updated":"2026-03-09 16:20:14.000000000","message":"Acknowledged","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"db60334f39c438d0e6b6608b7c4f029694d88c97","unresolved":true,"context_lines":[{"line_number":3534,"context_line":"            \u0027adaptive-qos-policy-group-name\u0027: ("},{"line_number":3535,"context_line":"                volume_qos_attributes.get_child_content("},{"line_number":3536,"context_line":"                    \u0027adaptive-policy-group-name\u0027)),"},{"line_number":3537,"context_line":"            \u0027created_at\u0027: creation_time_iso"},{"line_number":3538,"context_line":""},{"line_number":3539,"context_line":"        }"},{"line_number":3540,"context_line":"        return volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"96f28c12_e6a3061a","line":3537,"in_reply_to":"a89dffe9_0529c793","updated":"2026-03-05 15:14:20.000000000","message":"Thanks for your feedback! The reason for the mixed naming is that the NetApp storage returns different response fields depending on the ZAPI uses \"creation-time\", while the REST API uses \"create_time\". I kept the variable nemas exactly as they are returned from the storage backend, but I made sure to unify everything to \"created_at\" when passing the data back to \"lib_base.py\". Does this approach sound good to you?","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"9d711d5bfb9ccbdccc2d3e3e4db87b6aa71f8357","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"6c82f63c_365925fc","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"updated":"2026-02-23 09:12:31.000000000","message":"When created_at is overwritten with the backend timestamp, we permanently lose the ability to audit when a resource was brought under Manila management. This is important for auditing and troubleshooting to see: when did this import happen?\n\nQuick solution following existing NetApp pattern - Store Manila import time in private_storage: \n```\n  original_data \u003d {\n      \u0027original_name\u0027: volume[\u0027name\u0027],\n      \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027],\n      \u0027managed_at\u0027: share[\u0027created_at\u0027]  # Before overwriting\n  }\n```\n\nMore advanced solutions could add a new field for this, but I see that is maybe overkill","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"af01c28cfc0565eaba0ec72800fa4b59dd6b64df","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba6193a4_074daeaa","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"3d62dce7_ffa2937c","updated":"2026-02-27 12:06:53.000000000","message":"Thanks for the great guidance! To be honest, I\u0027m still not fully familiar with how to handle admin metadata correctly. Since the release deadline is approaching, would it be okay if I focus on completing the private storage part first for now, and then follow up with the admin metadata improvements in a subsequent patch?","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"f3f6ba1b1b8c2c55060629672739c3520f1cae08","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"f5d45240_5eaf5b9a","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"4b80f769_51dc0525","updated":"2026-02-25 08:00:53.000000000","message":"Good suggestion. However, since the manage info is currently stored in private storage, I think it’s better to keep it there as it\u0027s intended for internal driver data. What do you think?","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c16261c5c5994b3f2ba997633291646b9103d67d","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"4b80f769_51dc0525","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"6c82f63c_365925fc","updated":"2026-02-25 07:05:02.000000000","message":"would it work if you set this as driver reported (admin-only) metadata?","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25e47a5ecfd361c99a9b26b3babe02791e8851db","unresolved":false,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"c0b4f01c_0a69ac12","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"6cef1fc9_953c6d1f","updated":"2026-03-09 19:41:30.000000000","message":"Done","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ea27edb10c04cd0c6fc1c5f41fb56de1005265eb","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"3d62dce7_ffa2937c","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"ac66e27f_124fd396","updated":"2026-02-26 07:01:15.000000000","message":"After a share is created, the share manager calls a method called: \"get_optional_share_creation_data\" to collect any metadata that needs to be added to the share: https://github.com/openstack/manila/blob/4913cac9d133dacb313cabd42b2758543fed6e63/manila/share/manager.py#L2367\n\nregarding naming, i\u0027d try to standardize on something and document it. We generally prefix \"__\" to make it less probable to have collisions with user generated metadata. For example, the CephFS driver sets \"__mount_options\": https://review.opendev.org/c/openstack/manila/+/909916/3/manila/share/drivers/cephfs/driver.py#879\n\nYou can then modify the default value of https://opendev.org/openstack/manila/src/branch/master/manila/common/config.py#L139\nto ensure that the metadata key you choose is marked \"admin-only\" in all deployments.","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"68f7f3a608b2aa84edeb029c8b811848cdf430ff","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"ac66e27f_124fd396","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"b87ca305_06adb8d4","updated":"2026-02-25 21:55:47.000000000","message":"Thanks all. I\u0027ll switch to using admin_only_metadata for the manage process as you suggested.\nQuick question before I update the patch:\nShould I follow a specific naming convention for the keys? Also, do you want me to move everything we previously kept in private storage into this metadata—like original_name or original_junction_path—or just the managed_at timestamp?\nLastly, if there\u0027s any existing code or guide for using admin_only_metadata that I should refer to, please let me know. Thanks!","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8053210f7924780af9722b34bfe5db1e42b458be","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"6cef1fc9_953c6d1f","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"ba6193a4_074daeaa","updated":"2026-03-05 06:44:23.000000000","message":"+1 - this is a great suggestion.","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"c7d7a3783bd20191003018373b9dc2355eac8b26","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"        original_data \u003d {"},{"line_number":2286,"context_line":"            \u0027original_name\u0027: volume[\u0027name\u0027],"},{"line_number":2287,"context_line":"            \u0027original_junction_path\u0027: volume[\u0027junction-path\u0027]"},{"line_number":2288,"context_line":"        }"},{"line_number":2289,"context_line":"        self.private_storage.update(share[\u0027id\u0027], original_data)"},{"line_number":2290,"context_line":"        created_at \u003d volume[\u0027created_at\u0027]"},{"line_number":2291,"context_line":"        return volume_size, created_at"}],"source_content_type":"text/x-python","patch_set":5,"id":"b87ca305_06adb8d4","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":9},"in_reply_to":"f5d45240_5eaf5b9a","updated":"2026-02-25 10:03:33.000000000","message":"I like Goutham\u0027s idea. That way that info would be easily accessible via API","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"9d711d5bfb9ccbdccc2d3e3e4db87b6aa71f8357","unresolved":true,"context_lines":[{"line_number":2380,"context_line":""},{"line_number":2381,"context_line":"        # When calculating the size, round up to the next GB."},{"line_number":2382,"context_line":"        size \u003d int(math.ceil(float(volume[\u0027size\u0027]) / units.Gi))"},{"line_number":2383,"context_line":"        created_at \u003d from_datetime.fromisoformat("},{"line_number":2384,"context_line":"            backend_snapshot[\u0027access-time\u0027]).astimezone()"},{"line_number":2385,"context_line":"        return {\u0027size\u0027: size,"},{"line_number":2386,"context_line":"                \u0027created_at\u0027: created_at}"}],"source_content_type":"text/x-python","patch_set":5,"id":"11034ad2_9d9ee230","line":2383,"range":{"start_line":2383,"start_character":8,"end_line":2383,"end_character":49},"updated":"2026-02-23 09:12:31.000000000","message":"Like above, storing the import time in private storage may look like\n\n```\n  snapshot_private_data \u003d {\n      \u0027managed_at\u0027: snapshot[\u0027created_at\u0027],\n      \u0027original_snapshot_name\u0027: existing_snapshot_name\n  }\n  self.private_storage.update(snapshot[\u0027id\u0027], snapshot_private_data)\n```","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"df3f2e21c3d4c5ff7ab3bb5c09661320e3b891a7","unresolved":true,"context_lines":[{"line_number":2380,"context_line":""},{"line_number":2381,"context_line":"        # When calculating the size, round up to the next GB."},{"line_number":2382,"context_line":"        size \u003d int(math.ceil(float(volume[\u0027size\u0027]) / units.Gi))"},{"line_number":2383,"context_line":"        created_at \u003d from_datetime.fromisoformat("},{"line_number":2384,"context_line":"            backend_snapshot[\u0027access-time\u0027]).astimezone()"},{"line_number":2385,"context_line":"        return {\u0027size\u0027: size,"},{"line_number":2386,"context_line":"                \u0027created_at\u0027: created_at}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9225c4a3_153ae3c4","line":2383,"range":{"start_line":2383,"start_character":8,"end_line":2383,"end_character":49},"in_reply_to":"11034ad2_9d9ee230","updated":"2026-02-23 09:55:57.000000000","message":"Thank you for the feedback. I will follow that approach:\nStore the initial Manila-generated created_at (the import time) into private_storage under the key managed_at.\nThen, update the share\u0027s created_at field with the actual creation timestamp retrieved from the NetApp backend.\nThis maintains the audit trail in private storage while providing the correct historical data to the user. I\u0027ll push the updated patch set with these changes.\"","commit_id":"ae3c2d878bd68d20d7cd0cf336415e025987f2d5"}],"manila/share/manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25e47a5ecfd361c99a9b26b3babe02791e8851db","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"        share_type_supports_replication \u003d share_type_extra_specs.get("},{"line_number":3095,"context_line":"            \u0027replication_type\u0027, None)"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":"        metadata_updates \u003d {"},{"line_number":3098,"context_line":"            constants.AdminOnlyMetadata.MANAGED_AT_KEY:"},{"line_number":3099,"context_line":"                share_ref.get(\u0027created_at\u0027)"},{"line_number":3100,"context_line":"        }"},{"line_number":3101,"context_line":"        self.db.share_metadata_update("},{"line_number":3102,"context_line":"            context, share_id, metadata_updates, False)"},{"line_number":3103,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"eb5451a0_7a73809f","line":3100,"range":{"start_line":3097,"start_character":8,"end_line":3100,"end_character":9},"updated":"2026-03-09 19:41:30.000000000","message":"Thinking out loud.. \n\n\nif the driver doesn\u0027t provide this data, \"__managed_at\" metadata will be None. Is this behavior we want? It probably serves to identify that an external share was at some point managed into Manila.\n\nIt\u0027s the same behavior with snapshots below.","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25e47a5ecfd361c99a9b26b3babe02791e8851db","unresolved":true,"context_lines":[{"line_number":3213,"context_line":"                snapshot_ref.get(\u0027created_at\u0027)"},{"line_number":3214,"context_line":"        }"},{"line_number":3215,"context_line":"        self.db.share_snapshot_metadata_update("},{"line_number":3216,"context_line":"            context, snapshot_ref[\u0027id\u0027], metadata_updates, delete\u003d\u0027False\u0027)"},{"line_number":3217,"context_line":""},{"line_number":3218,"context_line":"        project_id \u003d snapshot_ref[\u0027project_id\u0027]"},{"line_number":3219,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"93a5864c_fc403977","line":3216,"range":{"start_line":3216,"start_character":58,"end_line":3216,"end_character":73},"updated":"2026-03-09 19:41:30.000000000","message":"this is a boolean param, let\u0027s use it as a boolean please. \"False\" is truthy:\n\n```\n\u003e\u003e\u003e bool(\"False\")\nTrue\n```","commit_id":"598485a30cf3bf76a4acd7b152c00546fae2b7d6"}]}
