)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3b8215bd_980c99e6","updated":"2024-12-09 18:27:30.000000000","message":"+2 because i believe the general direction and over all content is correct.\n\ni left some inline comment regarding so details fo the testing that would be nice to include if you re-spin this but i think they are implicitly if not explicitly covered by what you have written.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ef3727be_0a503fef","updated":"2024-12-10 14:04:53.000000000","message":"couple of comments inline.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"455030b0_b3b5eb7c","updated":"2024-12-10 19:52:29.000000000","message":"Thanks @sean mooney and @gibi for your reviews.","commit_id":"c3b764bea6e4060ae22f4d979ca2d3f7b73b08e3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca2738479859956903f463f8ad76d8f8aa568ca8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"235c53b8_6a05f0ea","updated":"2024-12-13 10:15:11.000000000","message":"I still have question","commit_id":"f55f6012eb34ae7750666a5c4b551c5818f51eff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"df14f8a0_df059f6f","updated":"2024-12-11 14:48:35.000000000","message":"I\u0027m OK with this spec, maybe you could provide a follow-up patch for removing the policy in it.","commit_id":"f55f6012eb34ae7750666a5c4b551c5818f51eff"}],"specs/2025.1/approved/show-scheduler-hints-in-server-details.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":54,"context_line":"information about scheduler hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both novaclient and openstack client will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4933246f_6aad3635","line":57,"updated":"2024-11-26 04:44:24.000000000","message":"nova client is deprecated and its cli is frozen\n\nonly the openstack clinet and openstack sdk should be updated.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"information about scheduler hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both novaclient and openstack client will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a1467fbb_acd59701","line":57,"in_reply_to":"4933246f_6aad3635","updated":"2024-11-26 19:07:00.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"      {"},{"line_number":91,"context_line":"          \"server\": {"},{"line_number":92,"context_line":"              \"OS-SCH-HNT:scheduler_hints\": {"},{"line_number":93,"context_line":"                  \"group\": \"af16eb84-88fe-4cc4-b558-1752cbe8cb15\","},{"line_number":94,"context_line":"                  \"same_host\": \"6605bff6-86b9-4824-b35b-a6b3c4c0e717\""},{"line_number":95,"context_line":"              },"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b892724b_6e5cc8bc","line":92,"updated":"2024-11-26 04:44:24.000000000","message":"we nolonger add an OS- prefix to fileds\n\nthis dates form when nova had schduler extntions.\n\nyou should remove “OS-SCH-HNT:” and the field should just be `scheduler_hints`","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"      {"},{"line_number":91,"context_line":"          \"server\": {"},{"line_number":92,"context_line":"              \"OS-SCH-HNT:scheduler_hints\": {"},{"line_number":93,"context_line":"                  \"group\": \"af16eb84-88fe-4cc4-b558-1752cbe8cb15\","},{"line_number":94,"context_line":"                  \"same_host\": \"6605bff6-86b9-4824-b35b-a6b3c4c0e717\""},{"line_number":95,"context_line":"              },"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8d2a2654_55db2ea6","line":92,"in_reply_to":"b892724b_6e5cc8bc","updated":"2024-11-26 19:07:00.000000000","message":"Done, thanks for explaining.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":110,"context_line":"      {"},{"line_number":111,"context_line":"          \"servers\":["},{"line_number":112,"context_line":"              {"},{"line_number":113,"context_line":"                  \"OS-SCH-HNT:scheduler_hints\":{"},{"line_number":114,"context_line":"                    \"group\":\"dc0ca1ef-7e0b-4cb5-89aa-b2069f8b8a8a\","},{"line_number":115,"context_line":"                    \"different_host\":\"6dffb036-d020-4630-b467-334400a050ca\""},{"line_number":116,"context_line":"                  },"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fb3b0c8_eeed88d6","line":113,"updated":"2024-11-26 04:44:24.000000000","message":"same as above","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"      {"},{"line_number":111,"context_line":"          \"servers\":["},{"line_number":112,"context_line":"              {"},{"line_number":113,"context_line":"                  \"OS-SCH-HNT:scheduler_hints\":{"},{"line_number":114,"context_line":"                    \"group\":\"dc0ca1ef-7e0b-4cb5-89aa-b2069f8b8a8a\","},{"line_number":115,"context_line":"                    \"different_host\":\"6dffb036-d020-4630-b467-334400a050ca\""},{"line_number":116,"context_line":"                  },"}],"source_content_type":"text/x-rst","patch_set":1,"id":"cd346063_39c938dd","line":113,"in_reply_to":"5fb3b0c8_eeed88d6","updated":"2024-11-26 19:07:00.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``ADMIN`` since the use cases"},{"line_number":123,"context_line":"listed in this document cover admin operations only. For users without the"},{"line_number":124,"context_line":"required permission, the field will be omitted from responses to avoid"},{"line_number":125,"context_line":"ambiguous interpretation of the value ``None``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"947f557b_5f6ff635","line":122,"updated":"2024-11-26 04:44:24.000000000","message":"this is incorrect. this is only setable by the normal user that created the instance so it should be reable by a nomal user\n\nsepeically it should be reable with the project:reader persona.\n\nyou and remove the rest of this paragraph as this should always be shown if you have access to to the server at all.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9b5a8226a9a5899239413f898d415b539bff0a26","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``ADMIN`` since the use cases"},{"line_number":123,"context_line":"listed in this document cover admin operations only. For users without the"},{"line_number":124,"context_line":"required permission, the field will be omitted from responses to avoid"},{"line_number":125,"context_line":"ambiguous interpretation of the value ``None``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4a72b605_aec85d00","line":122,"in_reply_to":"0f833653_19ddbdd3","updated":"2024-12-09 18:07:40.000000000","message":"hi sean, I updated the spec to consider project reader as default policy, as suggested, thanks","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":false,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``ADMIN`` since the use cases"},{"line_number":123,"context_line":"listed in this document cover admin operations only. For users without the"},{"line_number":124,"context_line":"required permission, the field will be omitted from responses to avoid"},{"line_number":125,"context_line":"ambiguous interpretation of the value ``None``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"12e11ecf_3e42dd91","line":122,"in_reply_to":"4a72b605_aec85d00","updated":"2024-12-09 18:27:30.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``ADMIN`` since the use cases"},{"line_number":123,"context_line":"listed in this document cover admin operations only. For users without the"},{"line_number":124,"context_line":"required permission, the field will be omitted from responses to avoid"},{"line_number":125,"context_line":"ambiguous interpretation of the value ``None``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"0f833653_19ddbdd3","line":122,"in_reply_to":"947f557b_5f6ff635","updated":"2024-11-26 19:07:00.000000000","message":"Right, make sense to expose to normal users since they originally create the instance with this information. I still didn\u0027t update this, in order to get more feedback from other reviewers. But I agree with your point.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":129,"context_line":"  This proposal does not propose any new validation schema for scheduler"},{"line_number":130,"context_line":"  hints. It will benefit from the existing per hint schema available in"},{"line_number":131,"context_line":"  ``Create Server`` API `[2]`_."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Security impact"},{"line_number":135,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"946339b1_8d4c964c","line":132,"updated":"2024-11-26 04:44:24.000000000","message":"this note is kind of outdated.\n\nwe are now adding openapi schemas.\n\nwe will need to validate this with the same constraits as when its created\n\nthats effectivly a dict of string to string but we will need to update the responce schema for this filed.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  This proposal does not propose any new validation schema for scheduler"},{"line_number":130,"context_line":"  hints. It will benefit from the existing per hint schema available in"},{"line_number":131,"context_line":"  ``Create Server`` API `[2]`_."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Security impact"},{"line_number":135,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a216a07_0b5747d2","line":132,"in_reply_to":"946339b1_8d4c964c","updated":"2024-11-26 19:07:00.000000000","message":"Removed in PS2. There is also a mention about the request json schema in line 52, so here was duplicating things.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":147,"context_line":"A new field with scheduler hints information will be added in the output of"},{"line_number":148,"context_line":"the commands ``Show Server Details`` and ``List Servers Detailed``, in both"},{"line_number":149,"context_line":"novaclient and openstack client."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Performance Impact"},{"line_number":152,"context_line":"------------------"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"87ffcf62_eaaca775","line":150,"updated":"2024-11-26 04:44:24.000000000","message":"againg the nova clinet is frozen so only OSC and the openstack sdk should be updated.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":147,"context_line":"A new field with scheduler hints information will be added in the output of"},{"line_number":148,"context_line":"the commands ``Show Server Details`` and ``List Servers Detailed``, in both"},{"line_number":149,"context_line":"novaclient and openstack client."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Performance Impact"},{"line_number":152,"context_line":"------------------"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d69cb3e6_3afbce29","line":150,"in_reply_to":"87ffcf62_eaaca775","updated":"2024-11-26 19:07:00.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":193,"context_line":"* Update API documentation"},{"line_number":194,"context_line":"* Update nova-client and openstack client to support the new microversion and"},{"line_number":195,"context_line":"  to show the new field"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Dependencies"},{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2eed3704_682fc569","line":196,"updated":"2024-11-26 04:44:24.000000000","message":"again this should say openstack client and openstack sdk.","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":193,"context_line":"* Update API documentation"},{"line_number":194,"context_line":"* Update nova-client and openstack client to support the new microversion and"},{"line_number":195,"context_line":"  to show the new field"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Dependencies"},{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"e0104ba4_5164c13b","line":196,"in_reply_to":"2eed3704_682fc569","updated":"2024-11-26 19:07:00.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b9e8ef29efb447a6232523c68ec00c4e14b89201","unresolved":true,"context_lines":[{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"* API Reference"},{"line_number":213,"context_line":"* nova-client and openstack client documentation"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"References"},{"line_number":216,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"48ad19b7_4be59ce2","line":213,"updated":"2024-11-26 04:44:24.000000000","message":"and here too","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3b5cb1de3e6b449dbb35d72afb0046d3a1d8b5a4","unresolved":false,"context_lines":[{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"* API Reference"},{"line_number":213,"context_line":"* nova-client and openstack client documentation"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"References"},{"line_number":216,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"314ae20d_739aa9bd","line":213,"in_reply_to":"48ad19b7_4be59ce2","updated":"2024-11-26 19:07:00.000000000","message":"Done","commit_id":"1f0918ac861f7e49ae2c57137dd34ed60e8f7994"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- As a cloud admin I want to check more informations associated to all running"},{"line_number":31,"context_line":"  servers, including their scheduler hints, in order to build an migration"},{"line_number":32,"context_line":"  plan from a host."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- An optimization service like Watcher `[1]`_ would benefit from additional"},{"line_number":35,"context_line":"  placement constraints, like scheduler hints, from all instances of a host"}],"source_content_type":"text/x-rst","patch_set":3,"id":"57bff243_04c9b1ce","line":32,"updated":"2024-12-09 18:27:30.000000000","message":"so to me this is similar to the recent change to expose the pinned az in the server show for very similar reasons.\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/2024.1/implemented/list-requested-az.html","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  in order to build a more concrete action plan to optimize the workload"},{"line_number":37,"context_line":"  balance across the cluster. Without this information, Watcher could propose"},{"line_number":38,"context_line":"  a solution that contains lots of server migration actions that violate some"},{"line_number":39,"context_line":"  constraints."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cdcece7d_704acf77","line":39,"updated":"2024-12-09 18:27:30.000000000","message":"a concrete example is the same/differnt host scheduler hints.\nat present watchers cannot account for that when deciding where to place vms.\n\nthis is the primary uscase we are interested in this today but this gap has also been raised in the past both for debuging and for other usecase like runing openshift on openstack.\n\nthat usecause consomes nova instnace via the Kubernetes machine? cloud? provider driver, they translat esome metadata on the instnce like the AZ into lables on the worker nodes, they could use some of the hint isn a simialr way for affinity/antiaffintiy lables. with that said since it typiclay create the vm it can work without this but there may be usecases outside of openstack Watcher where this is useful.\n\n\nfor exmaple today tempest can create 2 vms with the same/differnt host schduler hint and assert the host_id is the same/diffent but it cant actully assert that hit is persisted to the db so that it will take effect for future move opertions.\nit can infer that by trying tom move them but being able to directly check would be simpler.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":37,"context_line":"  balance across the cluster. Without this information, Watcher could propose"},{"line_number":38,"context_line":"  a solution that contains lots of server migration actions that violate some"},{"line_number":39,"context_line":"  constraints."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"07432ddd_2727714a","line":40,"updated":"2024-12-10 14:04:53.000000000","message":"yeah for me the most basic thing is that if I create a server with a set of configuration (e.g. image, flavor, nic, scheduler hints) then I would like to get that information back when I read the server from the API.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  balance across the cluster. Without this information, Watcher could propose"},{"line_number":38,"context_line":"  a solution that contains lots of server migration actions that violate some"},{"line_number":39,"context_line":"  constraints."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1657ca09_90d8d797","line":40,"in_reply_to":"07432ddd_2727714a","updated":"2024-12-10 19:52:29.000000000","message":"Also added the basic use case, since now we plan to move forward with project_reader policy for this field.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":51,"context_line":"containing all persisted scheduler hints associated with the corresponding"},{"line_number":52,"context_line":"server. The value format will follow the same json schema defined in server"},{"line_number":53,"context_line":"creation request `[2]`_. If a server has no information about scheduler"},{"line_number":54,"context_line":"hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both openstack client and openstack sdk will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."}],"source_content_type":"text/x-rst","patch_set":3,"id":"6bc65c1a_c4e358e9","line":54,"updated":"2024-12-10 14:04:53.000000000","message":"will there be a separate None and {} value in the response?","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3c1079740a0885fca1151456d27e8936e764b39","unresolved":true,"context_lines":[{"line_number":51,"context_line":"containing all persisted scheduler hints associated with the corresponding"},{"line_number":52,"context_line":"server. The value format will follow the same json schema defined in server"},{"line_number":53,"context_line":"creation request `[2]`_. If a server has no information about scheduler"},{"line_number":54,"context_line":"hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both openstack client and openstack sdk will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."}],"source_content_type":"text/x-rst","patch_set":3,"id":"d8170d7a_be099a15","line":54,"in_reply_to":"3f23e7d7_37cdcf1f","updated":"2024-12-11 14:40:26.000000000","message":"so it would be `null` or `{}` in the resopnce\n\nit think either is fine. so im ok with the current propsal to use `{}`","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":true,"context_lines":[{"line_number":51,"context_line":"containing all persisted scheduler hints associated with the corresponding"},{"line_number":52,"context_line":"server. The value format will follow the same json schema defined in server"},{"line_number":53,"context_line":"creation request `[2]`_. If a server has no information about scheduler"},{"line_number":54,"context_line":"hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both openstack client and openstack sdk will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."}],"source_content_type":"text/x-rst","patch_set":3,"id":"92169058_fd91927d","line":54,"in_reply_to":"6bc65c1a_c4e358e9","updated":"2024-12-10 19:52:29.000000000","message":"hum, not needed I think. Maybe a empty dict would be better.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"bf26d71d37a88f1f809ed22dbc7f48dac4ad389e","unresolved":true,"context_lines":[{"line_number":51,"context_line":"containing all persisted scheduler hints associated with the corresponding"},{"line_number":52,"context_line":"server. The value format will follow the same json schema defined in server"},{"line_number":53,"context_line":"creation request `[2]`_. If a server has no information about scheduler"},{"line_number":54,"context_line":"hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both openstack client and openstack sdk will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f23e7d7_37cdcf1f","line":54,"in_reply_to":"92169058_fd91927d","updated":"2024-12-11 13:30:01.000000000","message":"Updated to {}, which seems aligned with other implemented parameters, e.g.: server_groups","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":false,"context_lines":[{"line_number":51,"context_line":"containing all persisted scheduler hints associated with the corresponding"},{"line_number":52,"context_line":"server. The value format will follow the same json schema defined in server"},{"line_number":53,"context_line":"creation request `[2]`_. If a server has no information about scheduler"},{"line_number":54,"context_line":"hints, the value will be set to ``None``."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Both openstack client and openstack sdk will be updated to support the new API"},{"line_number":57,"context_line":"and display the new field added."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1527767d_6b7eea13","line":54,"in_reply_to":"d8170d7a_be099a15","updated":"2024-12-11 14:48:35.000000000","message":"Acknowledged","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                  \"group\": \"af16eb84-88fe-4cc4-b558-1752cbe8cb15\","},{"line_number":94,"context_line":"                  \"same_host\": \"6605bff6-86b9-4824-b35b-a6b3c4c0e717\""},{"line_number":95,"context_line":"              },"},{"line_number":96,"context_line":"              \"other\": \"stuff\""},{"line_number":97,"context_line":"          }"},{"line_number":98,"context_line":"      }"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"baf87dc7_5294a9c9","line":96,"updated":"2024-12-10 14:04:53.000000000","message":"...","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                  \"group\": \"af16eb84-88fe-4cc4-b558-1752cbe8cb15\","},{"line_number":94,"context_line":"                  \"same_host\": \"6605bff6-86b9-4824-b35b-a6b3c4c0e717\""},{"line_number":95,"context_line":"              },"},{"line_number":96,"context_line":"              \"other\": \"stuff\""},{"line_number":97,"context_line":"          }"},{"line_number":98,"context_line":"      }"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"8b1442f3_4e4657e2","line":96,"in_reply_to":"baf87dc7_5294a9c9","updated":"2024-12-10 19:52:29.000000000","message":"Done","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                    \"group\":\"dc0ca1ef-7e0b-4cb5-89aa-b2069f8b8a8a\","},{"line_number":115,"context_line":"                    \"different_host\":\"6dffb036-d020-4630-b467-334400a050ca\""},{"line_number":116,"context_line":"                  },"},{"line_number":117,"context_line":"                  \"other\": \"stuff\""},{"line_number":118,"context_line":"              }"},{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfcedaff_c4bc69c5","line":117,"updated":"2024-12-10 14:04:53.000000000","message":"just use ... to avoid misunderstanding of any additional new fields proposed called \"other\" :)","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    \"group\":\"dc0ca1ef-7e0b-4cb5-89aa-b2069f8b8a8a\","},{"line_number":115,"context_line":"                    \"different_host\":\"6dffb036-d020-4630-b467-334400a050ca\""},{"line_number":116,"context_line":"                  },"},{"line_number":117,"context_line":"                  \"other\": \"stuff\""},{"line_number":118,"context_line":"              }"},{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cee854ea_ca8b64a9","line":117,"in_reply_to":"bfcedaff_c4bc69c5","updated":"2024-12-10 19:52:29.000000000","message":"Done","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d7a59a9c_e3308f2e","line":122,"updated":"2024-12-10 14:04:53.000000000","message":"OK so it means that the new field will be visible to the normal user not just for admin. It is fine by me.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3c1079740a0885fca1151456d27e8936e764b39","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c0286932_a1258146","line":122,"in_reply_to":"0cf61cbd_0b024a8b","updated":"2024-12-11 14:40:26.000000000","message":"ya so the old spec made it admin only but since its set by the end user that did not make sense to me so i asked for this to be made avaiable to the proejct reader\npersona. so project_reader_or_admin makes sense to me.\n\ni actually don\u0027t think we need a new policy role for this by the way\nthis will use the same policy role as the server show/detail list.\n\ni dont know if we explifly want to capture that in the spec but its impleed by \n\n\"to match with the existing ``/servers/detail`` policy.\"","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"53e1c61c_7bb20b54","line":122,"in_reply_to":"c0286932_a1258146","updated":"2024-12-11 14:48:35.000000000","message":"Yeah, we don\u0027t need to say the right policy for this since it would be the same. That said, we can fix this spec by a follow-up patch.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":true,"context_lines":[{"line_number":119,"context_line":"          ]"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0cf61cbd_0b024a8b","line":122,"in_reply_to":"d7a59a9c_e3308f2e","updated":"2024-12-10 19:52:29.000000000","message":"Acknowledged","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"31c89078_f1fa2c66","line":123,"updated":"2024-12-09 18:27:30.000000000","message":"+1\n\nnote that this will also require the open api resonce schemas to be updated with this new value.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"82a679fc_dc998a14","line":123,"in_reply_to":"31c89078_f1fa2c66","updated":"2024-12-10 14:04:53.000000000","message":"btw what will be that schema? Is it just a dict of string key value pairs? Or is there any deeper structure in some hints?","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3c1079740a0885fca1151456d27e8936e764b39","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"55d25c42_f8a2b120","line":123,"in_reply_to":"3554b663_9a441ec9","updated":"2024-12-11 14:40:26.000000000","message":"so ya it will just be a dict or string to string or similar. \nas doug says it will just be whatever the current server create schema allows.\n\ni woudl assume we have a max lenght limit ectra on the keys or values that we can enforce but the enforcement on the create and show should be the same.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa469b3799e1c22eba2ff7544918a72e9e6c3332","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ea49a34f_ab9bfdc3","line":123,"in_reply_to":"51468b9b_38881949","updated":"2025-01-06 10:38:30.000000000","message":"i think we can either update this spec with more detail or just defer this to the implemation my general point was the subsection fo rhte create schema \n\nhttps://github.com/openstack/nova/blob/6568bc973ce24e59bc47b3eddf0cea8e6a30c012/nova/api/openstack/compute/schemas/servers.py#L95-L149\n\nthat was used to create teh server can more or less be resued  to validate the responce subsection in the server show.\n\nwe dont want to be more strict the the create schema althoguh we could be more lax since its just showign data that was allowed in the create.\n\nthere is one edge case im intentionally ignoring.\n\nif we add a new schduerl hint in 2.200 and we request a server show with 2.100\ni dont think the api shoudl filter out the new schduler hit i.e. back level it to 2.100 in the api.\n\nwe woudl presumabley do that in the instance object if needed but \nhave  \u0027additionalProperties\u0027: True i nthe create scheme because operator can wirte there own filter that use there own hint we dont need to backlevel the responce in show since any standard hint for 2.200 would just be consider addtioal properties.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":false,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e007d66d_e8caa83f","line":123,"in_reply_to":"55d25c42_f8a2b120","updated":"2024-12-11 14:48:35.000000000","message":"Acknowledged","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3554b663_9a441ec9","line":123,"in_reply_to":"82a679fc_dc998a14","updated":"2024-12-10 19:52:29.000000000","message":"It should be the same as the server creation request, which is a dict, where values can be a string or a array of strings. I mention it in `Code changes` section.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"43456e6627186208cdf963c9d48185f248e1712e","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"a3418c9d_974d2578","line":123,"in_reply_to":"84afab15_8740cf3a","updated":"2024-12-14 02:20:13.000000000","message":"we have similar lax schemas for flavor extra specs and some other cases so it think its fine. we could see what gmann or stephen think but i think its ok.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e0e91f505063ae871c47b655a7aaff3fa1cf1c60","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"51468b9b_38881949","line":123,"in_reply_to":"a3418c9d_974d2578","updated":"2024-12-16 11:52:39.000000000","message":"We don\u0027t set `additionalProperties` to `False`. Rather, we use `patternProperties` since that lets us place restrictions on both the keys and values. I suspect for the former, we don\u0027t want to allow all characters (including e.g. non-printable unicode characters), right? And for the latter we probably don\u0027t want to allow non-string values? I can\u0027t imagine an integer or boolean value makes much sense.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f918426b90fd2e1967cb61404b91a5df7d310bbc","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f21f988_15cce8bb","line":123,"in_reply_to":"b3c4b4b8_d96d8dbb","updated":"2025-01-14 19:37:44.000000000","message":"Thanks for all the inputs here. While going through the code I faced an issue with the rebuild action, which builds a response based on GET servers output, and includes response schema validation. Something that we can discuss on the change itself: https://review.opendev.org/c/openstack/nova/+/938604/3/nova/api/openstack/compute/servers.py#1192","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca2738479859956903f463f8ad76d8f8aa568ca8","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"84afab15_8740cf3a","line":123,"in_reply_to":"e007d66d_e8caa83f","updated":"2024-12-13 10:15:11.000000000","message":"https://github.com/openstack/nova/blob/6568bc973ce24e59bc47b3eddf0cea8e6a30c012/nova/api/openstack/compute/schemas/servers.py#L95-L149\n\nThis is the request schema. This is pretty heavily defines what is accepted by in tree filters. So it is not just a generic dict of strings but a lot more nuanced schema.\n\nAlso it gives a way out for the out of tree filters via using additionalProperty: true. This means that the response can contain an keys with any values. Is it acceptable to have such a non well defined response schema in our API?","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8242b482418b84d6d96cbab51da48b3427d3eae8","unresolved":true,"context_lines":[{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"The default policy of the new field will be ``project_reader_or_admin``"},{"line_number":123,"context_line":"to match with the existing ``/servers/detail`` policy."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Security impact"},{"line_number":126,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b3c4b4b8_d96d8dbb","line":123,"in_reply_to":"ea49a34f_ab9bfdc3","updated":"2025-01-07 11:49:40.000000000","message":"@smooney@redhat.com:\n\u003e i woudl assume we have a max lenght limit ectra on the keys or values that we can enforce but the enforcement on the create and show should be the same.\n\nAs far as I see there is now such limit in the hint\u0027s request schema today\n\n@stephenfin@redhat.com:\n\u003e I suspect for the former, we don\u0027t want to allow all characters (including e.g. non-printable unicode characters), right? And for the latter we probably don\u0027t want to allow non-string values?\n\nAs far as I see there is no such limit on the hint\u0027s request schema today either\n\n--\n\nIt seems we have a bunch on expectation about the request schema that is not fulfilled today. This spec does not change the request schema, just re-uses the request schema as the response schema.\n\n**Do we want to fix the request schema first before we reuse it as the response schema?**\n\nFixing the request schema probably a backward incompatible change as it removes previously accepted values. So that requires a new microversion. Restricting a response schema later is backward compatible(if the client handled all the existing keys then it will automatically handle a subset of them too).\n\n@smooney@redhat.com: About the back-leveling case. I think you are up to something interesting.\nIn the edge case where a VM is created with an old microversion allowing certain hint keys that are not allowed in a later microversion, but read in the new microversion, the code that returns the hint in the response needs to do something as it cannot directly return the DB content as that will not be valid in the new more restrictive response schema. Even additionalProperty: true will not save us here as it allows additional keys, but if a key is defined in the schema then the value of the key should be valid by the schema. So any value restriction later creates the need of back-leveling even with additionalProperty: true as far as I see.\n\n--\n\nWith all this complications and the assumed urgency of this change: **Could we just not reuse the request schema as the response schema?** I.e. keep the format of the hints field undefined to allow us to delay the schema problem to the next PTG.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":true,"context_lines":[{"line_number":181,"context_line":"* Add a new field to the server details response in a new microversion,"},{"line_number":182,"context_line":"  and populated it with the persisted scheduler hints"},{"line_number":183,"context_line":"* Extend existing unit and functional tests"},{"line_number":184,"context_line":"* Update API documentation"},{"line_number":185,"context_line":"* Update openstack client and openstack sdk to support the new microversion"},{"line_number":186,"context_line":"  and to show the new field"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"8362f155_16960ac8","line":184,"updated":"2024-12-09 18:27:30.000000000","message":"the new api micorversion will also require that you add a new API sample for both the API ref and the API sample tests.\n\nI consider this to be implicitly included in \n```\n* Extend existing unit and functional tests\n* Update API documentation\n```\n\njust calling it out explicitly as well.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[{"line_number":181,"context_line":"* Add a new field to the server details response in a new microversion,"},{"line_number":182,"context_line":"  and populated it with the persisted scheduler hints"},{"line_number":183,"context_line":"* Extend existing unit and functional tests"},{"line_number":184,"context_line":"* Update API documentation"},{"line_number":185,"context_line":"* Update openstack client and openstack sdk to support the new microversion"},{"line_number":186,"context_line":"  and to show the new field"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a346d8b_b12f793b","line":184,"in_reply_to":"8362f155_16960ac8","updated":"2024-12-10 19:52:29.000000000","message":"Let me kwown if is ok now. Thanks","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":true,"context_lines":[{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Existing unit and funcional tests can be extended to validate the new field."},{"line_number":197,"context_line":"If needed, new tests can be added to properly cover other scenarios."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"efb9c819_2a283ee4","line":197,"updated":"2024-12-09 18:27:30.000000000","message":"part of the \"Existing unit and functional tests\" is the api sample tests which will need to be extended.\n\nthey are technically a different tox target just an fyi.\n\nbut \"morally\" they can be considered unit/functional tests so I\u0027m ok with the current implicit wording.\n\nI dont think this is is hard blocker but it would be nice to also add a new tempest test that will create a server with a scheduler hint and then assert its present when using the new microversion and not present when using the old one.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":true,"context_lines":[{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Existing unit and funcional tests can be extended to validate the new field."},{"line_number":197,"context_line":"If needed, new tests can be added to properly cover other scenarios."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9dffa807_e635045e","line":197,"in_reply_to":"1e60cd39_94d30a95","updated":"2024-12-10 19:52:29.000000000","message":"Ack, I added a bit more details about tempest and API sample tests.","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":false,"context_lines":[{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Existing unit and funcional tests can be extended to validate the new field."},{"line_number":197,"context_line":"If needed, new tests can be added to properly cover other scenarios."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8a046906_c5a697ba","line":197,"in_reply_to":"9dffa807_e635045e","updated":"2024-12-11 14:48:35.000000000","message":"Done","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c48da86bd0fce32f74c13dde6bbdf63a353d6bec","unresolved":true,"context_lines":[{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Existing unit and funcional tests can be extended to validate the new field."},{"line_number":197,"context_line":"If needed, new tests can be added to properly cover other scenarios."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1e60cd39_94d30a95","line":197,"in_reply_to":"efb9c819_2a283ee4","updated":"2024-12-10 14:04:53.000000000","message":"yeah it would be nice to at least extend an existing scheduler hint test to assert the GET server response. E.g. https://github.com/openstack/tempest/blob/7f788b96a9d2895554b35942bf036941d3d9ebc8/tempest/api/compute/admin/test_servers.py#L218-L225","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d216612f58fff650b98bbb4f677eb913f8599175","unresolved":true,"context_lines":[{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"* API Reference"},{"line_number":204,"context_line":"* openstack client and openstack sdk documentation"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"References"},{"line_number":207,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7bc5959f_57f349d2","line":204,"updated":"2024-12-09 18:27:30.000000000","message":"nit: the api microveion history doc will need to be updated too","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"60283e45471b833099e84c1237242f42e44f4af4","unresolved":false,"context_lines":[{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"* API Reference"},{"line_number":204,"context_line":"* openstack client and openstack sdk documentation"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"References"},{"line_number":207,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c3f7cb90_f7e4e14e","line":204,"in_reply_to":"7bc5959f_57f349d2","updated":"2024-12-10 19:52:29.000000000","message":"Done","commit_id":"403819d4c1b0d0ae9ecb3ca8e69579240feffa99"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dc1190ad30b0024578a8aaa50c7fe0b5d3c37e5e","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Code changes"},{"line_number":50,"context_line":"------------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Extend the API response for ``GET /servers/{server_id}`` and the"},{"line_number":53,"context_line":"``GET /servers/detail`` to include information about the scheduler hints."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add a new entry in the API response with the key ``scheduler_hints``,"},{"line_number":56,"context_line":"containing all persisted scheduler hints associated with the corresponding"}],"source_content_type":"text/x-rst","patch_set":5,"id":"730c97da_b7423fd7","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":73},"updated":"2025-02-26 19:57:36.000000000","message":"I missed to review this spec but while reviewing implementation[1], I found we are not mentioning about update server API change. And spec miss update and rebuild server APIs.\n\nWe need to be more careful or explicit when we change the response of GET server APIs. We need to keep consistent response for GET, GET detail, update, rebuils server APIs (GET /servers/{server_id}, GET /servers/detail, PUT /servers/{server_id}, and POST /servers/{server_id}/action {rebuild}).\n\nWe fixed it in past with microversion 2.74 and we shoould be explicit about all those 4 APIs change in spec. - https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id68\n\nThis change return the sch hint in rebuild as well as PUT server API response (comment in views/servers.py [1]) also\n\n... GET /servers/{server_id}\nand GET /servers/detail, PUT /servers/{server_id}, and POST /servers/{server_id}/action {rebuild} responses.\n\n[1] https://review.opendev.org/c/openstack/nova/+/938604/12/nova/api/openstack/compute/views/servers.py#256","commit_id":"f55f6012eb34ae7750666a5c4b551c5818f51eff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":true,"context_lines":[{"line_number":75,"context_line":"Data model impact"},{"line_number":76,"context_line":"-----------------"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"None."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"REST API impact"},{"line_number":81,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e7ff9a68_f7cc4d77","line":78,"updated":"2024-12-11 14:48:35.000000000","message":"indeed, we already persist the scheduler hints here : https://github.com/openstack/nova/blob/f729a7fb133b1cda467ac6be2a05775769bff3cc/nova/objects/request_spec.py#L100","commit_id":"f55f6012eb34ae7750666a5c4b551c5818f51eff"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d9e75d6bc823bf0d9c53ed7bb254d8510fb5c86","unresolved":true,"context_lines":[{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Add a new field to the server details response in a new microversion,"},{"line_number":189,"context_line":"  and populated it with the persisted scheduler hints."},{"line_number":190,"context_line":"* Extend existing unit and functional tests, including API sample tests."},{"line_number":191,"context_line":"* Extend existing scheduler_hints and show server details tempest tests to"},{"line_number":192,"context_line":"  validate that the new microversion contains ``scheduler_hints`` information."}],"source_content_type":"text/x-rst","patch_set":5,"id":"4e1cd210_1a2572e2","line":189,"range":{"start_line":189,"start_character":28,"end_line":189,"end_character":54},"updated":"2024-12-11 14:48:35.000000000","message":"you don\u0027t say where you can find the persisted scheduler hints (I mean, the RequestSpec) but fine by me.","commit_id":"f55f6012eb34ae7750666a5c4b551c5818f51eff"}]}
