)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"55bb434c7c4521481ce3266927d37f6775e2021e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"00b38b99_cfe85f0a","updated":"2025-05-06 11:36:06.000000000","message":"tks!","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dea610b720e24c709712b82edb0cb445c5abc440","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9ffbf917_0d2a33b6","updated":"2025-06-04 10:04:55.000000000","message":"Thanks for the spec, I just left some open questions related to it.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c6076aa9_6c5b2f8b","updated":"2025-06-03 19:28:40.000000000","message":"Thanks for your review Sean","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8be3a61a_f8fb1cb5","updated":"2025-06-24 11:41:37.000000000","message":"+1 over all please add a littel more detail to the data model section and i would prefer to have this behind a config option for this cycle can you also update the testing section to reflect the change in scope.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"81272944_5e0487ac","updated":"2025-06-25 16:39:06.000000000","message":"some nits inline but i think this si mostly good at this point.\nwhat do others think.","commit_id":"c66c8e07f5121367be93092481f7ca7d78205e05"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d232519c321db0977f003ec56611eb39482d2cb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bf868c88_b1caf853","updated":"2025-06-25 18:28:11.000000000","message":"Tks for reviewing","commit_id":"0eeb1024372ae99b07d8cf4cf1fc70255cf99310"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"a796809d942ed620047c3caa5857e4b6a8c4901c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3250bb01_bfd5e17b","updated":"2025-06-27 08:46:02.000000000","message":"lgtm, just spotted a typo","commit_id":"0eeb1024372ae99b07d8cf4cf1fc70255cf99310"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"bb4f8c54241df92eabed257568488300653fd8cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ecd396ea_f30e1590","updated":"2025-06-27 04:34:14.000000000","message":"overall it looks good.","commit_id":"0eeb1024372ae99b07d8cf4cf1fc70255cf99310"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5231306b578a07360aa2722ed516f7b1a5227428","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"daf61830_e937ecfc","updated":"2025-07-03 18:51:36.000000000","message":"Based on discussions in the watcher\u0027s meeting[1], we are merging this spec since there are no objections and deadline is today. Thanks all.\n\n[1] https://meetings.opendev.org/meetings/watcher/2025/watcher.2025-07-03-12.00.log.html#l-26","commit_id":"1e06f0ae5bc3a9d55e2411e3e5a1da1352b379db"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"12201d6dbcc3bfdd0769b63ad1badef1e63ad3d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3c9e83f8_58ffbf0d","updated":"2025-07-03 03:34:09.000000000","message":"looks good!","commit_id":"1e06f0ae5bc3a9d55e2411e3e5a1da1352b379db"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8ea6a4072bd151483ea7fe14d185b4a749abbc5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e0539368_506d4716","updated":"2025-07-01 12:32:18.000000000","message":"minor nit but im happy with this update","commit_id":"1e06f0ae5bc3a9d55e2411e3e5a1da1352b379db"}],"specs/2025.2/approved/extend-compute-model-attributes.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"86f8c1f31d947ce458107d6846f25cdfebd5096f","unresolved":true,"context_lines":[{"line_number":98,"context_line":"REST API impact"},{"line_number":99,"context_line":"---------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"None."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bc07f2a2_816d97c2","line":101,"updated":"2025-06-30 13:34:47.000000000","message":"So we discussed this separately and realized that\nThere will be an api impact as the in-memory models are exposed via\n\nhttps://docs.openstack.org/api-ref/resource-optimization/#list-data-model\n\nThat means we will need a new api microverion to add the new files to that api.\n\nThat will likely need a new object verion althoguh not a new rpc version \n\nthe object version is more or less coverd by the data model imparct.","commit_id":"0eeb1024372ae99b07d8cf4cf1fc70255cf99310"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5f0be1417a5af567eaf686af7a374cf8a8c42990","unresolved":true,"context_lines":[{"line_number":98,"context_line":"REST API impact"},{"line_number":99,"context_line":"---------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"None."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"65a54e2a_3b7683f2","line":101,"in_reply_to":"bc07f2a2_816d97c2","updated":"2025-06-30 18:57:53.000000000","message":"added in the new patch set, please take a look.","commit_id":"0eeb1024372ae99b07d8cf4cf1fc70255cf99310"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8ea6a4072bd151483ea7fe14d185b4a749abbc5e","unresolved":true,"context_lines":[{"line_number":73,"context_line":"set to disable by default, but can be changed in the next cycles once"},{"line_number":74,"context_line":"Strategies start to consume its content."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The API microversion will increased in favor of the new attributes to be"},{"line_number":77,"context_line":"added in the response body of `GET /v1/data_model` call."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"446acb7d_0786681c","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":56},"updated":"2025-07-01 12:32:18.000000000","message":"nit: I would phrase this slightly differently.\n\n```suggestion\nA new API microversion will be introduced to expose the new attributes in the response body of the `GET /v1/data_model` call.\n```\n\nthe watcher api does not have a single microversion each endpoint supprot a set of micoversions.\n\nso while the side effect is that the max microversion for watcher will be increased its better to fram it as introducing a new microversion for the affected endpoint rhater than a general increase.","commit_id":"1e06f0ae5bc3a9d55e2411e3e5a1da1352b379db"}],"specs/2025.2/approved/extend_compute_model_attributes.rst":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"02be30cb4824870e818f411c89b67067a38c2964","unresolved":true,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When creating a solution to achieve a goal, Watcher commonly builds a action"},{"line_number":18,"context_line":"plan composed of multiple actions, which are mostly based opn Server"},{"line_number":19,"context_line":"Migrations. These computed migrations are not always valid from Nova\u0027s point"},{"line_number":20,"context_line":"of view since they can violate some placement constraints defined for a"},{"line_number":21,"context_line":"server, which Watcher is not aware of. Watcher could be improved to include"}],"source_content_type":"text/x-rst","patch_set":1,"id":"093cb19a_c07a02a9","line":18,"updated":"2025-04-16 14:35:56.000000000","message":"s/opn/on","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"55bb434c7c4521481ce3266927d37f6775e2021e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When creating a solution to achieve a goal, Watcher commonly builds a action"},{"line_number":18,"context_line":"plan composed of multiple actions, which are mostly based opn Server"},{"line_number":19,"context_line":"Migrations. These computed migrations are not always valid from Nova\u0027s point"},{"line_number":20,"context_line":"of view since they can violate some placement constraints defined for a"},{"line_number":21,"context_line":"server, which Watcher is not aware of. Watcher could be improved to include"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fbffae82_44a5b446","line":18,"in_reply_to":"093cb19a_c07a02a9","updated":"2025-05-06 11:36:06.000000000","message":"Done","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"02be30cb4824870e818f411c89b67067a38c2964","unresolved":true,"context_lines":[{"line_number":28,"context_line":"----------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an OpenStack Admin I would like to optimize my deployment, balancing the"},{"line_number":31,"context_line":"workload across compute nodes, without breakgin any placement constraints"},{"line_number":32,"context_line":"associated with its instances like: server groups, affinity and anti-affinity"},{"line_number":33,"context_line":"policies, pinned availability zones, etc."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4251b49b_1cdee86b","line":31,"updated":"2025-04-16 14:35:56.000000000","message":"s/breakgin/breaking","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"55bb434c7c4521481ce3266927d37f6775e2021e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"----------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an OpenStack Admin I would like to optimize my deployment, balancing the"},{"line_number":31,"context_line":"workload across compute nodes, without breakgin any placement constraints"},{"line_number":32,"context_line":"associated with its instances like: server groups, affinity and anti-affinity"},{"line_number":33,"context_line":"policies, pinned availability zones, etc."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d9ba3320_9f952a8b","line":31,"in_reply_to":"4251b49b_1cdee86b","updated":"2025-05-06 11:36:06.000000000","message":"Done","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5e079e97e8df5869bc1ff51cfe7d285f44e46dac","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This blueprint proposes two main changes:"},{"line_number":39,"context_line":"1. Extend Nova Compute Model to include the new instance attributes:"},{"line_number":40,"context_line":" "},{"line_number":41,"context_line":"* Scheduler Hints: provided by the user at server creation time, it defines"},{"line_number":42,"context_line":"  specific constraints that affect where the server is going to be scheduled."},{"line_number":43,"context_line":"  E.g: server affinity or anti-affinity with another server or list of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8ee1e981_05aa1cb8","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":1},"updated":"2025-04-16 11:32:26.000000000","message":"oops","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"55bb434c7c4521481ce3266927d37f6775e2021e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This blueprint proposes two main changes:"},{"line_number":39,"context_line":"1. Extend Nova Compute Model to include the new instance attributes:"},{"line_number":40,"context_line":" "},{"line_number":41,"context_line":"* Scheduler Hints: provided by the user at server creation time, it defines"},{"line_number":42,"context_line":"  specific constraints that affect where the server is going to be scheduled."},{"line_number":43,"context_line":"  E.g: server affinity or anti-affinity with another server or list of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8402c8fe_18164a6d","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":1},"in_reply_to":"8ee1e981_05aa1cb8","updated":"2025-05-06 11:36:06.000000000","message":"Done","commit_id":"c4659d4bdfc48eceaa2c6e27c73cf1859adfba78"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"df6a55c52667d41f93158d815baeef90f8e2c066","unresolved":true,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This blueprint proposes two main changes:"},{"line_number":39,"context_line":"1. Extend Nova Compute Model to include the new instance attributes:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Scheduler Hints: provided by the user at server creation time, it defines"},{"line_number":42,"context_line":"  specific constraints that affect where the server is going to be scheduled."}],"source_content_type":"text/x-rst","patch_set":2,"id":"0d6b3bab_45acf1b0","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":68},"updated":"2025-05-21 20:51:06.000000000","message":"The collector already retrieve some info from server details, but don\u0027t store them in the model.\nSome other info may need an additional request for more data.\nWe could consider that some info can be retrieved during the audit run too.","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b414a2051c6c55e8132544cce15ac9cbcd1670aa","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This blueprint proposes two main changes:"},{"line_number":39,"context_line":"1. Extend Nova Compute Model to include the new instance attributes:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Scheduler Hints: provided by the user at server creation time, it defines"},{"line_number":42,"context_line":"  specific constraints that affect where the server is going to be scheduled."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bbd981ab_e9bc6d66","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":68},"in_reply_to":"0d6b3bab_45acf1b0","updated":"2025-05-28 12:38:29.000000000","message":"Done","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b455c44a6241d5ff79538eded0d4eb5e6fed67cd","unresolved":true,"context_lines":[{"line_number":47,"context_line":"  migrating it."},{"line_number":48,"context_line":"* Image Properties: properties that affect how instances are scheduled to"},{"line_number":49,"context_line":"  hosts."},{"line_number":50,"context_line":"* Server Groups: the model should include information about server groups,"},{"line_number":51,"context_line":"  since instances of the same group share common policies like affinity and"},{"line_number":52,"context_line":"  anti-affinity."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"These attributes are available in newer versions of Nova `GET /servers/detail`"},{"line_number":55,"context_line":"API."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3850e71f_05638670","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":16},"updated":"2025-05-22 19:21:02.000000000","message":"Needs update: If a server is part of a server group, we can retrieve this info from scheduler_hints. To know which policy is configured in a server group we need retrieve server groups info, using os-server-groups.\nThe current model doesn\u0027t have information about server groups, so:\n1. we can store all server groups info in the model OR\n2. retrieve specific server groups info at strategy execution time.","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b414a2051c6c55e8132544cce15ac9cbcd1670aa","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  migrating it."},{"line_number":48,"context_line":"* Image Properties: properties that affect how instances are scheduled to"},{"line_number":49,"context_line":"  hosts."},{"line_number":50,"context_line":"* Server Groups: the model should include information about server groups,"},{"line_number":51,"context_line":"  since instances of the same group share common policies like affinity and"},{"line_number":52,"context_line":"  anti-affinity."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"These attributes are available in newer versions of Nova `GET /servers/detail`"},{"line_number":55,"context_line":"API."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fe9b689_025dea1a","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":16},"in_reply_to":"3850e71f_05638670","updated":"2025-05-28 12:38:29.000000000","message":"Done","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"df6a55c52667d41f93158d815baeef90f8e2c066","unresolved":true,"context_lines":[{"line_number":60,"context_line":"includes Server Migration action in their solutions, avoiding duplicated code"},{"line_number":61,"context_line":"since they may share the same filtering logic. The method will, for a source"},{"line_number":62,"context_line":"instance migration request, look through a list of destination hosts and a"},{"line_number":63,"context_line":"list of actions already included in the solution, to identify invalid hosts"},{"line_number":64,"context_line":"that should be excluded from the previous defined list of valid hosts. A set"},{"line_number":65,"context_line":"of constraints will be analyzed when filtering hosts:"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bd76f32c_6e4074e3","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":49},"updated":"2025-05-21 20:51:06.000000000","message":"server migrations can affect each other, since there are contraints like affinity/anti-affinity servers.","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b414a2051c6c55e8132544cce15ac9cbcd1670aa","unresolved":false,"context_lines":[{"line_number":60,"context_line":"includes Server Migration action in their solutions, avoiding duplicated code"},{"line_number":61,"context_line":"since they may share the same filtering logic. The method will, for a source"},{"line_number":62,"context_line":"instance migration request, look through a list of destination hosts and a"},{"line_number":63,"context_line":"list of actions already included in the solution, to identify invalid hosts"},{"line_number":64,"context_line":"that should be excluded from the previous defined list of valid hosts. A set"},{"line_number":65,"context_line":"of constraints will be analyzed when filtering hosts:"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9d8258d7_a03ff664","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":49},"in_reply_to":"bd76f32c_6e4074e3","updated":"2025-05-28 12:38:29.000000000","message":"Done","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"df6a55c52667d41f93158d815baeef90f8e2c066","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  considered in this implementation."},{"line_number":69,"context_line":"* Pinned Availability Zone: if defined, destination hosts that not belong to"},{"line_number":70,"context_line":"  the AZ will be filtered out."},{"line_number":71,"context_line":"* Image Properties: TBD"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e5c1cec1_a8f5a23a","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":23},"updated":"2025-05-21 20:51:06.000000000","message":"Needs more investigation.","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  considered in this implementation."},{"line_number":69,"context_line":"* Pinned Availability Zone: if defined, destination hosts that not belong to"},{"line_number":70,"context_line":"  the AZ will be filtered out."},{"line_number":71,"context_line":"* Image Properties: TBD"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c1142651_54a61017","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":23},"in_reply_to":"21207b85_9c5566c3","updated":"2025-06-03 19:28:40.000000000","message":"ack, agree, there is a lot already to consider and validate the proposal here.","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  considered in this implementation."},{"line_number":69,"context_line":"* Pinned Availability Zone: if defined, destination hosts that not belong to"},{"line_number":70,"context_line":"  the AZ will be filtered out."},{"line_number":71,"context_line":"* Image Properties: TBD"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4423d0be_48ed8fc8","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":23},"in_reply_to":"c1142651_54a61017","updated":"2025-06-24 11:41:37.000000000","message":"Acknowledged","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  considered in this implementation."},{"line_number":69,"context_line":"* Pinned Availability Zone: if defined, destination hosts that not belong to"},{"line_number":70,"context_line":"  the AZ will be filtered out."},{"line_number":71,"context_line":"* Image Properties: TBD"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"21207b85_9c5566c3","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":23},"in_reply_to":"e5c1cec1_a8f5a23a","updated":"2025-06-03 15:56:05.000000000","message":"We could likely defer this for now. While there are image properties that can indirectly limit the hosts, i.e. because of a required trait.\n\nWe could make incremental improvements and add this in the future.\n\nlets remove the image properies form the spec to limit scope","commit_id":"8a48696d7715269566dc5e7fa28b3c617dc3e2e1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"13c35a58_4fa72da3","line":55,"updated":"2025-06-03 15:56:05.000000000","message":"So the way this should work is if the OpenStack cloud is new enough to support\nThe relevant microversion we should use is rather than how it\u0027s currently implemented with a config option.\n\nI\u0027m conflicted if we should fix that now or do it separately.\n\nim willing to add this capability without addressing the technical debt but it is a very endemic problem with how watcher is currently implemented that we should fix in the next release or two.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dea610b720e24c709712b82edb0cb445c5abc440","unresolved":true,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3dc32ffd_dea7d9dd","line":55,"in_reply_to":"1371a5a9_c2dd4bee","updated":"2025-06-04 10:04:55.000000000","message":"Would it be possible and practical to implement an intermediate solution that would move us i the right direction?, new calls to nova would check minimal versions for each call in a proper way while old ones are still using the old method? Maybe creating a new nova client different to the existing one that we\u0027d use in the nova_helper for new methods or something like that. Over time, we may move old calls to new client until we can totally get rid of the old one.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":true,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1371a5a9_c2dd4bee","line":55,"in_reply_to":"13c35a58_4fa72da3","updated":"2025-06-03 19:28:40.000000000","message":"right, in the way that is implemented today, admin will need to set api_version of nova_client to the latest supported in the cloud, in order to take advantage of this feature. Yeah, this is very problematic.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2d4ee7d56f1ed033f3c9a7dec1c31a01bb477fe5","unresolved":true,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8fc13153_c6bc761d","line":55,"in_reply_to":"15cbc405_0efb6af7","updated":"2025-06-24 17:42:22.000000000","message":"Ack, it will require some investigation and a quick PoC, but it may be possible include that in the implementation. But lets not add this to the spec right now. Tks!","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":true,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"15cbc405_0efb6af7","line":55,"in_reply_to":"3dc32ffd_dea7d9dd","updated":"2025-06-24 11:41:37.000000000","message":"We can explore that. I think the way we globally initiate the client will make that difficult, but we could explore that in the implementation of this feature.\n\nPerhaps when extending the nova_helper methods, they can encapsulate the logic in the show/list commands and transparently use the newer microversion when they are supported.\n\nThat is more or less how I would expect this to work anyway; the decision about what data to collect should not leak too deeply into the rest of the code base.\n\nLet\u0027s proceed with this for now, and if we determine it\u0027s reasonable to take a half step toward using microroverision properly, then we can update the spec in parallel to record that enhancement","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[{"line_number":52,"context_line":".. note::"},{"line_number":53,"context_line":"   If the configured compute API microversion is lower than the required"},{"line_number":54,"context_line":"   ones, these new attributes will be left as empty, and strategies will"},{"line_number":55,"context_line":"   not take the advantage of this proposed extension."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Servers can be part of a server group, so Watcher will need to retrieve"},{"line_number":58,"context_line":"information about server groups that are associated with instances and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9560fa47_e11c4685","line":55,"in_reply_to":"8fc13153_c6bc761d","updated":"2025-06-25 16:39:06.000000000","message":"Acknowledged","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"An alternative for Server Groups is to retrieve the informarion at the"},{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c896d2a5_259defdb","line":67,"updated":"2025-06-03 15:56:05.000000000","message":"since you annot remove a server form a server group after the server is created i think fetching this ahead of time make more sense.\n\nnew server can be added to the group but this is effectivly a constrait that is set when the server is created and wont change for its lifetime.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2d4ee7d56f1ed033f3c9a7dec1c31a01bb477fe5","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"An alternative for Server Groups is to retrieve the informarion at the"},{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e2225bad_9e753612","line":67,"in_reply_to":"c896d2a5_259defdb","updated":"2025-06-24 17:42:22.000000000","message":"ack, makes sense. So we don\u0027t need to keep pooling server groups info all the time, and servers will be able to provide this info in the scheduler_hints details or via server_groups field.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"An alternative for Server Groups is to retrieve the informarion at the"},{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c07f4214_dc562666","line":67,"in_reply_to":"e2225bad_9e753612","updated":"2025-06-25 16:39:06.000000000","message":"Done","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dea610b720e24c709712b82edb0cb445c5abc440","unresolved":true,"context_lines":[{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"},{"line_number":71,"context_line":"migration request. This method can be called by individual strategies that"},{"line_number":72,"context_line":"includes Server Migration action in their solutions, avoiding duplicated code"},{"line_number":73,"context_line":"since they may share the same filtering logic. The method will, for a source"},{"line_number":74,"context_line":"instance migration request, look through a list of destination hosts and a"},{"line_number":75,"context_line":"list of actions already included in the solution, to identify invalid hosts"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e106d03d_e4120b4b","line":72,"range":{"start_line":69,"start_character":3,"end_line":72,"end_character":77},"updated":"2025-06-04 10:04:55.000000000","message":"+1 Sounds great!","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"},{"line_number":71,"context_line":"migration request. This method can be called by individual strategies that"},{"line_number":72,"context_line":"includes Server Migration action in their solutions, avoiding duplicated code"},{"line_number":73,"context_line":"since they may share the same filtering logic. The method will, for a source"},{"line_number":74,"context_line":"instance migration request, look through a list of destination hosts and a"},{"line_number":75,"context_line":"list of actions already included in the solution, to identify invalid hosts"}],"source_content_type":"text/x-rst","patch_set":3,"id":"849b8ce3_859d8333","line":72,"range":{"start_line":69,"start_character":3,"end_line":72,"end_character":77},"in_reply_to":"13ddbd3d_49aa8ee9","updated":"2025-06-24 11:41:37.000000000","message":"Acknowledged","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ef54aceede71bb94160ab63c5c93145d4e0f746d","unresolved":true,"context_lines":[{"line_number":66,"context_line":"Strategy execution, gathering data only for the related groups, that are"},{"line_number":67,"context_line":"associated with the source servers that are intended to migrate."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"2. A new Strategy base method called *filter_destination_hosts* will be"},{"line_number":70,"context_line":"implemented to assist on filtering invalid destinations hosts for a server"},{"line_number":71,"context_line":"migration request. This method can be called by individual strategies that"},{"line_number":72,"context_line":"includes Server Migration action in their solutions, avoiding duplicated code"},{"line_number":73,"context_line":"since they may share the same filtering logic. The method will, for a source"},{"line_number":74,"context_line":"instance migration request, look through a list of destination hosts and a"},{"line_number":75,"context_line":"list of actions already included in the solution, to identify invalid hosts"}],"source_content_type":"text/x-rst","patch_set":3,"id":"13ddbd3d_49aa8ee9","line":72,"range":{"start_line":69,"start_character":3,"end_line":72,"end_character":77},"in_reply_to":"e106d03d_e4120b4b","updated":"2025-06-05 19:21:38.000000000","message":"Yeah, but I removed and it will be included in a new spec, because this implementation needs more details and requires more investigation.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":"   The method will need to know about other planned migrations, proposed"},{"line_number":87,"context_line":"   within the same solution, in order to avoid breaking policies during the"},{"line_number":88,"context_line":"   action plan execution, like affinity and anti-affinity constraints."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"436c18ff_da9d54a9","line":88,"updated":"2025-06-03 15:56:05.000000000","message":"so this does not make sense to me.\n\nif we are addign this awareness we should not be implemting it at the applier\nwe shoudl be using it in the decision enging wehn generating the action plan to ensure we select hosts that are valid based on the instance info.\n\ni guess when you say  \"other planned migrations\"\nyou eman that it should be possibel to call this multipel times givign it the context of the other planed operation so that if we are validating \"same host\" that we can validate it after the entire plan is calualated.\n\nunfortunetly each move operation need to be vaild as nova will not allow the same_host hint or any affintiy requrieemtn to be violated in the interim and there is no way to move all instance in a group.\n\nThe only way to move a group of VMs in a server group with strict affinity\nwould be to shelf them all. Then select a host with enough space for all of them.\nand unshelve them one by one onto the same host.\n\nthat woudl require the stagey to use a diffent movement method (shelve/unshleve) \ninstead of cold/live migrate\n\n\nso perhaps we need other functions.\nfirst a funciton to determin what metods can be appleid to move an instance\nand then another that will help with the host selection?\n\nfor soft affintiy or anti affintiy there are other consideration too.\n\nso encodign these into a single fucniton is perhaps too complex.\n\n\ni think we may need to break this down into mutlipel step\n\nfirst we need to describe the data model changes to make the information aviable\nafter that we need to consider how this will impact the extistin stragies.\n\ndo you thinkit would make sense to split the spec.\n\nhave this spec focus on just the collection fo the new data, then have a seperate  follow up spec for how we would uses it for each impacted strategy?","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ef54aceede71bb94160ab63c5c93145d4e0f746d","unresolved":true,"context_lines":[{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":"   The method will need to know about other planned migrations, proposed"},{"line_number":87,"context_line":"   within the same solution, in order to avoid breaking policies during the"},{"line_number":88,"context_line":"   action plan execution, like affinity and anti-affinity constraints."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"98ed6c94_a3ec6a16","line":88,"in_reply_to":"421654df_9d96a9c2","updated":"2025-06-05 19:21:38.000000000","message":"Right, any strategy that builds a list of valid destination hosts when proposing a server migration could validate if each hosts is valid for these additional constraints.\nI think that a pre-condition for migrate action is a valid option, but would be a additional feature, which could be based on this implementation, but still another spec for that scenario.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":true,"context_lines":[{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":"   The method will need to know about other planned migrations, proposed"},{"line_number":87,"context_line":"   within the same solution, in order to avoid breaking policies during the"},{"line_number":88,"context_line":"   action plan execution, like affinity and anti-affinity constraints."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c14535f4_9de2a93b","line":88,"in_reply_to":"436c18ff_da9d54a9","updated":"2025-06-03 19:28:40.000000000","message":"so the original idea was to analyze the \"planned migrations\" that are part of the same solution, in the decision engine, not in the applier (it would be too late),e.g.: when finding a host for a second instance migration, also include the first instance migration in the logic... but as you said, if one instance already breaks the affinity policy, it will not work, since they are isolated migration and need to move as a group. So yes, this probably is more complex and can be moved to another spec. Going to split them.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":"   The method will need to know about other planned migrations, proposed"},{"line_number":87,"context_line":"   within the same solution, in order to avoid breaking policies during the"},{"line_number":88,"context_line":"   action plan execution, like affinity and anti-affinity constraints."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0887761b_797f2c1b","line":88,"in_reply_to":"98ed6c94_a3ec6a16","updated":"2025-06-24 11:41:37.000000000","message":"while this discussin is good let defer it to the follwo up spec that will use the metrics. ill resolve it for now given the revised scope of this spec.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dea610b720e24c709712b82edb0cb445c5abc440","unresolved":true,"context_lines":[{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":"   The method will need to know about other planned migrations, proposed"},{"line_number":87,"context_line":"   within the same solution, in order to avoid breaking policies during the"},{"line_number":88,"context_line":"   action plan execution, like affinity and anti-affinity constraints."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"421654df_9d96a9c2","line":88,"in_reply_to":"c14535f4_9de2a93b","updated":"2025-06-04 10:04:55.000000000","message":"My understanding wat that the *filter_destination_hosts* would be used always at the decision-engine as the destination_host is part of the migrate action (otherwise it will let nova to calculate it), right?\n\nWRT the case you mentioned of failed migration. Something I was thinking is if we implement another funciont like *is_host_valid(instance)* that returns true or false so that we may use it as a pre-condition check. That would be useful in several cases:\n- A previous action as failed (it may or may not prevent migration of a related one).\n- Changes happened in the cluster after the actionplan was calculated.\n\nThis would introduce a new issue, as we\u0027d need fresh info on each action execution, but I think it\u0027d be a good feature to implement (maybe out of this spec).","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":154,"context_line":"Work Items"},{"line_number":155,"context_line":"----------"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Extend Nova Cluster Data Model to include new Instance attributes."},{"line_number":158,"context_line":"* Update the Nova Collector to parse additional Instance attributes."},{"line_number":159,"context_line":"* Extend Nova Notifications processing to update new attributes."},{"line_number":160,"context_line":"* Extend Nova Cluster Data Model to include Server Grops."},{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"}],"source_content_type":"text/x-rst","patch_set":3,"id":"114e83d7_c966027a","line":161,"range":{"start_line":157,"start_character":0,"end_line":161,"end_character":66},"updated":"2025-06-03 15:56:05.000000000","message":"i think this all makes sense to cover in this spec.\n\ni think i would move the remaining two work items to a separate spec.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":true,"context_lines":[{"line_number":154,"context_line":"Work Items"},{"line_number":155,"context_line":"----------"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Extend Nova Cluster Data Model to include new Instance attributes."},{"line_number":158,"context_line":"* Update the Nova Collector to parse additional Instance attributes."},{"line_number":159,"context_line":"* Extend Nova Notifications processing to update new attributes."},{"line_number":160,"context_line":"* Extend Nova Cluster Data Model to include Server Grops."},{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9dbe1c42_5a8de760","line":161,"range":{"start_line":157,"start_character":0,"end_line":161,"end_character":66},"in_reply_to":"114e83d7_c966027a","updated":"2025-06-03 19:28:40.000000000","message":"agree","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":154,"context_line":"Work Items"},{"line_number":155,"context_line":"----------"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Extend Nova Cluster Data Model to include new Instance attributes."},{"line_number":158,"context_line":"* Update the Nova Collector to parse additional Instance attributes."},{"line_number":159,"context_line":"* Extend Nova Notifications processing to update new attributes."},{"line_number":160,"context_line":"* Extend Nova Cluster Data Model to include Server Grops."},{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"}],"source_content_type":"text/x-rst","patch_set":3,"id":"518a73ea_a6f331ac","line":161,"range":{"start_line":157,"start_character":0,"end_line":161,"end_character":66},"in_reply_to":"9dbe1c42_5a8de760","updated":"2025-06-24 11:41:37.000000000","message":"Done","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dea610b720e24c709712b82edb0cb445c5abc440","unresolved":true,"context_lines":[{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"},{"line_number":165,"context_line":"  Strategies to filter invalid hosts when proposing solutions."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Dependencies"},{"line_number":168,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cdb5537b_cc73ecd1","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":62},"updated":"2025-06-04 10:04:55.000000000","message":"Some strategies support to define destination host from user, as host_maintenance or zone_migration. How we\u0027d manage those cases?. Currently, watcher will create the action with the desired host that may fail in nova if it breaks any constraints. We may check if host is valid for each vm migrated and act appropriately, as non including the migration in the plan or even make the audit to fail if we prefer. IMO, strategies should do their best to avoid creating actions which will fail even if the admin is explicitely setting destination_host for migrations.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"},{"line_number":165,"context_line":"  Strategies to filter invalid hosts when proposing solutions."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Dependencies"},{"line_number":168,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fac733a8_ab42ee21","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":62},"in_reply_to":"1e12029e_9238da5e","updated":"2025-06-24 11:41:37.000000000","message":"This has been moved out of scope of this spec.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ef54aceede71bb94160ab63c5c93145d4e0f746d","unresolved":true,"context_lines":[{"line_number":161,"context_line":"* Extend Nova Collector to also retrieve Server Group information."},{"line_number":162,"context_line":"* Implement a filter function that excludes destination hosts based on"},{"line_number":163,"context_line":"  instance constraints."},{"line_number":164,"context_line":"* Modify VM Workload Consolidation Strategy and Workload Stabilization"},{"line_number":165,"context_line":"  Strategies to filter invalid hosts when proposing solutions."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Dependencies"},{"line_number":168,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1e12029e_9238da5e","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":62},"in_reply_to":"cdb5537b_cc73ecd1","updated":"2025-06-05 19:21:38.000000000","message":"When a user provides a destination host, it automatically reduces the number of possible destination hosts to one. Each strategy should validate if this destination host is valid, has capacity, etc. If the strategy don\u0027t validate that, for me is a bad design. The idea is that, if a strategy builds a list of valid destinations hosts for a migration, it would use this proposed filtering to validate them against other constraints. If it is a single one, it would only validate this one.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e666a2ab4cdddfc0fc85c53a22b7b958b65c3131","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* Some attributes are only available in newer versions of Nova\u0027s API:"},{"line_number":171,"context_line":"  * Pinned Availability Zone: microversion 2.96"},{"line_number":172,"context_line":"  * Image Properties: microversion 2.98"},{"line_number":173,"context_line":"  * Scheduler Hints: microversion 2.100"},{"line_number":174,"context_line":"  To achieve better results, it is expected that deployed Nova supports"},{"line_number":175,"context_line":"  most of the above microversions."}],"source_content_type":"text/x-rst","patch_set":3,"id":"4f58877d_a4ba21d1","line":172,"range":{"start_line":172,"start_character":1,"end_line":172,"end_character":39},"updated":"2025-06-03 15:56:05.000000000","message":"we could include the collection of the image properties in this spec but\nim not sure if we ahve a usecase for usign them beyond perhaps any required traits.","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* Some attributes are only available in newer versions of Nova\u0027s API:"},{"line_number":171,"context_line":"  * Pinned Availability Zone: microversion 2.96"},{"line_number":172,"context_line":"  * Image Properties: microversion 2.98"},{"line_number":173,"context_line":"  * Scheduler Hints: microversion 2.100"},{"line_number":174,"context_line":"  To achieve better results, it is expected that deployed Nova supports"},{"line_number":175,"context_line":"  most of the above microversions."}],"source_content_type":"text/x-rst","patch_set":3,"id":"b62210d0_e0a26a1f","line":172,"range":{"start_line":172,"start_character":1,"end_line":172,"end_character":39},"in_reply_to":"415185ec_e84e7cac","updated":"2025-06-24 11:41:37.000000000","message":"Done","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"0d54d2b38e49c4a73b5ff9e4e9a64f420e3d010b","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* Some attributes are only available in newer versions of Nova\u0027s API:"},{"line_number":171,"context_line":"  * Pinned Availability Zone: microversion 2.96"},{"line_number":172,"context_line":"  * Image Properties: microversion 2.98"},{"line_number":173,"context_line":"  * Scheduler Hints: microversion 2.100"},{"line_number":174,"context_line":"  To achieve better results, it is expected that deployed Nova supports"},{"line_number":175,"context_line":"  most of the above microversions."}],"source_content_type":"text/x-rst","patch_set":3,"id":"415185ec_e84e7cac","line":172,"range":{"start_line":172,"start_character":1,"end_line":172,"end_character":39},"in_reply_to":"4f58877d_a4ba21d1","updated":"2025-06-03 19:28:40.000000000","message":"ack, we can remove","commit_id":"13dae9f6646a9f01d8259bafc5939e9210422bec"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"a796809d942ed620047c3caa5857e4b6a8c4901c","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When creating a solution to achieve a goal, Watcher commonly builds aN action"},{"line_number":18,"context_line":"plan composed of multiple actions, which are mostly based on Server"},{"line_number":19,"context_line":"Migrations. These computed migrations are not always valid from Nova\u0027s point"},{"line_number":20,"context_line":"of view since they can violate some placement constraints defined for a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d455a042_99755db0","line":17,"updated":"2025-06-27 08:46:02.000000000","message":"nit \n```suggestion\nWhen creating a solution to achieve a goal, Watcher commonly builds an action\n```","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5f0be1417a5af567eaf686af7a374cf8a8c42990","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When creating a solution to achieve a goal, Watcher commonly builds aN action"},{"line_number":18,"context_line":"plan composed of multiple actions, which are mostly based on Server"},{"line_number":19,"context_line":"Migrations. These computed migrations are not always valid from Nova\u0027s point"},{"line_number":20,"context_line":"of view since they can violate some placement constraints defined for a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bd62f5b1_c3f3e2f9","line":17,"in_reply_to":"d455a042_99755db0","updated":"2025-06-30 18:57:53.000000000","message":"Done","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":true,"context_lines":[{"line_number":77,"context_line":"Data model impact"},{"line_number":78,"context_line":"-----------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"None."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"REST API impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"4072fc02_7be610a6","line":80,"updated":"2025-06-24 11:41:37.000000000","message":"so you should describe the changes to the data model here\nSpecifically, which data type you will extend with the new fields and the type of those new fields.\n\nMy understanding is that your intent is to modify the in-memory representation that is used within the decision engine so this will never be persisted to the db correct?\n\nif there was any db or rpc impact, you would have to describe the effect on the schema and rpc objects here.\n\n\nas such, this really just needs to detail the changes to the in-memory object which significantly decreases the impacts of the change.\n\nplease at a minim update this with the class names for the classes you plan to exetend and the field types.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2d4ee7d56f1ed033f3c9a7dec1c31a01bb477fe5","unresolved":true,"context_lines":[{"line_number":77,"context_line":"Data model impact"},{"line_number":78,"context_line":"-----------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"None."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"REST API impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a7ab26c2_1066cf56","line":80,"in_reply_to":"4072fc02_7be610a6","updated":"2025-06-24 17:42:22.000000000","message":"Yes, this a only in-memory representation of these resources and today is not persisted anywhere. Addind the expected additional fields to Instance object.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Data model impact"},{"line_number":78,"context_line":"-----------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"None."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"REST API impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e8f5c8cb_d19bebc6","line":80,"in_reply_to":"a7ab26c2_1066cf56","updated":"2025-06-25 16:39:06.000000000","message":"Acknowledged","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"None."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"REST API impact"},{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Security impact"},{"line_number":88,"context_line":"---------------"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"None."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Notifications impact"},{"line_number":93,"context_line":"--------------------"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"None."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Other end user impact"},{"line_number":98,"context_line":"---------------------"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fcb62a58_15427f3a","line":96,"range":{"start_line":82,"start_character":0,"end_line":96,"end_character":1},"updated":"2025-06-24 11:41:37.000000000","message":"+1\n\nrest api impact only refers to the watch api and does nto cover the fact we will use new nova apis.\n\nthere shoudl be no security impact or notirication impact either","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Other end user impact"},{"line_number":98,"context_line":"---------------------"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"None."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Performance Impact"},{"line_number":103,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b9d08f26_58f6a010","line":100,"updated":"2025-06-24 11:41:37.000000000","message":"i guess this is also correct, as this is just collecting the info which will then be used to make more informed decisions later.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":true,"context_lines":[{"line_number":105,"context_line":"* A new resource will be created to represent server groups and the collector"},{"line_number":106,"context_line":"  will need to retrieve this information using Nova client."},{"line_number":107,"context_line":"* New Nova notifications will need to be processed, for server groups, and new"},{"line_number":108,"context_line":"  instance attributes will need to be updated."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Other deployer impact"},{"line_number":111,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6f83b343_eda727c5","line":108,"updated":"2025-06-24 11:41:37.000000000","message":"There will also be an increase in memory usage, although I expect that to be minimal.\n\nit might be reasonabel to put this behind a feature flag in the config\n\ncollect_extened_instance_info\n\nInitially, I would default this to false until we have the follow-up feature that uses it. Then we can consider enabling this by default in the next cycle.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"* A new resource will be created to represent server groups and the collector"},{"line_number":106,"context_line":"  will need to retrieve this information using Nova client."},{"line_number":107,"context_line":"* New Nova notifications will need to be processed, for server groups, and new"},{"line_number":108,"context_line":"  instance attributes will need to be updated."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Other deployer impact"},{"line_number":111,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"31534a23_a91e4781","line":108,"in_reply_to":"6f83b343_eda727c5","updated":"2025-06-25 16:39:06.000000000","message":"Done","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b95d3035979fbb9d0638e1fced5bf52b1fe5b815","unresolved":true,"context_lines":[{"line_number":149,"context_line":"Testing"},{"line_number":150,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Unit tests will cover different scenarios when collecting data from"},{"line_number":153,"context_line":"Nova service."},{"line_number":154,"context_line":"An additional negative test with affinity or anti-affinity scheduler Hints"},{"line_number":155,"context_line":"can be added to validate model updates as also that migration will fail"},{"line_number":156,"context_line":"with that configuration."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Documentation Impact"},{"line_number":159,"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":"909af6cb_b232ffdd","line":156,"range":{"start_line":152,"start_character":0,"end_line":156,"end_character":24},"updated":"2025-06-24 11:41:37.000000000","message":"this needs to be updated since you split the spec.\n\nwe do need unit test but we shoudl also modify one of the devstack jobs to enabel the new data collection. we can use either the promethues or gnoccii job since this is independent of the data souce. the other devstack job will validate teh default behavior. i would suggest enabling it in the prometheus job adn leavign the gnocci job with it disabeld by default.","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Testing"},{"line_number":150,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Unit tests will cover different scenarios when collecting data from"},{"line_number":153,"context_line":"Nova service."},{"line_number":154,"context_line":"An additional negative test with affinity or anti-affinity scheduler Hints"},{"line_number":155,"context_line":"can be added to validate model updates as also that migration will fail"},{"line_number":156,"context_line":"with that configuration."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Documentation Impact"},{"line_number":159,"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":"2e423165_9cefaace","line":156,"range":{"start_line":152,"start_character":0,"end_line":156,"end_character":24},"in_reply_to":"909af6cb_b232ffdd","updated":"2025-06-25 16:39:06.000000000","message":"Acknowledged","commit_id":"9a8d8119a466f069bd6084764b4e37c50fef270d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Extend Compute Model Attributes"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/extend-compute-model-attributes"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":5,"id":"defca10c_779bb602","line":11,"updated":"2025-06-25 16:39:06.000000000","message":"so thecnically the file name should match this \n\nso extend-compute-model-attributes.rst\n\nwould you mind fixing that with the testing typo below.","commit_id":"c66c8e07f5121367be93092481f7ca7d78205e05"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d232519c321db0977f003ec56611eb39482d2cb8","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Extend Compute Model Attributes"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/extend-compute-model-attributes"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0c3ec6da_101e7dbc","line":11,"in_reply_to":"defca10c_779bb602","updated":"2025-06-25 18:28:11.000000000","message":"sure, thanks!","commit_id":"c66c8e07f5121367be93092481f7ca7d78205e05"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8eec468de31ddfc2f04e51961c486562a34d949b","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Unit tests will cover different scenarios when collecting data from"},{"line_number":167,"context_line":"Nova service."},{"line_number":168,"context_line":"A new tempest job will create instances with additional attributes and"},{"line_number":169,"context_line":"validate that this info is available in the new model."},{"line_number":170,"context_line":"A devstack job will be modified to enable the additional attributes"},{"line_number":171,"context_line":"collection and run new tempest tests."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Documentation Impact"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ddaa9c33_afe56ec4","line":172,"range":{"start_line":168,"start_character":0,"end_line":172,"end_character":1},"updated":"2025-06-25 16:39:06.000000000","message":"```suggestion\nA new tempest test will create instances with additional attributes and\nvalidate that this info is available in the new model.\nA devstack job will be modified to enable the additional attributes\ncollection and run new tempest tests.\n```\n+1","commit_id":"c66c8e07f5121367be93092481f7ca7d78205e05"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d232519c321db0977f003ec56611eb39482d2cb8","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Unit tests will cover different scenarios when collecting data from"},{"line_number":167,"context_line":"Nova service."},{"line_number":168,"context_line":"A new tempest job will create instances with additional attributes and"},{"line_number":169,"context_line":"validate that this info is available in the new model."},{"line_number":170,"context_line":"A devstack job will be modified to enable the additional attributes"},{"line_number":171,"context_line":"collection and run new tempest tests."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Documentation Impact"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"e61257a6_90745a11","line":172,"range":{"start_line":168,"start_character":0,"end_line":172,"end_character":1},"in_reply_to":"ddaa9c33_afe56ec4","updated":"2025-06-25 18:28:11.000000000","message":"Done","commit_id":"c66c8e07f5121367be93092481f7ca7d78205e05"}]}
