)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8750d37a61cad86cb790d8a66d647376edf9dd54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7c99b40a_4833e18c","updated":"2025-04-15 14:58:38.000000000","message":"Additionally this needs:\n- A release note detailing the new behavior\n- Update to our image docs about how to use shared images (share them with the conductor\u0027s project)","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7f806ee05199b35e1eb40b55c829a8604b9cfe15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bff27a59_5ef1a586","updated":"2025-04-17 15:53:07.000000000","message":"LGTM.  You are correct to ignore the member status.","commit_id":"926cfc472aa589733a0a3e7e0a74b90ddaf81aca"},{"author":{"_account_id":37707,"name":"Satoshi Shirosaka","display_name":"Satoshi S.","email":"satoss1108@gmail.com","username":"satoshi-sh"},"change_message_id":"86271ee64818f6081da5ce3d2e1bef0448105482","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"724aad9f_349932b6","updated":"2025-04-17 16:19:39.000000000","message":"Thanks for the clarification, Brian.","commit_id":"926cfc472aa589733a0a3e7e0a74b90ddaf81aca"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f831fb93bf9d76d70dbf815b3170e0d46139213b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"85d19fb1_eb875632","updated":"2025-04-22 15:51:05.000000000","message":"recheck Length too long: 8603400","commit_id":"a39f11cecee1e0ae7d2ff452da4459cd0f4238d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52040968c36cf39c910bd9c0cc6ccd7e76862312","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6358cfdb_844fbe26","updated":"2025-04-25 18:18:57.000000000","message":"recheck mirrors.dotsrc.org is back up","commit_id":"a39f11cecee1e0ae7d2ff452da4459cd0f4238d4"}],"ironic/common/glance_service/service_utils.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8750d37a61cad86cb790d8a66d647376edf9dd54","unresolved":true,"context_lines":[{"line_number":147,"context_line":"    if CONF.allow_image_access_via_auth_token and auth_token:"},{"line_number":148,"context_line":"        # We return true here since we want the *user* request context to"},{"line_number":149,"context_line":"        # be able to be used."},{"line_number":150,"context_line":"        return True"},{"line_number":151,"context_line":"    # If the image visibility is public or community, allow access."},{"line_number":152,"context_line":"    if image_visibility in [\u0027public\u0027, \u0027community\u0027]:"},{"line_number":153,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"fd235a00_cc46b4eb","side":"PARENT","line":150,"updated":"2025-04-15 14:58:38.000000000","message":"This config won\u0027t be able to be removed this cycle, I think? If we think it needs a full deprecation period, that\u0027d be 2026.2 before it can be released, but at a minimum we should let it sit across a release.","commit_id":"854f059b82506133d5b0ad37ef57ed4f5635282a"},{"author":{"_account_id":37707,"name":"Satoshi Shirosaka","display_name":"Satoshi S.","email":"satoss1108@gmail.com","username":"satoshi-sh"},"change_message_id":"35f5e2088b8595ceb71900a5841e762cd83300d8","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    if CONF.allow_image_access_via_auth_token and auth_token:"},{"line_number":148,"context_line":"        # We return true here since we want the *user* request context to"},{"line_number":149,"context_line":"        # be able to be used."},{"line_number":150,"context_line":"        return True"},{"line_number":151,"context_line":"    # If the image visibility is public or community, allow access."},{"line_number":152,"context_line":"    if image_visibility in [\u0027public\u0027, \u0027community\u0027]:"},{"line_number":153,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"f739e7ac_a74b2697","side":"PARENT","line":150,"in_reply_to":"c02dbed0_3461ad87","updated":"2025-04-15 16:44:45.000000000","message":"Done","commit_id":"854f059b82506133d5b0ad37ef57ed4f5635282a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f5080c2d50b3ae5199a4bba7bcfb9995c96fcc0","unresolved":true,"context_lines":[{"line_number":147,"context_line":"    if CONF.allow_image_access_via_auth_token and auth_token:"},{"line_number":148,"context_line":"        # We return true here since we want the *user* request context to"},{"line_number":149,"context_line":"        # be able to be used."},{"line_number":150,"context_line":"        return True"},{"line_number":151,"context_line":"    # If the image visibility is public or community, allow access."},{"line_number":152,"context_line":"    if image_visibility in [\u0027public\u0027, \u0027community\u0027]:"},{"line_number":153,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"c02dbed0_3461ad87","side":"PARENT","line":150,"in_reply_to":"fd235a00_cc46b4eb","updated":"2025-04-15 16:28:38.000000000","message":"Yeah, can\u0027t be removed this cycle as-is. We need to add a note and when to remove it.","commit_id":"854f059b82506133d5b0ad37ef57ed4f5635282a"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a639167252dcc0f9ad9a38460e253196bceffe09","unresolved":true,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"a9f95603_6b3f4a4c","line":209,"updated":"2025-04-15 15:23:12.000000000","message":"Membership access is granted even if not accepted. Glance API spec indicates \"accepted\" just means it shows up in the image list, but can be used to boot even if unaccepted.\n\nhttps://specs.openstack.org/openstack/glance-specs/specs/api/v2/sharing-image-api-v2.html#sharing-images-with-particular-users","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":37707,"name":"Satoshi Shirosaka","display_name":"Satoshi S.","email":"satoss1108@gmail.com","username":"satoshi-sh"},"change_message_id":"86271ee64818f6081da5ce3d2e1bef0448105482","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5eb186ae_e4f89462","line":209,"in_reply_to":"892b0934_7666dc17","updated":"2025-04-17 16:19:39.000000000","message":"Acknowledged","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7f806ee05199b35e1eb40b55c829a8604b9cfe15","unresolved":true,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"892b0934_7666dc17","line":209,"in_reply_to":"8af9c1b4_ce249c0d","updated":"2025-04-17 15:53:07.000000000","message":"Jay is correct, the member status is independent of whether the member can consume the image.  If an image is shared with you, you can consume it and you can make the image-show API call to see the image record.  The member status was designed in those heady days when we were expecting a vibrant image marketplace mediated by glance, so that consumers could control the content of their image lists, and also indicate to producers whether they were interested in the image or not.","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5749b9d28df353ec12786e74b1928561c22dc120","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"8af9c1b4_ce249c0d","line":209,"in_reply_to":"8b63a822_0f1282af","updated":"2025-04-17 15:18:41.000000000","message":"I feel pretty strongly that the glance API docs are clear here, but I\u0027ll ask someone to look at this patch.","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f5080c2d50b3ae5199a4bba7bcfb9995c96fcc0","unresolved":true,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"f1a56c44_0d49663c","line":209,"in_reply_to":"a9f95603_6b3f4a4c","updated":"2025-04-15 16:28:38.000000000","message":"Hmm, this feels like something we need a third opinion on. I feel like I\u0027d put it behind a config option because I could sort of see wanting it to be accepted, but at the same time, realistically granted is the threshold to use. At least I think granted through the entry in the list is reasonable to leverage.\n\nQuick scenario/walk through:\n\nTenant A shared image with tenant B\nTenant B skips any act of \"accepting\", and just enters in the ID.\nTenant B triggers instance deployment (regardless of how) with the image ID tenant A told them to use.\n\nUnder this scenario, they would not be able to view the image nor deploy, even though from their point of view, \"accepting\" the image is a disjointed \"oh I need to do a thing\" result, even if they don\u0027t *have to*.\n\nThe user in Tenant B likely just expects the image Id they were told to use, to just work for them without additional steps.\n\nI think realistically, we don\u0027t need to worry about if it was accepted or not.","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"},{"author":{"_account_id":37707,"name":"Satoshi Shirosaka","display_name":"Satoshi S.","email":"satoss1108@gmail.com","username":"satoshi-sh"},"change_message_id":"35f5e2088b8595ceb71900a5841e762cd83300d8","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return ["},{"line_number":207,"context_line":"            member[\u0027member_id\u0027]"},{"line_number":208,"context_line":"            for member in members"},{"line_number":209,"context_line":"            if member.get(\u0027status\u0027) \u003d\u003d \u0027accepted\u0027"},{"line_number":210,"context_line":"        ]"},{"line_number":211,"context_line":"    except Exception as e:"},{"line_number":212,"context_line":"        LOG.error(\"Unable to retrieve image members for image %s: %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"8b63a822_0f1282af","line":209,"in_reply_to":"f1a56c44_0d49663c","updated":"2025-04-15 16:44:45.000000000","message":"Done","commit_id":"3d5d991024b9b41e258f7a399a7e4f2fac19ef92"}],"releasenotes/notes/support-shared-images-8279f7ecd66b7218.yaml":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"df52f0a49efcd86635c597118dce0e279f56ae5d","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    shared with its project, in addition to those it owns."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    To use the feature, ensure the images are shared with"},{"line_number":8,"context_line":"    the project associated with the conductor\u0027s credentials."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"749a1158_14c50a8f","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":60},"updated":"2025-04-18 21:12:05.000000000","message":"niit: Newline at the end of the file.","commit_id":"926cfc472aa589733a0a3e7e0a74b90ddaf81aca"},{"author":{"_account_id":37707,"name":"Satoshi Shirosaka","display_name":"Satoshi S.","email":"satoss1108@gmail.com","username":"satoshi-sh"},"change_message_id":"d051a1e3ebd4d5f77cbe624dba32ae44a40c09aa","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    shared with its project, in addition to those it owns."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    To use the feature, ensure the images are shared with"},{"line_number":8,"context_line":"    the project associated with the conductor\u0027s credentials."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"a508f23c_24532a8b","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":60},"in_reply_to":"749a1158_14c50a8f","updated":"2025-04-19 11:30:56.000000000","message":"Done","commit_id":"926cfc472aa589733a0a3e7e0a74b90ddaf81aca"}]}
