diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-05-28 09:59:58 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-05-28 09:59:58 +0000 |
| commit | d7e613dabc2dbc28d9405a5b450dc2b4dfa9d47b (patch) | |
| tree | 8cdd40cd47da365242aef96d5ff97f192a6723e8 /nova/tests | |
| parent | 0add75a7ff674cd650a962bfbc1f24121313bfde (diff) | |
| parent | 7b89917ece552b6b3dfe92ecc878531d9bfd9125 (diff) | |
Merge "_s3_create update only pertinent metadata"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/glance/stubs.py | 2 | ||||
| -rw-r--r-- | nova/tests/image/test_s3.py | 59 |
2 files changed, 60 insertions, 1 deletions
diff --git a/nova/tests/glance/stubs.py b/nova/tests/glance/stubs.py index ccf431b69..e3bdf9dab 100644 --- a/nova/tests/glance/stubs.py +++ b/nova/tests/glance/stubs.py @@ -140,7 +140,7 @@ class StubGlanceClient(object): return self.images[-1] - def update_image(self, image_id, metadata, data): + def update_image(self, image_id, metadata, data, features): for i, image in enumerate(self.images): if image['id'] == str(image_id): if 'id' in metadata: diff --git a/nova/tests/image/test_s3.py b/nova/tests/image/test_s3.py index 124666df9..9f078fc49 100644 --- a/nova/tests/image/test_s3.py +++ b/nova/tests/image/test_s3.py @@ -15,7 +15,11 @@ # License for the specific language governing permissions and limitations # under the License. +import binascii +import eventlet +import mox import os +import tempfile from nova import context import nova.db.api @@ -58,6 +62,21 @@ ami_manifest_xml = """<?xml version="1.0" ?> </manifest> """ +file_manifest_xml = """<?xml version="1.0" ?> +<manifest> + <image> + <ec2_encrypted_key>foo</ec2_encrypted_key> + <user_encrypted_key>foo</user_encrypted_key> + <ec2_encrypted_iv>foo</ec2_encrypted_iv> + <parts count="1"> + <part index="0"> + <filename>foo</filename> + </part> + </parts> + </image> +</manifest> +""" + class TestS3ImageService(test.TestCase): def setUp(self): @@ -133,6 +152,46 @@ class TestS3ImageService(test.TestCase): 'no_device': True}] self.assertEqual(block_device_mapping, expected_bdm) + def test_s3_create_is_public(self): + metadata = {'properties': { + 'image_location': 'mybucket/my.img.manifest.xml'}, + 'name': 'mybucket/my.img'} + handle, tempf = tempfile.mkstemp(dir='/tmp') + + ignore = mox.IgnoreArg() + mockobj = self.mox.CreateMockAnything() + self.stubs.Set(self.image_service, '_conn', mockobj) + mockobj(ignore).AndReturn(mockobj) + self.stubs.Set(mockobj, 'get_bucket', mockobj) + mockobj(ignore).AndReturn(mockobj) + self.stubs.Set(mockobj, 'get_key', mockobj) + mockobj(ignore).AndReturn(mockobj) + self.stubs.Set(mockobj, 'get_contents_as_string', mockobj) + mockobj().AndReturn(file_manifest_xml) + self.stubs.Set(self.image_service, '_download_file', mockobj) + mockobj(ignore, ignore, ignore).AndReturn(tempf) + self.stubs.Set(binascii, 'a2b_hex', mockobj) + mockobj(ignore).AndReturn('foo') + mockobj(ignore).AndReturn('foo') + self.stubs.Set(self.image_service, '_decrypt_image', mockobj) + mockobj(ignore, ignore, ignore, ignore, ignore).AndReturn(mockobj) + self.stubs.Set(self.image_service, '_untarzip_image', mockobj) + mockobj(ignore, ignore).AndReturn(tempf) + self.mox.ReplayAll() + + img = self.image_service._s3_create(self.context, metadata) + eventlet.sleep() + translated = self.image_service._translate_id_to_uuid(context, img) + uuid = translated['id'] + self.glance_service = nova.image.get_default_image_service() + updated_image = self.glance_service.update(self.context, uuid, + {'is_public': True}, None, + {'x-glance-registry-purge-props': False}) + self.assertTrue(updated_image['is_public']) + self.assertEqual(updated_image['status'], 'active') + self.assertEqual(updated_image['properties']['image_state'], + 'available') + def test_s3_malicious_tarballs(self): self.assertRaises(exception.NovaException, self.image_service._test_for_malicious_tarball, |
