)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ec63c6ab_5f74e470","updated":"2026-01-15 14:06:28.000000000","message":"Thanks for working on this change, Kiran! Some comments inline, please take a look. Also, I was thinking of two different scenarios:\n- Managing shares\n- Migrating shares\nFor both cases we must specify the share type but we should possibly also ensure that we support qos types. Have you tested these scenarios so far?","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"917df238_ce8fabc3","updated":"2026-02-03 06:43:06.000000000","message":"still reviewing this, ty for the change.. just a few minor comments in the meantime","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"086b1849_44090e15","updated":"2026-02-19 20:37:24.000000000","message":"We seem to be going to the right direction. Thanks for all the work on this change, Kiran.","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"ae8688eb_1c0454ac","updated":"2026-02-23 19:00:41.000000000","message":"Thanks for the changes and for the pro-active API version bump, some follow up comments on PS 17 as well","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8fbf3be41814b9d138a9648f50598f9605cbcbaf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"b870646e_8e7d0ae9","updated":"2026-02-25 22:57:24.000000000","message":"I\u0027ve fixed up the issues i commented about; feel free to update it further.. LGTM for now.","commit_id":"e8314ea437f17307218c04de43e815ad9aadf14a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b4b47ddc1b824a172e2795bbfd2d932670352def","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"ec3ed23b_25f3befb","updated":"2026-02-26 09:35:15.000000000","message":"LGTM, thanks Kiran","commit_id":"e8314ea437f17307218c04de43e815ad9aadf14a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"42d26a66579d212158340072f4bf6d09cccd72b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"aaa2f6eb_203cb082","updated":"2026-02-26 09:41:00.000000000","message":"Thanks Goutham for updating PR for review comments.","commit_id":"e8314ea437f17307218c04de43e815ad9aadf14a"}],"api-ref/source/qos-types.inc":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Qos types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"92e34955_3af8e802","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":3},"updated":"2026-01-15 14:06:28.000000000","message":"QoS\nplease fix this here and below :)","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Qos types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"fc9b5438_365bca72","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":3},"in_reply_to":"92e34955_3af8e802","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"8631742e_24177b7b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":5},"updated":"2026-01-15 14:06:28.000000000","message":"Administrators","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"69a106be_9a661d22","line":10,"updated":"2026-01-15 14:06:28.000000000","message":"specifications","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"42c53a7e_c96f9a5c","line":10,"in_reply_to":"69a106be_9a661d22","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"536f5013_730bbc8f","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":5},"in_reply_to":"8631742e_24177b7b","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"bfb206f1_c922215f","line":11,"range":{"start_line":11,"start_character":38,"end_line":11,"end_character":39},"updated":"2026-01-15 14:06:28.000000000","message":"nit: please drop the comma","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":8,"context_line":"specifications that acts as a parameters needed to define qos policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"d3ee5a01_287529d7","line":11,"range":{"start_line":11,"start_character":38,"end_line":11,"end_character":39},"in_reply_to":"bfb206f1_c922215f","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, user need to select valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"245a049f_eac2a18c","line":13,"range":{"start_line":13,"start_character":24,"end_line":13,"end_character":25},"updated":"2026-01-15 14:06:28.000000000","message":"remove","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Admin can create qos-type along-with specs. This will in total represent"},{"line_number":11,"context_line":"qos policy. All users within the cloud, can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, user need to select valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"f1ed67b6_37cc3753","line":13,"range":{"start_line":13,"start_character":24,"end_line":13,"end_character":25},"in_reply_to":"245a049f_eac2a18c","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, user need to select valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":8,"id":"d7b5a33f_400d2998","line":15,"range":{"start_line":15,"start_character":10,"end_line":15,"end_character":35},"updated":"2026-01-15 14:06:28.000000000","message":"```suggestion\nqos-type, the user needs to select a valid share-type. The share-type extra\n```","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create a qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, user need to select valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":8,"id":"faf860d3_0c2f7377","line":15,"range":{"start_line":15,"start_character":10,"end_line":15,"end_character":35},"in_reply_to":"d7b5a33f_400d2998","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"},{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contain"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"69b93ae7_1bea93c7","line":7,"range":{"start_line":7,"start_character":70,"end_line":7,"end_character":77},"updated":"2026-02-03 06:43:06.000000000","message":"contains","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"},{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contain"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"18a2fe87_732e91db","line":7,"range":{"start_line":7,"start_character":70,"end_line":7,"end_character":77},"in_reply_to":"69b93ae7_1bea93c7","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"b844ec43_274f3dcf","line":11,"range":{"start_line":11,"start_character":65,"end_line":11,"end_character":73},"updated":"2026-02-03 06:43:06.000000000","message":"QoS types","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contain"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9413efa0_03f9d007","line":11,"range":{"start_line":10,"start_character":53,"end_line":11,"end_character":20},"updated":"2026-02-03 06:43:06.000000000","message":"These two, in combination will represent QoS policy","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contain"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"c2dbab80_f034508b","line":11,"range":{"start_line":10,"start_character":53,"end_line":11,"end_character":20},"in_reply_to":"9413efa0_03f9d007","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"dab0ef4d_9a04ebd5","line":11,"range":{"start_line":11,"start_character":65,"end_line":11,"end_character":73},"in_reply_to":"b844ec43_274f3dcf","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, the user needs to select a valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"525d13df_39707fe2","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":40},"updated":"2026-02-03 06:43:06.000000000","message":"When you create a QoS Type","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. This will in total"},{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, the user needs to select a valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"515d47b0_23d9eb9d","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":40},"in_reply_to":"525d13df_39707fe2","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, the user needs to select a valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The scheduler uses the special ``capabilities`` prefix for"},{"line_number":20,"context_line":"filtering. The scheduler can only create a share on a back end that"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"4dc939ee_2dc04f9c","line":17,"range":{"start_line":14,"start_character":28,"end_line":17,"end_character":20},"updated":"2026-02-03 06:43:06.000000000","message":"```suggestion\nwith a ``qos_type`` object. In order to create a share with particular\nqos-type, the user needs to either specify it in the share creation request.\nIt\u0027s possible for share-types to also include an extra-specification called\n``default_qos_type`` which would apply if a QoS type wasn\u0027t specified.\n```","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"represent QoS policy. All users within the cloud can then access qos-type."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you issue a create qos-type request, you can submit a request body"},{"line_number":14,"context_line":"with a ``qos_type`` object. In order to create share with particular"},{"line_number":15,"context_line":"qos-type, the user needs to select a valid share-type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The scheduler uses the special ``capabilities`` prefix for"},{"line_number":20,"context_line":"filtering. The scheduler can only create a share on a back end that"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"87bcf651_188ad445","line":17,"range":{"start_line":14,"start_character":28,"end_line":17,"end_character":20},"in_reply_to":"4dc939ee_2dc04f9c","updated":"2026-02-04 12:57:08.000000000","message":"No, it was decided on spec that share-type extra-specs will contain default_qos_type and share will be created with that qos_type. If share-type extra-spec does not contain default_qos_type, share will be created without qos.\n\nhttps://specs.openstack.org/openstack/manila-specs/specs/gazpacho/qos_types.html","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. rest_status_code:: success status.yaml"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"   - 202"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"f4824550_7aed3a0d","line":262,"range":{"start_line":262,"start_character":5,"end_line":262,"end_character":8},"updated":"2026-02-19 06:56:40.000000000","message":"this should be 204","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. rest_status_code:: success status.yaml"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"   - 202"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"34002f86_1475e370","line":262,"range":{"start_line":262,"start_character":5,"end_line":262,"end_character":8},"in_reply_to":"f4824550_7aed3a0d","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. rest_status_code:: success status.yaml"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"   - 202"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"615f3afb_543625c0","line":292,"range":{"start_line":292,"start_character":5,"end_line":292,"end_character":8},"updated":"2026-02-19 06:56:40.000000000","message":"204","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":".. rest_status_code:: success status.yaml"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"   - 202"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"92a3dbd9_d772cf50","line":292,"range":{"start_line":292,"start_character":5,"end_line":292,"end_character":8},"in_reply_to":"615f3afb_543625c0","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"},{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. These two, in combination"},{"line_number":11,"context_line":"will represent QoS policy. All users within the cloud can then access QoS types."}],"source_content_type":"text/x-c++src","patch_set":19,"id":"1490da6b_c7d60dc4","line":8,"range":{"start_line":8,"start_character":20,"end_line":8,"end_character":29},"updated":"2026-02-19 20:37:24.000000000","message":"```suggestion\nspecifications that act as parameters needed to define QoS policies.\n```","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"53ffb51a1adb69ba0955675ce12a580fd5581447","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A qos-type provides information to backend storage drivers for implementing"},{"line_number":7,"context_line":"quality of service(QoS) on resources like shares or share-servers. It contains"},{"line_number":8,"context_line":"specifications that acts as a parameters needed to define QoS policies."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Administrators can create qos-type along-with specs. These two, in combination"},{"line_number":11,"context_line":"will represent QoS policy. All users within the cloud can then access QoS types."}],"source_content_type":"text/x-c++src","patch_set":19,"id":"fab98dae_a71e8978","line":8,"range":{"start_line":8,"start_character":20,"end_line":8,"end_character":29},"in_reply_to":"1490da6b_c7d60dc4","updated":"2026-02-23 06:58:21.000000000","message":"Done","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":true,"context_lines":[{"line_number":11,"context_line":"will represent QoS policy. All users within the cloud can then access QoS types."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you create a QoS Type, you can submit a request body with a ``qos_type``"},{"line_number":14,"context_line":"object. In order to create share with particular QoS type, the user needs to"},{"line_number":15,"context_line":"select a valid share-type having reference of QoS type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."}],"source_content_type":"text/x-c++src","patch_set":19,"id":"260bf490_79e7a505","line":14,"range":{"start_line":14,"start_character":20,"end_line":14,"end_character":32},"updated":"2026-02-19 20:37:24.000000000","message":"```suggestion\nobject. In order to create a share with particular QoS type, the user needs to\n```","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"53ffb51a1adb69ba0955675ce12a580fd5581447","unresolved":false,"context_lines":[{"line_number":11,"context_line":"will represent QoS policy. All users within the cloud can then access QoS types."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When you create a QoS Type, you can submit a request body with a ``qos_type``"},{"line_number":14,"context_line":"object. In order to create share with particular QoS type, the user needs to"},{"line_number":15,"context_line":"select a valid share-type having reference of QoS type. The share-type extra"},{"line_number":16,"context_line":"specification called ``default_qos_type`` should have value as a name of"},{"line_number":17,"context_line":"``qos_type`` object."}],"source_content_type":"text/x-c++src","patch_set":19,"id":"acf5d18c_169e18c6","line":14,"range":{"start_line":14,"start_character":20,"end_line":14,"end_character":32},"in_reply_to":"260bf490_79e7a505","updated":"2026-02-23 06:58:21.000000000","message":"Done","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":true,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":".. rest_method::  POST /v2/qos-types/{qos_type_id}/specs"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Sets an specification for the QoS type."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Response codes"},{"line_number":208,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"ca2bc259_60699dd2","line":205,"range":{"start_line":205,"start_character":5,"end_line":205,"end_character":7},"updated":"2026-02-19 20:37:24.000000000","message":"```suggestion\nSets a specification for the QoS type.\n```","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"53ffb51a1adb69ba0955675ce12a580fd5581447","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":".. rest_method::  POST /v2/qos-types/{qos_type_id}/specs"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Sets an specification for the QoS type."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Response codes"},{"line_number":208,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":19,"id":"b1211ec0_6601b48c","line":205,"range":{"start_line":205,"start_character":5,"end_line":205,"end_character":7},"in_reply_to":"ca2bc259_60699dd2","updated":"2026-02-23 06:58:21.000000000","message":"Done","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"}],"api-ref/source/samples/qos-type-create-response.json":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b45898ef704505b4000d8fcdf531b19f542025bf","unresolved":true,"context_lines":[{"line_number":8,"context_line":"        },"},{"line_number":9,"context_line":"        \"name\": \"testing\","},{"line_number":10,"context_line":"        \"description\": \"qos type description\""},{"line_number":11,"context_line":"    }"},{"line_number":12,"context_line":"}"}],"source_content_type":"application/json","patch_set":25,"id":"57e6e9fb_24d45758","line":11,"updated":"2026-02-26 18:03:40.000000000","message":"should include `created_at`, `updated_at`, can come in a follow up commit","commit_id":"e8314ea437f17307218c04de43e815ad9aadf14a"}],"manila/api/common.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":297,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"def verify_specs(specs):"},{"line_number":301,"context_line":"    def is_valid_string(v):"},{"line_number":302,"context_line":"        return isinstance(v, str) and len(v) in range(1, 256)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def is_valid_spec(k, v):"},{"line_number":305,"context_line":"        valid_spec_key \u003d is_valid_string(k)"},{"line_number":306,"context_line":"        valid_type \u003d is_valid_string(v) or isinstance(v, bool)"},{"line_number":307,"context_line":"        return valid_spec_key and valid_type"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    for k, v in specs.items():"},{"line_number":310,"context_line":"        if is_valid_string(k) and isinstance(v, dict):"},{"line_number":311,"context_line":"            verify_specs(v)"},{"line_number":312,"context_line":"        elif not is_valid_spec(k, v):"},{"line_number":313,"context_line":"            expl \u003d _(\u0027Invalid spec: %(key)s: %(value)s\u0027) % {"},{"line_number":314,"context_line":"                \u0027key\u0027: k, \u0027value\u0027: v"},{"line_number":315,"context_line":"            }"},{"line_number":316,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"class ViewBuilder(object):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5854ff10_8d0d1c25","line":316,"range":{"start_line":300,"start_character":0,"end_line":316,"end_character":60},"updated":"2026-02-03 15:36:54.000000000","message":"JSON Schema validation allows you to this more elegantly and consistently. Can you consider adding those to the APIs you\u0027re adding instead of this validation?","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"def verify_specs(specs):"},{"line_number":301,"context_line":"    def is_valid_string(v):"},{"line_number":302,"context_line":"        return isinstance(v, str) and len(v) in range(1, 256)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def is_valid_spec(k, v):"},{"line_number":305,"context_line":"        valid_spec_key \u003d is_valid_string(k)"},{"line_number":306,"context_line":"        valid_type \u003d is_valid_string(v) or isinstance(v, bool)"},{"line_number":307,"context_line":"        return valid_spec_key and valid_type"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    for k, v in specs.items():"},{"line_number":310,"context_line":"        if is_valid_string(k) and isinstance(v, dict):"},{"line_number":311,"context_line":"            verify_specs(v)"},{"line_number":312,"context_line":"        elif not is_valid_spec(k, v):"},{"line_number":313,"context_line":"            expl \u003d _(\u0027Invalid spec: %(key)s: %(value)s\u0027) % {"},{"line_number":314,"context_line":"                \u0027key\u0027: k, \u0027value\u0027: v"},{"line_number":315,"context_line":"            }"},{"line_number":316,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"class ViewBuilder(object):"}],"source_content_type":"text/x-python","patch_set":14,"id":"2450ec59_5dfff3dc","line":316,"range":{"start_line":300,"start_character":0,"end_line":316,"end_character":60},"in_reply_to":"5854ff10_8d0d1c25","updated":"2026-02-04 12:57:08.000000000","message":"I checked some PRs of schema validation from https://review.opendev.org/q/hashtag:%22json-schema-validation%22 but it seems like that will defer the current PR unnecessarily. I will create follow-up PR specifically adding schemas to qos_type. (May be by taking reference of share-type or share-group-type schemas)","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":211,"context_line":"    * 2.90 - Added encryption key reference option to share create API."},{"line_number":212,"context_line":"    * 2.91 - Added support for targeted restores via the share backup API"},{"line_number":213,"context_line":"    * 2.92 - Added mount_point_name to share manage API."},{"line_number":214,"context_line":"    * 2.94 - Addes QoS type and specs APIs."},{"line_number":215,"context_line":"\"\"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":22,"id":"e856820a_45954dfd","line":214,"range":{"start_line":214,"start_character":13,"end_line":214,"end_character":18},"updated":"2026-02-23 19:00:41.000000000","message":"Added","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    * 2.90 - Added encryption key reference option to share create API."},{"line_number":212,"context_line":"    * 2.91 - Added support for targeted restores via the share backup API"},{"line_number":213,"context_line":"    * 2.92 - Added mount_point_name to share manage API."},{"line_number":214,"context_line":"    * 2.94 - Addes QoS type and specs APIs."},{"line_number":215,"context_line":"\"\"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":22,"id":"a48bab32_7902c93d","line":214,"range":{"start_line":214,"start_character":13,"end_line":214,"end_character":18},"in_reply_to":"e856820a_45954dfd","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"}],"manila/api/v1/shares.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        if share_type and qos_type:"},{"line_number":469,"context_line":"            qos_type_name \u003d None"},{"line_number":470,"context_line":"            if uuidutils.is_uuid_like(qos_type):"},{"line_number":471,"context_line":"                try:"},{"line_number":472,"context_line":"                    qos_db \u003d db.qos_type_get(context, qos_type)"},{"line_number":473,"context_line":"                    qos_type_name \u003d qos_db[\u0027name\u0027]"},{"line_number":474,"context_line":"                except exception.QosTypeNotFound:"},{"line_number":475,"context_line":"                    LOG.debug(\"No qos_type exists with ID %s.\", qos_type)"},{"line_number":476,"context_line":"            if not qos_type_name:"},{"line_number":477,"context_line":"                try:"},{"line_number":478,"context_line":"                    qos_db \u003d db.qos_type_get_by_name(context, qos_type)"},{"line_number":479,"context_line":"                    qos_type_name \u003d qos_db[\u0027name\u0027]"},{"line_number":480,"context_line":"                except exception.QosTypeNotFound:"},{"line_number":481,"context_line":"                    LOG.debug(\"No qos_type exists with name %s.\")"},{"line_number":482,"context_line":"            if not qos_type_name:"},{"line_number":483,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":484,"context_line":"                        \"specified qos_type does not exist.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"4cf668ff_ae35f58d","line":481,"range":{"start_line":470,"start_character":12,"end_line":481,"end_character":65},"updated":"2026-01-15 14:06:28.000000000","message":"I\u0027d suggest we attempt optimizing it with something like we did in this sqlalchemy/api.py file with share_type_get_by_name_or_id, for better readability","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        if share_type and qos_type:"},{"line_number":469,"context_line":"            qos_type_name \u003d None"},{"line_number":470,"context_line":"            if uuidutils.is_uuid_like(qos_type):"},{"line_number":471,"context_line":"                try:"},{"line_number":472,"context_line":"                    qos_db \u003d db.qos_type_get(context, qos_type)"},{"line_number":473,"context_line":"                    qos_type_name \u003d qos_db[\u0027name\u0027]"},{"line_number":474,"context_line":"                except exception.QosTypeNotFound:"},{"line_number":475,"context_line":"                    LOG.debug(\"No qos_type exists with ID %s.\", qos_type)"},{"line_number":476,"context_line":"            if not qos_type_name:"},{"line_number":477,"context_line":"                try:"},{"line_number":478,"context_line":"                    qos_db \u003d db.qos_type_get_by_name(context, qos_type)"},{"line_number":479,"context_line":"                    qos_type_name \u003d qos_db[\u0027name\u0027]"},{"line_number":480,"context_line":"                except exception.QosTypeNotFound:"},{"line_number":481,"context_line":"                    LOG.debug(\"No qos_type exists with name %s.\")"},{"line_number":482,"context_line":"            if not qos_type_name:"},{"line_number":483,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":484,"context_line":"                        \"specified qos_type does not exist.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"fda9a98b_8c31b407","line":481,"range":{"start_line":470,"start_character":12,"end_line":481,"end_character":65},"in_reply_to":"4cf668ff_ae35f58d","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":469,"context_line":"            if qos_db:"},{"line_number":470,"context_line":"                kwargs[\u0027qos_type\u0027] \u003d qos_db"},{"line_number":471,"context_line":"            else:"},{"line_number":472,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":473,"context_line":"                        \"specified qos_type does not exist.\")"},{"line_number":474,"context_line":"                payload \u003d {\u0027type\u0027: share_type}"},{"line_number":475,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % payload)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1dcc3d16_56a8c9b0","line":473,"range":{"start_line":472,"start_character":24,"end_line":473,"end_character":60},"updated":"2026-02-03 15:36:54.000000000","message":"The \u0027default_qos_type\u0027 specified in the share type %(type)s does not exist.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            if qos_db:"},{"line_number":470,"context_line":"                kwargs[\u0027qos_type\u0027] \u003d qos_db"},{"line_number":471,"context_line":"            else:"},{"line_number":472,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":473,"context_line":"                        \"specified qos_type does not exist.\")"},{"line_number":474,"context_line":"                payload \u003d {\u0027type\u0027: share_type}"},{"line_number":475,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % payload)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"b0a93409_94261660","line":473,"range":{"start_line":472,"start_character":24,"end_line":473,"end_character":60},"in_reply_to":"1dcc3d16_56a8c9b0","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"}],"manila/api/v2/qos_type_specs.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"MIN_SUPPORTED_API_VERSION \u003d \u00272.92\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class QosTypeSpecsController(wsgi.Controller):"},{"line_number":31,"context_line":"    \"\"\"The qos type specs API controller for the OpenStack API.\"\"\""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"f321f699_4a7811c3","line":29,"updated":"2026-01-15 14:06:28.000000000","message":"We should use the same pattern of the other APIs and use a view [1] instead. It will also help us when extending this API in the future and microversioning this API if needed. At this point it will be straightforward, as this is the initial API.\n\n[1] https://github.com/openstack/manila/blob/master/manila/api/views/types.py","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"MIN_SUPPORTED_API_VERSION \u003d \u00272.92\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class QosTypeSpecsController(wsgi.Controller):"},{"line_number":31,"context_line":"    \"\"\"The qos type specs API controller for the OpenStack API.\"\"\""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"0eea6864_b0fae9fa","line":29,"in_reply_to":"f321f699_4a7811c3","updated":"2026-01-19 10:39:28.000000000","message":"The view is not needed for specs since its just dict. Similar for share type specs and share group type specs. The higher level object ie. qos type is already added view.","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        specs_dict \u003d {}"},{"line_number":41,"context_line":"        for key, value in specs.items():"},{"line_number":42,"context_line":"            specs_dict[key] \u003d value"},{"line_number":43,"context_line":"        return dict(specs\u003dspecs_dict)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _check_type(self, context, qos_type_id):"},{"line_number":46,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"6176dccc_f06434ff","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":37},"updated":"2026-01-15 14:06:28.000000000","message":"please do this through a view","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        specs_dict \u003d {}"},{"line_number":41,"context_line":"        for key, value in specs.items():"},{"line_number":42,"context_line":"            specs_dict[key] \u003d value"},{"line_number":43,"context_line":"        return dict(specs\u003dspecs_dict)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _check_type(self, context, qos_type_id):"},{"line_number":46,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"80bf00f4_315f2cd3","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":37},"in_reply_to":"6176dccc_f06434ff","updated":"2026-01-19 10:39:28.000000000","message":"Acknowledged","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":49,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dex.msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _verify_specs(self, specs):"},{"line_number":52,"context_line":"        def is_valid_string(v):"},{"line_number":53,"context_line":"            return isinstance(v, str) and len(v) in range(1, 256)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        def is_valid_spec(k, v):"},{"line_number":56,"context_line":"            valid_spec_key \u003d is_valid_string(k)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dccd260d_2138a822","line":53,"range":{"start_line":52,"start_character":8,"end_line":53,"end_character":65},"updated":"2026-01-15 14:06:28.000000000","message":"this is already created at the share type module. I believe importing and reusing it can be beneficial","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dex.msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _verify_specs(self, specs):"},{"line_number":52,"context_line":"        def is_valid_string(v):"},{"line_number":53,"context_line":"            return isinstance(v, str) and len(v) in range(1, 256)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        def is_valid_spec(k, v):"},{"line_number":56,"context_line":"            valid_spec_key \u003d is_valid_string(k)"}],"source_content_type":"text/x-python","patch_set":8,"id":"2dd41a69_99636ee3","line":53,"range":{"start_line":52,"start_character":8,"end_line":53,"end_character":65},"in_reply_to":"dccd260d_2138a822","updated":"2026-01-19 10:39:28.000000000","message":"share type validation of extra specs have some internal checks of required and optional extra specs, its better to keep them separate.","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            return (valid_spec_key and valid_type)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        for k, v in specs.items():"},{"line_number":61,"context_line":"            if is_valid_string(k) and isinstance(v, dict):"},{"line_number":62,"context_line":"                self._verify_specs(v)"},{"line_number":63,"context_line":"            elif not is_valid_spec(k, v):"},{"line_number":64,"context_line":"                expl \u003d _(\u0027Invalid spec: %(key)s: %(value)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":8,"id":"f59fc7ce_7a6e7770","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":33},"updated":"2026-01-15 14:06:28.000000000","message":"there\u0027s no else for this condition, we should also prevent from an invalid string","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            return (valid_spec_key and valid_type)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        for k, v in specs.items():"},{"line_number":61,"context_line":"            if is_valid_string(k) and isinstance(v, dict):"},{"line_number":62,"context_line":"                self._verify_specs(v)"},{"line_number":63,"context_line":"            elif not is_valid_spec(k, v):"},{"line_number":64,"context_line":"                expl \u003d _(\u0027Invalid spec: %(key)s: %(value)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":8,"id":"03231dc0_1a42db4d","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":33},"in_reply_to":"60f337df_6a5d9f3b","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            return (valid_spec_key and valid_type)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        for k, v in specs.items():"},{"line_number":61,"context_line":"            if is_valid_string(k) and isinstance(v, dict):"},{"line_number":62,"context_line":"                self._verify_specs(v)"},{"line_number":63,"context_line":"            elif not is_valid_spec(k, v):"},{"line_number":64,"context_line":"                expl \u003d _(\u0027Invalid spec: %(key)s: %(value)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":8,"id":"60f337df_6a5d9f3b","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":33},"in_reply_to":"f59fc7ce_7a6e7770","updated":"2026-01-19 10:39:28.000000000","message":"else is there with if. this is similar to share type extra-specs and share group type specs.","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        notifier_info \u003d dict(qos_type_id\u003did, specs\u003dspecs)"},{"line_number":110,"context_line":"        notifier \u003d rpc.get_notifier(\u0027qosTypeSpecs\u0027)"},{"line_number":111,"context_line":"        notifier.info(context, \u0027qos_type_specs.create\u0027, notifier_info)"},{"line_number":112,"context_line":"        return body"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":115,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":8,"id":"ecf861c9_2f0ecc61","line":112,"range":{"start_line":112,"start_character":7,"end_line":112,"end_character":19},"updated":"2026-01-15 14:06:28.000000000","message":"let\u0027s use a view method here too","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        notifier_info \u003d dict(qos_type_id\u003did, specs\u003dspecs)"},{"line_number":110,"context_line":"        notifier \u003d rpc.get_notifier(\u0027qosTypeSpecs\u0027)"},{"line_number":111,"context_line":"        notifier.info(context, \u0027qos_type_specs.create\u0027, notifier_info)"},{"line_number":112,"context_line":"        return body"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":115,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":8,"id":"f707442e_e58f2cfd","line":112,"range":{"start_line":112,"start_character":7,"end_line":112,"end_character":19},"in_reply_to":"ecf861c9_2f0ecc61","updated":"2026-01-19 10:39:28.000000000","message":"Acknowledged","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    def _assert_qos_type_exists(self, context, qos_type_id):"},{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            db.qos_type_get(context, qos_type_id)"},{"line_number":48,"context_line":"        except exception.NotFound as ex:"},{"line_number":49,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dex.msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":14,"id":"e251f6dc_f7b8af88","line":48,"range":{"start_line":48,"start_character":25,"end_line":48,"end_character":33},"updated":"2026-02-03 06:43:06.000000000","message":"QosTypeNotFound","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def _assert_qos_type_exists(self, context, qos_type_id):"},{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            db.qos_type_get(context, qos_type_id)"},{"line_number":48,"context_line":"        except exception.NotFound as ex:"},{"line_number":49,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dex.msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":14,"id":"2638f9ab_81a149c8","line":48,"range":{"start_line":48,"start_character":25,"end_line":48,"end_character":33},"in_reply_to":"e251f6dc_f7b8af88","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        \"\"\"Create qos type spec.\"\"\""},{"line_number":76,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if not self.is_valid_body(body, \u0027specs\u0027):"},{"line_number":79,"context_line":"            raise webob.exc.HTTPBadRequest()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self._assert_qos_type_exists(context, id)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"d4d6b2d6_c1bbdd17","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":44},"updated":"2026-02-03 15:36:54.000000000","message":"JSON Schema validation could take care of this..","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\"Create qos type spec.\"\"\""},{"line_number":76,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if not self.is_valid_body(body, \u0027specs\u0027):"},{"line_number":79,"context_line":"            raise webob.exc.HTTPBadRequest()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self._assert_qos_type_exists(context, id)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"a66d7ea6_663be1f8","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":44},"in_reply_to":"d4d6b2d6_c1bbdd17","updated":"2026-02-04 12:57:08.000000000","message":"mentioned above.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":131,"context_line":"        notifier_info \u003d dict(qos_type_id\u003did, key\u003dkey)"},{"line_number":132,"context_line":"        notifier \u003d rpc.get_notifier(\u0027qosTypeSpecs\u0027)"},{"line_number":133,"context_line":"        notifier.info(context, \u0027qos_type_specs.delete\u0027, notifier_info)"},{"line_number":134,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _check_key_names(self, keys):"},{"line_number":137,"context_line":"        if not common.validate_key_names(keys):"}],"source_content_type":"text/x-python","patch_set":14,"id":"8c5c8b7c_f62ead2a","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":62},"updated":"2026-02-03 15:36:54.000000000","message":"The deletion has happened already, ideally this should be 204 No Content, or 200 OK","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        notifier_info \u003d dict(qos_type_id\u003did, key\u003dkey)"},{"line_number":132,"context_line":"        notifier \u003d rpc.get_notifier(\u0027qosTypeSpecs\u0027)"},{"line_number":133,"context_line":"        notifier.info(context, \u0027qos_type_specs.delete\u0027, notifier_info)"},{"line_number":134,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _check_key_names(self, keys):"},{"line_number":137,"context_line":"        if not common.validate_key_names(keys):"}],"source_content_type":"text/x-python","patch_set":14,"id":"e166d31c_9ed7b4e5","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":62},"in_reply_to":"8c5c8b7c_f62ead2a","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":17,"id":"10e44ee9_bec1c0e8","updated":"2026-02-19 06:56:40.000000000","message":"some inconsistency here.. the module here is called  \"qos_type_specs\", but, the policy group is called \"qos_types_spec\".. maybe use one consistently","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"ae97865d_5cca3366","in_reply_to":"10e44ee9_bec1c0e8","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"}],"manila/api/v2/qos_types.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":129,"context_line":"            raise exc.HTTPConflict(explanation\u003dmsg % name)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        description \u003d data.get(\u0027description\u0027)"},{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        try:"},{"line_number":134,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":135,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"a8e7bc84_b3c391b5","line":132,"range":{"start_line":132,"start_character":9,"end_line":132,"end_character":37},"updated":"2026-01-15 14:06:28.000000000","message":"IMO the specs should be validated here, as they are in the specs API","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            raise exc.HTTPConflict(explanation\u003dmsg % name)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        description \u003d data.get(\u0027description\u0027)"},{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        try:"},{"line_number":134,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":135,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa2172e2_6c01d53f","line":132,"range":{"start_line":132,"start_character":9,"end_line":132,"end_character":37},"in_reply_to":"a8e7bc84_b3c391b5","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":169,"context_line":"                                        notifier_err)"},{"line_number":170,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"},{"line_number":171,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.msg)"},{"line_number":172,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":175,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":14,"id":"4b019af4_523d3d8d","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":45},"updated":"2026-02-03 15:36:54.000000000","message":"The deletion has happened, \"202 Accepted\" is not for synchronous deletes.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                        notifier_err)"},{"line_number":170,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"},{"line_number":171,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.msg)"},{"line_number":172,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":175,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":14,"id":"c5b18405_3eb0d2c9","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":45},"in_reply_to":"4b019af4_523d3d8d","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":136,"context_line":"                context,"},{"line_number":137,"context_line":"                dict(name\u003dname, description\u003ddescription, specs\u003dspecs)"},{"line_number":138,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":17,"id":"e20b863b_5e023697","line":135,"range":{"start_line":135,"start_character":12,"end_line":135,"end_character":23},"updated":"2026-02-19 06:56:40.000000000","message":"assign this outside the try..except block; else, an exception from this call will cause a NameError on line 142. \n\nCan you please also add unit tests for this scenario?","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":136,"context_line":"                context,"},{"line_number":137,"context_line":"                dict(name\u003dname, description\u003ddescription, specs\u003dspecs)"},{"line_number":138,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a59dc18_572708da","line":135,"range":{"start_line":135,"start_character":12,"end_line":135,"end_character":23},"in_reply_to":"0676665d_ef290fc2","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":136,"context_line":"                context,"},{"line_number":137,"context_line":"                dict(name\u003dname, description\u003ddescription, specs\u003dspecs)"},{"line_number":138,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":17,"id":"0676665d_ef290fc2","line":135,"range":{"start_line":135,"start_character":12,"end_line":135,"end_character":23},"in_reply_to":"29c921c1_2b936fcc","updated":"2026-02-23 19:00:41.000000000","message":"That test needs to be improved - you didn\u0027t catch this NameError bug because this section of the code isn\u0027t tested. The test you called out is testing the code above where you\u0027re checking if a type exists defensively before you reach this block. I think the point of this code is handling race conditions - that seems fair.\n\n\nYou should add another test or use ddt to craft the test such that:\n\n1) You test existing qos flagged by the `qos_type_get_by_name` call on line 123\n2) You test existing qos flagged by the `create_qos_type` call on line 136.","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":136,"context_line":"                context,"},{"line_number":137,"context_line":"                dict(name\u003dname, description\u003ddescription, specs\u003dspecs)"},{"line_number":138,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":17,"id":"29c921c1_2b936fcc","line":135,"range":{"start_line":135,"start_character":12,"end_line":135,"end_character":23},"in_reply_to":"e20b863b_5e023697","updated":"2026-02-19 13:03:41.000000000","message":"test already added as test_create_already_exists","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                context, \u0027qos_type.create\u0027, qos_type)"},{"line_number":141,"context_line":"        except exception.QosTypeExists as err:"},{"line_number":142,"context_line":"            notifier_err \u003d dict(qos_types\u003dqos_type,"},{"line_number":143,"context_line":"                                error_message\u003derr.message)"},{"line_number":144,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.create\u0027,"},{"line_number":145,"context_line":"                                        notifier_err)"},{"line_number":146,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"36c77403_b2e0ea8b","line":143,"range":{"start_line":143,"start_character":46,"end_line":143,"end_character":57},"updated":"2026-02-19 06:56:40.000000000","message":"this has to be err.msg?","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                context, \u0027qos_type.create\u0027, qos_type)"},{"line_number":141,"context_line":"        except exception.QosTypeExists as err:"},{"line_number":142,"context_line":"            notifier_err \u003d dict(qos_types\u003dqos_type,"},{"line_number":143,"context_line":"                                error_message\u003derr.message)"},{"line_number":144,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.create\u0027,"},{"line_number":145,"context_line":"                                        notifier_err)"},{"line_number":146,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a495752_a4213f37","line":143,"range":{"start_line":143,"start_character":46,"end_line":143,"end_character":57},"in_reply_to":"36c77403_b2e0ea8b","updated":"2026-02-19 13:03:41.000000000","message":"exception has message field.","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                context, \u0027qos_type.create\u0027, qos_type)"},{"line_number":141,"context_line":"        except exception.QosTypeExists as err:"},{"line_number":142,"context_line":"            notifier_err \u003d dict(qos_types\u003dqos_type,"},{"line_number":143,"context_line":"                                error_message\u003derr.message)"},{"line_number":144,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.create\u0027,"},{"line_number":145,"context_line":"                                        notifier_err)"},{"line_number":146,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"eeaed78d_c0b56d57","line":143,"range":{"start_line":143,"start_character":46,"end_line":143,"end_character":57},"in_reply_to":"7a495752_a4213f37","updated":"2026-02-23 19:00:41.000000000","message":"Yes it does, and it\u0027s confusing isn\u0027t it? \n\nHere\u0027s what\u0027s happening.. \n\n\"message\" is an unformatted attribute of the class, while \"msg\" is the formatted member. I hated it when i discovered this. I think we should go rename \"message\" to \"msgTemplate\" or something like that..\n\n\nhttps://github.com/openstack/manila/blob/c66a1bd0cf13a879f9ecfc9bc93524cdd6f577ff/manila/exception.py#L88\n\nexample of unformatted message: https://github.com/openstack/manila/blob/c66a1bd0cf13a879f9ecfc9bc93524cdd6f577ff/manila/exception.py#L120","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                context, \u0027qos_type.create\u0027, qos_type)"},{"line_number":141,"context_line":"        except exception.QosTypeExists as err:"},{"line_number":142,"context_line":"            notifier_err \u003d dict(qos_types\u003dqos_type,"},{"line_number":143,"context_line":"                                error_message\u003derr.message)"},{"line_number":144,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.create\u0027,"},{"line_number":145,"context_line":"                                        notifier_err)"},{"line_number":146,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"6cd9ce9d_61ac5890","line":143,"range":{"start_line":143,"start_character":46,"end_line":143,"end_character":57},"in_reply_to":"eeaed78d_c0b56d57","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            self._notify_qos_type_info("},{"line_number":160,"context_line":"                context, \u0027qos_type.delete\u0027, qos_type)"},{"line_number":161,"context_line":"        except exception.QosTypeNotFound as err:"},{"line_number":162,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.message)"},{"line_number":163,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":164,"context_line":"                                        notifier_err)"},{"line_number":165,"context_line":"            msg \u003d _(\"No QoS Type exists with ID %s.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"f8d2dd77_d08c810d","line":162,"range":{"start_line":162,"start_character":57,"end_line":162,"end_character":64},"updated":"2026-02-19 06:56:40.000000000","message":"msg","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            self._notify_qos_type_info("},{"line_number":160,"context_line":"                context, \u0027qos_type.delete\u0027, qos_type)"},{"line_number":161,"context_line":"        except exception.QosTypeNotFound as err:"},{"line_number":162,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.message)"},{"line_number":163,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":164,"context_line":"                                        notifier_err)"},{"line_number":165,"context_line":"            msg \u003d _(\"No QoS Type exists with ID %s.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"6c774be6_1c5f32ed","line":162,"range":{"start_line":162,"start_character":57,"end_line":162,"end_character":64},"in_reply_to":"f8d2dd77_d08c810d","updated":"2026-02-19 13:03:41.000000000","message":"exception has message field.","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            msg \u003d _(\"No QoS Type exists with ID %s.\")"},{"line_number":166,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % id)"},{"line_number":167,"context_line":"        except exception.QosTypeInUse as err:"},{"line_number":168,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.message)"},{"line_number":169,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":170,"context_line":"                                        notifier_err)"},{"line_number":171,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"36e36a62_5628b1f7","line":168,"range":{"start_line":168,"start_character":57,"end_line":168,"end_character":64},"updated":"2026-02-19 06:56:40.000000000","message":"msg","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            msg \u003d _(\"No QoS Type exists with ID %s.\")"},{"line_number":166,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % id)"},{"line_number":167,"context_line":"        except exception.QosTypeInUse as err:"},{"line_number":168,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.message)"},{"line_number":169,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":170,"context_line":"                                        notifier_err)"},{"line_number":171,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"b8c42e2a_1e3c4307","line":168,"range":{"start_line":168,"start_character":57,"end_line":168,"end_character":64},"in_reply_to":"36e36a62_5628b1f7","updated":"2026-02-19 13:03:41.000000000","message":"exception has message field.","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":194,"context_line":"            if update_dict:"},{"line_number":195,"context_line":"                qos_type \u003d self.share_api.update_qos_type(context, qos_type,"},{"line_number":196,"context_line":"                                                          update_dict)"},{"line_number":197,"context_line":"                qos_type.update(update_dict)"},{"line_number":198,"context_line":"                self._notify_qos_type_info("},{"line_number":199,"context_line":"                    context, \u0027qos_type.update\u0027, qos_type)"},{"line_number":200,"context_line":"        except exception.QosTypeNotFound as err:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7259548d_61b7db09","line":197,"range":{"start_line":197,"start_character":16,"end_line":197,"end_character":44},"updated":"2026-02-19 06:56:40.000000000","message":"why is this needed, the method call above returns the updated qos type by fetching it from the db","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if update_dict:"},{"line_number":195,"context_line":"                qos_type \u003d self.share_api.update_qos_type(context, qos_type,"},{"line_number":196,"context_line":"                                                          update_dict)"},{"line_number":197,"context_line":"                qos_type.update(update_dict)"},{"line_number":198,"context_line":"                self._notify_qos_type_info("},{"line_number":199,"context_line":"                    context, \u0027qos_type.update\u0027, qos_type)"},{"line_number":200,"context_line":"        except exception.QosTypeNotFound as err:"}],"source_content_type":"text/x-python","patch_set":17,"id":"e5b74c0e_5cc7b97b","line":197,"range":{"start_line":197,"start_character":16,"end_line":197,"end_character":44},"in_reply_to":"7259548d_61b7db09","updated":"2026-02-19 13:03:41.000000000","message":"removed","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":23,"context_line":"DELETE /qos-types/{qos_type_id}"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from http import client as http_client"},{"line_number":27,"context_line":"import webob"},{"line_number":28,"context_line":"from webob import exc"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3e85b171_33a196a1","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":38},"updated":"2026-02-23 19:00:41.000000000","message":"Add a blank line below this; http is a part of the stdlib","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DELETE /qos-types/{qos_type_id}"},{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from http import client as http_client"},{"line_number":27,"context_line":"import webob"},{"line_number":28,"context_line":"from webob import exc"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bd55bce2_afee79a0","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":38},"in_reply_to":"3e85b171_33a196a1","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":131,"context_line":"        description \u003d data.get(\u0027description\u0027)"},{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        qos_type \u003d None"},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":137,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":22,"id":"25dfeea9_e25c9154","line":134,"range":{"start_line":134,"start_character":19,"end_line":134,"end_character":23},"updated":"2026-02-23 19:00:41.000000000","message":"?\n\nI\u0027d expect to see the name attr if the creation failed.. right now, the notification would say \"None\" failed to be created, which is confusing.","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        description \u003d data.get(\u0027description\u0027)"},{"line_number":132,"context_line":"        specs \u003d data.get(\u0027specs\u0027, {})"},{"line_number":133,"context_line":"        common.verify_specs(specs)"},{"line_number":134,"context_line":"        qos_type \u003d None"},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            qos_type \u003d self.share_api.create_qos_type("},{"line_number":137,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":22,"id":"bb243e17_4e8eb867","line":134,"range":{"start_line":134,"start_character":19,"end_line":134,"end_character":23},"in_reply_to":"25dfeea9_e25c9154","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":151,"context_line":"    @wsgi.Controller.authorize"},{"line_number":152,"context_line":"    @wsgi.action(\"delete\")"},{"line_number":153,"context_line":"    def delete(self, req, id):"},{"line_number":154,"context_line":"        \"\"\"Delete a qos_type.\"\"\""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1fc41d01_8e445c77","line":152,"range":{"start_line":152,"start_character":4,"end_line":152,"end_character":26},"updated":"2026-02-23 19:00:41.000000000","message":"this isn\u0027t an action..","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION)"},{"line_number":151,"context_line":"    @wsgi.Controller.authorize"},{"line_number":152,"context_line":"    @wsgi.action(\"delete\")"},{"line_number":153,"context_line":"    def delete(self, req, id):"},{"line_number":154,"context_line":"        \"\"\"Delete a qos_type.\"\"\""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"c4415fb9_559350c7","line":152,"range":{"start_line":152,"start_character":4,"end_line":152,"end_character":26},"in_reply_to":"1fc41d01_8e445c77","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cca5418bc278e4b1e2443918c76cae4c761af276","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.msg)"},{"line_number":167,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":168,"context_line":"                                        notifier_err)"},{"line_number":169,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"},{"line_number":170,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.msg)"},{"line_number":171,"context_line":"        return webob.Response(status_int\u003dhttp_client.NO_CONTENT)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"86560dab_70df9886","line":169,"updated":"2026-02-25 22:06:18.000000000","message":"assigned but never used?","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8fbf3be41814b9d138a9648f50598f9605cbcbaf","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            notifier_err \u003d dict(id\u003did, error_message\u003derr.msg)"},{"line_number":167,"context_line":"            self._notify_qos_type_error(context, \u0027qos_type.delete\u0027,"},{"line_number":168,"context_line":"                                        notifier_err)"},{"line_number":169,"context_line":"            msg \u003d \u0027Target qos type is still in use.\u0027"},{"line_number":170,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.msg)"},{"line_number":171,"context_line":"        return webob.Response(status_int\u003dhttp_client.NO_CONTENT)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"63f4fdd5_b329034a","line":169,"in_reply_to":"86560dab_70df9886","updated":"2026-02-25 22:57:24.000000000","message":"Done","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"}],"manila/api/v2/router.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":708,"context_line":"        self.resources[\u0027qos_types\u0027] \u003d qos_types.create_resource()"},{"line_number":709,"context_line":"        mapper.resource(\"qos-type\", \"qos-types\","},{"line_number":710,"context_line":"                        controller\u003dself.resources[\u0027qos_types\u0027],"},{"line_number":711,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":712,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        self.resources[\"qos_type_specs\"] \u003d ("},{"line_number":715,"context_line":"            qos_type_specs.create_resource())"}],"source_content_type":"text/x-python","patch_set":17,"id":"895cd1f6_57805a8d","line":712,"range":{"start_line":711,"start_character":24,"end_line":712,"end_character":50},"updated":"2026-02-19 06:56:40.000000000","message":"you don\u0027t have these methods.. they\u0027ll create routes that\u0027ll end up in 404 since there are no handlers","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        self.resources[\u0027qos_types\u0027] \u003d qos_types.create_resource()"},{"line_number":709,"context_line":"        mapper.resource(\"qos-type\", \"qos-types\","},{"line_number":710,"context_line":"                        controller\u003dself.resources[\u0027qos_types\u0027],"},{"line_number":711,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":712,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        self.resources[\"qos_type_specs\"] \u003d ("},{"line_number":715,"context_line":"            qos_type_specs.create_resource())"}],"source_content_type":"text/x-python","patch_set":17,"id":"407603f4_1ef6eff8","line":712,"range":{"start_line":711,"start_character":24,"end_line":712,"end_character":50},"in_reply_to":"895cd1f6_57805a8d","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"}],"manila/api/views/qos_types.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 Cloudification GmbH."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"267729c8_af6d34f7","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2026-01-15 14:06:28.000000000","message":"2026\nhere and in the other files I forgot to comment it","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 Cloudification GmbH."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"3bf0ec59_015848c7","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"267729c8_af6d34f7","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from manila.api import common"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ViewBuilder(common.ViewBuilder):"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa08cad7_7be941fa","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":15},"updated":"2026-02-23 19:00:41.000000000","message":"unused.. remove","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from manila.api import common"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ViewBuilder(common.ViewBuilder):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1b071db6_b27261ab","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":15},"in_reply_to":"fa08cad7_7be941fa","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cca5418bc278e4b1e2443918c76cae4c761af276","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def show(self, request, qos_type, brief\u003dFalse):"},{"line_number":25,"context_line":"        \"\"\"Trim away extraneous qos type attributes.\"\"\""},{"line_number":26,"context_line":"        trimmed \u003d {"},{"line_number":27,"context_line":"            \u0027id\u0027: qos_type.get(\u0027id\u0027),"},{"line_number":28,"context_line":"            \u0027name\u0027: qos_type.get(\u0027name\u0027),"},{"line_number":29,"context_line":"            \u0027description\u0027: qos_type.get(\u0027description\u0027),"}],"source_content_type":"text/x-python","patch_set":24,"id":"bdd1a1c4_dd9817e8","line":26,"updated":"2026-02-25 22:06:18.000000000","message":"missing ``created_at`` or ``updated_at`` in the response.\nSince this is a brand-new API, once it ships\nwithout timestamps, adding them later requires a new microversion.","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8fbf3be41814b9d138a9648f50598f9605cbcbaf","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def show(self, request, qos_type, brief\u003dFalse):"},{"line_number":25,"context_line":"        \"\"\"Trim away extraneous qos type attributes.\"\"\""},{"line_number":26,"context_line":"        trimmed \u003d {"},{"line_number":27,"context_line":"            \u0027id\u0027: qos_type.get(\u0027id\u0027),"},{"line_number":28,"context_line":"            \u0027name\u0027: qos_type.get(\u0027name\u0027),"},{"line_number":29,"context_line":"            \u0027description\u0027: qos_type.get(\u0027description\u0027),"}],"source_content_type":"text/x-python","patch_set":24,"id":"c333fdcb_aec3cfc7","line":26,"in_reply_to":"bdd1a1c4_dd9817e8","updated":"2026-02-25 22:57:24.000000000","message":"Done","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"}],"manila/common/constants.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97a7df2dd00a527cce0d872fa24672c66ee4bcd1","unresolved":true,"context_lines":[{"line_number":356,"context_line":"    PROVISIONING_MIN_SHARE_SIZE \u003d \"provisioning:min_share_size\""},{"line_number":357,"context_line":"    PROVISIONING_MAX_SHARE_EXTEND_SIZE \u003d \"provisioning:max_share_extend_size\""},{"line_number":358,"context_line":"    PROVISIONING_MOUNT_POINT_PREFIX \u003d \"provisioning:mount_point_prefix\""},{"line_number":359,"context_line":"    DEFAULT_QOS_TYPE \u003d \"default_qos_type\""},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    # Extra specs containers"},{"line_number":362,"context_line":"    REQUIRED \u003d ("}],"source_content_type":"text/x-python","patch_set":14,"id":"62d64e84_4913a192","line":359,"range":{"start_line":359,"start_character":24,"end_line":359,"end_character":40},"updated":"2026-02-03 19:37:31.000000000","message":"shouldn\u0027t this be a scoped extra-spec: `provisioning:default_qos_type`","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":356,"context_line":"    PROVISIONING_MIN_SHARE_SIZE \u003d \"provisioning:min_share_size\""},{"line_number":357,"context_line":"    PROVISIONING_MAX_SHARE_EXTEND_SIZE \u003d \"provisioning:max_share_extend_size\""},{"line_number":358,"context_line":"    PROVISIONING_MOUNT_POINT_PREFIX \u003d \"provisioning:mount_point_prefix\""},{"line_number":359,"context_line":"    DEFAULT_QOS_TYPE \u003d \"default_qos_type\""},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    # Extra specs containers"},{"line_number":362,"context_line":"    REQUIRED \u003d ("}],"source_content_type":"text/x-python","patch_set":14,"id":"836b61c9_0df47aeb","line":359,"range":{"start_line":359,"start_character":24,"end_line":359,"end_character":40},"in_reply_to":"62d64e84_4913a192","updated":"2026-02-04 12:57:08.000000000","message":"I dont have opinion on this, but looking at qos which is used as \"qos\" and not as \"provisioning:qos\", I think we can skip provisioning as well. Also, this will be consistent with specs. Let me know if you think otherwise.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"}],"manila/db/migrations/alembic/versions/eead2cb81845_add_qos_type_and_qos_type_specs.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7653724d30041dde387128c238ba90a80f788ce0","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def upgrade():"},{"line_number":39,"context_line":"    \"\"\"Add backup attributes.\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    context \u003d op.get_context()"},{"line_number":42,"context_line":"    mysql_dl \u003d context.bind.dialect.name \u003d\u003d \u0027mysql\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"9881396b_1136bd98","line":39,"range":{"start_line":39,"start_character":11,"end_line":39,"end_character":17},"updated":"2026-02-03 06:43:06.000000000","message":"Add QoS type and QoS type specs tables.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def upgrade():"},{"line_number":39,"context_line":"    \"\"\"Add backup attributes.\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    context \u003d op.get_context()"},{"line_number":42,"context_line":"    mysql_dl \u003d context.bind.dialect.name \u003d\u003d \u0027mysql\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"fc8696ee_2bc0c4bc","line":39,"range":{"start_line":39,"start_character":11,"end_line":39,"end_character":17},"in_reply_to":"9881396b_1136bd98","updated":"2026-02-04 12:57:08.000000000","message":"Done","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":52,"context_line":"            sa.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":53,"context_line":"            sa.Column(\u0027deleted_at\u0027, datetime_type),"},{"line_number":54,"context_line":"            sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":55,"context_line":"            sa.Column(\u0027name\u0027, sa.String(255)),"},{"line_number":56,"context_line":"            sa.Column(\u0027description\u0027, sa.String(255)),"},{"line_number":57,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":58,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"5ceebb16_b60a9895","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":46},"updated":"2026-02-19 06:56:40.000000000","message":"You\u0027ll need a uniqueness constraint here","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            sa.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":53,"context_line":"            sa.Column(\u0027deleted_at\u0027, datetime_type),"},{"line_number":54,"context_line":"            sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":55,"context_line":"            sa.Column(\u0027name\u0027, sa.String(255)),"},{"line_number":56,"context_line":"            sa.Column(\u0027description\u0027, sa.String(255)),"},{"line_number":57,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":58,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1589a3c5_fb7e2d74","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":46},"in_reply_to":"5ceebb16_b60a9895","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    try:"},{"line_number":85,"context_line":"        op.add_column("},{"line_number":86,"context_line":"            share_instances_table,"},{"line_number":87,"context_line":"            sa.Column(\u0027qos_type_id\u0027, sa.String(36), nullable\u003dTrue))"},{"line_number":88,"context_line":"    except Exception:"},{"line_number":89,"context_line":"        LOG.error(\"Column can not be added for \u0027share_instance\u0027 table!\")"},{"line_number":90,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fca3a07_d2476d9b","line":87,"range":{"start_line":87,"start_character":12,"end_line":87,"end_character":67},"updated":"2026-02-19 20:37:24.000000000","message":"shouldn\u0027t this also be a foreign key?","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"53ffb51a1adb69ba0955675ce12a580fd5581447","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    try:"},{"line_number":85,"context_line":"        op.add_column("},{"line_number":86,"context_line":"            share_instances_table,"},{"line_number":87,"context_line":"            sa.Column(\u0027qos_type_id\u0027, sa.String(36), nullable\u003dTrue))"},{"line_number":88,"context_line":"    except Exception:"},{"line_number":89,"context_line":"        LOG.error(\"Column can not be added for \u0027share_instance\u0027 table!\")"},{"line_number":90,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":19,"id":"e6737fc9_5fbffee1","line":87,"range":{"start_line":87,"start_character":12,"end_line":87,"end_character":67},"in_reply_to":"3fca3a07_d2476d9b","updated":"2026-02-23 06:58:21.000000000","message":"this was added in models.py. updated here as well.","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":7984,"context_line":"def qos_type_get_by_name_or_id(context, name_or_id):"},{"line_number":7985,"context_line":"    \"\"\"Return a dict describing specific qos_type using its name or ID.\"\"\""},{"line_number":7986,"context_line":"    try:"},{"line_number":7987,"context_line":"        return _qos_type_get(context, name_or_id)"},{"line_number":7988,"context_line":"    except exception.QosTypeNotFound:"},{"line_number":7989,"context_line":"        try:"},{"line_number":7990,"context_line":"            return _qos_type_get_by_name(context, name_or_id)"},{"line_number":7991,"context_line":"        except exception.QosTypeNotFoundByName:"},{"line_number":7992,"context_line":"            return None"},{"line_number":7993,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"a1dbf899_4c092670","line":7990,"range":{"start_line":7987,"start_character":0,"end_line":7990,"end_character":61},"updated":"2026-02-19 06:56:40.000000000","message":"shouldn\u0027t you return a `_dict_with_specs` version for consistency","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":7984,"context_line":"def qos_type_get_by_name_or_id(context, name_or_id):"},{"line_number":7985,"context_line":"    \"\"\"Return a dict describing specific qos_type using its name or ID.\"\"\""},{"line_number":7986,"context_line":"    try:"},{"line_number":7987,"context_line":"        return _qos_type_get(context, name_or_id)"},{"line_number":7988,"context_line":"    except exception.QosTypeNotFound:"},{"line_number":7989,"context_line":"        try:"},{"line_number":7990,"context_line":"            return _qos_type_get_by_name(context, name_or_id)"},{"line_number":7991,"context_line":"        except exception.QosTypeNotFoundByName:"},{"line_number":7992,"context_line":"            return None"},{"line_number":7993,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2a793856_54cb3693","line":7990,"range":{"start_line":7987,"start_character":0,"end_line":7990,"end_character":61},"in_reply_to":"a1dbf899_4c092670","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"dff8de2ebd807b48b7707e440a431a29887f2dea","unresolved":true,"context_lines":[{"line_number":7930,"context_line":"        read_deleted\u003d\"no\","},{"line_number":7931,"context_line":"    ).filter_by(qos_type_id\u003dqos_type_id).count()"},{"line_number":7932,"context_line":"    if shares_count:"},{"line_number":7933,"context_line":"        msg \u003d (\"Deletion of qos type %(qtype)s failed; it in use by \""},{"line_number":7934,"context_line":"               \"%(shares)d shares\")"},{"line_number":7935,"context_line":"        msg_args \u003d {\u0027qtype\u0027: qos_type_id, \u0027shares\u0027: shares_count}"},{"line_number":7936,"context_line":"        LOG.error(msg, msg_args)"}],"source_content_type":"text/x-python","patch_set":19,"id":"0d943199_73d8620e","line":7933,"range":{"start_line":7933,"start_character":55,"end_line":7933,"end_character":60},"updated":"2026-02-19 20:37:24.000000000","message":"```suggestion\n        msg \u003d (\"Deletion of qos type %(qtype)s failed; it is in use by \"\n```","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"53ffb51a1adb69ba0955675ce12a580fd5581447","unresolved":false,"context_lines":[{"line_number":7930,"context_line":"        read_deleted\u003d\"no\","},{"line_number":7931,"context_line":"    ).filter_by(qos_type_id\u003dqos_type_id).count()"},{"line_number":7932,"context_line":"    if shares_count:"},{"line_number":7933,"context_line":"        msg \u003d (\"Deletion of qos type %(qtype)s failed; it in use by \""},{"line_number":7934,"context_line":"               \"%(shares)d shares\")"},{"line_number":7935,"context_line":"        msg_args \u003d {\u0027qtype\u0027: qos_type_id, \u0027shares\u0027: shares_count}"},{"line_number":7936,"context_line":"        LOG.error(msg, msg_args)"}],"source_content_type":"text/x-python","patch_set":19,"id":"75cdb41a_d347ae4c","line":7933,"range":{"start_line":7933,"start_character":55,"end_line":7933,"end_character":60},"in_reply_to":"0d943199_73d8620e","updated":"2026-02-23 06:58:21.000000000","message":"Done","commit_id":"b769c1281de9778409f0bca245ced1370f553b80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cca5418bc278e4b1e2443918c76cae4c761af276","unresolved":true,"context_lines":[{"line_number":7937,"context_line":"        qos_type_ref.save(session\u003dcontext.session)"},{"line_number":7938,"context_line":"    except db_exception.DBDuplicateEntry:"},{"line_number":7939,"context_line":"        raise exception.QosTypeExists(id\u003dvalues[\u0027name\u0027])"},{"line_number":7940,"context_line":"    except Exception as e:"},{"line_number":7941,"context_line":"        raise db_exception.DBError(e)"},{"line_number":7942,"context_line":""},{"line_number":7943,"context_line":"    return qos_type_get(context, qos_type_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"ec1b3ee1_1e2b4a61","line":7940,"updated":"2026-02-25 22:06:18.000000000","message":"other functions don\u0027t have this raise behavior.. perhaps drop; doing this\nonly adds more noise and can end up suppressing some other exception if\nthere are multiple.","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8fbf3be41814b9d138a9648f50598f9605cbcbaf","unresolved":false,"context_lines":[{"line_number":7937,"context_line":"        qos_type_ref.save(session\u003dcontext.session)"},{"line_number":7938,"context_line":"    except db_exception.DBDuplicateEntry:"},{"line_number":7939,"context_line":"        raise exception.QosTypeExists(id\u003dvalues[\u0027name\u0027])"},{"line_number":7940,"context_line":"    except Exception as e:"},{"line_number":7941,"context_line":"        raise db_exception.DBError(e)"},{"line_number":7942,"context_line":""},{"line_number":7943,"context_line":"    return qos_type_get(context, qos_type_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"73632f4d_c2bcf18d","line":7940,"in_reply_to":"ec1b3ee1_1e2b4a61","updated":"2026-02-25 22:57:24.000000000","message":"Done","commit_id":"38ae71c5bedef9fef3578c1e7e627e2e0d75d85f"}],"manila/db/sqlalchemy/models.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":1621,"context_line":"    __tablename__ \u003d \"qos_types\""},{"line_number":1622,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":1623,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"},{"line_number":1624,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse, unique\u003dTrue)"},{"line_number":1625,"context_line":"    description \u003d Column(String(255))"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3e99d60f_b1a11575","line":1624,"range":{"start_line":1624,"start_character":47,"end_line":1624,"end_character":58},"updated":"2026-02-23 19:00:41.000000000","message":"unfortunately, you can\u0027t set \"name\" to \"unique\" alone.. you can make a composite key with \"deleted\".. but setting name to \"unique\" will cause issues with soft-deletion. \n\nConsider a qos type called \"gold\". It\u0027s deleted. \nRecreating \"gold\" should be allowed.. however, this uniqueness constraint will prevent it\n\nWhen you fix this, please add a unit test to ensure this scenario works as expected..","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":1621,"context_line":"    __tablename__ \u003d \"qos_types\""},{"line_number":1622,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":1623,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"},{"line_number":1624,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse, unique\u003dTrue)"},{"line_number":1625,"context_line":"    description \u003d Column(String(255))"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"48463225_51dfdef3","line":1624,"range":{"start_line":1624,"start_character":47,"end_line":1624,"end_character":58},"in_reply_to":"3e99d60f_b1a11575","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":1621,"context_line":"    __tablename__ \u003d \"qos_types\""},{"line_number":1622,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":1623,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"},{"line_number":1624,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse, unique\u003dTrue)"},{"line_number":1625,"context_line":"    description \u003d Column(String(255))"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"8fdd3d63_0f0c824f","line":1624,"range":{"start_line":1624,"start_character":47,"end_line":1624,"end_character":58},"in_reply_to":"3e99d60f_b1a11575","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"}],"manila/policies/qos_types_spec.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        operations\u003d["},{"line_number":102,"context_line":"            {"},{"line_number":103,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"},{"line_number":104,"context_line":"                \u0027path\u0027: \u0027/qos-types/{qos_type_id}/specs\u0027,"},{"line_number":105,"context_line":"            }"},{"line_number":106,"context_line":"        ],"},{"line_number":107,"context_line":"        deprecated_rule\u003ddeprecated_spec_update"}],"source_content_type":"text/x-python","patch_set":17,"id":"7cf1084c_c391d5ed","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":57},"updated":"2026-02-19 06:56:40.000000000","message":"/qos-types/{id}/specs/{key}","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        operations\u003d["},{"line_number":102,"context_line":"            {"},{"line_number":103,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"},{"line_number":104,"context_line":"                \u0027path\u0027: \u0027/qos-types/{qos_type_id}/specs\u0027,"},{"line_number":105,"context_line":"            }"},{"line_number":106,"context_line":"        ],"},{"line_number":107,"context_line":"        deprecated_rule\u003ddeprecated_spec_update"}],"source_content_type":"text/x-python","patch_set":17,"id":"e028f5cf_fd6e2ee4","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":57},"in_reply_to":"7cf1084c_c391d5ed","updated":"2026-02-19 13:03:41.000000000","message":"Done","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"}],"manila/scheduler/filters/capabilities.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"87f470372ee176316a9f29c42678bded01da7c71","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        if not extra_specs:"},{"line_number":35,"context_line":"            return True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if extra_specs.get(\u0027default_qos_type\u0027):"},{"line_number":38,"context_line":"            if not capabilities.get(\u0027qos_type_support\u0027, False):"},{"line_number":39,"context_line":"                return False"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fd44376a_11cf953f","line":37,"range":{"start_line":37,"start_character":11,"end_line":37,"end_character":46},"updated":"2026-02-03 15:36:54.000000000","message":"shouldn\u0027t you pop this out? else, the `capabilities_satisfied` method will discard all the hosts?","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8a407ba3db0f6f0c319059a0966e304dca0657a8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        if not extra_specs:"},{"line_number":35,"context_line":"            return True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if extra_specs.get(\u0027default_qos_type\u0027):"},{"line_number":38,"context_line":"            if not capabilities.get(\u0027qos_type_support\u0027, False):"},{"line_number":39,"context_line":"                return False"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"93c8f367_cc70927f","line":37,"range":{"start_line":37,"start_character":11,"end_line":37,"end_character":46},"in_reply_to":"fd44376a_11cf953f","updated":"2026-02-04 12:57:08.000000000","message":"No, the method have ignored_extra_specs and default_qos_type added in that list.","commit_id":"605f7b0e2531b768983199ef788ef75e89bed065"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":910,"context_line":"                       \u0027az\u0027: availability_zone}"},{"line_number":911,"context_line":"            raise exception.InvalidShare(message\u003dmsg % payload)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        qos_type_id \u003d None"},{"line_number":914,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get("},{"line_number":915,"context_line":"            constants.ExtraSpecs.DEFAULT_QOS_TYPE)"},{"line_number":916,"context_line":"        if qos_type:"},{"line_number":917,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":918,"context_line":"            if qos_db:"},{"line_number":919,"context_line":"                qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":920,"context_line":"            else:"},{"line_number":921,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":922,"context_line":"                        \"specified qos_type does not exist.\")"},{"line_number":923,"context_line":"                payload \u003d {\u0027type\u0027: share_type}"},{"line_number":924,"context_line":"                raise exception.InvalidInput(reason\u003dmsg % payload)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        try:"},{"line_number":927,"context_line":"            reservations \u003d QUOTAS.reserve("}],"source_content_type":"text/x-python","patch_set":22,"id":"d895690a_16020da0","line":924,"range":{"start_line":913,"start_character":1,"end_line":924,"end_character":66},"updated":"2026-02-23 19:00:41.000000000","message":"this code isn\u0027t unit tested","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":910,"context_line":"                       \u0027az\u0027: availability_zone}"},{"line_number":911,"context_line":"            raise exception.InvalidShare(message\u003dmsg % payload)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        qos_type_id \u003d None"},{"line_number":914,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get("},{"line_number":915,"context_line":"            constants.ExtraSpecs.DEFAULT_QOS_TYPE)"},{"line_number":916,"context_line":"        if qos_type:"},{"line_number":917,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":918,"context_line":"            if qos_db:"},{"line_number":919,"context_line":"                qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":920,"context_line":"            else:"},{"line_number":921,"context_line":"                msg \u003d _(\"Share type %(type)s extra-specs \u0027default_qos_type\u0027 \""},{"line_number":922,"context_line":"                        \"specified qos_type does not exist.\")"},{"line_number":923,"context_line":"                payload \u003d {\u0027type\u0027: share_type}"},{"line_number":924,"context_line":"                raise exception.InvalidInput(reason\u003dmsg % payload)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        try:"},{"line_number":927,"context_line":"            reservations \u003d QUOTAS.reserve("}],"source_content_type":"text/x-python","patch_set":22,"id":"1a6bc291_64f31bfb","line":924,"range":{"start_line":913,"start_character":1,"end_line":924,"end_character":66},"in_reply_to":"d895690a_16020da0","updated":"2026-02-24 06:28:09.000000000","message":"Done","commit_id":"2f7c96bb04da27a56cd33c0642215462b1745485"}],"manila/share/manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0b9650543aaa7c221d0fa35169b278aef7c0be52","unresolved":true,"context_lines":[{"line_number":1268,"context_line":"        share_type \u003d share_types.get_share_type(context, new_share_type_id)"},{"line_number":1269,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get(\u0027default_qos_type\u0027)"},{"line_number":1270,"context_line":"        if qos_type:"},{"line_number":1271,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":1272,"context_line":"            qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"        request_spec, dest_share_instance \u003d ("},{"line_number":1275,"context_line":"            self.share_api.create_share_instance_and_get_request_spec("}],"source_content_type":"text/x-python","patch_set":17,"id":"434a7d20_3fa8226c","line":1272,"range":{"start_line":1271,"start_character":12,"end_line":1272,"end_character":38},"updated":"2026-02-19 06:56:40.000000000","message":"The DB API allows returning None if a qos type can\u0027t be found by name or ID.. shouldn\u0027t that raise an error here?","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        share_type \u003d share_types.get_share_type(context, new_share_type_id)"},{"line_number":1269,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get(\u0027default_qos_type\u0027)"},{"line_number":1270,"context_line":"        if qos_type:"},{"line_number":1271,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":1272,"context_line":"            qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"        request_spec, dest_share_instance \u003d ("},{"line_number":1275,"context_line":"            self.share_api.create_share_instance_and_get_request_spec("}],"source_content_type":"text/x-python","patch_set":17,"id":"b3b8521b_33696408","line":1272,"range":{"start_line":1271,"start_character":12,"end_line":1272,"end_character":38},"in_reply_to":"1bbf0955_df6de245","updated":"2026-02-24 06:28:09.000000000","message":"if share type is changed and it contains default_qos_type, that needs to be validated which is done at https://review.opendev.org/c/openstack/manila/+/967822/22/manila/share/api.py#2052","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"229af4441b0a3f17f8b3432157535ef375ea05af","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        share_type \u003d share_types.get_share_type(context, new_share_type_id)"},{"line_number":1269,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get(\u0027default_qos_type\u0027)"},{"line_number":1270,"context_line":"        if qos_type:"},{"line_number":1271,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":1272,"context_line":"            qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"        request_spec, dest_share_instance \u003d ("},{"line_number":1275,"context_line":"            self.share_api.create_share_instance_and_get_request_spec("}],"source_content_type":"text/x-python","patch_set":17,"id":"542c6d7f_f6de035d","line":1272,"range":{"start_line":1271,"start_character":12,"end_line":1272,"end_character":38},"in_reply_to":"1bbf0955_df6de245","updated":"2026-02-24 06:28:09.000000000","message":"in case same share type is used, we dont need validation, because share is created from that share type and so qos type are validated in share create workflow. However if share type is different, we need qos type validation and hence added at https://review.opendev.org/c/openstack/manila/+/967822/22/manila/share/api.py#2052","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c8ba29e73aecba95c6e754bd92b7790fdbd1f458","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        share_type \u003d share_types.get_share_type(context, new_share_type_id)"},{"line_number":1269,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get(\u0027default_qos_type\u0027)"},{"line_number":1270,"context_line":"        if qos_type:"},{"line_number":1271,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":1272,"context_line":"            qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"        request_spec, dest_share_instance \u003d ("},{"line_number":1275,"context_line":"            self.share_api.create_share_instance_and_get_request_spec("}],"source_content_type":"text/x-python","patch_set":17,"id":"dc4b4b1e_1ed77f23","line":1272,"range":{"start_line":1271,"start_character":12,"end_line":1272,"end_character":38},"in_reply_to":"434a7d20_3fa8226c","updated":"2026-02-19 13:03:41.000000000","message":"that is handled in api layer,  fetched here to create request_spec.","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb8d475ef2042cc72a21c3b53c4fc1f786f941da","unresolved":true,"context_lines":[{"line_number":1268,"context_line":"        share_type \u003d share_types.get_share_type(context, new_share_type_id)"},{"line_number":1269,"context_line":"        qos_type \u003d share_type.get(\u0027extra_specs\u0027, {}).get(\u0027default_qos_type\u0027)"},{"line_number":1270,"context_line":"        if qos_type:"},{"line_number":1271,"context_line":"            qos_db \u003d self.db.qos_type_get_by_name_or_id(context, qos_type)"},{"line_number":1272,"context_line":"            qos_type_id \u003d qos_db[\u0027id\u0027]"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"        request_spec, dest_share_instance \u003d ("},{"line_number":1275,"context_line":"            self.share_api.create_share_instance_and_get_request_spec("}],"source_content_type":"text/x-python","patch_set":17,"id":"1bbf0955_df6de245","line":1272,"range":{"start_line":1271,"start_character":12,"end_line":1272,"end_character":38},"in_reply_to":"dc4b4b1e_1ed77f23","updated":"2026-02-23 19:00:41.000000000","message":"Can you point me to where this it handled? I don\u0027t see any changes to the migration_start method: https://review.opendev.org/c/openstack/manila/+/967822/22/manila/api/v2/shares.py#484","commit_id":"73dddd9d7e17d262634255d75bcbdfd7aa433fc7"}],"releasenotes/notes/blueprint-qos-types-and-qos-type-specs-8d91be25500bafd0.yaml":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"385bb7afa6fd5cea9920961d75a2367b1105b381","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for qos type and qos type specs. The qos type with its specs"},{"line_number":5,"context_line":"    will be used to define certain quality of service(qos) features by backend"},{"line_number":6,"context_line":"    storage driver. The qos type will be used as template from which backend"},{"line_number":7,"context_line":"    driver will create qos polices and apply those to resources like share,"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7ddc8adb_8b1a5a9f","line":4,"range":{"start_line":4,"start_character":22,"end_line":4,"end_character":25},"updated":"2026-01-15 14:06:28.000000000","message":"QoS","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"367d8ff8e3b57c383f5f3c20f6e4a5da9ffba15d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for qos type and qos type specs. The qos type with its specs"},{"line_number":5,"context_line":"    will be used to define certain quality of service(qos) features by backend"},{"line_number":6,"context_line":"    storage driver. The qos type will be used as template from which backend"},{"line_number":7,"context_line":"    driver will create qos polices and apply those to resources like share,"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"a7395f50_2e802320","line":4,"range":{"start_line":4,"start_character":22,"end_line":4,"end_character":25},"in_reply_to":"7ddc8adb_8b1a5a9f","updated":"2026-01-19 10:39:28.000000000","message":"Done","commit_id":"1d5a6eb9a69808a908397f4cc3c96eb90b33a86f"}]}
