)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c9982725338ecf42bc11ca58023ed69f5b2096e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ecb79a2c_ae1917d6","updated":"2024-10-24 03:28:48.000000000","message":"+1 in general.\ni need to read over the libvirt and cinder docs again but in principal i dont see why we coudl not enabel this.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"87d6af0856d897cfb0bbae31442896f1c8395d30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"323f51bb_529f84fc","updated":"2024-10-29 17:06:34.000000000","message":"After discussion with Sean I\u0027m now in favor of this change but as Sean suggested this requires that cinder is updated first.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"483d055b84cc688a1e1be9fb806cea3f60a9e903","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"267c5597_e34aa568","updated":"2025-01-08 15:13:45.000000000","message":"Apologies for the delayed response.  We discussed this proposal at the weekly cinder meeting, and it looks like it will require *no changes* to the cinder API.  So the cinder team has no objection to this proposal.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ed55f63aa53559be376377e87969e2a61567bf8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5b436dcb_ffb14925","updated":"2025-01-08 16:06:26.000000000","message":"In today\u0027s cinder team meeting, we discussed the impact of this feature on Cinder side and as outlined in the inline comment, we don\u0027t see any major concerns from:\na) code perspective - as we\u0027ve checked\nb) functionality perspective - as tested by the author\n\nStill it would be good to document the new options in Cinder docs.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"771dc3d6d9c4662da30df9750205ef87c218a9dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2290b6b7_d141e976","updated":"2025-01-13 17:44:24.000000000","message":"over all i think the spec is ok given the cinder folks have confirmed that this is not a versioned part of the cinder api, however we are now past the spec freeze deadline so -1 since this is not valid for this cycle without a spec freeze expction. that can be requested in teh next nova team meeting tomorrow.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"5828eddf85abfa04933a19d7253ecc2400c04f6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b2bc8661_87a5ace0","in_reply_to":"323f51bb_529f84fc","updated":"2024-12-17 19:33:57.000000000","message":"Any update from the cinder side? I was wondering if there\u0027s anything I could done to move this forward.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f65d254aa2d4f11a7ed41d3028054468ba684011","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8d308b17_6da04cce","updated":"2025-05-01 15:28:08.000000000","message":"+1 for direction i wont have time to read this today but given cinder agrees that this can/should be supported i think we can refine the sepc and proceed with this this cycle.","commit_id":"64e09e04f3a0ffd3b6df558fc8f106cc151516c4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eac4a3c030bbb7a3ee9ac197b589b95cb051edd2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ed511dd1_329a7a6e","updated":"2025-05-15 19:31:00.000000000","message":"+1 on direciton but -1 due to the lack of detail and the scheduler/upgrade impact combidned with the missing correctness checks related ot attach_volume and volume retry.\n\nif nova cant suprpot frontend bust qos on a host it shoudl reject volume retryp and attach request with a 409.\n\nit would not be ok to allot the retype or atach to compelte and just not apply the qos policy.","commit_id":"64e09e04f3a0ffd3b6df558fc8f106cc151516c4"}],"specs/2025.1/approved/add-burst-length-support.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c9982725338ecf42bc11ca58023ed69f5b2096e","unresolved":true,"context_lines":[{"line_number":47,"context_line":"Front-end volume specifications will only be supported for volumes exported"},{"line_number":48,"context_line":"through Cinder; no QoS specifications will be provided for local drives"},{"line_number":49,"context_line":"managed directly by Nova."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Use case examples:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"160de54d_19c43f00","line":50,"updated":"2024-10-24 03:28:48.000000000","message":"looking at nova\u0027s exiwsting flavor based quotas\n\nwhile we can configure burst quotas for network traffic we do not have that capablity for disk io.\n\nso there shoudl nto eb any conflict between the existng quotas and this new functionatliy\n\nhttps://github.com/openstack/nova/blob/master/nova/api/validation/extra_specs/quota.py#L149-L185\n\n\nwe coudl add burst quota extra specs for nova disk for parity but i think what you are requesting with regards to cinder makes sense.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8a1577466140ff4d2431adfb545f9271987cd69c","unresolved":true,"context_lines":[{"line_number":47,"context_line":"Front-end volume specifications will only be supported for volumes exported"},{"line_number":48,"context_line":"through Cinder; no QoS specifications will be provided for local drives"},{"line_number":49,"context_line":"managed directly by Nova."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Use case examples:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"75442b1d_24dcd857","line":50,"in_reply_to":"160de54d_19c43f00","updated":"2024-10-25 14:17:38.000000000","message":"I agree that the proposal makes sense, I see there is a problem with actual implementation we currently have.\n\nSo to achieve this functionality we expect that cinder exposes these qos information as part of connection_info. However cinder has no mechanism to do so.\nSo we first need some change made in cinder side.\n\nAlternative approach is to make nova query volume type of the volume then qos associated with that volume type, but I\u0027m unsure if that\u0027s really possible with user\u0027s context. At least this method requires additional 2 API calls which sounds costly.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"70f1d9a01dcee57e67d7a06f8de28ad9ec4e2173","unresolved":true,"context_lines":[{"line_number":47,"context_line":"Front-end volume specifications will only be supported for volumes exported"},{"line_number":48,"context_line":"through Cinder; no QoS specifications will be provided for local drives"},{"line_number":49,"context_line":"managed directly by Nova."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Use case examples:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f01c21c6_7e6ef5fb","line":50,"in_reply_to":"75442b1d_24dcd857","updated":"2024-10-29 16:49:56.000000000","message":"I later learned that frontend qos is consumed directly by nova so my concern above was just invalid.\n\nhttps://github.com/openstack/cinder/blob/cd7a4da7afac2c9912404736399fd8e985be131e/cinder/volume/manager.py#L1831-L1832","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"87d6af0856d897cfb0bbae31442896f1c8395d30","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Front-end volume specifications will only be supported for volumes exported"},{"line_number":48,"context_line":"through Cinder; no QoS specifications will be provided for local drives"},{"line_number":49,"context_line":"managed directly by Nova."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Use case examples:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. code-block::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6462125b_ceb96e9d","line":50,"in_reply_to":"f01c21c6_7e6ef5fb","updated":"2024-10-29 17:06:34.000000000","message":"Done","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c9982725338ecf42bc11ca58023ed69f5b2096e","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"23a95ab3_ff4e23bb","line":60,"updated":"2024-10-24 03:28:48.000000000","message":"any and all change to the cinder api will first need to be reviewd and approved by the cinder core team before it can be consumed by nova.\n\nhave you discussed this with them and or have tey added burst limit supprots already?\n\nlater\n\nhttps://docs.openstack.org/cinder/latest/admin/basic-volume-qos.html\nit looks liek the qos types have already been added on the cinder side so all that remans is the nova part although i am not seeing any values with a lenght sufix?","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8a1577466140ff4d2431adfb545f9271987cd69c","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"903b4163_bf006ae5","line":60,"in_reply_to":"23a95ab3_ff4e23bb","updated":"2024-10-25 14:17:38.000000000","message":"These qos are used within cinder. When a volume is created with a volume type which has qos associated, cinder-volume applies these qos properties in volume backend to enforce QoS there. So these values are never exposed to nova, IIUC.\n(However I appreciate any double check from cinder side)","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"420d5bdbf8fa6feb970c7dad5df6c263dd463c2f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"cd30ee31_c91679bd","line":60,"in_reply_to":"564905b7_264638dd","updated":"2025-01-14 21:43:05.000000000","message":"Done","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"5828eddf85abfa04933a19d7253ecc2400c04f6a","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"564905b7_264638dd","line":60,"in_reply_to":"7db028fb_732de51a","updated":"2024-12-17 19:33:57.000000000","message":"All qos parameters are stored in cinder database indeed when a volume is created with a volume type that has qos associated.. But when a qos-ed volume is attached to an Nova instance, all these qos values, including the existing already-supported qos limits and these proposed burst length values are passed to Nova and stored in nova.block_device_mapping table under the connection_info field. All qos limits are ultimately passed to QEMU.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"87d6af0856d897cfb0bbae31442896f1c8395d30","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"27ff47cd_94b2433d","line":60,"in_reply_to":"7db028fb_732de51a","updated":"2024-10-29 17:06:34.000000000","message":"Also I don\u0027t see any validation logic in cinder which restrict spec keys so you may be able to register any spec properties, although some of these may not be actually used.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"565710ed1feeb08bdb8c44da26f848830e3c6368","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  cinder qos-create my-qos \\"},{"line_number":58,"context_line":"    consumer\u003dfront-end \\"},{"line_number":59,"context_line":"    read_bytes_sec_max\u003d100000000 \\"},{"line_number":60,"context_line":"    read_bytes_sec_max_length\u003d60 \\"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7db028fb_732de51a","line":60,"in_reply_to":"903b4163_bf006ae5","updated":"2024-10-25 14:25:51.000000000","message":"By the way the length limit of key/value seems to be 255 so the proposed property may fit that limit.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c9982725338ecf42bc11ca58023ed69f5b2096e","unresolved":true,"context_lines":[{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  # These QoS specifications are applied when the volume is attached to a KVM instance:"},{"line_number":65,"context_line":"  nova volume-attach \u003cinstance_id\u003e \u003cvolume_id\u003e"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Available Additional QoS Specs:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"972c5a9b_cbb06f94","line":65,"updated":"2024-10-24 03:28:48.000000000","message":"nit using the project clients i.e nova en cinder is deprecated\ncan you update all command line example to use the unified OpenStack client","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"469eab590d6d54eca04dd9c216b47ee62ae63293","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  # These QoS specifications are applied when the volume is attached to a KVM instance:"},{"line_number":65,"context_line":"  nova volume-attach \u003cinstance_id\u003e \u003cvolume_id\u003e"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Available Additional QoS Specs:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"292f76d2_fc7cf751","line":65,"in_reply_to":"62d4fe99_13c216e0","updated":"2024-12-18 18:56:02.000000000","message":"Done","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"5828eddf85abfa04933a19d7253ecc2400c04f6a","unresolved":true,"context_lines":[{"line_number":62,"context_line":"  cinder qos-associate my-qos \u003cvolume_type_id\u003e"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  # These QoS specifications are applied when the volume is attached to a KVM instance:"},{"line_number":65,"context_line":"  nova volume-attach \u003cinstance_id\u003e \u003cvolume_id\u003e"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Available Additional QoS Specs:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"62d4fe99_13c216e0","line":65,"in_reply_to":"972c5a9b_cbb06f94","updated":"2024-12-17 19:33:57.000000000","message":"sure","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c9982725338ecf42bc11ca58023ed69f5b2096e","unresolved":true,"context_lines":[{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* QEMU 2.6 [1]_"},{"line_number":200,"context_line":"* Libvirt 2.4.0 [2]_ [3]_"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"563c257c_1dd3fca6","line":200,"updated":"2024-10-24 03:28:48.000000000","message":"these are old enough that we do not need to have qemu or libvirt version checks whihc is nice as it mean we do nto need to scheduler based on this cpablity.\n\nwe may need to consider a simple min comptue node version check however as we shoudl nto allow a cidner volume with these quos policies defiend to be attached to a vm on a host that does not suport it.\n\nthe simplest way to enabel that from an upgarde point of view it to have a minium compute service version check to use this feature.","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"469eab590d6d54eca04dd9c216b47ee62ae63293","unresolved":false,"context_lines":[{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* QEMU 2.6 [1]_"},{"line_number":200,"context_line":"* Libvirt 2.4.0 [2]_ [3]_"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d26c0e84_80c26826","line":200,"in_reply_to":"563c257c_1dd3fca6","updated":"2024-12-18 18:56:02.000000000","message":"Done","commit_id":"bf0ec0bc0487393519ca3eda00c4fb8bd7096045"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"59385b35767caeb0eb48c6c36a060f3874e656c5","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c92a78a9_f1225fc8","line":60,"updated":"2024-10-29 16:53:57.000000000","message":"cinder currently supprots\n\n                tune_opts \u003d (\u0027read_iops_sec\u0027, \u0027read_bytes_sec\u0027,\n                             \u0027write_iops_sec\u0027, \u0027write_bytes_sec\u0027,\n                             \u0027total_iops_sec\u0027, \u0027total_bytes_sec\u0027)\n                             \nso the _max and _max_leght properties woudl need to be suprpoted by cidner before they could be supported by nova.\n\nalso i think burst is better then max in terms of clarity.\n\n\nso \n   --property \"read_bytes_sec_burst\u003d100000000\" \\\n    --property \"read_bytes_sec_burst_length\u003d60\" \\ \n    \nmax to me is confusing when taken in context with the existing value.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"87d6af0856d897cfb0bbae31442896f1c8395d30","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"23f26cc8_f6c4f71f","line":60,"in_reply_to":"154644c1_89281085","updated":"2024-10-29 17:06:34.000000000","message":"So the first thing we need is to bring this spec to cinder side and ask for their opinions about the steps needed to change cinder\u0027s logic to expose these new qos specs.\n\nOne point which should be discussed with cinder team is if they think the change is considered to have API impact. (If so then they may need a dedicated spec proposed for cinder, though I personally hope that they don\u0027t need that redundant step).\n\nOnce the strategy to update cinder is determined we can discuss how we move the work in nova.\n\nYou may find discussion between Sean and me in https://meetings.opendev.org/irclogs/%23openstack-nova/%23openstack-nova.2024-10-29.log.html#t2024-10-29T16:42:09","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"469eab590d6d54eca04dd9c216b47ee62ae63293","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"96ba3bfc_1fb901b1","line":60,"in_reply_to":"23f26cc8_f6c4f71f","updated":"2024-12-18 18:56:02.000000000","message":"Is there any update from cinder side? Let me know what I can do to move this forward.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ed55f63aa53559be376377e87969e2a61567bf8f","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a520420_871e8baf","line":60,"in_reply_to":"96ba3bfc_1fb901b1","updated":"2025-01-08 16:06:26.000000000","message":"@smooney@redhat.com: that part of the code adds per GB QoS settings for the given options and is not restricting anything.\nThe two main things to consider from cinder side is:\n1. We don\u0027t restrict accepting new QoS values from API side -- which i think we don\u0027t[1]\n2. We don\u0027t restrict passing front-end QoS values in connection info -- which we clearly don\u0027t\n\nThe author has also tested the nova patch with no cinder changes and claims that it works so I don\u0027t see any major concerns from cinder side apart from documenting the new options.\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/api/schemas/qos_specs.py#L19-L37\n[2] https://github.com/openstack/cinder/blob/master/cinder/volume/manager.py#L1854","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"771dc3d6d9c4662da30df9750205ef87c218a9dc","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"77a68a3e_f0e99e8a","line":60,"in_reply_to":"9a520420_871e8baf","updated":"2025-01-13 17:44:24.000000000","message":"so you effectivly consider the qos policies as unversioned and only docuemnted then.\n\ni see, that does mean we would not need an api change on the cinder cider side but i agree we should have the docs change","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6232b670aa9bbb7122a16446c23e24911f34cf45","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  openstack volume qos create \\"},{"line_number":58,"context_line":"    --consumer \"front-end\" \\"},{"line_number":59,"context_line":"    --property \"read_bytes_sec_max\u003d100000000\" \\"},{"line_number":60,"context_line":"    --property \"read_bytes_sec_max_length\u003d60\" \\"},{"line_number":61,"context_line":"    my-qos"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  openstack volume qos associate my-qos \u003cvolume_type_id\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"154644c1_89281085","line":60,"in_reply_to":"c92a78a9_f1225fc8","updated":"2024-10-29 16:56:20.000000000","message":"this is where cidner restricts which keys may be included in the conenction info pass to nova \n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/manager.py#L1834-L1851","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"771dc3d6d9c4662da30df9750205ef87c218a9dc","unresolved":true,"context_lines":[{"line_number":70,"context_line":"Each specification will add an extra line to the libvirt XML definition,"},{"line_number":71,"context_line":"specifically within the \u003ciotune\u003e section for each device:"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **read_bytes_sec_max_length**:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  Maximum duration in seconds for the read_bytes_sec_max burst period (valid"},{"line_number":76,"context_line":"  only if read_bytes_sec_max is set)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"c43dd38e_d49590b3","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":29},"updated":"2025-01-13 17:44:24.000000000","message":"as noted above i would still prefer if we used burst instead of lenght\n\n`read_bytes_sec_burst` the amount you can burst too\n and `read_bytes_sec_burst_length` how long you can brust for.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"83c25887aaf1049a7f2e25e06405a5684ddf15b1","unresolved":true,"context_lines":[{"line_number":70,"context_line":"Each specification will add an extra line to the libvirt XML definition,"},{"line_number":71,"context_line":"specifically within the \u003ciotune\u003e section for each device:"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **read_bytes_sec_max_length**:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  Maximum duration in seconds for the read_bytes_sec_max burst period (valid"},{"line_number":76,"context_line":"  only if read_bytes_sec_max is set)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1cecb8e2_3bca1b80","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":29},"in_reply_to":"19b90ac4_a68e86de","updated":"2025-01-14 16:51:51.000000000","message":"I prefer using more meaningful name to internal names, but for this case I see rbd driver already uses the \"read_bytes_sec_max\" key so it\u0027d be better to stick with the libvirt\u0027s naming for consistency ...","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"0b6f533c68e5a23639426321965f4340ae3d07d4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Each specification will add an extra line to the libvirt XML definition,"},{"line_number":71,"context_line":"specifically within the \u003ciotune\u003e section for each device:"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **read_bytes_sec_max_length**:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  Maximum duration in seconds for the read_bytes_sec_max burst period (valid"},{"line_number":76,"context_line":"  only if read_bytes_sec_max is set)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"a193ff0b_4d551767","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":29},"in_reply_to":"1cecb8e2_3bca1b80","updated":"2025-01-14 21:42:02.000000000","message":"Done","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"4d8efbd81310561c2d1927b7d5d99916664c5dff","unresolved":true,"context_lines":[{"line_number":70,"context_line":"Each specification will add an extra line to the libvirt XML definition,"},{"line_number":71,"context_line":"specifically within the \u003ciotune\u003e section for each device:"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **read_bytes_sec_max_length**:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  Maximum duration in seconds for the read_bytes_sec_max burst period (valid"},{"line_number":76,"context_line":"  only if read_bytes_sec_max is set)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"19b90ac4_a68e86de","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":29},"in_reply_to":"c43dd38e_d49590b3","updated":"2025-01-13 21:21:39.000000000","message":"The reason to use max here is to match the name of corresponding parameters in libvirt. Please see this in libvirt doc https://libvirt.org/formatdomain.html#:~:text\u003dor%20write_bytes_sec_max.-,read_bytes_sec_max,-The%20optional%20read_bytes_sec_max","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"771dc3d6d9c4662da30df9750205ef87c218a9dc","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Unit tests"},{"line_number":208,"context_line":"* Existing tests will ensure that the XML is formatted correctly"},{"line_number":209,"context_line":"  assuming the required versions of libvirt and QEMU are present."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Documentation Impact"},{"line_number":212,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d6214d6f_5b00dce5","line":209,"updated":"2025-01-13 17:44:24.000000000","message":"we would ideally have tempest tests to verify this too, is that somethign you plan to do?","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"4d8efbd81310561c2d1927b7d5d99916664c5dff","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Unit tests"},{"line_number":208,"context_line":"* Existing tests will ensure that the XML is formatted correctly"},{"line_number":209,"context_line":"  assuming the required versions of libvirt and QEMU are present."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Documentation Impact"},{"line_number":212,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"37fae041_34a098c3","line":209,"in_reply_to":"d6214d6f_5b00dce5","updated":"2025-01-13 21:21:39.000000000","message":"If it is required to merge the code in, then yes I will do it.","commit_id":"e5b0d172b89e8218148ac31a3a4122bc2a4cc9ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4c51bcba9e0c59b81cf5830e99ecc36870b6f174","unresolved":true,"context_lines":[{"line_number":33,"context_line":"* Set maximum duration for IOPS and bandwidth burst limits on"},{"line_number":34,"context_line":"  instance-attached disks"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Cinder-attached volumes can have additional QoS specs assigned. The Nova"}],"source_content_type":"text/x-rst","patch_set":7,"id":"0ec800f3_4a5e5f53","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":15},"updated":"2025-02-04 17:14:37.000000000","message":"one thing to consider is while all comptue nodes may have a libvirt knew enought to supprot this featre we cant assume that all nova comptue agents supprot it.\n\nwe have to provide n-2 compatiablity between slrup release (20**.1) and n-1 for non slurps (20**.2) \n\nso we need to have a compute service bump at a minimum and an api check for server create and volume attach possible also the swap volume api for retype.\n\nto make schduling work properly for cold/live migration on a cloud with mixed comptue version we ideally could have a COMPUTE_ traits to denote supprot for burst QOS\n\nCOMPUTE_STORAGE_BRUST_QOS or perhaps `COMPUTE_VOLUME_BRUST_QOS` is better since this is specific to cidner volumes rhater then nova provision storage.\n\nhttps://github.com/openstack/os-traits/blob/master/os_traits/compute/storage.py\nhttps://github.com/openstack/os-traits/blob/master/os_traits/compute/volume.py\n\neffectively we should change how we schedule to ensure we only select hosts that suprot this if the instance that we are schduiling has a volume that request this functionatlity.\n\nfrom a desgin point of view its never valid to request a feature an the instnace to proceed to the active state if the feature cannot be provided.\n\nso it would not be ok to live migrate to a compute host that does not support this or to allow booting a new instance on a non-upgraded compute node.\n\nso we need to either have a min_compute version check or we need to enforce this with traits. \n\nboth approaches are valid, each have slightly diffent implications regarding upgrade and runtime performace.\n\na min compute node version check is the light weight approach since the api check can be remvoed once we exceed a slurp bondary of n-2 support.\nthat is proably what we shoudl do in this case but it will mean this feature cannot be used until all nodes are upgraded to the relevent release.","commit_id":"a5adc75200fe2c57b77197ab50239cdd0e98dff5"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"198742c0ffa0d1693f13e499042a863ce26c7438","unresolved":true,"context_lines":[{"line_number":33,"context_line":"* Set maximum duration for IOPS and bandwidth burst limits on"},{"line_number":34,"context_line":"  instance-attached disks"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Cinder-attached volumes can have additional QoS specs assigned. The Nova"}],"source_content_type":"text/x-rst","patch_set":7,"id":"eca7f7c7_ba05a1ed","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":15},"in_reply_to":"0ec800f3_4a5e5f53","updated":"2025-02-04 21:06:54.000000000","message":"The burst length parameters were introduced to libvirt in 2.4.0, which was released in 2016.","commit_id":"a5adc75200fe2c57b77197ab50239cdd0e98dff5"},{"author":{"_account_id":37356,"name":"Mengyang Zhang","display_name":"Mengyang","email":"mzhang741@bloomberg.net","username":"mzhang741"},"change_message_id":"b93eba12b102756b69fd1a7581b86b82d2c961ef","unresolved":true,"context_lines":[{"line_number":33,"context_line":"* Set maximum duration for IOPS and bandwidth burst limits on"},{"line_number":34,"context_line":"  instance-attached disks"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Cinder-attached volumes can have additional QoS specs assigned. The Nova"}],"source_content_type":"text/x-rst","patch_set":7,"id":"0575f3cb_11b69fb2","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":15},"in_reply_to":"eca7f7c7_ba05a1ed","updated":"2025-02-19 14:34:26.000000000","message":"I may need some help with implementing this min version check. I have two ideas to do this:\n\n1. check if there\u0027s any host in the fleet that has an older version of openstack. if so, skip my changes that add burst length parameters into the iotune session of the xml. But is there a way in nova to check the version across the entire fleet? \n2. only modify the migration code where we check if the dest host is on an older version, if so we fails the migration with an error message. Question: is pre_live_migration the place to peform this check?\n\nI tried approach 1 with the use of service.get_minimum_version function to help me get the min version across the host, but it seems that nova-compute doesn\u0027t have access to db. Does this mean approach 1 is not feasible?","commit_id":"a5adc75200fe2c57b77197ab50239cdd0e98dff5"}],"specs/2025.2/approved/add-burst-length-support-to-cinder-qos.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eac4a3c030bbb7a3ee9ac197b589b95cb051edd2","unresolved":true,"context_lines":[{"line_number":33,"context_line":"* Set maximum duration for IOPS and bandwidth burst limits on"},{"line_number":34,"context_line":"  instance-attached disks"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Cinder-attached volumes can have additional QoS specs assigned. The Nova"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8bf2fb92_6015df54","line":36,"updated":"2025-05-15 19:31:00.000000000","message":"Note the spec should be written such that someone who is not an expert would not implement it if you did not\n\n\nHere you should call out that this will be implemented din the libvirt driver but there are some upgrade issue you will need to adress.","commit_id":"64e09e04f3a0ffd3b6df558fc8f106cc151516c4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eac4a3c030bbb7a3ee9ac197b589b95cb051edd2","unresolved":true,"context_lines":[{"line_number":167,"context_line":"Upgrade impact"},{"line_number":168,"context_line":"--------------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"None"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":8,"id":"37993613_4c35abf3","line":170,"updated":"2025-05-15 19:31:00.000000000","message":"So this is the main issue with the spec as it stands\n\nIf a server creates a request with a volume with frontend qos that uses this functionality, it must be scheduled to a node that support frontend qos.\n\n\nto do this we will need to add a compute capability trait\n\nsomething like \n\nCOMPUTE_STROAGE_QOS_BURST\n\nhttps://github.com/openstack/os-traits/blob/master/os_traits/compute/storage.py#L15\n\nthe libvirt driver will need to report that triat if it supprot it.\n\n\nwe will also need to enhacne nova to automaticlly translate a request that refence a cinder volume with brust qos into a requried trait request for that new trait.\n\nthere are 2 ways to do that in nova today\n\na placement prefilter \n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/request_filter.py\n\nor you and do it when generating the reosuce requets form teh request spec in teh scduler utils\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L269\n\nwe prefer extending ResouceRequest.from_request_spec\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L80\n\nif the translation should not be configurable.\n\nif we do this that will ensure that any hyprervior that supprot burst can report that and tha tall move operation and the initial instance create are garuenteed to land on a host that supprot this functionality.\n\nfinally for volume attach and volume retry you should also check that the current host supports this feature in a simlar way.\n\n\nfor attach volume you would add a check here\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L5202\n\nyou would normally do that via a decorator like this\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L267-L283\n\nbut there are many other examples\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L341-L417\n\neffectivly you need to ensure that when we attach a volume with a qos policy that the host the vm is on can supprot it an reject it if not.\n\na more relevent exampel that does not use a decorate but does check the traits on a host is \n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L4393-L4442\n\nthere we only alow same host resize if it has the trait or the confgi option is defiend.\n\nthe last check that we need is on volume retry.\n\nnova need to reject a request to do a voluem retyp form cidner if the host the instance is on cant suprpot the volume retryp.\n\n\nin nova this is called swap volume\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L5353-L5428\n\nwhile none of these api check shoudl require an microversion IMO the may be worth calling out in the rest api secont.\n\nthe scheudler and api change shoudl eb captured in both the proposed changes section and the work items.","commit_id":"64e09e04f3a0ffd3b6df558fc8f106cc151516c4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eac4a3c030bbb7a3ee9ac197b589b95cb051edd2","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"* Unit tests"},{"line_number":208,"context_line":"* Existing tests will ensure that the XML is formatted correctly"},{"line_number":209,"context_line":"  assuming the required versions of libvirt and QEMU are present."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Documentation Impact"},{"line_number":212,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"f47da1e1_cced3d27","line":209,"updated":"2025-05-15 19:31:00.000000000","message":"so if we are addign this supprot i would hope that 1 we can have either funtional tst coverage or a new temepst test that will be enabled in one of our existing jobs\n\nunit test coverage is not really enouch.\n\nsince this will be testing frontend qos  i belive that could be run in any of our libvirt jobs that have cinder enabeld as it shoud work both for iscsi(lvm) or rbd(ceph) cinder volumes since the qos is implemented at the qemu block level.","commit_id":"64e09e04f3a0ffd3b6df558fc8f106cc151516c4"}]}
