Public bug reported:

This is on a newton server deployed on 7/25 from master (newton).

I set use_glance_v1=True in nova.conf on the compute node.

I created a server from this image:

+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                      
                      |
+------------------+----------------------------------------------------------------------------------+
| checksum         | ee1eca47dc88f4879d8a229cc70a07c6                           
                      |
| container_format | bare                                                       
                      |
| created_at       | 2016-07-06T17:25:08Z                                       
                      |
| disk_format      | qcow2                                                      
                      |
| id               | aac0314e-9bdf-4cee-a3d8-5f089008ea96                       
                      |
| locations        | [{"url": 
"file:///var/lib/glance/images/aac0314e-9bdf-4cee-a3d8-5f089008ea96",   |
|                  | "metadata": {}}]                                           
                      |
| min_disk         | 0                                                          
                      |
| min_ram          | 0                                                          
                      |
| name             | cirros                                                     
                      |
| owner            | None                                                       
                      |
| protected        | False                                                      
                      |
| size             | 13287936                                                   
                      |
| status           | active                                                     
                      |
| tags             | []                                                         
                      |
| updated_at       | 2016-07-06T17:25:09Z                                       
                      |
| virtual_size     | None                                                       
                      |
| visibility       | public                                                     
                      |
+------------------+----------------------------------------------------------------------------------+


I tried to snapshot the instance and it failed with this:

http://paste.openstack.org/show/542180/

2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd] Traceback (most recent call last):
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 231, in decorated_function
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     *args, **kwargs)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 3024, in snapshot_instance
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     task_states.IMAGE_SNAPSHOT)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 3054, in _snapshot_instance
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     update_task_state)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/virt/libvirt/driver.py",
 line 1482, in snapshot
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     snapshot = 
self._image_api.get(context, image_id)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/api.py",
 line 93, in get
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     show_deleted=show_deleted)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 266, in show
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     include_locations=include_locations)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 878, in _translate_from_glance
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     image, 
include_locations=include_locations)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 968, in _extract_attributes
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     output[attr] = getattr(image, attr) 
or 0
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/glanceclient/openstack/common/apiclient/base.py",
 line 491, in __getattr__
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     return self.__getattr__(k)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/glanceclient/openstack/common/apiclient/base.py",
 line 493, in __getattr__
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     raise AttributeError(k)
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd] AttributeError: size
2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]

Looking at that code, it looks like it assumes the 'size' attribute will
be on the image, which it's not. Nova creates this image from the
compute API:

https://github.com/openstack/nova/blob/9326c1ed403477d627fa1b94e6937c99deed9ecd/nova/compute/api.py#L2165

The extra_properties in this case come from the REST API, and I'm not
passing any in in my snapshot request.

The other properties come from the instance's system_metadata, of which
image_size isn't set:

mysql> select * from nova.instance_system_metadata where 
instance_uuid='85bcc918-4d00-4d21-82fe-65b13035adcd';
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+
| created_at          | updated_at | deleted_at | id | instance_uuid            
            | key                    | value                                | 
deleted |
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+
| 2016-07-26 20:54:08 | NULL       | NULL       | 92 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_disk_format      | qcow2           
                     |       0 |
| 2016-07-26 20:54:08 | NULL       | NULL       | 93 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_min_ram          | 0               
                     |       0 |
| 2016-07-26 20:54:08 | NULL       | NULL       | 94 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_min_disk         | 10              
                     |       0 |
| 2016-07-26 20:54:08 | NULL       | NULL       | 95 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_base_image_ref   | 
aac0314e-9bdf-4cee-a3d8-5f089008ea96 |       0 |
| 2016-07-26 20:54:08 | NULL       | NULL       | 96 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_container_format | bare            
                     |       0 |
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+

So it looks like we shouldn't rely on image.size being set when using
glance v1 and taking a snapshot.

** 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/1606707

Title:
  instance snapshot fails with "AttributeError: size" when using glance
  v1

Status in OpenStack Compute (nova):
  New

Bug description:
  This is on a newton server deployed on 7/25 from master (newton).

  I set use_glance_v1=True in nova.conf on the compute node.

  I created a server from this image:

  
+------------------+----------------------------------------------------------------------------------+
  | Property         | Value                                                    
                        |
  
+------------------+----------------------------------------------------------------------------------+
  | checksum         | ee1eca47dc88f4879d8a229cc70a07c6                         
                        |
  | container_format | bare                                                     
                        |
  | created_at       | 2016-07-06T17:25:08Z                                     
                        |
  | disk_format      | qcow2                                                    
                        |
  | id               | aac0314e-9bdf-4cee-a3d8-5f089008ea96                     
                        |
  | locations        | [{"url": 
"file:///var/lib/glance/images/aac0314e-9bdf-4cee-a3d8-5f089008ea96",   |
  |                  | "metadata": {}}]                                         
                        |
  | min_disk         | 0                                                        
                        |
  | min_ram          | 0                                                        
                        |
  | name             | cirros                                                   
                        |
  | owner            | None                                                     
                        |
  | protected        | False                                                    
                        |
  | size             | 13287936                                                 
                        |
  | status           | active                                                   
                        |
  | tags             | []                                                       
                        |
  | updated_at       | 2016-07-06T17:25:09Z                                     
                        |
  | virtual_size     | None                                                     
                        |
  | visibility       | public                                                   
                        |
  
+------------------+----------------------------------------------------------------------------------+

  
  I tried to snapshot the instance and it failed with this:

  http://paste.openstack.org/show/542180/

  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd] Traceback (most recent call last):
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 231, in decorated_function
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     *args, **kwargs)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 3024, in snapshot_instance
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     task_states.IMAGE_SNAPSHOT)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/compute/manager.py",
 line 3054, in _snapshot_instance
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     update_task_state)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/virt/libvirt/driver.py",
 line 1482, in snapshot
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     snapshot = 
self._image_api.get(context, image_id)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/api.py",
 line 93, in get
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     show_deleted=show_deleted)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 266, in show
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     include_locations=include_locations)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 878, in _translate_from_glance
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     image, 
include_locations=include_locations)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/nova/image/glance.py",
 line 968, in _extract_attributes
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     output[attr] = getattr(image, attr) 
or 0
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/glanceclient/openstack/common/apiclient/base.py",
 line 491, in __getattr__
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     return self.__getattr__(k)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]   File 
"/opt/bbc/openstack-11.0-master/nova/local/lib/python2.7/site-packages/glanceclient/openstack/common/apiclient/base.py",
 line 493, in __getattr__
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]     raise AttributeError(k)
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd] AttributeError: size
  2016-07-26 21:25:34.563 51383 ERROR nova.compute.manager [instance: 
85bcc918-4d00-4d21-82fe-65b13035adcd]

  Looking at that code, it looks like it assumes the 'size' attribute
  will be on the image, which it's not. Nova creates this image from the
  compute API:

  
https://github.com/openstack/nova/blob/9326c1ed403477d627fa1b94e6937c99deed9ecd/nova/compute/api.py#L2165

  The extra_properties in this case come from the REST API, and I'm not
  passing any in in my snapshot request.

  The other properties come from the instance's system_metadata, of
  which image_size isn't set:

  mysql> select * from nova.instance_system_metadata where 
instance_uuid='85bcc918-4d00-4d21-82fe-65b13035adcd';
  
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+
  | created_at          | updated_at | deleted_at | id | instance_uuid          
              | key                    | value                                | 
deleted |
  
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+
  | 2016-07-26 20:54:08 | NULL       | NULL       | 92 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_disk_format      | qcow2           
                     |       0 |
  | 2016-07-26 20:54:08 | NULL       | NULL       | 93 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_min_ram          | 0               
                     |       0 |
  | 2016-07-26 20:54:08 | NULL       | NULL       | 94 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_min_disk         | 10              
                     |       0 |
  | 2016-07-26 20:54:08 | NULL       | NULL       | 95 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_base_image_ref   | 
aac0314e-9bdf-4cee-a3d8-5f089008ea96 |       0 |
  | 2016-07-26 20:54:08 | NULL       | NULL       | 96 | 
85bcc918-4d00-4d21-82fe-65b13035adcd | image_container_format | bare            
                     |       0 |
  
+---------------------+------------+------------+----+--------------------------------------+------------------------+--------------------------------------+---------+

  So it looks like we shouldn't rely on image.size being set when using
  glance v1 and taking a snapshot.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1606707/+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