)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"54e96c386d6c180f641d4ceccab5901778933b59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"472f99b9_446b2ee1","updated":"2026-01-28 10:38:47.000000000","message":"Updated per comments, fixed release not","commit_id":"42c5e8423566d8a0184a31fd3ecd9f27556bd832"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9d85473a732dd7df84b9eb772ed029a86a3805aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"74e38f69_0526c80f","updated":"2026-02-06 07:39:42.000000000","message":"tested subnets, networks, ports, qos policies with LBs, works great.\nsmall issue with the subnet parameter of the members.","commit_id":"aa30f848e166a4ba766201c55890cd56ad0cb1be"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a02f4fea5fb80f3fe106ace3cba5ca18a2c85424","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9ad22bc0_7a7744d3","updated":"2026-02-11 18:14:31.000000000","message":"LGTM","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f312da0b6a6745db49da929ff137d23c4e837ba0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"436c740b_edd920a4","updated":"2026-02-13 09:53:22.000000000","message":"looks like it\u0027s blocked\ni guess @rcruise@redhat.com will have to propose this patch again with a new Change-Id","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9bbdfb6fcb164308eaa79c2209d82b618f0304f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"539c5944_e5a4cc4d","updated":"2026-02-12 10:58:59.000000000","message":"recheck ci fixed","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"bca20a7dd237fad833babe2b8f75c91e650606fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9ad79703_7ac91ec1","updated":"2026-02-12 13:41:19.000000000","message":"recheck retriggering zuul","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":38360,"name":"Zachary Mark Raines","display_name":"Zachary Raines","email":"zachary.raines@canonical.com","username":"raineszm","status":"Sustaining Engineer @ Canonical"},"change_message_id":"6245c3582c255a2e293d2ecad9a955c966a205af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"538adac9_e4eb9e8b","updated":"2026-02-13 14:54:37.000000000","message":"LGTM. Thanks!","commit_id":"dc90b87720d9399b1a53914312901aa2d1b44c16"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"78c1cbfa91da42ae96b8b67176d6927fa1cf82fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9c0d108a_cc5e0835","updated":"2026-02-13 18:19:17.000000000","message":"LGTM","commit_id":"243eb60239476061324b40734738081311510268"}],"octaviaclient/osc/v2/utils.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"b3431e534e446976a4118d164acdab99b3f3dda0","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                         \u0027networks\u0027, \u0027policies\u0027,"},{"line_number":92,"context_line":"                         \u0027security_groups\u0027]:"},{"line_number":93,"context_line":"        resource \u003d list_funct(name)"},{"line_number":94,"context_line":"        return resource"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":97,"context_line":"    if uuidutils.is_uuid_like(name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"de2922e4_6747bd50","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":23},"updated":"2026-01-26 16:27:12.000000000","message":"By doing this, you\u0027re taking a shortcut with the error management (see line 105-107) when the resource doesn\u0027t exist, or multiple resources share the same name\n\nfor instance:\n```\n$ openstack loadbalancer create --vip-port portwg --name lb1 \n\u0027NoneType\u0027 object has no attribute \u0027get\u0027\n```\n\nit previously displayed\n```\n$ openstack loadbalancer create --vip-port portwg --name lb1 \nThe python binding code in neutronclient is deprecated in favor of OpenstackSDK, please use that as this will be removed in a future release.\nUnable to locate portwg in ports\n```","commit_id":"3df8df62e97ebc2be7604a945f70f8676ff872a3"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"a495312b9b2c1cc3f6145f1ed1e1ab67059f6685","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                         \u0027networks\u0027, \u0027policies\u0027,"},{"line_number":92,"context_line":"                         \u0027security_groups\u0027]:"},{"line_number":93,"context_line":"        resource \u003d list_funct(name)"},{"line_number":94,"context_line":"        return resource"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":97,"context_line":"    if uuidutils.is_uuid_like(name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"145dcb14_e05a537e","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":23},"in_reply_to":"bf475afa_95d01916","updated":"2026-01-29 10:37:00.000000000","message":"After some further thought I decided to rework the _find_resource function to both tidy up the repeated code and make better use of the Network API calls. \n\nThe new code now accounts for both duplicate resources and missing ones, similar to the old client calls","commit_id":"3df8df62e97ebc2be7604a945f70f8676ff872a3"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"54e96c386d6c180f641d4ceccab5901778933b59","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                         \u0027networks\u0027, \u0027policies\u0027,"},{"line_number":92,"context_line":"                         \u0027security_groups\u0027]:"},{"line_number":93,"context_line":"        resource \u003d list_funct(name)"},{"line_number":94,"context_line":"        return resource"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":97,"context_line":"    if uuidutils.is_uuid_like(name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf475afa_95d01916","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":23},"in_reply_to":"de2922e4_6747bd50","updated":"2026-01-28 10:38:47.000000000","message":"It\u0027s actually the logic on L130-132 which we\u0027re missing for resources not found. I\u0027ve added that logic back in along with the check for multiple resources\n\nI\u0027m not happy about the repeated code but it seemed the cleanest way without rewriting the whole function, which I\u0027d prefer to avoid for now","commit_id":"3df8df62e97ebc2be7604a945f70f8676ff872a3"},{"author":{"_account_id":38360,"name":"Zachary Mark Raines","display_name":"Zachary Raines","email":"zachary.raines@canonical.com","username":"raineszm","status":"Sustaining Engineer @ Canonical"},"change_message_id":"60e42c6aabc1a14bdf05a71b97dd8a28d6f979ec","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    resource \u003d None"},{"line_number":89,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":90,"context_line":"    if uuidutils.is_uuid_like(name):"},{"line_number":91,"context_line":"        # Try by ID first"},{"line_number":92,"context_line":"        resource \u003d get_resource_by_id(list_funct, name, root_tag, *parent_args)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # If the find by UUID didn\u0027t work then try by name"},{"line_number":95,"context_line":"    if not resource:"},{"line_number":96,"context_line":"        resource \u003d get_resource_by_name(list_funct, name, root_tag,"},{"line_number":97,"context_line":"                                        *parent_args)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    return resource"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"a71479d4_1e287923","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":1},"updated":"2026-01-29 21:55:35.000000000","message":"It looks like the root_tag arg is being passed to get_resource_by_* as the resource_name and resource_name isn\u0027t being used at all? Can we just get rid of root_tag when using the openstacksdk, since responses won\u0027t be wrapped in an extra layer of dict?","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":38360,"name":"Zachary Mark Raines","display_name":"Zachary Raines","email":"zachary.raines@canonical.com","username":"raineszm","status":"Sustaining Engineer @ Canonical"},"change_message_id":"2ad068d321320496b93dac0cfb8302b9e6659b85","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    resource \u003d None"},{"line_number":89,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":90,"context_line":"    if uuidutils.is_uuid_like(name):"},{"line_number":91,"context_line":"        # Try by ID first"},{"line_number":92,"context_line":"        resource \u003d get_resource_by_id(list_funct, name, root_tag, *parent_args)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # If the find by UUID didn\u0027t work then try by name"},{"line_number":95,"context_line":"    if not resource:"},{"line_number":96,"context_line":"        resource \u003d get_resource_by_name(list_funct, name, root_tag,"},{"line_number":97,"context_line":"                                        *parent_args)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    return resource"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"6a718b6c_a6b13e9f","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":1},"in_reply_to":"1751eaf8_52f675f9","updated":"2026-01-30 15:05:53.000000000","message":"Ah. But in the current patchset, the get_by_* functions don\u0027t take a root_tag argument. They only take resource_name. You\u0027re passing root_tag into this from _find_resource, but this then means that _find_resource doesn\u0027t use resource_name at all. Since _find_resource is only used in get_resource_id it\u0027s probably best to settle on root_tag or resource_name and get rid of the other in the function signature.","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"c79e570613f21480443e91ffb4e081238ca60498","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    resource \u003d None"},{"line_number":89,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":90,"context_line":"    if uuidutils.is_uuid_like(name):"},{"line_number":91,"context_line":"        # Try by ID first"},{"line_number":92,"context_line":"        resource \u003d get_resource_by_id(list_funct, name, root_tag, *parent_args)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # If the find by UUID didn\u0027t work then try by name"},{"line_number":95,"context_line":"    if not resource:"},{"line_number":96,"context_line":"        resource \u003d get_resource_by_name(list_funct, name, root_tag,"},{"line_number":97,"context_line":"                                        *parent_args)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    return resource"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"98b15eb4_31fae788","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":1},"in_reply_to":"6a718b6c_a6b13e9f","updated":"2026-02-03 11:46:00.000000000","message":"Looking at it a bit further, I think we need both root_tag and resource_name in get_resource_from_list_func\n\n90% of the time resource_name and root_tag are the same. However for L7 rules they\u0027re different (l7rules vs rules)\n\nThe resource_name is used in the exception message, so changing to match root_tag it would change the CLI output which could cause problems for users.\n\nAs annoying as special cases are, I think I\u0027ll need to pass both down to get_resource_from_list_func to make it work correctly without a user visible change","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0f4b6fea2f55252ce7cada49ad5012622962c9d4","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    resource \u003d None"},{"line_number":89,"context_line":"    # Optimize the API call order if we got a UUID-like name or not"},{"line_number":90,"context_line":"    if uuidutils.is_uuid_like(name):"},{"line_number":91,"context_line":"        # Try by ID first"},{"line_number":92,"context_line":"        resource \u003d get_resource_by_id(list_funct, name, root_tag, *parent_args)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # If the find by UUID didn\u0027t work then try by name"},{"line_number":95,"context_line":"    if not resource:"},{"line_number":96,"context_line":"        resource \u003d get_resource_by_name(list_funct, name, root_tag,"},{"line_number":97,"context_line":"                                        *parent_args)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    return resource"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1751eaf8_52f675f9","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":1},"in_reply_to":"a71479d4_1e287923","updated":"2026-01-30 14:34:37.000000000","message":"The get_resource_by_* functions can also use list functions from the rest of the Openstack client, which do return the dictionary format. So we still need the root_tag for those cases\n\nI think the root_tag and resource_name system was designed to give more readable names to resources (e.g. \"port\" and \"vip-port-id\"). It\u0027s a bit superfluous when using the SDK calls but I don\u0027t think we\u0027re fully able to get rid of it when using the OSC client calls","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"0f4b6fea2f55252ce7cada49ad5012622962c9d4","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        raise osc_exc.CommandError("},{"line_number":214,"context_line":"            \u0027Additional VIPs must include a subnet-id.\u0027)"},{"line_number":215,"context_line":"    subnet_id \u003d get_resource_id("},{"line_number":216,"context_line":"        client_manager.sdk_connection.network.find_subnet,"},{"line_number":217,"context_line":"        \u0027subnets\u0027, vip_dict[\u0027subnet_id\u0027])"},{"line_number":218,"context_line":"    vip_dict[\u0027subnet_id\u0027] \u003d subnet_id"},{"line_number":219,"context_line":"    if \u0027ip_address\u0027 in vip_dict:"}],"source_content_type":"text/x-python","patch_set":11,"id":"a52c5840_ccca82aa","line":216,"updated":"2026-01-30 14:34:37.000000000","message":"Just noticed this is the wrong function, should be network.subnets\n\nLeaving a note for myself to fix it","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"c79e570613f21480443e91ffb4e081238ca60498","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        raise osc_exc.CommandError("},{"line_number":214,"context_line":"            \u0027Additional VIPs must include a subnet-id.\u0027)"},{"line_number":215,"context_line":"    subnet_id \u003d get_resource_id("},{"line_number":216,"context_line":"        client_manager.sdk_connection.network.find_subnet,"},{"line_number":217,"context_line":"        \u0027subnets\u0027, vip_dict[\u0027subnet_id\u0027])"},{"line_number":218,"context_line":"    vip_dict[\u0027subnet_id\u0027] \u003d subnet_id"},{"line_number":219,"context_line":"    if \u0027ip_address\u0027 in vip_dict:"}],"source_content_type":"text/x-python","patch_set":11,"id":"d442c54b_45a672e9","line":216,"in_reply_to":"a52c5840_ccca82aa","updated":"2026-02-03 11:46:00.000000000","message":"Fixed now","commit_id":"ca4f20dccf9bf75229a41f8f1982cfc7025808de"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9d85473a732dd7df84b9eb772ed029a86a3805aa","unresolved":true,"context_lines":[{"line_number":117,"context_line":"def get_resource_from_list_func(list_func, resource_name, root_tag, *args,"},{"line_number":118,"context_line":"                                **kwargs):"},{"line_number":119,"context_line":"    # For some network resources we need to use the SDK which doesn\u0027t"},{"line_number":120,"context_line":"    # return a dict (and doesn\u0027t required the root_tag)"},{"line_number":121,"context_line":"    if resource_name in [\u0027subnets\u0027, \u0027ports\u0027,"},{"line_number":122,"context_line":"                         \u0027networks\u0027, \u0027policies\u0027,"},{"line_number":123,"context_line":"                         \u0027security_groups\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"06e4ec14_cd7bd691","line":120,"range":{"start_line":120,"start_character":40,"end_line":120,"end_character":41},"updated":"2026-02-06 07:39:42.000000000","message":"typo","commit_id":"aa30f848e166a4ba766201c55890cd56ad0cb1be"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9d85473a732dd7df84b9eb772ed029a86a3805aa","unresolved":true,"context_lines":[{"line_number":129,"context_line":"        return resource[0]"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    # Get the identifier for the resource"},{"line_number":132,"context_line":"    resource_identfier \u003d kwargs.get(\u0027id\u0027)"},{"line_number":133,"context_line":"    if not resource_identfier:"},{"line_number":134,"context_line":"        resource_identfier \u003d kwargs.get(\u0027name\u0027)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"b8c275d2_45351adf","line":132,"range":{"start_line":132,"start_character":4,"end_line":132,"end_character":22},"updated":"2026-02-06 07:39:42.000000000","message":"nit typo","commit_id":"aa30f848e166a4ba766201c55890cd56ad0cb1be"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9d85473a732dd7df84b9eb772ed029a86a3805aa","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        \u0027subnet_id\u0027: ("},{"line_number":454,"context_line":"            \u0027subnet_id\u0027,"},{"line_number":455,"context_line":"            \u0027subnets\u0027,"},{"line_number":456,"context_line":"            client_manager.sdk_connection.network.find_subnet"},{"line_number":457,"context_line":"        ),"},{"line_number":458,"context_line":"        \u0027monitor_port\u0027: (\u0027monitor_port\u0027, int),"},{"line_number":459,"context_line":"        \u0027monitor_address\u0027: (\u0027monitor_address\u0027, str),"}],"source_content_type":"text/x-python","patch_set":12,"id":"a3ef5b71_01ee710d","line":456,"range":{"start_line":456,"start_character":50,"end_line":456,"end_character":61},"updated":"2026-02-06 07:39:42.000000000","message":"just wondering why you use find_ here while the \"list\" function are used for the other resources\n\nprobably related: it doesn\u0027t work:\n\n$ openstack loadbalancer member create --subnet public-subnet --address 10.0.0.1 --protocol-port 8080 pool1 --name member1\nProxy.find_subnet() missing 1 required positional argument: \u0027name_or_id\u0027","commit_id":"aa30f848e166a4ba766201c55890cd56ad0cb1be"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"5467926a095559d57553d63949c7e658a73d7bff","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        \u0027subnet_id\u0027: ("},{"line_number":454,"context_line":"            \u0027subnet_id\u0027,"},{"line_number":455,"context_line":"            \u0027subnets\u0027,"},{"line_number":456,"context_line":"            client_manager.sdk_connection.network.find_subnet"},{"line_number":457,"context_line":"        ),"},{"line_number":458,"context_line":"        \u0027monitor_port\u0027: (\u0027monitor_port\u0027, int),"},{"line_number":459,"context_line":"        \u0027monitor_address\u0027: (\u0027monitor_address\u0027, str),"}],"source_content_type":"text/x-python","patch_set":12,"id":"22721102_8c0dc690","line":456,"range":{"start_line":456,"start_character":50,"end_line":456,"end_character":61},"in_reply_to":"a3ef5b71_01ee710d","updated":"2026-02-06 09:16:57.000000000","message":"Yep, that was a miss on my part\n\nI was using find_subnet previously but had to switch to using subnets\n\nI must have missed this one during the change, I\u0027ll update it now","commit_id":"aa30f848e166a4ba766201c55890cd56ad0cb1be"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"9d26a141477d7f52b738f0a3753dd4ff12c748a2","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    # Availability Zones don\u0027t support the id parameter"},{"line_number":105,"context_line":"    if resource_name \u003d\u003d \"availability_zones\":"},{"line_number":106,"context_line":"        msg \u003d \"Availability zones do not support find by ID\""},{"line_number":107,"context_line":"        raise osc_exc.CommandError(msg)"},{"line_number":108,"context_line":"    return get_resource_from_list_func(list_func, resource_name, root_tag,"},{"line_number":109,"context_line":"                                       *args, id\u003did)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"db43bd17_6a501c5b","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":39},"updated":"2026-02-06 12:43:46.000000000","message":"question: what about return None, and then fallback with get_resource_by_name in _find_resource? Users may have crazy id like creating AZ with UUIDs as name\n\nNote: In the previous code, if a UUID was passed for an AZ, list_funct with id was called, then list_funct with name was called. the new code calls only the list_func with an id","commit_id":"944a557f10355927930a864980743c2ae5113c94"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"f340d394283fb788c6784a18f73ae894a2f3aba6","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    # Availability Zones don\u0027t support the id parameter"},{"line_number":105,"context_line":"    if resource_name \u003d\u003d \"availability_zones\":"},{"line_number":106,"context_line":"        msg \u003d \"Availability zones do not support find by ID\""},{"line_number":107,"context_line":"        raise osc_exc.CommandError(msg)"},{"line_number":108,"context_line":"    return get_resource_from_list_func(list_func, resource_name, root_tag,"},{"line_number":109,"context_line":"                                       *args, id\u003did)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ad966756_9f38e8c6","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":39},"in_reply_to":"db43bd17_6a501c5b","updated":"2026-02-09 10:31:42.000000000","message":"Yes this was definitely a mistake and changed the behaviour. Should be fixed now, I checked the AZ commands","commit_id":"944a557f10355927930a864980743c2ae5113c94"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a02f4fea5fb80f3fe106ace3cba5ca18a2c85424","unresolved":true,"context_lines":[{"line_number":139,"context_line":"        resource_identifier \u003d kwargs.get(\u0027name\u0027)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    if len(resource) \u003e 1:"},{"line_number":142,"context_line":"        msg \u003d (\"{0} {1} found with name or ID of {2}. Please try \""},{"line_number":143,"context_line":"               \"again with UUID\".format(len(resource), resource_name,"},{"line_number":144,"context_line":"                                        resource_identifier))"},{"line_number":145,"context_line":"        raise osc_exc.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"c2b49ec4_9dbb756e","line":142,"updated":"2026-02-11 18:14:31.000000000","message":"nit: This would be easier to read as a f-string","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"4e5b717f2e686d3be18d4544219e74f9ae89c81d","unresolved":true,"context_lines":[{"line_number":139,"context_line":"        resource_identifier \u003d kwargs.get(\u0027name\u0027)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    if len(resource) \u003e 1:"},{"line_number":142,"context_line":"        msg \u003d (\"{0} {1} found with name or ID of {2}. Please try \""},{"line_number":143,"context_line":"               \"again with UUID\".format(len(resource), resource_name,"},{"line_number":144,"context_line":"                                        resource_identifier))"},{"line_number":145,"context_line":"        raise osc_exc.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"218f90ee_1b4b4e43","line":142,"in_reply_to":"c2b49ec4_9dbb756e","updated":"2026-02-13 15:12:13.000000000","message":"I updated the exception messages to f-strings, I agree they are easier to read","commit_id":"46ce9bec97a9da87d4e98e845fb53006e6bc4922"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"435f417d7aa7420f6581c55666c9ec70d61fda34","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        msg \u003d (f\"{len(resource)} {resource_name} found with name or ID \""},{"line_number":142,"context_line":"               f\"of {resource_identifier}. Please try again with UUID\")"},{"line_number":143,"context_line":"        raise osc_exc.CommandError(msg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    if len(resource) \u003d\u003d 1:"},{"line_number":146,"context_line":"        return resource[0]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    return None"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5cacec02_8ac61da2","line":146,"range":{"start_line":144,"start_character":0,"end_line":146,"end_character":26},"updated":"2026-02-13 16:07:37.000000000","message":"this block should be removed","commit_id":"f515c940799d44d1576cc45972e05f1bd23520c6"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"e68ef460a218ad21e92e0958f9ca11c57db1547f","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        msg \u003d (f\"{len(resource)} {resource_name} found with name or ID \""},{"line_number":142,"context_line":"               f\"of {resource_identifier}. Please try again with UUID\")"},{"line_number":143,"context_line":"        raise osc_exc.CommandError(msg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    if len(resource) \u003d\u003d 1:"},{"line_number":146,"context_line":"        return resource[0]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    return None"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2d72e00e_84c8760b","line":146,"range":{"start_line":144,"start_character":0,"end_line":146,"end_character":26},"in_reply_to":"5cacec02_8ac61da2","updated":"2026-02-13 16:35:53.000000000","message":"I thought that had been deleted when merging code, now I remember what is going on\n\nI moved it because pylint was failing because there was no global return at the end of the function. It was cleaner to move it to the end\n\nShould be fixed now","commit_id":"f515c940799d44d1576cc45972e05f1bd23520c6"}]}
