← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1717547] [NEW] Creating snapshot fails when image metadata has version field

 

Public bug reported:

Description:

When creating a snapshot of a server using the nova API, failure occurs
if the image contains the metadata property "version". It seems like
image metadata is passed as an argument to _create_v2
(nova/image/glance.py) which is then passed to call
(nova/image/glance.py) as kwargs. The function already takes in context,
method, and version arguments, so it seems that any of these metadata
properties would cause the snapshot to fail.

OpenStack version : Pike
Nova API version : 2.1

Steps to reporduce:

1. Create an image with metadata property "version"
2. Launch an server using this image
3. Try to create a server snapshot of the server you just launched 

image used:
+------------------+----------------------------------------------------------------------------+
| Field            | Value                                                                      |
+------------------+----------------------------------------------------------------------------+
| checksum         | d19875d33815bd8c49fe39829b1df924                                           |
| container_format | bare                                                                       |
| created_at       | 2017-09-05T15:57:24Z                                                       |
| disk_format      | raw                                                                        |
| file             | /v2/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/file                       |
| id               | c7f76154-dd99-4102-afe2-662a4fcaba7b                                       |
| min_disk         | 0                                                                          |
| min_ram          | 0                                                                          |
| name             | ubuntu-16.04-amd64_2                                                       |
| owner            | 71cea55297f94953b33b2a2549d72a95                                           |
| properties       | architecture='amd64', direct_url='rbd://8838dc54-c385-4949-9624-1cf3911320 |
|                  | 1d/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/snap',                      |
|                  | distribution='Ubuntu', family='Linux', username='ubuntu', version='16.04'  |
| protected        | False                                                                      |
| schema           | /v2/schemas/image                                                          |
| size             | 2361393152                                                                 |
| status           | active                                                                     |
| tags             |                                                                            |
| updated_at       | 2017-09-14T21:10:44Z                                                       |
| virtual_size     | None                                                                       |
| visibility       | public                                                                     |
+------------------+----------------------------------------------------------------------------+
Expected result:
succesfully create server snapshot

Actual result:

logs:

2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions [req-eea1ec3c-a500-4006-ab4d-00a05a6b4f33 f25d972f420840e48163a55bf5713bf6 c657c15a0a13435bbe2c323c732d4e4f - 0e46d3ad069b4f0e85bf594de38fbe0e 0e46d3ad069b4f0e85bf594de38fbe0e] Unexpected exception in API method: TypeError: call() got multiple values for keyword argument 'version'
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions Traceback (most recent call last):
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/extensions.py", line 336, in wrapped
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/common.py", line 356, in inner
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py", line 999, in _action_create_image
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=metadata)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 208, in _wrapped
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return fn(self, context, instance, *args, **kwargs)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 148, in inner
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(self, context, instance, *args, **kw)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2684, in snapshot
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=extra_properties)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2754, in _create_image
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return self.image_api.create(context, image_meta)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/api.py", line 108, in create
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return session.create(context, image_info, data=data)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 390, in create
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     data, force_activate)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 467, in _create_v2
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     context, 2, 'create', **sent_service_image_meta)
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions TypeError: call() got multiple values for keyword argument 'version'
2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions
<type 'exceptions.TypeError'>

** Affects: nova
     Importance: Low
         Status: Confirmed


** Tags: low-hanging-fruit openstack-version.pike snapshot

** Description changed:

+ Description:
  
- When creating a snapshot of a server using the nova API, failure occurs if the image contains the metadata property "version". It seems like image metadata is passed as an argument to _create_v2 (nova/image/glance.py) which is then passed to call (nova/image/glance.py) as kwargs. The function already takes in context, method, and version arguments, so it seems that any of these metadata properties would cause the snapshot to fail.
+ When creating a snapshot of a server using the nova API, failure occurs
+ if the image contains the metadata property "version". It seems like
+ image metadata is passed as an argument to _create_v2
+ (nova/image/glance.py) which is then passed to call
+ (nova/image/glance.py) as kwargs. The function already takes in context,
+ method, and version arguments, so it seems that any of these metadata
+ properties would cause the snapshot to fail.
  
  OpenStack version : Pike
  Nova API version : 2.1
+ 
+ Steps to reporduce:
+ 
+ 1. Create an image with metadata property "version"
+ 2. Launch an server using this image
+ 3. Try to create a server snapshot of the server you just launched 
  
  image used:
  +------------------+----------------------------------------------------------------------------+
  | Field            | Value                                                                      |
  +------------------+----------------------------------------------------------------------------+
  | checksum         | d19875d33815bd8c49fe39829b1df924                                           |
  | container_format | bare                                                                       |
  | created_at       | 2017-09-05T15:57:24Z                                                       |
  | disk_format      | raw                                                                        |
  | file             | /v2/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/file                       |
  | id               | c7f76154-dd99-4102-afe2-662a4fcaba7b                                       |
  | min_disk         | 0                                                                          |
  | min_ram          | 0                                                                          |
  | name             | ubuntu-16.04-amd64_2                                                       |
  | owner            | 71cea55297f94953b33b2a2549d72a95                                           |
  | properties       | architecture='amd64', direct_url='rbd://8838dc54-c385-4949-9624-1cf3911320 |
  |                  | 1d/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/snap',                      |
  |                  | distribution='Ubuntu', family='Linux', username='ubuntu', version='16.04'  |
  | protected        | False                                                                      |
  | schema           | /v2/schemas/image                                                          |
  | size             | 2361393152                                                                 |
  | status           | active                                                                     |
  | tags             |                                                                            |
  | updated_at       | 2017-09-14T21:10:44Z                                                       |
  | virtual_size     | None                                                                       |
  | visibility       | public                                                                     |
  +------------------+----------------------------------------------------------------------------+
+ Expected result:
+ succesfully create server snapshot
+ 
+ Actual result:
+ 
  logs:
- 
  
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions [req-eea1ec3c-a500-4006-ab4d-00a05a6b4f33 f25d972f420840e48163a55bf5713bf6 c657c15a0a13435bbe2c323c732d4e4f - 0e46d3ad069b4f0e85bf594de38fbe0e 0e46d3ad069b4f0e85bf594de38fbe0e] Unexpected exception in API method: TypeError: call() got multiple values for keyword argument 'version'
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions Traceback (most recent call last):
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/extensions.py", line 336, in wrapped
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/common.py", line 356, in inner
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py", line 999, in _action_create_image
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=metadata)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 208, in _wrapped
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return fn(self, context, instance, *args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 148, in inner
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(self, context, instance, *args, **kw)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2684, in snapshot
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=extra_properties)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2754, in _create_image
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return self.image_api.create(context, image_meta)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/api.py", line 108, in create
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return session.create(context, image_info, data=data)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 390, in create
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     data, force_activate)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 467, in _create_v2
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     context, 2, 'create', **sent_service_image_meta)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions TypeError: call() got multiple values for keyword argument 'version'
- 2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions 
+ 2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions
  <type 'exceptions.TypeError'>

-- 
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/1717547

Title:
  Creating snapshot fails when image metadata has version field

Status in OpenStack Compute (nova):
  Confirmed

Bug description:
  Description:

  When creating a snapshot of a server using the nova API, failure
  occurs if the image contains the metadata property "version". It seems
  like image metadata is passed as an argument to _create_v2
  (nova/image/glance.py) which is then passed to call
  (nova/image/glance.py) as kwargs. The function already takes in
  context, method, and version arguments, so it seems that any of these
  metadata properties would cause the snapshot to fail.

  OpenStack version : Pike
  Nova API version : 2.1

  Steps to reporduce:

  1. Create an image with metadata property "version"
  2. Launch an server using this image
  3. Try to create a server snapshot of the server you just launched 

  image used:
  +------------------+----------------------------------------------------------------------------+
  | Field            | Value                                                                      |
  +------------------+----------------------------------------------------------------------------+
  | checksum         | d19875d33815bd8c49fe39829b1df924                                           |
  | container_format | bare                                                                       |
  | created_at       | 2017-09-05T15:57:24Z                                                       |
  | disk_format      | raw                                                                        |
  | file             | /v2/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/file                       |
  | id               | c7f76154-dd99-4102-afe2-662a4fcaba7b                                       |
  | min_disk         | 0                                                                          |
  | min_ram          | 0                                                                          |
  | name             | ubuntu-16.04-amd64_2                                                       |
  | owner            | 71cea55297f94953b33b2a2549d72a95                                           |
  | properties       | architecture='amd64', direct_url='rbd://8838dc54-c385-4949-9624-1cf3911320 |
  |                  | 1d/images/c7f76154-dd99-4102-afe2-662a4fcaba7b/snap',                      |
  |                  | distribution='Ubuntu', family='Linux', username='ubuntu', version='16.04'  |
  | protected        | False                                                                      |
  | schema           | /v2/schemas/image                                                          |
  | size             | 2361393152                                                                 |
  | status           | active                                                                     |
  | tags             |                                                                            |
  | updated_at       | 2017-09-14T21:10:44Z                                                       |
  | virtual_size     | None                                                                       |
  | visibility       | public                                                                     |
  +------------------+----------------------------------------------------------------------------+
  Expected result:
  succesfully create server snapshot

  Actual result:

  logs:

  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions [req-eea1ec3c-a500-4006-ab4d-00a05a6b4f33 f25d972f420840e48163a55bf5713bf6 c657c15a0a13435bbe2c323c732d4e4f - 0e46d3ad069b4f0e85bf594de38fbe0e 0e46d3ad069b4f0e85bf594de38fbe0e] Unexpected exception in API method: TypeError: call() got multiple values for keyword argument 'version'
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions Traceback (most recent call last):
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/extensions.py", line 336, in wrapped
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/common.py", line 356, in inner
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 108, in wrapper
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return func(*args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py", line 999, in _action_create_image
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=metadata)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 208, in _wrapped
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return fn(self, context, instance, *args, **kwargs)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 148, in inner
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return f(self, context, instance, *args, **kw)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2684, in snapshot
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     extra_properties=extra_properties)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/compute/api.py", line 2754, in _create_image
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return self.image_api.create(context, image_meta)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/api.py", line 108, in create
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     return session.create(context, image_info, data=data)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 390, in create
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     data, force_activate)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions   File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/nova/image/glance.py", line 467, in _create_v2
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions     context, 2, 'create', **sent_service_image_meta)
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions TypeError: call() got multiple values for keyword argument 'version'
  2017-09-14 19:57:53.486 27 ERROR nova.api.openstack.extensions
  <type 'exceptions.TypeError'>

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


Follow ups