Public bug reported:

Create a snapshot(image) of a volume-backed instance, this will generate
a image in glance. At first, this image is private, I can update this
image's visibility to shared, and execuate glance member-create and
glance member-update on this image to share image to another tenant.
Then another tenant use this image to create a new instance, it will
failed of this message "HTTP exception thrown: Block Device Mapping is
Invalid: failed to get snapshot xxx"

>From the analysis of logs and nova code, it is because nova-api will
call _validate_bdm function to get snapshot from cinder, but in cinder,
the added tenant can not see the volume snapshot, the snapshot is not
belong to the tenant, so cinder-api will return 404 when nova-api call
get_snapshot.

How can I make this process to succeed?


====steps========
1. show the snapshot of volume-backed instance
# glance image-show a13fe7a1-e001-41c8-8119-70d5090cb7b0
+----------------------+----------------------------------------------------------------------------------+
| Property             | Value                                                  
                          |
+----------------------+----------------------------------------------------------------------------------+
| base_image_ref       |                                                        
                          |
| bdm_v2               | True                                                   
                          |
| block_device_mapping | [{"guest_format": null, "boot_index": 0, 
"delete_on_termination": false,         |
|                      | "no_device": null, "snapshot_id": 
"7a1b5060-e58c-4244-bb61-4ccef0295a1f",        |
|                      | "volume_type": null, "device_name": "/dev/sda", 
"disk_bus": "scsi", "image_id":  |
|                      | null, "source_type": "snapshot", "tag": null, 
"device_type": "disk",             |
|                      | "volume_id": null, "destination_type": "volume", 
"volume_size": 50}]             |
| boot_roles           | heat_stack_owner,myrole,swiftuser                      
                          |
| checksum             | d41d8cd98f00b204e9800998ecf8427e                       
                          |
| container_format     | bare                                                   
                          |
| created_at           | 2019-12-02T06:31:36Z                                   
                          |
| disk_format          | qcow2                                                  
                          |
| hw_disk_bus          | scsi                                                   
                          |
| hw_qemu_guest_agent  | yes                                                    
                          |
| hw_scsi_model        | virtio-scsi                                            
                          |
| hw_video_model       | qxl                                                    
                          |
| id                   | a13fe7a1-e001-41c8-8119-70d5090cb7b0                   
                          |
| locations            | [{"url": "rbd://4ffaf12a-099d-4297-a22e-               
                          |
|                      | 
f8c16c17d6e3/images/a13fe7a1-e001-41c8-8119-70d5090cb7b0/snap", "metadata": 
{}}] |
| min_disk             | 50                                                     
                          |
| min_ram              | 0                                                      
                          |
| name                 | fhl-volume                                             
                          |
| os_distro            | centos                                                 
                          |
| os_hash_algo         | sha512                                                 
                          |
| os_hash_value        | 
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0
 |
|                      | ff8318d2877eec2f63b931bd47417a81a538327af927da3e       
                          |
| os_hidden            | False                                                  
                          |
| os_type              | linux                                                  
                          |
| owner                | 17bf57ec04994db2b591fda36c368e99                       
                          |
| owner_project_name   | myproject                                              
                          |
| owner_user_name      | myuser                                                 
                          |
| protected            | False                                                  
                          |
| root_device_name     | /dev/sda                                               
                          |
| size                 | 0                                                      
                          |
| status               | active                                                 
                          |
| tags                 | []                                                     
                          |
| updated_at           | 2020-04-09T09:40:57Z                                   
                          |
| virtual_size         | Not available                                          
                          |
| visibility           | private                                                
                           |
| vm_mode              | hvm                                                    
                          |
+----------------------+----------------------------------------------------------------------------------+

2. Make the image shared, and add member
glance image-update a13fe7a1-e001-41c8-8119-70d5090cb7b0 --visibility shared
glance member-create a13fe7a1-e001-41c8-8119-70d5090cb7b0  
07cb8171cf854517b3678fd5e30b4cda
glance member-update a13fe7a1-e001-41c8-8119-70d5090cb7b0  
07cb8171cf854517b3678fd5e30b4cda accepted

3. Tenant 07cb8171cf854517b3678fd5e30b4cda use the image to create a new
instance.


===the instance created logs==========
nova-api
HTTP exception thrown: Block Device Mapping is Invalid: failed to get snapshot 
7a1b5060-e58c-4244-bb61-4ccef0295a1f.

cinder-api
"GET 
/v3/07cb8171cf854517b3678fd5e30b4cda/snapshots/7a1b5060-e58c-4244-bb61-4ccef0295a1f
 HTTP/1.1" status: 404  len: 445 time: 0.0378442

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1871861

Title:
  Share the snapshot of volume-backed instance to other tenant, but can
  not build instance with this image.

Status in OpenStack Compute (nova):
  New

Bug description:
  Create a snapshot(image) of a volume-backed instance, this will
  generate a image in glance. At first, this image is private, I can
  update this image's visibility to shared, and execuate glance member-
  create and glance member-update on this image to share image to
  another tenant. Then another tenant use this image to create a new
  instance, it will failed of this message "HTTP exception thrown: Block
  Device Mapping is Invalid: failed to get snapshot xxx"

  From the analysis of logs and nova code, it is because nova-api will
  call _validate_bdm function to get snapshot from cinder, but in
  cinder, the added tenant can not see the volume snapshot, the snapshot
  is not belong to the tenant, so cinder-api will return 404 when nova-
  api call get_snapshot.

  How can I make this process to succeed?


  ====steps========
  1. show the snapshot of volume-backed instance
  # glance image-show a13fe7a1-e001-41c8-8119-70d5090cb7b0
  
+----------------------+----------------------------------------------------------------------------------+
  | Property             | Value                                                
                            |
  
+----------------------+----------------------------------------------------------------------------------+
  | base_image_ref       |                                                      
                            |
  | bdm_v2               | True                                                 
                            |
  | block_device_mapping | [{"guest_format": null, "boot_index": 0, 
"delete_on_termination": false,         |
  |                      | "no_device": null, "snapshot_id": 
"7a1b5060-e58c-4244-bb61-4ccef0295a1f",        |
  |                      | "volume_type": null, "device_name": "/dev/sda", 
"disk_bus": "scsi", "image_id":  |
  |                      | null, "source_type": "snapshot", "tag": null, 
"device_type": "disk",             |
  |                      | "volume_id": null, "destination_type": "volume", 
"volume_size": 50}]             |
  | boot_roles           | heat_stack_owner,myrole,swiftuser                    
                            |
  | checksum             | d41d8cd98f00b204e9800998ecf8427e                     
                            |
  | container_format     | bare                                                 
                            |
  | created_at           | 2019-12-02T06:31:36Z                                 
                            |
  | disk_format          | qcow2                                                
                            |
  | hw_disk_bus          | scsi                                                 
                            |
  | hw_qemu_guest_agent  | yes                                                  
                            |
  | hw_scsi_model        | virtio-scsi                                          
                            |
  | hw_video_model       | qxl                                                  
                            |
  | id                   | a13fe7a1-e001-41c8-8119-70d5090cb7b0                 
                            |
  | locations            | [{"url": "rbd://4ffaf12a-099d-4297-a22e-             
                            |
  |                      | 
f8c16c17d6e3/images/a13fe7a1-e001-41c8-8119-70d5090cb7b0/snap", "metadata": 
{}}] |
  | min_disk             | 50                                                   
                            |
  | min_ram              | 0                                                    
                            |
  | name                 | fhl-volume                                           
                            |
  | os_distro            | centos                                               
                            |
  | os_hash_algo         | sha512                                               
                            |
  | os_hash_value        | 
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0
 |
  |                      | ff8318d2877eec2f63b931bd47417a81a538327af927da3e     
                            |
  | os_hidden            | False                                                
                            |
  | os_type              | linux                                                
                            |
  | owner                | 17bf57ec04994db2b591fda36c368e99                     
                            |
  | owner_project_name   | myproject                                            
                            |
  | owner_user_name      | myuser                                               
                            |
  | protected            | False                                                
                            |
  | root_device_name     | /dev/sda                                             
                            |
  | size                 | 0                                                    
                            |
  | status               | active                                               
                            |
  | tags                 | []                                                   
                            |
  | updated_at           | 2020-04-09T09:40:57Z                                 
                            |
  | virtual_size         | Not available                                        
                            |
  | visibility           | private                                              
                             |
  | vm_mode              | hvm                                                  
                            |
  
+----------------------+----------------------------------------------------------------------------------+

  2. Make the image shared, and add member
  glance image-update a13fe7a1-e001-41c8-8119-70d5090cb7b0 --visibility shared
  glance member-create a13fe7a1-e001-41c8-8119-70d5090cb7b0  
07cb8171cf854517b3678fd5e30b4cda
  glance member-update a13fe7a1-e001-41c8-8119-70d5090cb7b0  
07cb8171cf854517b3678fd5e30b4cda accepted

  3. Tenant 07cb8171cf854517b3678fd5e30b4cda use the image to create a
  new instance.

  
  ===the instance created logs==========
  nova-api
  HTTP exception thrown: Block Device Mapping is Invalid: failed to get 
snapshot 7a1b5060-e58c-4244-bb61-4ccef0295a1f.

  cinder-api
  "GET 
/v3/07cb8171cf854517b3678fd5e30b4cda/snapshots/7a1b5060-e58c-4244-bb61-4ccef0295a1f
 HTTP/1.1" status: 404  len: 445 time: 0.0378442

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1871861/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to