def test_s3_create_bdm(self, spawn_n): glance = self.mock_glance() metadata = {'image_location': 'fake_bucket/fake_manifest', 'root_device_name': '/dev/sda1', 'block_device_mapping': [ {'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}]} fake_context = base.create_context() with mock.patch('ec2api.api.image._s3_conn') as s3_conn: (s3_conn.return_value. get_bucket.return_value. get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML image_api._s3_create(fake_context, metadata) glance.images.create.assert_called_once_with( disk_format='ami', container_format='ami', visibility='private', architecture='x86_64', image_state='pending', root_device_name='/dev/sda1', block_device_mapping=[{'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}], image_location='fake_bucket/fake_manifest')
def test_s3_create_bdm(self, spawn_n): glance = self.mock_glance() metadata = {'image_location': 'fake_bucket/fake_manifest', 'root_device_name': '/dev/sda1', 'block_device_mapping': [ {'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}]} fake_context = base.create_context() with mock.patch('ec2api.api.image._s3_conn') as s3_conn: (s3_conn.return_value. get_object.return_value) = {'Body': FILE_MANIFEST_XML} image_api._s3_create(fake_context, metadata) glance.images.create.assert_called_once_with( disk_format='ami', container_format='ami', visibility='private', architecture='x86_64', image_state='pending', root_device_name='/dev/sda1', block_device_mapping=[{'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}], image_location='fake_bucket/fake_manifest')
def test_s3_create_bdm(self, spawn_n): metadata = { 'properties': { 'image_location': 'fake_bucket/fake_manifest', 'root_device_name': '/dev/sda1', 'block_device_mapping': [{ 'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True }, { 'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0' }, { 'device_name': '/dev/sdb0', 'no_device': True }] } } fake_context = self._create_context() with mock.patch('ec2api.api.image._s3_conn') as s3_conn: (s3_conn.return_value.get_bucket.return_value.get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML image_api._s3_create(fake_context, metadata) self.glance.images.create.assert_called_once_with( disk_format='ami', container_format='ami', is_public=False, properties={ 'architecture': 'x86_64', 'image_state': 'pending', 'root_device_name': '/dev/sda1', 'block_device_mapping': [{ 'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True }, { 'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0' }, { 'device_name': '/dev/sdb0', 'no_device': True }], 'image_location': 'fake_bucket/fake_manifest' })
def do_test(s3_conn, s3_download_file, s3_decrypt_image, s3_untarzip_image): (s3_conn.return_value. get_object.return_value) = {'Body': FILE_MANIFEST_XML} s3_download_file.return_value = tempf s3_untarzip_image.return_value = tempf os_image_id = fakes.random_os_id() (glance.images.create.return_value) = ( fakes.OSImage({'id': os_image_id, 'status': 'queued'})) data = [ ({'image_location': 'testbucket_1/test.img.manifest.xml'}, 'testbucket_1', 'test.img.manifest.xml'), ({'image_location': '/testbucket_2/test.img.manifest.xml'}, 'testbucket_2', 'test.img.manifest.xml')] for mdata, bucket, manifest in data: image = image_api._s3_create(fake_context, mdata) eventlet.sleep() self.glance.images.update.assert_called_with( os_image_id, image_state='available') self.glance.images.upload.assert_any_call( os_image_id, mock.ANY) s3_conn.return_value.get_object.assert_called_with( Bucket=bucket, Key=manifest) s3_download_file.assert_called_with( mock.ANY, bucket, 'foo', mock.ANY) s3_decrypt_image.assert_called_with( fake_context, mock.ANY, 'foo', 'foo', mock.ANY) s3_untarzip_image.assert_called_with(mock.ANY, mock.ANY) do_test()
def test_s3_create_image_locations(self, osimage_update): self.configure(image_decryption_dir=None) _handle, tempf = tempfile.mkstemp() fake_context = base.create_context() with contextlib.nested( mock.patch('ec2api.api.image._s3_conn'), mock.patch('ec2api.api.image._s3_download_file'), mock.patch('ec2api.api.image._s3_decrypt_image'), mock.patch('ec2api.api.image._s3_untarzip_image')) as ( s3_conn, s3_download_file, s3_decrypt_image, s3_untarzip_image): (s3_conn.return_value.get_bucket.return_value.get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML s3_download_file.return_value = tempf s3_untarzip_image.return_value = tempf (self.glance.images.create.return_value) = (fakes.OSImage({ 'id': fakes.random_os_id(), 'status': 'queued' })) data = [({ 'properties': { 'image_location': 'testbucket_1/test.img.manifest.xml' } }, 'testbucket_1', 'test.img.manifest.xml'), ({ 'properties': { 'image_location': '/testbucket_2/test.img.manifest.xml' } }, 'testbucket_2', 'test.img.manifest.xml')] for mdata, bucket, manifest in data: image = image_api._s3_create(fake_context, mdata) eventlet.sleep() osimage_update.assert_called_with( image, properties={'image_state': 'available'}) osimage_update.assert_any_call(image, data=mock.ANY) s3_conn.return_value.get_bucket.assert_called_with(bucket) (s3_conn.return_value.get_bucket.return_value.get_key. assert_called_with(manifest)) (s3_conn.return_value.get_bucket.return_value.get_key. return_value.get_contents_as_string.assert_called_with()) s3_download_file.assert_called_with( s3_conn.return_value.get_bucket.return_value, 'foo', mock.ANY) s3_decrypt_image.assert_called_with(fake_context, mock.ANY, 'foo', 'foo', mock.ANY) s3_untarzip_image.assert_called_with(mock.ANY, mock.ANY)
def test_s3_create_bdm(self, spawn_n): glance = self.mock_glance() metadata = {'properties': { 'image_location': 'fake_bucket/fake_manifest', 'root_device_name': '/dev/sda1', 'block_device_mapping': [ {'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}]}} fake_context = base.create_context() with mock.patch('ec2api.api.image._s3_conn') as s3_conn: (s3_conn.return_value. get_bucket.return_value. get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML image_api._s3_create(fake_context, metadata) glance.images.create.assert_called_once_with( disk_format='ami', container_format='ami', is_public=False, properties={'architecture': 'x86_64', 'image_state': 'pending', 'root_device_name': '/dev/sda1', 'block_device_mapping': [ {'device_name': '/dev/sda1', 'snapshot_id': fakes.ID_OS_SNAPSHOT_1, 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}], 'image_location': 'fake_bucket/fake_manifest'})
def test_s3_create_image_locations(self, osimage_update): self.configure(image_decryption_dir=None) _handle, tempf = tempfile.mkstemp() fake_context = base.create_context() with contextlib.nested( mock.patch('ec2api.api.image._s3_conn'), mock.patch('ec2api.api.image._s3_download_file'), mock.patch('ec2api.api.image._s3_decrypt_image'), mock.patch('ec2api.api.image._s3_untarzip_image') ) as (s3_conn, s3_download_file, s3_decrypt_image, s3_untarzip_image): (s3_conn.return_value. get_bucket.return_value. get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML s3_download_file.return_value = tempf s3_untarzip_image.return_value = tempf (self.glance.images.create.return_value) = ( fakes.OSImage({'id': fakes.random_os_id(), 'status': 'queued'})) data = [ ({'properties': { 'image_location': 'testbucket_1/test.img.manifest.xml'}}, 'testbucket_1', 'test.img.manifest.xml'), ({'properties': { 'image_location': '/testbucket_2/test.img.manifest.xml'}}, 'testbucket_2', 'test.img.manifest.xml')] for mdata, bucket, manifest in data: image = image_api._s3_create(fake_context, mdata) eventlet.sleep() osimage_update.assert_called_with( image, properties={'image_state': 'available'}) osimage_update.assert_any_call( image, data=mock.ANY) s3_conn.return_value.get_bucket.assert_called_with(bucket) (s3_conn.return_value.get_bucket.return_value. get_key.assert_called_with(manifest)) (s3_conn.return_value.get_bucket.return_value. get_key.return_value. get_contents_as_string.assert_called_with()) s3_download_file.assert_called_with( s3_conn.return_value.get_bucket.return_value, 'foo', mock.ANY) s3_decrypt_image.assert_called_with( fake_context, mock.ANY, 'foo', 'foo', mock.ANY) s3_untarzip_image.assert_called_with(mock.ANY, mock.ANY)
def do_test(s3_conn, s3_download_file, s3_decrypt_image, s3_untarzip_image): (s3_conn.return_value.get_bucket.return_value.get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML s3_download_file.return_value = tempf s3_untarzip_image.return_value = tempf (glance.images.create.return_value) = (fakes.OSImage({ 'id': fakes.random_os_id(), 'status': 'queued' })) data = [({ 'properties': { 'image_location': 'testbucket_1/test.img.manifest.xml' } }, 'testbucket_1', 'test.img.manifest.xml'), ({ 'properties': { 'image_location': '/testbucket_2/test.img.manifest.xml' } }, 'testbucket_2', 'test.img.manifest.xml')] for mdata, bucket, manifest in data: image = image_api._s3_create(fake_context, mdata) eventlet.sleep() osimage_update.assert_called_with( image, properties={'image_state': 'available'}) osimage_update.assert_any_call(image, data=mock.ANY) s3_conn.return_value.get_bucket.assert_called_with(bucket) (s3_conn.return_value.get_bucket.return_value.get_key. assert_called_with(manifest)) (s3_conn.return_value.get_bucket.return_value.get_key. return_value.get_contents_as_string.assert_called_with()) s3_download_file.assert_called_with( s3_conn.return_value.get_bucket.return_value, 'foo', mock.ANY) s3_decrypt_image.assert_called_with(fake_context, mock.ANY, 'foo', 'foo', mock.ANY) s3_untarzip_image.assert_called_with(mock.ANY, mock.ANY) do_test()
def do_test(s3_conn, s3_download_file, s3_decrypt_image, s3_untarzip_image): (s3_conn.return_value. get_bucket.return_value. get_key.return_value. get_contents_as_string.return_value) = FILE_MANIFEST_XML s3_download_file.return_value = tempf s3_untarzip_image.return_value = tempf (glance.images.create.return_value) = ( fakes.OSImage({'id': fakes.random_os_id(), 'status': 'queued'})) data = [ ({'properties': { 'image_location': 'testbucket_1/test.img.manifest.xml'}}, 'testbucket_1', 'test.img.manifest.xml'), ({'properties': { 'image_location': '/testbucket_2/test.img.manifest.xml'}}, 'testbucket_2', 'test.img.manifest.xml')] for mdata, bucket, manifest in data: image = image_api._s3_create(fake_context, mdata) eventlet.sleep() osimage_update.assert_called_with( image, properties={'image_state': 'available'}) osimage_update.assert_any_call( image, data=mock.ANY) s3_conn.return_value.get_bucket.assert_called_with(bucket) (s3_conn.return_value.get_bucket.return_value. get_key.assert_called_with(manifest)) (s3_conn.return_value.get_bucket.return_value. get_key.return_value. get_contents_as_string.assert_called_with()) s3_download_file.assert_called_with( s3_conn.return_value.get_bucket.return_value, 'foo', mock.ANY) s3_decrypt_image.assert_called_with( fake_context, mock.ANY, 'foo', 'foo', mock.ANY) s3_untarzip_image.assert_called_with(mock.ANY, mock.ANY) do_test()