 32b8307819
			
		
	
	32b8307819
	
	
	
		
			
			Prepare for the Image API v1 to be removed from glance during Rocky by splitting the functional tests that hit v1 from the tests that hit v2. Introduce a new job that runs the functional-v1 tests against a devstack running glance stable/queens, and configure this job for both check and gate for the glanceclient. The v2 functional tests continue to be run for both check and gate against a devstack running glance master. Change-Id: Ifa98ada26a84e4cca3ea8c98173f61a6174cca27
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #    Licensed under the Apache License, Version 2.0 (the "License"); you may
 | |
| #    not use this file except in compliance with the License. You may obtain
 | |
| #    a copy of the License at
 | |
| #
 | |
| #         http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| #    Unless required by applicable law or agreed to in writing, software
 | |
| #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | |
| #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | |
| #    License for the specific language governing permissions and limitations
 | |
| #    under the License.
 | |
| 
 | |
| from glanceclient.tests.functional import base
 | |
| import time
 | |
| 
 | |
| 
 | |
| IMAGE = {"protected": False,
 | |
|          "disk_format": "qcow2",
 | |
|          "name": "glance_functional_test_image.img",
 | |
|          "visibility": "private",
 | |
|          "container_format": "bare"}
 | |
| 
 | |
| 
 | |
| class HttpHeadersTest(base.ClientTestBase):
 | |
|     def test_encode_headers_python(self):
 | |
|         """Test proper handling of Content-Type headers.
 | |
| 
 | |
|         encode_headers() must be called as late as possible before a
 | |
|         request is sent. If this principle is violated, and if any
 | |
|         changes are made to the headers between encode_headers() and the
 | |
|         actual request (for instance a call to
 | |
|         _set_common_request_kwargs()), and if you're trying to set a
 | |
|         Content-Type that is not equal to application/octet-stream (the
 | |
|         default), it is entirely possible that you'll end up with two
 | |
|         Content-Type headers defined (yours plus
 | |
|         application/octet-stream). The request will go out the door with
 | |
|         only one of them chosen seemingly at random.
 | |
| 
 | |
|         This test uses a call to update() because it sets a header such
 | |
|         as the following (this example may be subject to change):
 | |
|         Content-Type: application/openstack-images-v2.1-json-patch
 | |
| 
 | |
|         This situation only occurs in python3. This test will never fail
 | |
|         in python2.
 | |
| 
 | |
|         There is no test against the CLI because it swallows the error.
 | |
|         """
 | |
|         # the failure is intermittent - try up to 6 times
 | |
|         for attempt in range(0, 6):
 | |
|             glanceclient = self.glance_pyclient()
 | |
|             image = glanceclient.find(IMAGE["name"])
 | |
|             if image:
 | |
|                 glanceclient.glance.images.delete(image.id)
 | |
|             image = glanceclient.glance.images.create(name=IMAGE["name"])
 | |
|             self.assertTrue(image.status == "queued")
 | |
|             try:
 | |
|                 image = glanceclient.glance.images.update(image.id,
 | |
|                                                           disk_format="qcow2")
 | |
|             except Exception as e:
 | |
|                 self.assertFalse("415 Unsupported Media Type" in e.details)
 | |
|             time.sleep(5)
 |