)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2371e4396aafd527795e6c0ea668d8a320c01adb","unresolved":true,"context_lines":[{"line_number":11,"context_line":"TODO:"},{"line_number":12,"context_line":"* replace exceptions with ones from SDK"},{"line_number":13,"context_line":"* Tests"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"https://bugs.launchpad.net/neutron/+bug/1999774"},{"line_number":16,"context_line":"Change-Id: I847112eb8d73f61cee62019fc0c616f63f479d35"},{"line_number":17,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"4335b69c_44570a44","line":14,"updated":"2025-08-11 14:12:07.000000000","message":"SDK release with https://review.opendev.org/c/openstack/openstacksdk/+/956658","commit_id":"611a7cda8c9c60cd83caedf9ca4fbc2b89810ad3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":false,"context_lines":[{"line_number":11,"context_line":"TODO:"},{"line_number":12,"context_line":"* replace exceptions with ones from SDK"},{"line_number":13,"context_line":"* Tests"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"https://bugs.launchpad.net/neutron/+bug/1999774"},{"line_number":16,"context_line":"Change-Id: I847112eb8d73f61cee62019fc0c616f63f479d35"},{"line_number":17,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"6b1de428_03ed12f2","line":14,"in_reply_to":"4335b69c_44570a44","updated":"2026-02-02 19:15:11.000000000","message":"Done","commit_id":"611a7cda8c9c60cd83caedf9ca4fbc2b89810ad3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0195350754f19f614a72ae87ab8994278e60259f","unresolved":true,"context_lines":[{"line_number":10,"context_line":"Gazpacho is started and SDK 4.7.0 will be added to"},{"line_number":11,"context_line":"upper-constraints"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/956658"},{"line_number":14,"context_line":"Related-Bug: #1999774"},{"line_number":15,"context_line":"Change-Id: I847112eb8d73f61cee62019fc0c616f63f479d35"},{"line_number":16,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"b48d3e0d_a3b06653","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":45},"updated":"2025-09-05 14:31:55.000000000","message":"seems like still not 4.7.0 is pulled by zuul, as I have the same failures in my local env with older SDK....","commit_id":"950f3634e1b1fc0a6858a3d8cfd034329f2497ae"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Gazpacho is started and SDK 4.7.0 will be added to"},{"line_number":11,"context_line":"upper-constraints"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/956658"},{"line_number":14,"context_line":"Related-Bug: #1999774"},{"line_number":15,"context_line":"Change-Id: I847112eb8d73f61cee62019fc0c616f63f479d35"},{"line_number":16,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"19d3bc0b_624c4b0c","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":45},"in_reply_to":"b48d3e0d_a3b06653","updated":"2026-02-02 19:15:11.000000000","message":"Done","commit_id":"950f3634e1b1fc0a6858a3d8cfd034329f2497ae"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"46324c0447a557f07950b5a71feb93b58088b5d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3f9ed846_b5d14445","updated":"2025-09-11 18:47:17.000000000","message":"SDK req bump was merged (https://review.opendev.org/c/openstack/requirements/+/960027) let\u0027s see....","commit_id":"70dcd38cd22b5e8b1b0895e224ddccc36914d6d9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cd8e6b9f215e93f0443704368f50333e12d5c085","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2a0fea56_949fb46b","updated":"2025-09-22 15:28:02.000000000","message":"recheck\ngrenade job failed with volume issue, the nova-next job failed with no host available, none seems to be related","commit_id":"3c5aa843276100d69cdfda74cfc9f006abf55de5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"608153aa0f95d23e6bef908a2780a63bb9b788bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ff866c29_153febf7","updated":"2025-11-21 10:27:18.000000000","message":"recheck\nnova-multi-cell failure is not related","commit_id":"1169a6d2d1a9d865daa95d9763c54457fa60a085"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"78e346b929fded07522878da3fcc2705d4b382ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"19492bc3_9866d47c","updated":"2025-11-17 08:56:10.000000000","message":"rechekc\nnova-multi-cell failure is not related","commit_id":"1169a6d2d1a9d865daa95d9763c54457fa60a085"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"813654d9dc698b136f3ae85f922fe73c20e810e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"5bea0ad3_66e547d6","updated":"2026-01-14 08:27:13.000000000","message":"recheck\nthe errors seems to be not related","commit_id":"835eca482a64867d63d7c538b85566cc797f2d19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"267f35d8_0f03dbec","updated":"2026-02-02 19:15:11.000000000","message":"I stopped at the fixture today but have plenty of questions / comments.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"441ae128829fae98f8285e5ed3ff7f0d8dbc45ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"053de24d_b8f1114c","updated":"2026-02-06 07:34:15.000000000","message":"recheck\nceph-multistore and cyborg job failures are not related","commit_id":"a1fde81d996a0f4098b137554522b8975d33e330"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5da14ecde45accc35fb6cc76e75f802d824e97cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"cb54ae24_2b969664","updated":"2026-05-11 12:09:15.000000000","message":"thanks Stephen","commit_id":"a3c753003d99e8551dc3adb2637d5d73b21dd501"}],"nova/network/neutron.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ed8c49360cc843696bbbc0480848340db46179af","unresolved":true,"context_lines":[{"line_number":253,"context_line":"        session\u003dsession,"},{"line_number":254,"context_line":"        oslo_conf\u003dCONF,"},{"line_number":255,"context_line":"    )"},{"line_number":256,"context_line":"    return c.network"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"def get_client(context, admin\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"422d99e6_72aade40","line":256,"updated":"2024-09-04 18:03:24.000000000","message":"im not familar enough with the sdk to know at a glance but i belive this is going to use the auth creditals form the nova conifg file to creat this client which would only be create in teh admin clinet case.\n\notherwise we shoudl be useing the token form the context.\n\ni think you likely need to be using \n\nhttps://github.com/openstack/nova/blob/master/nova/utils.py#L969-L995\n\nbut you also need the enhancements form https://review.opendev.org/c/openstack/nova/+/925277/5","commit_id":"c7c3ce9c2372809ec0c5397cabf039c73d4086c6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"87c8ff86ba5f7f6955cd4909d468214dac9ab292","unresolved":true,"context_lines":[{"line_number":253,"context_line":"        session\u003dsession,"},{"line_number":254,"context_line":"        oslo_conf\u003dCONF,"},{"line_number":255,"context_line":"    )"},{"line_number":256,"context_line":"    return c.network"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"def get_client(context, admin\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"620ba0b3_3c0d3da6","line":256,"in_reply_to":"422d99e6_72aade40","updated":"2024-09-05 07:24:07.000000000","message":"thanks, I check it","commit_id":"c7c3ce9c2372809ec0c5397cabf039c73d4086c6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":253,"context_line":"        session\u003dsession,"},{"line_number":254,"context_line":"        oslo_conf\u003dCONF,"},{"line_number":255,"context_line":"    )"},{"line_number":256,"context_line":"    return c.network"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"def get_client(context, admin\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c89ccfb4_d60c12f8","line":256,"in_reply_to":"620ba0b3_3c0d3da6","updated":"2026-02-02 19:15:11.000000000","message":"Is this settled yet?","commit_id":"c7c3ce9c2372809ec0c5397cabf039c73d4086c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        session\u003dsession,"},{"line_number":254,"context_line":"        oslo_conf\u003dCONF,"},{"line_number":255,"context_line":"    )"},{"line_number":256,"context_line":"    return c.network"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"def get_client(context, admin\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e8e2086_4849b472","line":256,"in_reply_to":"c89ccfb4_d60c12f8","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"c7c3ce9c2372809ec0c5397cabf039c73d4086c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"838e55c10a7484a4d372b30a93e22f0a6f8cf10d","unresolved":true,"context_lines":[{"line_number":575,"context_line":"    def _update_port(self, port_client, instance, port_id,"},{"line_number":576,"context_line":"                     port_req_body):"},{"line_number":577,"context_line":"        try:"},{"line_number":578,"context_line":"            port \u003d port_client.update_port(port_id, **port_req_body).to_dict()"},{"line_number":579,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":580,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":581,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a40ec782_9faad528","line":578,"updated":"2025-08-01 14:27:01.000000000","message":"nit: you probably want to explode `port_req_body` (perhaps in a precursor patch) so that we know we\u0027re not passing unsupported fields here","commit_id":"7564c70c2f168ea7722685505e787746f067426c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":575,"context_line":"    def _update_port(self, port_client, instance, port_id,"},{"line_number":576,"context_line":"                     port_req_body):"},{"line_number":577,"context_line":"        try:"},{"line_number":578,"context_line":"            port \u003d port_client.update_port(port_id, **port_req_body).to_dict()"},{"line_number":579,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":580,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":581,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"88ec12a3_98267791","line":578,"in_reply_to":"0debe4eb_5fc8a285","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"7564c70c2f168ea7722685505e787746f067426c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"bca429bef643d1dda2c452869ff6583cf9c390bd","unresolved":true,"context_lines":[{"line_number":575,"context_line":"    def _update_port(self, port_client, instance, port_id,"},{"line_number":576,"context_line":"                     port_req_body):"},{"line_number":577,"context_line":"        try:"},{"line_number":578,"context_line":"            port \u003d port_client.update_port(port_id, **port_req_body).to_dict()"},{"line_number":579,"context_line":"            _ensure_no_port_binding_failure(port)"},{"line_number":580,"context_line":"            LOG.debug(\u0027Successfully updated port: %s\u0027, port_id,"},{"line_number":581,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0debe4eb_5fc8a285","line":578,"in_reply_to":"a40ec782_9faad528","updated":"2025-08-05 10:24:56.000000000","message":"yeah, good idea, the main issue with this migration is that SDK changed some of the field names compared to how on the API they are called","commit_id":"7564c70c2f168ea7722685505e787746f067426c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"402505ecf82349cfa91f1c4f60eb40a4722a62a6","unresolved":true,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"            try:"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"                port_client.update_port(port_id, **port_req_body)"},{"line_number":709,"context_line":"            except sdk_exc.NotFoundException:"},{"line_number":710,"context_line":"                LOG.debug(\u0027Unable to unbind port %s as it no longer \u0027"},{"line_number":711,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa06577f_c593e1a6","line":708,"range":{"start_line":708,"start_character":16,"end_line":708,"end_character":65},"updated":"2025-08-05 12:41:46.000000000","message":"here I got back \nopenstack.exceptions.ForbiddenException: ForbiddenException: 403: Client Error for url: http://100.109.0.136/networking/v2.0/ports/79cc2c3a-e1d3-4d5e-8cdd-88c798e64087, ((((rule:update_port and rule:update_port:device_id) and rule:update_port:device_owner) and rule:update_port:binding:host_id) and rule:update_port:binding:profile) is disallowed by policy\nI suppose have to have another client here for service (?) user?","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"16bfc324a464a26118f600e4c8605c65afae01bc","unresolved":true,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"            try:"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"                port_client.update_port(port_id, **port_req_body)"},{"line_number":709,"context_line":"            except sdk_exc.NotFoundException:"},{"line_number":710,"context_line":"                LOG.debug(\u0027Unable to unbind port %s as it no longer \u0027"},{"line_number":711,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bc8850f3_d7023d9f","line":708,"range":{"start_line":708,"start_character":16,"end_line":708,"end_character":65},"in_reply_to":"471a6ec7_ab83b1bb","updated":"2025-08-06 06:57:18.000000000","message":"that was in my mind also. I suppose (from https://opendev.org/openstack/nova/src/branch/master/nova/service_auth.py#L33 ) if I forgot admin\u003dTrue I will have service user","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"            try:"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"                port_client.update_port(port_id, **port_req_body)"},{"line_number":709,"context_line":"            except sdk_exc.NotFoundException:"},{"line_number":710,"context_line":"                LOG.debug(\u0027Unable to unbind port %s as it no longer \u0027"},{"line_number":711,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"857c7419_ed21adf1","line":708,"range":{"start_line":708,"start_character":16,"end_line":708,"end_character":65},"in_reply_to":"bc8850f3_d7023d9f","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"94ee8d77373605c7fe2751a0fecfe7c4927ffcc4","unresolved":true,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"            try:"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"                port_client.update_port(port_id, **port_req_body)"},{"line_number":709,"context_line":"            except sdk_exc.NotFoundException:"},{"line_number":710,"context_line":"                LOG.debug(\u0027Unable to unbind port %s as it no longer \u0027"},{"line_number":711,"context_line":"                          \u0027exists.\u0027, port_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"471a6ec7_ab83b1bb","line":708,"range":{"start_line":708,"start_character":16,"end_line":708,"end_character":65},"in_reply_to":"fa06577f_c593e1a6","updated":"2025-08-05 15:30:43.000000000","message":"Shouldn\u0027t everything be a service user?","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"402505ecf82349cfa91f1c4f60eb40a4722a62a6","unresolved":true,"context_lines":[{"line_number":3649,"context_line":"        subnet_ids \u003d (set(ip[\u0027subnet_id\u0027] for ip in fixed_ips))"},{"line_number":3650,"context_line":"        ipam_subnets \u003d []"},{"line_number":3651,"context_line":"        for s_id in subnet_ids:"},{"line_number":3652,"context_line":"            ipam_subnets.append(client.get_subnet(s_id))"},{"line_number":3653,"context_line":""},{"line_number":3654,"context_line":"        subnets \u003d []"},{"line_number":3655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"4f0b2e98_eb1ca126","line":3652,"range":{"start_line":3652,"start_character":32,"end_line":3652,"end_character":55},"updated":"2025-08-05 12:41:46.000000000","message":"seems like with SDK query like {\u0027id\u0027: [\u0027uuid1\u0027, \u0027uuid2\u0027]} is not working, have to fetch the subnets one-by-one","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"16bfc324a464a26118f600e4c8605c65afae01bc","unresolved":true,"context_lines":[{"line_number":3649,"context_line":"        subnet_ids \u003d (set(ip[\u0027subnet_id\u0027] for ip in fixed_ips))"},{"line_number":3650,"context_line":"        ipam_subnets \u003d []"},{"line_number":3651,"context_line":"        for s_id in subnet_ids:"},{"line_number":3652,"context_line":"            ipam_subnets.append(client.get_subnet(s_id))"},{"line_number":3653,"context_line":""},{"line_number":3654,"context_line":"        subnets \u003d []"},{"line_number":3655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"89727d09_d7cef01c","line":3652,"range":{"start_line":3652,"start_character":32,"end_line":3652,"end_character":55},"in_reply_to":"1935cf40_a25cca82","updated":"2025-08-06 06:57:18.000000000","message":"thanks, I check it.","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"94ee8d77373605c7fe2751a0fecfe7c4927ffcc4","unresolved":true,"context_lines":[{"line_number":3649,"context_line":"        subnet_ids \u003d (set(ip[\u0027subnet_id\u0027] for ip in fixed_ips))"},{"line_number":3650,"context_line":"        ipam_subnets \u003d []"},{"line_number":3651,"context_line":"        for s_id in subnet_ids:"},{"line_number":3652,"context_line":"            ipam_subnets.append(client.get_subnet(s_id))"},{"line_number":3653,"context_line":""},{"line_number":3654,"context_line":"        subnets \u003d []"},{"line_number":3655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1935cf40_a25cca82","line":3652,"range":{"start_line":3652,"start_character":32,"end_line":3652,"end_character":55},"in_reply_to":"4f0b2e98_eb1ca126","updated":"2025-08-05 15:30:43.000000000","message":"This is a bug. I think the issue is that `id` is missing from the list of filters.\n\nhttps://github.com/openstack/openstacksdk/blob/8c2f9a1e57d2a008ab230d3b35d38fe206ee56aa/openstack/network/v2/subnet.py#L34\n\nIf so, this will be easy to both test and fix.","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"614d5618e1e061f6f52e2ebc85774ad49e93ed2a","unresolved":true,"context_lines":[{"line_number":3649,"context_line":"        subnet_ids \u003d (set(ip[\u0027subnet_id\u0027] for ip in fixed_ips))"},{"line_number":3650,"context_line":"        ipam_subnets \u003d []"},{"line_number":3651,"context_line":"        for s_id in subnet_ids:"},{"line_number":3652,"context_line":"            ipam_subnets.append(client.get_subnet(s_id))"},{"line_number":3653,"context_line":""},{"line_number":3654,"context_line":"        subnets \u003d []"},{"line_number":3655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"cd84a2ad_4b393d0c","line":3652,"range":{"start_line":3652,"start_character":32,"end_line":3652,"end_character":55},"in_reply_to":"89727d09_d7cef01c","updated":"2025-08-06 11:17:09.000000000","message":"I added the id field: https://review.opendev.org/c/openstack/openstacksdk/+/956658 , and it solves the issue","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":3649,"context_line":"        subnet_ids \u003d (set(ip[\u0027subnet_id\u0027] for ip in fixed_ips))"},{"line_number":3650,"context_line":"        ipam_subnets \u003d []"},{"line_number":3651,"context_line":"        for s_id in subnet_ids:"},{"line_number":3652,"context_line":"            ipam_subnets.append(client.get_subnet(s_id))"},{"line_number":3653,"context_line":""},{"line_number":3654,"context_line":"        subnets \u003d []"},{"line_number":3655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6e4c8704_2612e134","line":3652,"range":{"start_line":3652,"start_character":32,"end_line":3652,"end_character":55},"in_reply_to":"cd84a2ad_4b393d0c","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"91421d4ca10570c4d44563fa3737a3e1f01c13f9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e5d65919abeed46d33f5f672f52fef96342dc005","unresolved":true,"context_lines":[{"line_number":3825,"context_line":"                                constants.BINDING_PROFILE] \u003d binding_profile"},{"line_number":3826,"context_line":"                        else:"},{"line_number":3827,"context_line":"                            raise exception.PortUpdateFailed("},{"line_number":3828,"context_line":"                                port_id\u003dport_dict[\u0027id\u0027],"},{"line_number":3829,"context_line":"                                reason\u003d_(\"Unable to correlate PCI slot %s\") %"},{"line_number":3830,"context_line":"                                pci_slot)"},{"line_number":3831,"context_line":"                # NOTE(artom) If migration is None, this is an unshelve, and we"},{"line_number":3832,"context_line":"                # need to figure out the pci related binding information from"},{"line_number":3833,"context_line":"                # the InstancePCIRequest and PciDevice objects."}],"source_content_type":"text/x-python","patch_set":5,"id":"1e3f7f3c_11510afd","line":3830,"range":{"start_line":3828,"start_character":0,"end_line":3830,"end_character":41},"updated":"2025-08-12 07:43:09.000000000","message":"strange that none of pep8 tasks hit me in the face for the previous formatting ....","commit_id":"8e2e229cdc7232d3ee4089826b83aa25ca211866"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":3825,"context_line":"                                constants.BINDING_PROFILE] \u003d binding_profile"},{"line_number":3826,"context_line":"                        else:"},{"line_number":3827,"context_line":"                            raise exception.PortUpdateFailed("},{"line_number":3828,"context_line":"                                port_id\u003dport_dict[\u0027id\u0027],"},{"line_number":3829,"context_line":"                                reason\u003d_(\"Unable to correlate PCI slot %s\") %"},{"line_number":3830,"context_line":"                                pci_slot)"},{"line_number":3831,"context_line":"                # NOTE(artom) If migration is None, this is an unshelve, and we"},{"line_number":3832,"context_line":"                # need to figure out the pci related binding information from"},{"line_number":3833,"context_line":"                # the InstancePCIRequest and PciDevice objects."}],"source_content_type":"text/x-python","patch_set":5,"id":"32fd989f_242a36ad","line":3830,"range":{"start_line":3828,"start_character":0,"end_line":3830,"end_character":41},"in_reply_to":"1e3f7f3c_11510afd","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"8e2e229cdc7232d3ee4089826b83aa25ca211866"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0645eacb506fc1ea7c3447ebe00e970f8b70a621","unresolved":true,"context_lines":[{"line_number":483,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":484,"context_line":"        else:"},{"line_number":485,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":486,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: project_id, \u0027is_shared\u0027: False}"},{"line_number":487,"context_line":"            if auto_allocate:"},{"line_number":488,"context_line":"                # The auto-allocated-topology extension may create complex"},{"line_number":489,"context_line":"                # network topologies and it does so in a non-transactional"}],"source_content_type":"text/x-python","patch_set":9,"id":"69ca8dc1_22989279","line":486,"range":{"start_line":486,"start_character":28,"end_line":486,"end_character":37},"updated":"2025-09-19 17:54:02.000000000","message":"I have to push a patch for SDK to make it possible to filter by tenant_id.....","commit_id":"2af94e80844b0bad60c5c347baf45a9e97d38572"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d1061d31d2a833f710f3a43cc99e12f0ef42bd6c","unresolved":true,"context_lines":[{"line_number":483,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":484,"context_line":"        else:"},{"line_number":485,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":486,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: project_id, \u0027is_shared\u0027: False}"},{"line_number":487,"context_line":"            if auto_allocate:"},{"line_number":488,"context_line":"                # The auto-allocated-topology extension may create complex"},{"line_number":489,"context_line":"                # network topologies and it does so in a non-transactional"}],"source_content_type":"text/x-python","patch_set":9,"id":"564bbefa_9f4fb542","line":486,"range":{"start_line":486,"start_character":28,"end_line":486,"end_character":37},"in_reply_to":"01952093_1e6f33f0","updated":"2025-09-23 13:31:35.000000000","message":"I think (that needs to be confirmed) that we are removing tenant_id internally and setting project_id","commit_id":"2af94e80844b0bad60c5c347baf45a9e97d38572"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"63134e6eaa44a9c25fb95d8a5789b0b80a7c7323","unresolved":true,"context_lines":[{"line_number":483,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":484,"context_line":"        else:"},{"line_number":485,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":486,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: project_id, \u0027is_shared\u0027: False}"},{"line_number":487,"context_line":"            if auto_allocate:"},{"line_number":488,"context_line":"                # The auto-allocated-topology extension may create complex"},{"line_number":489,"context_line":"                # network topologies and it does so in a non-transactional"}],"source_content_type":"text/x-python","patch_set":9,"id":"f0e0629a_989ee3b3","line":486,"range":{"start_line":486,"start_character":28,"end_line":486,"end_character":37},"in_reply_to":"564bbefa_9f4fb542","updated":"2025-09-24 08:44:21.000000000","message":"+1, thanks. Project_id works for filtering with SDK so I have to be careful to use that everywhere.","commit_id":"2af94e80844b0bad60c5c347baf45a9e97d38572"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4ad8a3def066d3ae004cc0ff07a7fc71c10c96ab","unresolved":true,"context_lines":[{"line_number":483,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":484,"context_line":"        else:"},{"line_number":485,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":486,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: project_id, \u0027is_shared\u0027: False}"},{"line_number":487,"context_line":"            if auto_allocate:"},{"line_number":488,"context_line":"                # The auto-allocated-topology extension may create complex"},{"line_number":489,"context_line":"                # network topologies and it does so in a non-transactional"}],"source_content_type":"text/x-python","patch_set":9,"id":"01952093_1e6f33f0","line":486,"range":{"start_line":486,"start_character":28,"end_line":486,"end_character":37},"in_reply_to":"69ca8dc1_22989279","updated":"2025-09-22 07:48:16.000000000","message":"project_id seems to be working as filter, surprise, surprise....","commit_id":"2af94e80844b0bad60c5c347baf45a9e97d38572"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":484,"context_line":"        else:"},{"line_number":485,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":486,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: project_id, \u0027is_shared\u0027: False}"},{"line_number":487,"context_line":"            if auto_allocate:"},{"line_number":488,"context_line":"                # The auto-allocated-topology extension may create complex"},{"line_number":489,"context_line":"                # network topologies and it does so in a non-transactional"}],"source_content_type":"text/x-python","patch_set":9,"id":"0e99d1db_053d88fc","line":486,"range":{"start_line":486,"start_character":28,"end_line":486,"end_character":37},"in_reply_to":"f0e0629a_989ee3b3","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"2af94e80844b0bad60c5c347baf45a9e97d38572"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":233,"context_line":"    # call will be migrated away from neutronclient to SDK. Till that"},{"line_number":234,"context_line":"    # to avoid cases when we change client due to unfinished move to SDK"},{"line_number":235,"context_line":"    # let\u0027s reset those _AUTHS and _SESSIONS globals in service_auth"},{"line_number":236,"context_line":"    service_auth.reset_globals()"},{"line_number":237,"context_line":"    session \u003d service_auth.get_service_auth_session("},{"line_number":238,"context_line":"            nova.conf.neutron.NEUTRON_GROUP, auth\u003dauth_plugin)"},{"line_number":239,"context_line":"    c \u003d openstack.connection.Connection("}],"source_content_type":"text/x-python","patch_set":20,"id":"fbfe6f4e_790957cd","line":236,"updated":"2026-02-02 19:15:11.000000000","message":"Does it mean that now (until the transition is done) nova will do a lot more work as each get_*_client() call will cause that we build up those constructs in service_auth again? If so could we have two sets of cached data one for the old client and one for the new client used selectively?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    # call will be migrated away from neutronclient to SDK. Till that"},{"line_number":234,"context_line":"    # to avoid cases when we change client due to unfinished move to SDK"},{"line_number":235,"context_line":"    # let\u0027s reset those _AUTHS and _SESSIONS globals in service_auth"},{"line_number":236,"context_line":"    service_auth.reset_globals()"},{"line_number":237,"context_line":"    session \u003d service_auth.get_service_auth_session("},{"line_number":238,"context_line":"            nova.conf.neutron.NEUTRON_GROUP, auth\u003dauth_plugin)"},{"line_number":239,"context_line":"    c \u003d openstack.connection.Connection("}],"source_content_type":"text/x-python","patch_set":20,"id":"c68b49af_1873b317","line":236,"in_reply_to":"cd588496_e074a4ef","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":233,"context_line":"    # call will be migrated away from neutronclient to SDK. Till that"},{"line_number":234,"context_line":"    # to avoid cases when we change client due to unfinished move to SDK"},{"line_number":235,"context_line":"    # let\u0027s reset those _AUTHS and _SESSIONS globals in service_auth"},{"line_number":236,"context_line":"    service_auth.reset_globals()"},{"line_number":237,"context_line":"    session \u003d service_auth.get_service_auth_session("},{"line_number":238,"context_line":"            nova.conf.neutron.NEUTRON_GROUP, auth\u003dauth_plugin)"},{"line_number":239,"context_line":"    c \u003d openstack.connection.Connection("}],"source_content_type":"text/x-python","patch_set":20,"id":"cd588496_e074a4ef","line":236,"in_reply_to":"fbfe6f4e_790957cd","updated":"2026-02-05 18:58:41.000000000","message":"This part was refactored here: https://review.opendev.org/c/openstack/nova/+/974267/2/nova/service_auth.py\n\nSo my idea was to change the way _SESSIONS and _AUTHS these things but as that was part of the TPM work, I tried to avoid messing with that. So perhaps I create a separate dict for neutron and sdk_neutron, I will check that.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":455,"context_line":"            # If user has specified to attach instance only to specific"},{"line_number":456,"context_line":"            # networks then only add these to **search_opts. This search will"},{"line_number":457,"context_line":"            # also include \u0027shared\u0027 networks."},{"line_number":458,"context_line":"            nets_dict \u003d []"},{"line_number":459,"context_line":"            search_opts \u003d {\u0027id\u0027: net_ids}"},{"line_number":460,"context_line":"            nets \u003d list(neutron.networks(**search_opts))"},{"line_number":461,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"}],"source_content_type":"text/x-python","patch_set":20,"id":"d0e08e71_c096ed8f","line":458,"updated":"2026-02-02 19:15:11.000000000","message":"nit: the `[]` value set here is never used as L461 overwrites it anyhow. You can drop the variable declaration","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            # If user has specified to attach instance only to specific"},{"line_number":456,"context_line":"            # networks then only add these to **search_opts. This search will"},{"line_number":457,"context_line":"            # also include \u0027shared\u0027 networks."},{"line_number":458,"context_line":"            nets_dict \u003d []"},{"line_number":459,"context_line":"            search_opts \u003d {\u0027id\u0027: net_ids}"},{"line_number":460,"context_line":"            nets \u003d list(neutron.networks(**search_opts))"},{"line_number":461,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"}],"source_content_type":"text/x-python","patch_set":20,"id":"83327f8d_00490791","line":458,"in_reply_to":"d0e08e71_c096ed8f","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":457,"context_line":"            # also include \u0027shared\u0027 networks."},{"line_number":458,"context_line":"            nets_dict \u003d []"},{"line_number":459,"context_line":"            search_opts \u003d {\u0027id\u0027: net_ids}"},{"line_number":460,"context_line":"            nets \u003d list(neutron.networks(**search_opts))"},{"line_number":461,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":464,"context_line":"            search_opts \u003d {\u0027project_id\u0027: project_id, \u0027is_shared\u0027: False}"}],"source_content_type":"text/x-python","patch_set":20,"id":"11b7d37f_536e6503","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":55},"updated":"2026-02-02 19:15:11.000000000","message":"nit:\n```\nnets_dict \u003d [net.to_dict() for net in neutron.networks(**search_opts)]\n```","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            # also include \u0027shared\u0027 networks."},{"line_number":458,"context_line":"            nets_dict \u003d []"},{"line_number":459,"context_line":"            search_opts \u003d {\u0027id\u0027: net_ids}"},{"line_number":460,"context_line":"            nets \u003d list(neutron.networks(**search_opts))"},{"line_number":461,"context_line":"            nets_dict \u003d [net.to_dict() for net in nets]"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            # (1) Retrieve non-public network list owned by the tenant."},{"line_number":464,"context_line":"            search_opts \u003d {\u0027project_id\u0027: project_id, \u0027is_shared\u0027: False}"}],"source_content_type":"text/x-python","patch_set":20,"id":"a00a870b_12d6297f","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":55},"in_reply_to":"11b7d37f_536e6503","updated":"2026-02-05 19:04:32.000000000","message":"thanks","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        :param context: The request context."},{"line_number":646,"context_line":"        :param ports: list of port IDs."},{"line_number":647,"context_line":"        :param neutron: neutron client for the current context."},{"line_number":648,"context_line":"        :param port_client: The client with appropriate karma for"},{"line_number":649,"context_line":"            updating the ports."},{"line_number":650,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"6315df53_8a247754","line":647,"updated":"2026-02-02 19:15:11.000000000","message":"sdk_neutron is missing here","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        :param context: The request context."},{"line_number":646,"context_line":"        :param ports: list of port IDs."},{"line_number":647,"context_line":"        :param neutron: neutron client for the current context."},{"line_number":648,"context_line":"        :param port_client: The client with appropriate karma for"},{"line_number":649,"context_line":"            updating the ports."},{"line_number":650,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"369f1b3f_bb41d76d","line":647,"in_reply_to":"6315df53_8a247754","updated":"2026-02-05 19:04:32.000000000","message":"thanks, I hope checked all the docstrings","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        :param context: The request context."},{"line_number":959,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":960,"context_line":"        :param neutron: neutron client"},{"line_number":961,"context_line":"        :param requested_networks: nova.objects.NetworkRequestList, list of"},{"line_number":962,"context_line":"            user-requested networks and/or ports; may be empty"},{"line_number":963,"context_line":"        :param ordered_networks: output from _validate_requested_port_ids"}],"source_content_type":"text/x-python","patch_set":20,"id":"a60c58f2_0f30b99b","line":960,"updated":"2026-02-02 19:15:11.000000000","message":"sync the doc with the param rename","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":957,"context_line":""},{"line_number":958,"context_line":"        :param context: The request context."},{"line_number":959,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":960,"context_line":"        :param neutron: neutron client"},{"line_number":961,"context_line":"        :param requested_networks: nova.objects.NetworkRequestList, list of"},{"line_number":962,"context_line":"            user-requested networks and/or ports; may be empty"},{"line_number":963,"context_line":"        :param ordered_networks: output from _validate_requested_port_ids"}],"source_content_type":"text/x-python","patch_set":20,"id":"3c062222_e7412bea","line":960,"in_reply_to":"a60c58f2_0f30b99b","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":1022,"context_line":"        # NOTE(melwitt): check external net attach permission after the"},{"line_number":1023,"context_line":"        #                check for ambiguity, there could be another"},{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"2e81c4b4_bab05cfe","line":1025,"updated":"2026-02-02 19:15:11.000000000","message":"does this call takes now sdk objects instead of dicts?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":1022,"context_line":"        # NOTE(melwitt): check external net attach permission after the"},{"line_number":1023,"context_line":"        #                check for ambiguity, there could be another"},{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"c27aeae4_253d3f3e","line":1025,"in_reply_to":"2e81c4b4_bab05cfe","updated":"2026-02-05 18:58:41.000000000","message":"No, I kept the dict everywhere, so _get_available_networks returns with dict.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"        # NOTE(melwitt): check external net attach permission after the"},{"line_number":1023,"context_line":"        #                check for ambiguity, there could be another"},{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"db85a14d_8ca6d935","line":1025,"in_reply_to":"c27aeae4_253d3f3e","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"    def _create_ports_for_instance(self, context, instance, ordered_networks,"},{"line_number":1030,"context_line":"            nets, neutron, security_group_ids):"}],"source_content_type":"text/x-python","patch_set":20,"id":"c2dbbabc_8cc5fe12","line":1027,"updated":"2026-02-02 19:15:11.000000000","message":"is this work without a to_dict() call when net is an sdk object?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"    def _create_ports_for_instance(self, context, instance, ordered_networks,"},{"line_number":1030,"context_line":"            nets, neutron, security_group_ids):"}],"source_content_type":"text/x-python","patch_set":20,"id":"b03e8845_88f7bb4f","line":1027,"in_reply_to":"640a7095_d1a62594","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":1024,"context_line":"        #                available net which is permitted bug/1364344"},{"line_number":1025,"context_line":"        self._check_external_network_attach(context, nets)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        return {net[\u0027id\u0027]: net for net in nets}"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"    def _create_ports_for_instance(self, context, instance, ordered_networks,"},{"line_number":1030,"context_line":"            nets, neutron, security_group_ids):"}],"source_content_type":"text/x-python","patch_set":20,"id":"640a7095_d1a62594","line":1027,"in_reply_to":"c2dbbabc_8cc5fe12","updated":"2026-02-05 18:58:41.000000000","message":"as I remember sdk objects can behave like dicts, but with extras 😊 :\nhttps://opendev.org/openstack/openstacksdk/src/commit/7afe210333ec236a14fc5fa2d4a589e481a43745/openstack/resource.py#L368","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":1033,"context_line":"        :param context: The request context."},{"line_number":1034,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":1035,"context_line":"        :param ordered_networks: objects.NetworkRequestList in requested order"},{"line_number":1036,"context_line":"        :param nets: a dict of network_id to networks returned from neutron"},{"line_number":1037,"context_line":"        :param neutron: neutronclient built from users request context"},{"line_number":1038,"context_line":"        :param security_group_ids: a list of security group IDs to be applied"},{"line_number":1039,"context_line":"            to any ports created"}],"source_content_type":"text/x-python","patch_set":20,"id":"a49a4dcb_39c8969f","line":1036,"range":{"start_line":1036,"start_character":45,"end_line":1036,"end_character":75},"updated":"2026-02-02 19:15:11.000000000","message":"is this now returned via the sdk hence the field name changes below?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        :param context: The request context."},{"line_number":1034,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":1035,"context_line":"        :param ordered_networks: objects.NetworkRequestList in requested order"},{"line_number":1036,"context_line":"        :param nets: a dict of network_id to networks returned from neutron"},{"line_number":1037,"context_line":"        :param neutron: neutronclient built from users request context"},{"line_number":1038,"context_line":"        :param security_group_ids: a list of security group IDs to be applied"},{"line_number":1039,"context_line":"            to any ports created"}],"source_content_type":"text/x-python","patch_set":20,"id":"5268529e_7e769c15","line":1036,"range":{"start_line":1036,"start_character":45,"end_line":1036,"end_character":75},"in_reply_to":"4e31026f_a3917188","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":1033,"context_line":"        :param context: The request context."},{"line_number":1034,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":1035,"context_line":"        :param ordered_networks: objects.NetworkRequestList in requested order"},{"line_number":1036,"context_line":"        :param nets: a dict of network_id to networks returned from neutron"},{"line_number":1037,"context_line":"        :param neutron: neutronclient built from users request context"},{"line_number":1038,"context_line":"        :param security_group_ids: a list of security group IDs to be applied"},{"line_number":1039,"context_line":"            to any ports created"}],"source_content_type":"text/x-python","patch_set":20,"id":"4e31026f_a3917188","line":1036,"range":{"start_line":1036,"start_character":45,"end_line":1036,"end_character":75},"in_reply_to":"a49a4dcb_39c8969f","updated":"2026-02-05 18:58:41.000000000","message":"yes, SDK uses slightly different naming conventions than what we have on the API ( for network: https://opendev.org/openstack/openstacksdk/src/commit/7afe210333ec236a14fc5fa2d4a589e481a43745/openstack/network/v2/network.py )\n\nso a translation is necessary like admin_state_up \u003d\u003e is_admin_state_up, subnet_ids \u003d\u003e subnets etc...","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2218,"context_line":"        \"\"\"Retrieve detailed network info."},{"line_number":2219,"context_line":""},{"line_number":2220,"context_line":"        :param context: The request context."},{"line_number":2221,"context_line":"        :param neutron: The neutron client object."},{"line_number":2222,"context_line":"        :param net_id: The ID of the network to retrieve information for."},{"line_number":2223,"context_line":""},{"line_number":2224,"context_line":"        :return: A tuple containing the physnet name, if defined, and the"}],"source_content_type":"text/x-python","patch_set":20,"id":"83b03e0d_d03d30d2","line":2221,"updated":"2026-02-02 19:15:11.000000000","message":"missing param","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":2218,"context_line":"        \"\"\"Retrieve detailed network info."},{"line_number":2219,"context_line":""},{"line_number":2220,"context_line":"        :param context: The request context."},{"line_number":2221,"context_line":"        :param neutron: The neutron client object."},{"line_number":2222,"context_line":"        :param net_id: The ID of the network to retrieve information for."},{"line_number":2223,"context_line":""},{"line_number":2224,"context_line":"        :return: A tuple containing the physnet name, if defined, and the"}],"source_content_type":"text/x-python","patch_set":20,"id":"32faaed9_0302cbe0","line":2221,"in_reply_to":"83b03e0d_d03d30d2","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2229,"context_line":"        if self.has_multi_provider_extension(client\u003dneutron):"},{"line_number":2230,"context_line":"            network \u003d sdk_neutron.get_network(net_id).to_dict()"},{"line_number":2231,"context_line":"            segments \u003d network.get(\u0027segments\u0027, {})"},{"line_number":2232,"context_line":"            if segments:"},{"line_number":2233,"context_line":"                for net in segments:"},{"line_number":2234,"context_line":"                    # NOTE(vladikr): In general, \"multi-segments\" network is a"},{"line_number":2235,"context_line":"                    # combination of L2 segments. The current implementation"}],"source_content_type":"text/x-python","patch_set":20,"id":"3b8edee0_0a76bfb6","line":2232,"updated":"2026-02-02 19:15:11.000000000","message":"Can segments be None now? It seem previously the key was either missing from the dict or it was a dict.\n\nBtw if it can be none then you can avoid the extra nesting by\n```\nsegments \u003d network.get(\u0027segment\u0027, {}) or {}\n```","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":2229,"context_line":"        if self.has_multi_provider_extension(client\u003dneutron):"},{"line_number":2230,"context_line":"            network \u003d sdk_neutron.get_network(net_id).to_dict()"},{"line_number":2231,"context_line":"            segments \u003d network.get(\u0027segments\u0027, {})"},{"line_number":2232,"context_line":"            if segments:"},{"line_number":2233,"context_line":"                for net in segments:"},{"line_number":2234,"context_line":"                    # NOTE(vladikr): In general, \"multi-segments\" network is a"},{"line_number":2235,"context_line":"                    # combination of L2 segments. The current implementation"}],"source_content_type":"text/x-python","patch_set":20,"id":"e9f34487_6e2c5df9","line":2232,"in_reply_to":"3b8edee0_0a76bfb6","updated":"2026-02-05 18:58:41.000000000","message":"yes it can, SDK unlike dicts from n-client always have all the fields, but the ones that are not returned by Neutron in this case will be None\nthanks.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":2229,"context_line":"        if self.has_multi_provider_extension(client\u003dneutron):"},{"line_number":2230,"context_line":"            network \u003d sdk_neutron.get_network(net_id).to_dict()"},{"line_number":2231,"context_line":"            segments \u003d network.get(\u0027segments\u0027, {})"},{"line_number":2232,"context_line":"            if segments:"},{"line_number":2233,"context_line":"                for net in segments:"},{"line_number":2234,"context_line":"                    # NOTE(vladikr): In general, \"multi-segments\" network is a"},{"line_number":2235,"context_line":"                    # combination of L2 segments. The current implementation"}],"source_content_type":"text/x-python","patch_set":20,"id":"39ddab4f_9f655a65","line":2232,"in_reply_to":"e9f34487_6e2c5df9","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2522,"context_line":"                      str(ex))"},{"line_number":2523,"context_line":"            return False"},{"line_number":2524,"context_line":""},{"line_number":2525,"context_line":"    def _auto_allocate_network(self, instance, neutron):"},{"line_number":2526,"context_line":"        \"\"\"Automatically allocates a network for the given project."},{"line_number":2527,"context_line":""},{"line_number":2528,"context_line":"        :param instance: create the network for the project that owns this"}],"source_content_type":"text/x-python","patch_set":20,"id":"ed5caa51_1288a1e5","line":2525,"range":{"start_line":2525,"start_character":47,"end_line":2525,"end_character":54},"updated":"2026-02-02 19:15:11.000000000","message":"Do we want to rename this to sdk_neutron for consistency with the rest of the param names?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":2522,"context_line":"                      str(ex))"},{"line_number":2523,"context_line":"            return False"},{"line_number":2524,"context_line":""},{"line_number":2525,"context_line":"    def _auto_allocate_network(self, instance, neutron):"},{"line_number":2526,"context_line":"        \"\"\"Automatically allocates a network for the given project."},{"line_number":2527,"context_line":""},{"line_number":2528,"context_line":"        :param instance: create the network for the project that owns this"}],"source_content_type":"text/x-python","patch_set":20,"id":"413a981b_bfea571b","line":2525,"range":{"start_line":2525,"start_character":47,"end_line":2525,"end_character":54},"in_reply_to":"ed5caa51_1288a1e5","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2542,"context_line":"            raise exception.UnableToAutoAllocateNetwork(project_id\u003dproject_id)"},{"line_number":2543,"context_line":""},{"line_number":2544,"context_line":"        try:"},{"line_number":2545,"context_line":"            network \u003d neutron.get_network(topology[\u0027id\u0027])"},{"line_number":2546,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2547,"context_line":"            # This shouldn\u0027t happen since we just created the network, but"},{"line_number":2548,"context_line":"            # handle it anyway."}],"source_content_type":"text/x-python","patch_set":20,"id":"a6d48ab2_c57a6aae","line":2545,"updated":"2026-02-02 19:15:11.000000000","message":"I\u0027m wondering if we need a to_dict() call here as this is now an sdk call","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":2542,"context_line":"            raise exception.UnableToAutoAllocateNetwork(project_id\u003dproject_id)"},{"line_number":2543,"context_line":""},{"line_number":2544,"context_line":"        try:"},{"line_number":2545,"context_line":"            network \u003d neutron.get_network(topology[\u0027id\u0027])"},{"line_number":2546,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2547,"context_line":"            # This shouldn\u0027t happen since we just created the network, but"},{"line_number":2548,"context_line":"            # handle it anyway."}],"source_content_type":"text/x-python","patch_set":20,"id":"b41bb392_bcb72d94","line":2545,"in_reply_to":"8cf9c461_1c2407a7","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":true,"context_lines":[{"line_number":2542,"context_line":"            raise exception.UnableToAutoAllocateNetwork(project_id\u003dproject_id)"},{"line_number":2543,"context_line":""},{"line_number":2544,"context_line":"        try:"},{"line_number":2545,"context_line":"            network \u003d neutron.get_network(topology[\u0027id\u0027])"},{"line_number":2546,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2547,"context_line":"            # This shouldn\u0027t happen since we just created the network, but"},{"line_number":2548,"context_line":"            # handle it anyway."}],"source_content_type":"text/x-python","patch_set":20,"id":"8cf9c461_1c2407a7","line":2545,"in_reply_to":"a6d48ab2_c57a6aae","updated":"2026-02-05 19:04:32.000000000","message":"to keep all the callers happy I return with the good old dict.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2559,"context_line":"                                   requested_networks):"},{"line_number":2560,"context_line":""},{"line_number":2561,"context_line":"        LOG.info(\u0027_ports_needed_per_instance requested_netwokrs\u003d%s\u0027,"},{"line_number":2562,"context_line":"                 requested_networks)"},{"line_number":2563,"context_line":"        # TODO(danms): Remove me when all callers pass an object"},{"line_number":2564,"context_line":"        if requested_networks and isinstance(requested_networks[0], tuple):"},{"line_number":2565,"context_line":"            requested_networks \u003d objects.NetworkRequestList.from_tuples("}],"source_content_type":"text/x-python","patch_set":20,"id":"2205732d_87b9ae1b","line":2562,"updated":"2026-02-02 19:15:11.000000000","message":"probably remaining here from debugging","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":true,"context_lines":[{"line_number":2559,"context_line":"                                   requested_networks):"},{"line_number":2560,"context_line":""},{"line_number":2561,"context_line":"        LOG.info(\u0027_ports_needed_per_instance requested_netwokrs\u003d%s\u0027,"},{"line_number":2562,"context_line":"                 requested_networks)"},{"line_number":2563,"context_line":"        # TODO(danms): Remove me when all callers pass an object"},{"line_number":2564,"context_line":"        if requested_networks and isinstance(requested_networks[0], tuple):"},{"line_number":2565,"context_line":"            requested_networks \u003d objects.NetworkRequestList.from_tuples("}],"source_content_type":"text/x-python","patch_set":20,"id":"f640ab2d_1ef55679","line":2562,"in_reply_to":"2205732d_87b9ae1b","updated":"2026-02-05 19:04:32.000000000","message":"true, I removed","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":2559,"context_line":"                                   requested_networks):"},{"line_number":2560,"context_line":""},{"line_number":2561,"context_line":"        LOG.info(\u0027_ports_needed_per_instance requested_netwokrs\u003d%s\u0027,"},{"line_number":2562,"context_line":"                 requested_networks)"},{"line_number":2563,"context_line":"        # TODO(danms): Remove me when all callers pass an object"},{"line_number":2564,"context_line":"        if requested_networks and isinstance(requested_networks[0], tuple):"},{"line_number":2565,"context_line":"            requested_networks \u003d objects.NetworkRequestList.from_tuples("}],"source_content_type":"text/x-python","patch_set":20,"id":"09f427ec_606e1fd9","line":2562,"in_reply_to":"f640ab2d_1ef55679","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":2906,"context_line":"        \"\"\"Get specific network for client.\"\"\""},{"line_number":2907,"context_line":"        client \u003d get_network_client(context)"},{"line_number":2908,"context_line":"        try:"},{"line_number":2909,"context_line":"            return client.get_network(network_uuid).to_dict() or {}"},{"line_number":2910,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2911,"context_line":"            raise exception.NetworkNotFound(network_id\u003dnetwork_uuid)"},{"line_number":2912,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bdd1a4d9_be90a089","line":2909,"range":{"start_line":2909,"start_character":52,"end_line":2909,"end_character":67},"updated":"2026-02-02 19:15:11.000000000","message":"Could you double check if to_dict() can ever return something that is not a dict? If it always returns a dict then you can drop `or {}`","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":2906,"context_line":"        \"\"\"Get specific network for client.\"\"\""},{"line_number":2907,"context_line":"        client \u003d get_network_client(context)"},{"line_number":2908,"context_line":"        try:"},{"line_number":2909,"context_line":"            return client.get_network(network_uuid).to_dict() or {}"},{"line_number":2910,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2911,"context_line":"            raise exception.NetworkNotFound(network_id\u003dnetwork_uuid)"},{"line_number":2912,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f48e0e8c_63f709d9","line":2909,"range":{"start_line":2909,"start_character":52,"end_line":2909,"end_character":67},"in_reply_to":"1bff61d7_f34f74f7","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":2906,"context_line":"        \"\"\"Get specific network for client.\"\"\""},{"line_number":2907,"context_line":"        client \u003d get_network_client(context)"},{"line_number":2908,"context_line":"        try:"},{"line_number":2909,"context_line":"            return client.get_network(network_uuid).to_dict() or {}"},{"line_number":2910,"context_line":"        except sdk_exc.NotFoundException:"},{"line_number":2911,"context_line":"            raise exception.NetworkNotFound(network_id\u003dnetwork_uuid)"},{"line_number":2912,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1bff61d7_f34f74f7","line":2909,"range":{"start_line":2909,"start_character":52,"end_line":2909,"end_character":67},"in_reply_to":"bdd1a4d9_be90a089","updated":"2026-02-05 18:58:41.000000000","message":"true, done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":3522,"context_line":"            client \u003d get_client(context, admin\u003dTrue)"},{"line_number":3523,"context_line":"        else:"},{"line_number":3524,"context_line":"            client \u003d admin_client"},{"line_number":3525,"context_line":"        sdk_neutron \u003d get_network_client(context)"},{"line_number":3526,"context_line":""},{"line_number":3527,"context_line":"        data \u003d client.list_ports(**search_opts)"},{"line_number":3528,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"778f3d5f_e9d05a31","line":3525,"updated":"2026-02-02 19:15:11.000000000","message":"maybe sdk_client is more consistent here. (Or you can take the opportunity and move each occasion of sdk_* as you transform to a single postfix either neutron or client)","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":false,"context_lines":[{"line_number":3522,"context_line":"            client \u003d get_client(context, admin\u003dTrue)"},{"line_number":3523,"context_line":"        else:"},{"line_number":3524,"context_line":"            client \u003d admin_client"},{"line_number":3525,"context_line":"        sdk_neutron \u003d get_network_client(context)"},{"line_number":3526,"context_line":""},{"line_number":3527,"context_line":"        data \u003d client.list_ports(**search_opts)"},{"line_number":3528,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a39c4f7a_33f26484","line":3525,"in_reply_to":"778f3d5f_e9d05a31","updated":"2026-02-05 19:04:32.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"}],"nova/tests/fixtures/neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":867,"context_line":"        if network_id not in self._networks:"},{"line_number":868,"context_line":"            raise sdk_exceptions.NotFoundException()"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("}],"source_content_type":"text/x-python","patch_set":20,"id":"055b3d93_4ec5a845","line":870,"updated":"2026-02-02 19:15:11.000000000","message":"I guess the deepcopy here was intentional to avoid that the caller modifying the returned object has an effect on the simulated neutron server here. I see that now we are constructing a wrapper. So scalar fields probably OK as they are copied into the fields of sdk_net.Network but I don\u0027t know what happens with list and dicts from self._networks[id].","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4b3b4115f993228dfb39aab44ec3014bc769d7d7","unresolved":true,"context_lines":[{"line_number":867,"context_line":"        if network_id not in self._networks:"},{"line_number":868,"context_line":"            raise sdk_exceptions.NotFoundException()"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("}],"source_content_type":"text/x-python","patch_set":20,"id":"dc70ff13_1799c790","line":870,"in_reply_to":"055b3d93_4ec5a845","updated":"2026-02-05 19:04:32.000000000","message":"good catch. I tested it to be sure and it seems when we create an instance of SDK network for example it even creates new references for lists but let\u0027s have on the safe side.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":867,"context_line":"        if network_id not in self._networks:"},{"line_number":868,"context_line":"            raise sdk_exceptions.NotFoundException()"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("}],"source_content_type":"text/x-python","patch_set":20,"id":"8070b302_0a112910","line":870,"in_reply_to":"dc70ff13_1799c790","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37cbb5585939a9a2a853705f4d2fed82672d0161","unresolved":true,"context_lines":[{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("},{"line_number":874,"context_line":"                self._networks, retrieve_all, **_params,"},{"line_number":875,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":20,"id":"3c70830b_0b878f84","line":872,"updated":"2026-02-02 19:15:11.000000000","message":"does retrieve_all part of the new interface? Could you point me where the sdk defines these functions?","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8426ec98105a59af44beb1c12f32024205318510","unresolved":true,"context_lines":[{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("},{"line_number":874,"context_line":"                self._networks, retrieve_all, **_params,"},{"line_number":875,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":20,"id":"4344040a_89f6d67e","line":872,"in_reply_to":"3c70830b_0b878f84","updated":"2026-02-05 18:58:41.000000000","message":"good catch, no it is not part, for networks:\nhttps://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/_proxy.py#L2433\n\nneutronclient has much more options for such things, like fetching only fields.","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98cd54a7bc16e52455e6f9d57acdb0c966a211bc","unresolved":false,"context_lines":[{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        return sdk_net.Network(**self._networks[network_id])"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def networks(self, retrieve_all\u003dTrue, **_params):"},{"line_number":873,"context_line":"        nets \u003d self._list_resource("},{"line_number":874,"context_line":"                self._networks, retrieve_all, **_params,"},{"line_number":875,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":20,"id":"b32b9f35_36e15417","line":872,"in_reply_to":"4344040a_89f6d67e","updated":"2026-04-29 13:56:16.000000000","message":"Done","commit_id":"0af665c9a11f0e478cd1f23f7ed575573985facc"}]}
