Some general information: When v2 image sharing was implemented in Grizzly, the thinking was that making a call to keystone to verify that the ID of the member was a known project ID was too expensive, so it wasn't implemented. The implication of this decision is that when you create an image member, glance will accept anything of the correct type, which is a JSON 'string' type: curl -s -X GET -H "x-auth-token: $TK" "$OS_IMAGE_URL/v2/schemas/member" | python -m json.tool { "name": "member", "properties": { "created_at": { "description": "Date and time of image member creation", "type": "string" }, "image_id": { "description": "An identifier for the image", "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", "type": "string" }, "member_id": { "description": "An identifier for the image member (tenantId)", "type": "string" }, "schema": { "readOnly": true, "type": "string" }, "status": { "description": "The status of this image member", "enum": [ "pending", "accepted", "rejected" ], "type": "string" }, "updated_at": { "description": "Date and time of last modification of image member", "type": "string" } } } Note that while the image_id must be a UUID, the member_id is simply a 'string' type. Now, notice what happens when you get info about a user's project: demo! openstack project list +----------------------------------+--------------------+ | ID | Name | +----------------------------------+--------------------+ | 37505bc7dd024ceaadfa21f16d3aee33 | invisible_to_admin | | 4d0255bb8ac04dcf9fc0f53126c88cde | demo | +----------------------------------+--------------------+ The response above is for my devstack 'demo' user. Note that the project IDs are NOT in hyphenated UUID format. Now I am going to switch to being my alt_demo user and try to share an image with the 'demo' user who is in project 4d0255bb8ac04dcf9fc0f53126c88cde. First, the osc help (abbreviated) alt_demo! openstack help image add project usage: openstack image add project Associate project with image positional arguments: Image to share (name or ID) Project to associate with image (name or ID) So here are a series of calls trying to share image 1c952398-92a2-4c10-b543-74e4b31f41e1 owned by alt_demo's project with the demo project. First, before the image is shared: demo! glance image-show 1c952398-92a2-4c10-b543-74e4b31f41e1 404 Not Found: No image found with ID 1c952398-92a2-4c10-b543-74e4b31f41e1 (HTTP 404) OK, what we expect. Let's share it. First, see if there are any members: alt_demo! glance member-list --image-id 1c952398-92a2-4c10-b543-74e4b31f41e1 +----------+-----------+--------+ | Image ID | Member ID | Status | +----------+-----------+--------+ +----------+-----------+--------+ Share attempt (1): alt_demo! openstack image add project 1c952398-92a2-4c10-b543-74e4b31f41e1 4d0255bb-8ac0-4dcf-9fc0-f53126c88cde +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | created_at | 2019-03-18T13:58:41Z | | image_id | 1c952398-92a2-4c10-b543-74e4b31f41e1 | | member_id | 4d0255bb-8ac0-4dcf-9fc0-f53126c88cde | | schema | /v2/schemas/member | | status | pending | | updated_at | 2019-03-18T13:58:41Z | +------------+--------------------------------------+ alt_demo! glance member-list --image-id 1c952398-92a2-4c10-b543-74e4b31f41e1 +--------------------------------------+--------------------------------------+---------+ | Image ID | Member ID | Status | +--------------------------------------+--------------------------------------+---------+ | 1c952398-92a2-4c10-b543-74e4b31f41e1 | 4d0255bb-8ac0-4dcf-9fc0-f53126c88cde | pending | +--------------------------------------+--------------------------------------+---------+ Can demo see it? No. demo! glance image-show 1c952398-92a2-4c10-b543-74e4b31f41e1 404 Not Found: No image found with ID 1c952398-92a2-4c10-b543-74e4b31f41e1 (HTTP 404) Share attempt (2): alt_demo! openstack image add project 1c952398-92a2-4c10-b543-74e4b31f41e1 demo +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | created_at | 2019-03-18T14:00:17Z | | image_id | 1c952398-92a2-4c10-b543-74e4b31f41e1 | | member_id | demo | | schema | /v2/schemas/member | | status | pending | | updated_at | 2019-03-18T14:00:17Z | +------------+--------------------------------------+ alt_demo! glance member-list --image-id 1c952398-92a2-4c10-b543-74e4b31f41e1 +--------------------------------------+--------------------------------------+---------+ | Image ID | Member ID | Status | +--------------------------------------+--------------------------------------+---------+ | 1c952398-92a2-4c10-b543-74e4b31f41e1 | 4d0255bb-8ac0-4dcf-9fc0-f53126c88cde | pending | | 1c952398-92a2-4c10-b543-74e4b31f41e1 | demo | pending | +--------------------------------------+--------------------------------------+---------+ Can demo see it? No. demo! glance image-show 1c952398-92a2-4c10-b543-74e4b31f41e1 404 Not Found: No image found with ID 1c952398-92a2-4c10-b543-74e4b31f41e1 (HTTP 404) Share attempt (3): alt_demo! openstack image add project 1c952398-92a2-4c10-b543-74e4b31f41e1 4d0255bb8ac04dcf9fc0f53126c88cde +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | created_at | 2019-03-18T14:01:41Z | | image_id | 1c952398-92a2-4c10-b543-74e4b31f41e1 | | member_id | 4d0255bb8ac04dcf9fc0f53126c88cde | | schema | /v2/schemas/member | | status | pending | | updated_at | 2019-03-18T14:01:41Z | +------------+--------------------------------------+ alt_demo! glance member-list --image-id 1c952398-92a2-4c10-b543-74e4b31f41e1 +--------------------------------------+--------------------------------------+---------+ | Image ID | Member ID | Status | +--------------------------------------+--------------------------------------+---------+ | 1c952398-92a2-4c10-b543-74e4b31f41e1 | 4d0255bb-8ac0-4dcf-9fc0-f53126c88cde | pending | | 1c952398-92a2-4c10-b543-74e4b31f41e1 | 4d0255bb8ac04dcf9fc0f53126c88cde | pending | | 1c952398-92a2-4c10-b543-74e4b31f41e1 | demo | pending | +--------------------------------------+--------------------------------------+---------+ Can demo see it? YES! demo! glance image-show 1c952398-92a2-4c10-b543-74e4b31f41e1 +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | None | | container_format | None | | created_at | 2019-03-18T13:49:34Z | | disk_format | None | | id | 1c952398-92a2-4c10-b543-74e4b31f41e1 | | locations | [] | | min_disk | 0 | | min_ram | 0 | | name | OSC-share-test | | os_hash_algo | None | | os_hash_value | None | | os_hidden | False | | owner | 11a13bbd46e34419b07bc4e42929285c | | protected | False | | size | None | | status | queued | | tags | [] | | updated_at | 2019-03-18T13:51:09Z | | virtual_size | Not available | | visibility | shared | +------------------+--------------------------------------+ The moral of the story is that image sharing is sensitive to the way the project ID is specified.