)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e62c08f740c829137b5b3b5b8b9ef29a9078c437","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bbfe1316_1e436f77","updated":"2024-07-12 09:26:41.000000000","message":"I\u0027ll push an alternative for this shortly.","commit_id":"248354a3dbdf5d0e4386491f37ddc45506a13eb5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fc78cae3ab5fca8c1c18faa517c22b986d43635c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"db74b417_68d5eaf8","updated":"2024-07-30 13:44:55.000000000","message":"Let\u0027s get this in","commit_id":"ecb35e0a650188f84eab9aa34bf5b07f315c1dd1"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"dda141127d583ea744f410c5bd63e9502720132a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a2d8c45c_7709e27e","updated":"2024-07-15 19:46:56.000000000","message":"Thanks for the adjustments Stephen, but there is one change in behavior compared to my proposal (which to be honest I don\u0027t know which behavior is the correct one).\n\nI wrote a script that cycles through projects and prints: \"{project_id: {limits}}\"\n\nHere is the output without any patches:\n\n    {\n        \"7fdf1914bedb489d9984b5908e207e77\": {\n            \"absolute\": {\n                \"max_total_backup_gigabytes\": 1000,\n                \"max_total_backups\": 10,\n                \"max_total_snapshots\": 10,\n                \"max_total_volume_gigabytes\": 1000,\n                \"max_total_volumes\": 10,\n                \"total_backup_gigabytes_used\": 0,\n                \"total_backups_used\": 0,\n                \"total_gigabytes_used\": 0,\n                \"total_snapshots_used\": 0,\n                \"total_volumes_used\": 0,\n                \"id\": null,\n                \"name\": null,\n                \"location\": null\n            },\n            \"rate\": [],\n            \"id\": null,\n            \"name\": null,\n            \"location\": {\n                \"cloud\": \"envvars\",\n                \"region_name\": \"RegionOne\",\n                \"zone\": null,\n                \"project\": {\n                    \"id\": \"9fbe7a3ac01e48e796f871e2d882f90e\",\n                    \"name\": \"admin\",\n                    \"domain_id\": null,\n                    \"domain_name\": \"admin_domain\"\n                }\n            }\n        }\n    },\n\nNow here is the output of my proposal:\n\n  {\n        \"7fdf1914bedb489d9984b5908e207e77\": {\n            \"absolute\": {\n                \"max_total_backup_gigabytes\": 1000,\n                \"max_total_backups\": 10,\n                \"max_total_snapshots\": 10,\n                \"max_total_volume_gigabytes\": 1000,\n                \"max_total_volumes\": 10,\n                \"total_backup_gigabytes_used\": 0,\n                \"total_backups_used\": 0,\n                \"total_gigabytes_used\": 0,\n                \"total_snapshots_used\": 0,\n                \"total_volumes_used\": 0,\n                \"id\": null,\n                \"name\": null,\n                \"location\": null\n            },\n            \"rate\": [],\n            \"id\": null,\n            \"name\": null,\n            \"location\": {\n                \"cloud\": \"envvars\",\n                \"region_name\": \"RegionOne\",\n                \"zone\": null,\n                \"project\": {\n                    \"id\": \"7fdf1914bedb489d9984b5908e207e77\",\n                    \"name\": null,\n                    \"domain_id\": null,\n                    \"domain_name\": null\n                }\n            }\n        }\n    },\n    \n    and here is the output of your proposal:\n    \n       {\n        \"7fdf1914bedb489d9984b5908e207e77\": {\n            \"absolute\": {\n                \"max_total_backup_gigabytes\": 1000,\n                \"max_total_backups\": 10,\n                \"max_total_snapshots\": 10,\n                \"max_total_volume_gigabytes\": 1000,\n                \"max_total_volumes\": 10,\n                \"total_backup_gigabytes_used\": 0,\n                \"total_backups_used\": 0,\n                \"total_gigabytes_used\": 0,\n                \"total_snapshots_used\": 0,\n                \"total_volumes_used\": 0,\n                \"id\": null,\n                \"name\": null,\n                \"location\": null\n            },\n            \"rate\": [],\n            \"id\": null,\n            \"name\": null,\n            \"location\": {\n                \"cloud\": \"envvars\",\n                \"region_name\": \"RegionOne\",\n                \"zone\": null,\n                \"project\": {\n                    \"id\": \"9fbe7a3ac01e48e796f871e2d882f90e\",\n                    \"name\": \"admin\",\n                    \"domain_id\": null,\n                    \"domain_name\": \"admin_domain\"\n                }\n            }\n        }\n    },\n\n\nThe location dict has a project dict inside that both in the original code and your proposal have the querying project\u0027s value (in this case, always the admin project). I had changed it to have the values of the queried project\u0027s value instead (and by mistake I broke the \"name\" attribute which I just realized).\n\nWhich one is the correct one? Should it have the values of the querying project or queried project?","commit_id":"ecb35e0a650188f84eab9aa34bf5b07f315c1dd1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6870010ccb48a25b2442c7d316b7eb2c34a8b47c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ee4dbcd2_40a47de4","in_reply_to":"a2d8c45c_7709e27e","updated":"2024-07-17 16:01:48.000000000","message":"\u003e Which one is the correct one? Should it have the values of the querying project or queried project?\n\nIt\u0027s complicated, unfortunately. The project information of the `location` attribute is either inferred by auth information or provided explicitly via a `project_id` attribute of a given resource. Unfortunately Cinder\u0027s `/limits` API does not expose this attribute in responses so the latter doesn\u0027t work, and as you\u0027ve seen the former gives us incorrect values. This is one for me to think on more.","commit_id":"ecb35e0a650188f84eab9aa34bf5b07f315c1dd1"}],"openstack/proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e62c08f740c829137b5b3b5b8b9ef29a9078c437","unresolved":true,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"        extra_params \u003d {}"},{"line_number":705,"context_line":"        if attrs.get(\u0027project_id\u0027):"},{"line_number":706,"context_line":"            extra_params[\u0027project_id\u0027] \u003d attrs[\u0027project_id\u0027]"},{"line_number":707,"context_line":"        return res.fetch("},{"line_number":708,"context_line":"            self,"},{"line_number":709,"context_line":"            requires_id\u003drequires_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9d2a94fe_a01277b8","line":706,"updated":"2024-07-12 09:26:41.000000000","message":"We shouldn\u0027t be special-casing a block storage service option here. If that special casing has to happen, it should happen at the block storage layer.","commit_id":"248354a3dbdf5d0e4386491f37ddc45506a13eb5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80b8a33747005650ff600e1c9a7ac5e40a0c42b8","unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"        extra_params \u003d {}"},{"line_number":705,"context_line":"        if attrs.get(\u0027project_id\u0027):"},{"line_number":706,"context_line":"            extra_params[\u0027project_id\u0027] \u003d attrs[\u0027project_id\u0027]"},{"line_number":707,"context_line":"        return res.fetch("},{"line_number":708,"context_line":"            self,"},{"line_number":709,"context_line":"            requires_id\u003drequires_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d9c10e4e_a2bf4b84","line":706,"in_reply_to":"9d2a94fe_a01277b8","updated":"2024-07-12 09:50:38.000000000","message":"Done","commit_id":"248354a3dbdf5d0e4386491f37ddc45506a13eb5"}]}
