Bug 1027316 - openstack-glance: api v2 allow to add the same location twice
Summary: openstack-glance: api v2 allow to add the same location twice
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-glance
Version: 4.0
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 5.0 (RHEL 7)
Assignee: Flavio Percoco
QA Contact: Tzach Shefi
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-11-06 14:31 UTC by Yogev Rabl
Modified: 2017-08-28 22:59 UTC (History)
5 users (show)

Fixed In Version: openstack-glance-2014.1-2.el7ost
Doc Type: Bug Fix
Doc Text:
This update enhances the logic used to register multiple locations for the same image in Glance, preventing users from registering the same location more than once for a given image.
Clone Of:
Environment:
Last Closed: 2014-07-08 15:31:38 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Glance API.log (1.05 MB, text/plain)
2014-06-10 09:01 UTC, Tzach Shefi
no flags Details


Links
System ID Private Priority Status Summary Last Updated
OpenStack gerrit 56663 0 None None None Never
Red Hat Product Errata RHEA-2014:0851 0 normal SHIPPED_LIVE Red Hat Enterprise Linux OpenStack Platform Enhancement - Image Service 2014-07-08 19:22:51 UTC

Description Yogev Rabl 2013-11-06 14:31:59 UTC
Description of problem:
The Glance's API version 2 enables multiple location of the image, the feature shouldn't allow the user to add the same location to the same image. 

The log shows: 
2013-11-06 16:28:22.449 6952 DEBUG glance.api.middleware.version_negotiation [-] Determining version of request: PATCH /v2/images/149563cb-0ad5-4bcc-a933-a24744219e53 Accept: */* process_request /usr/lib/python2.6/site-packages/glance/api/middleware/version_negotiation.py:46                                                                                                                                                       
2013-11-06 16:28:22.449 6952 DEBUG glance.api.middleware.version_negotiation [-] Using url versioning process_request /usr/lib/python2.6/site-packages/glance/api/middleware/version_negotiation.py:59               
2013-11-06 16:28:22.450 6952 DEBUG glance.api.middleware.version_negotiation [-] Matched version: v2 process_request /usr/lib/python2.6/site-packages/glance/api/middleware/version_negotiation.py:71                
2013-11-06 16:28:22.450 6952 DEBUG glance.api.middleware.version_negotiation [-] new path /v2/images/149563cb-0ad5-4bcc-a933-a24744219e53 process_request /usr/lib/python2.6/site-packages/glance/api/middleware/version_negotiation.py:72                                                                                                                                                                                                
2013-11-06 16:28:22.450 6952 DEBUG keystoneclient.middleware.auth_token [-] Authenticating user token __call__ /usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py:558                          
2013-11-06 16:28:22.450 6952 DEBUG keystoneclient.middleware.auth_token [-] Removing headers from request environment: X-Identity-Status,X-Domain-Id,X-Domain-Name,X-Project-Id,X-Project-Name,X-Project-Domain-Id,X-Project-Domain-Name,X-User-Id,X-User-Name,X-User-Domain-Id,X-User-Domain-Name,X-Roles,X-Service-Catalog,X-User,X-Tenant-Id,X-Tenant-Name,X-Tenant,X-Role _remove_auth_headers /usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py:617                                                                                                                                                                                
2013-11-06 16:28:22.452 6952 INFO urllib3.connectionpool [-] Starting new HTTP connection (1): 10.35.160.113                                                                                                         
2013-11-06 16:28:22.495 6952 DEBUG urllib3.connectionpool [-] "GET /v2.0/tokens/revoked HTTP/1.1" 200 904 _make_request /usr/lib/python2.6/site-packages/urllib3/connectionpool.py:295                               
2013-11-06 16:28:22.520 6952 DEBUG keystoneclient.middleware.auth_token [-] Storing e38114150a7ee42e223aa81de126ff3c token in memcache _cache_put /usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py:1061                                                                                                                                                                                                           
2013-11-06 16:28:22.521 6952 DEBUG keystoneclient.middleware.auth_token [-] Received request from user: c7fdf6f628554d56aad363ad501ce412 with project_id : add3de2deaa445c1a1e71c1721bc8976 and roles: admin  _build_user_headers /usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py:922                                                                                                                            
2013-11-06 16:28:22.525 6952 DEBUG routes.middleware [-] Matched PATCH /images/149563cb-0ad5-4bcc-a933-a24744219e53 __call__ /usr/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py:100       
2013-11-06 16:28:22.525 6952 DEBUG routes.middleware [-] Route path: '/images/{image_id}', defaults: {'action': u'update', 'controller': <glance.common.wsgi.Resource object at 0x31c99d0>} __call__ /usr/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py:102                                                                                                                                                    
2013-11-06 16:28:22.525 6952 DEBUG routes.middleware [-] Match dict: {'action': u'update', 'image_id': u'149563cb-0ad5-4bcc-a933-a24744219e53', 'controller': <glance.common.wsgi.Resource object at 0x31c99d0>} __call__ /usr/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py:103                                                                                                                               
2013-11-06 16:28:22.540 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75                                                                                          
2013-11-06 16:28:22.555 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75                                                                                          
2013-11-06 16:28:22.555 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75                                                                                          
2013-11-06 16:28:23.010 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75                                                                                          
2013-11-06 16:28:23.255 6952 DEBUG glance.store [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Skipping store.set_acls... not implemented. set_acls /usr/lib/python2.6/site-packages/glance/store/__init__.py:369                                                                                                                                                               
2013-11-06 16:28:23.255 6952 DEBUG glance.store [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Skipping store.set_acls... not implemented. set_acls /usr/lib/python2.6/site-packages/glance/store/__init__.py:369                                                                                                                                                               
2013-11-06 16:28:23.256 6952 DEBUG glance.store [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Skipping store.set_acls... not implemented. set_acls /usr/lib/python2.6/site-packages/glance/store/__init__.py:369                                                                                                                                                               
2013-11-06 16:28:23.257 6952 DEBUG qpid.messaging.io.raw [-] OPEN[3974c20]: localhost:5672 connect /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:530                                                     
2013-11-06 16:28:23.259 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: 'AMQP\x01\x01\x00\n' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480                                             
2013-11-06 16:28:23.259 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: 'AMQP\x01\x01\x00\n\x0f\x00\x00~\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x07\x00\x00\x00\x00?\x00\x00\x00\x01\x13qpid.federation_tag\x95\x00$6f65d2c0-f8c9-4017-a268-799e01e57976\x00\x00\x00\x17\x95\x00\x00\x00\x02\x00\tANONYMOUS\x00\x05PLAIN\x00\x00\x00\x0c\x95\x00\x00\x00\x01\x00\x05en_US' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416                                                                                                                                                                                                         
2013-11-06 16:28:23.260 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ConnectionStart(server_properties={u'qpid.federation_tag': u'6f65d2c0-f8c9-4017-a268-799e01e57976'}, mechanisms=[u'ANONYMOUS', u'PLAIN'], locales=[u'en_US']) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654                                                                                                                             
2013-11-06 16:28:23.260 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: ConnectionStartOk(client_properties={'product': 'qpid python client', 'qpid.client_ppid': 6944, 'qpid.client_process': 'glance-api', 'platform': 'posix', 'qpid.client_pid': 6952, 'version': 'development'}, mechanism='ANONYMOUS', response='anonymous.lab.tlv.redhat.com') write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686                                                                                                                                                                                                                  
2013-11-06 16:28:23.261 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0f\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x07\x00\x00\x00\x00\x9c\x00\x00\x00\x06\x07product\x95\x00\x12qpid python client\x10qpid.client_ppid1\x00\x00\x00\x00\x00\x00\x1b \x13qpid.client_process\x95\x00\nglance-api\x08platform\x95\x00\x05posix\x0fqpid.client_pid1\x00\x00\x00\x00\x00\x00\x1b(\x07version\x95\x00\x0bdevelopment\tANONYMOUS\x00\x00\x00)anonymous.lab.tlv.redhat.com' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480                                                                                  
2013-11-06 16:28:23.261 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x05\x0f\x00\x7f\xff\xff\xff\x00\x00\x00x' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416                                                                                                                                                                                        
2013-11-06 16:28:23.262 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ConnectionTune(channel_max=32767, max_frame_size=65535, heartbeat_min=0, heartbeat_max=120) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654                                                                                                                                                                                               
2013-11-06 16:28:23.262 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: ConnectionTuneOk(channel_max=32767, heartbeat=60) write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686                 
2013-11-06 16:28:23.262 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: ConnectionOpen() write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686                                                  
2013-11-06 16:28:23.263 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0f\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x05\x00\x7f\xff\x00<\x0f\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x01\x07\x00\x00' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480                                                                                                                                       
2013-11-06 16:28:23.264 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\x01\x00\x00\x00\x00"\x95\x00\x00\x00\x01\x00\x1bamqp:tcp:10.35.160.113:5672' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416                                                                                                                                                    
2013-11-06 16:28:23.264 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ConnectionOpenOk(known_hosts=[u'amqp:tcp:10.35.160.113:5672']) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654       
2013-11-06 16:28:23.265 6952 INFO glance.notifier.notify_qpid [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Connected to AMQP server on localhost:5672    
2013-11-06 16:28:23.265 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: SessionAttach(name='94bd43e1-7716-42d1-aca8-8fadd24645f6:0') write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686      
2013-11-06 16:28:23.265 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: SessionCommandPoint(command_id=serial(0), command_offset=0) write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686       
2013-11-06 16:28:23.267 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: ExchangeQuery(name='glance', id=serial(0), sync=True) write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686             
2013-11-06 16:28:23.267 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: QueueQuery(queue='glance', id=serial(1), sync=True) write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686               
2013-11-06 16:28:23.268 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0f\x00\x008\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x01\x00\x00&94bd43e1-7716-42d1-aca8-8fadd24645f6:0\x0f\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x02\x07\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x19\x00\x01\x00\x00\x00\x00\x00\x00\x07\x03\x01\x01\x01\x00\x06glance\x0f\x01\x00\x19\x00\x01\x00\x00\x00\x00\x00\x00\x08\x04\x01\x01\x01\x00\x06glance' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480                                                                                                             
2013-11-06 16:28:23.269 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x008\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x01\x00\x00&94bd43e1-7716-42d1-aca8-8fadd24645f6:0\x0f\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x02\x07\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00,\x00\x01\x00\x00\x00\x00\x00\x00\x03\x02\x01\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x12\x07\x01\x0b\x00\x05topic\x00\x00\x00\x04\x00\x00\x00\x00\x0f\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x02\n\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x1e\x00\x01\x00\x00\x00\x00\x00\x00\x03\x02\x01\x00\x03\x00\x00\x00\x00\x01\x00\x00\x00\x04\x08\x01\x00\x00\x0f\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x02\n\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416     
2013-11-06 16:28:23.269 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionAttached(name='94bd43e1-7716-42d1-aca8-8fadd24645f6:0') write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654       
2013-11-06 16:28:23.270 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionCommandPoint(command_id=serial(0), command_offset=0) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.270 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ExecutionResult(command_id=serial(0), value=ExchangeQueryResult(type=u'topic', durable=True, arguments={}), id=serial(0)) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.270 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionCompleted(commands=[0-0]) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.271 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ExecutionResult(command_id=serial(1), value=QueueQueryResult(), id=serial(1)) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.271 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionCompleted(commands=[0-1]) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.273 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: MessageTransfer(destination='glance', id=serial(2), sync=True, headers=(DeliveryProperties(routing_key='notifications.info'), MessageProperties(content_type='amqp/map', application_headers={'qpid.subject': 'notifications.info'})), payload='\x00\x00\x02U\x00\x00\x00\x06\nevent_type\x95\x00\x0cimage.update\ttimestamp\x95\x00\x1a2013-11-06 14:28:23.256944\nmessage_id\x95\x00$221a17e8-1421-4104-a2b3-e9c83e160f2f\x08priority\x95\x00\x04INFO\x0cpublisher_id\x95\x00\x1fcougar12.scl.lab.tlv.redhat.com\x07payload\xa8\x00\x00\x01\x92\x00\x00\x00\x12\x06status\x95\x00\x06active\x04name\x95\x00\x08my_image\x04tags\xa9\x00\x00\x00\x04\x00\x00\x00\x00\x07deleted\x08\x00\x08checksum\x95\x00 338eac7c24238cb2e2d60deb6c31c3df\ncreated_at\x95\x00\x142013-11-06T10:28:27Z\x0bdisk_format\x95\x00\x03iso\nupdated_at\x95\x00\x142013-11-06T14:28:23Z\nproperties\xa8\x00\x00\x00\x04\x00\x00\x00\x00\x05owner\x95\x00 add3de2deaa445c1a1e71c1721bc8976\tprotected\x08\x00\x07min_ram1\x00\x00\x00\x00\x00\x00\x00\x00\x10container_format\x95\x00\x04bare\x08min_disk1\x00\x00\x00\x00\x00\x00\x00\x00\tis_public\x08\x00\ndeleted_at\xf0\x02id\x95\x00$149563cb-0ad5-4bcc-a933-a24744219e53\x04size1\x00\x00\x00\x00;p\x00\x00') write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686
2013-11-06 16:28:23.274 6952 DEBUG qpid.messaging [-] SENT[397a5a8]: Message(properties={'qpid.subject': 'notifications.info'}, content={'event_type': 'image.update', 'timestamp': '2013-11-06 14:28:23.256944', 'message_id': '221a17e8-1421-4104-a2b3-e9c83e160f2f', 'priority': 'INFO', 'publisher_id': 'cougar12.scl.lab.tlv.redhat.com', 'payload': {'status': u'active', 'name': u'my_image', 'tags': [], 'deleted': False, 'checksum': u'338eac7c24238cb2e2d60deb6c31c3df', 'created_at': '2013-11-06T10:28:27Z', 'disk_format': u'iso', 'updated_at': '2013-11-06T14:28:23Z', 'properties': {}, 'owner': u'add3de2deaa445c1a1e71c1721bc8976', 'protected': False, 'min_ram': 0L, 'container_format': u'bare', 'min_disk': 0L, 'is_public': False, 'deleted_at': None, 'id': u'149563cb-0ad5-4bcc-a933-a24744219e53', 'size': 997195776L}}) send /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:1280
2013-11-06 16:28:23.274 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0b\x01\x00\x19\x00\x01\x00\x00\x00\x00\x00\x00\x04\x01\x01\x01\x01\x00\x06glance\x03\x02\x00b\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x04\x01\x00\x02\x12notifications.info\x00\x00\x007\x04\x03\x10\x01\x08amqp/map\x00\x00\x00&\x00\x00\x00\x01\x0cqpid.subject\x95\x00\x12notifications.info\x07\x03\x02e\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02U\x00\x00\x00\x06\nevent_type\x95\x00\x0cimage.update\ttimestamp\x95\x00\x1a2013-11-06 14:28:23.256944\nmessage_id\x95\x00$221a17e8-1421-4104-a2b3-e9c83e160f2f\x08priority\x95\x00\x04INFO\x0cpublisher_id\x95\x00\x1fcougar12.scl.lab.tlv.redhat.com\x07payload\xa8\x00\x00\x01\x92\x00\x00\x00\x12\x06status\x95\x00\x06active\x04name\x95\x00\x08my_image\x04tags\xa9\x00\x00\x00\x04\x00\x00\x00\x00\x07deleted\x08\x00\x08checksum\x95\x00 338eac7c24238cb2e2d60deb6c31c3df\ncreated_at\x95\x00\x142013-11-06T10:28:27Z\x0bdisk_format\x95\x00\x03iso\nupdated_at\x95\x00\x142013-11-06T14:28:23Z\nproperties\xa8\x00\x00\x00\x04\x00\x00\x00\x00\x05owner\x95\x00 add3de2deaa445c1a1e71c1721bc8976\tprotected\x08\x00\x07min_ram1\x00\x00\x00\x00\x00\x00\x00\x00\x10container_format\x95\x00\x04bare\x08min_disk1\x00\x00\x00\x00\x00\x00\x00\x00\tis_public\x08\x00\ndeleted_at\xf0\x02id\x95\x00$149563cb-0ad5-4bcc-a933-a24744219e53\x04size1\x00\x00\x00\x00;p\x00\x00' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480
2013-11-06 16:28:23.275 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x02\n\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x02' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416
2013-11-06 16:28:23.275 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionCompleted(commands=[0-2]) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.276 6952 DEBUG qpid.messaging [-] RACK[397a5a8]: Message(properties={'qpid.subject': 'notifications.info'}, content={'event_type': 'image.update', 'timestamp': '2013-11-06 14:28:23.256944', 'message_id': '221a17e8-1421-4104-a2b3-e9c83e160f2f', 'priority': 'INFO', 'publisher_id': 'cougar12.scl.lab.tlv.redhat.com', 'payload': {'status': u'active', 'name': u'my_image', 'tags': [], 'deleted': False, 'checksum': u'338eac7c24238cb2e2d60deb6c31c3df', 'created_at': '2013-11-06T10:28:27Z', 'disk_format': u'iso', 'updated_at': '2013-11-06T14:28:23Z', 'properties': {}, 'owner': u'add3de2deaa445c1a1e71c1721bc8976', 'protected': False, 'min_ram': 0L, 'container_format': u'bare', 'min_disk': 0L, 'is_public': False, 'deleted_at': None, 'id': u'149563cb-0ad5-4bcc-a933-a24744219e53', 'size': 997195776L}}) msg_acked /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:1269
2013-11-06 16:28:23.277 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: SessionDetach(name='94bd43e1-7716-42d1-aca8-8fadd24645f6:0') write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686
2013-11-06 16:28:23.277 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0f\x00\x008\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x01\x00\x00&94bd43e1-7716-42d1-aca8-8fadd24645f6:0' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480
2013-11-06 16:28:23.278 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x009\x00\x00\x00\x00\x00\x00\x00\x00\x02\x04\x03\x00\x00&94bd43e1-7716-42d1-aca8-8fadd24645f6:0\x00' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416
2013-11-06 16:28:23.278 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: SessionDetached(name='94bd43e1-7716-42d1-aca8-8fadd24645f6:0', code=0) write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.279 6952 DEBUG qpid.messaging.io.ops [-] SENT[3974c20]: ConnectionClose(reply_code=200) write_op /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:686
2013-11-06 16:28:23.280 6952 DEBUG qpid.messaging.io.raw [-] SENT[3974c20]: '\x0f\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x01\x0b\x01\x00\x00\xc8' writeable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:480
2013-11-06 16:28:23.280 6952 DEBUG qpid.messaging.io.raw [-] READ[3974c20]: '\x0f\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x01\x0c\x00\x00' readable /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:416
2013-11-06 16:28:23.280 6952 DEBUG qpid.messaging.io.ops [-] RCVD[3974c20]: ConnectionCloseOk() write /usr/lib/python2.6/site-packages/qpid/messaging/driver.py:654
2013-11-06 16:28:23.281 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75
2013-11-06 16:28:23.282 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75
2013-11-06 16:28:23.282 6952 DEBUG glance.api.policy [862beb1a-c108-4739-a071-b916b854170f c7fdf6f628554d56aad363ad501ce412 add3de2deaa445c1a1e71c1721bc8976] Loaded policy rules: {u'context_is_admin': 'role:admin', u'default': '@', u'manage_image_cache': 'role:admin'} load_rules /usr/lib/python2.6/site-packages/glance/api/policy.py:75

Version-Release number of selected component (if applicable):
openstack-glance-2013.2-1.el6ost.noarch 

How reproducible:
everytime

Steps to Reproduce:
1. configure the multiple location in glance with instructions from this page: https://github.com/mkollaro/openstack-testplans/blob/master/glance/multilocation.rst
2. create an image. 
3. add the same location twice (run the same command): curl -i -X PATCH -H 'Content-Type: application/openstack-images-v2.1-json-patch' -H "X-Auth-Token: $AUTH" http://localhost:9292/v2/images/<image_id> -d '[{"op": "add", "path": "/locations/1", "value": {"url": "<image url>", "metadata": {}}}]'

Actual results:
| locations        | [{u'url': u'http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso', u'metadata': {}}, {u'url': u'http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso', u'metadata': {}}] |


Expected results:
An error message should prevent the action.

Additional info:

Comment 2 Flavio Percoco 2013-11-14 10:36:51 UTC
It is necessary to verify that location+metadata does not exist in the locations list. 1 URI with different metadata is considered a different location.

Comment 4 Tzach Shefi 2014-06-10 09:00:50 UTC
Verified on:
RHEL7
openstack-glance-2014.1-2.el7ost.noarch

Uploaded an image (/var/lib/glance/images/63aa..

Using curl added a second location to that image

# curl -i -X PATCH -H 'Content-Type: application/openstack-images-v2.1-json-patch' -H "X-Auth-Token: $AUTH" http://10.35.160.71:9292/v2/images/63aab139-519f-4161-8dc8-5474f05ac05e -d '[{"op": "add", "path": "/locations/1", "value": {"url": "http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso", "metadata": {}}}]'


# glance --os-image-api-version 2 image-show 63aab139-519f-4161-8dc8-5474f05ac05e
....                                                                                                          |
| locations        | [{u'url': u'file:///var/lib/glance/images/63aab139-519f-4161-8dc8-5474f05ac05e', u'metadata': {}}, {u'url': u'http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso', u'metadata': {}}] |
| min_disk         | 0                                                                                      
Running same curl command again (same location twice) got expected error:

HTTP/1.1 400 Bad Request
Content-Length: 273
Content-Type: text/html; charset=UTF-8
X-Openstack-Request-Id: req-b2c2872b-1570-4512-9b03-cfba9128efb1
Date: Tue, 10 Jun 2014 08:42:18 GMT

<html>
 <head>
  <title>400 Bad Request</title>
 </head>
 <body>
  <h1>400 Bad Request</h1>
  The location http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso already exists<br /><br />

 </body>
</html>[root@puma31 ~(keystone_admin)]#


Additional testing used curl to add another location (new unique URL), a third image location was added successfully.  

| locations        | [{u'url': u'file:///var/lib/glance/images/63aab139-519f-4161-8dc8-5474f05ac05e', u'metadata': {}}, {u'url': u'http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-KDE-x86_64-19-1.iso', u'metadata': {}}, {u'url': u'http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso', u'metadata': {}}] |
                                                                                
Attaching glance api.log

Comment 5 Tzach Shefi 2014-06-10 09:01:27 UTC
Created attachment 907095 [details]
Glance API.log

Comment 8 errata-xmlrpc 2014-07-08 15:31:38 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHEA-2014-0851.html

Comment 9 Andrew Dahms 2017-08-28 22:59:43 UTC
Cancelling old needinfo request.


Note You need to log in before you can comment on or make changes to this bug.