Remove the simple nova.virt.lxd.session image methods

`image_upload` takes a bit more work, and will probably get sorted
when `LXDDriver.setup_image` is reworked.

Change-Id: I2950c6fb892b17c809aafdca38eee1e520340277
This commit is contained in:
Paul Hummer 2016-11-09 19:22:50 -07:00
parent 8277d81d03
commit 9d107415f7
3 changed files with 7 additions and 91 deletions

View File

@ -111,38 +111,6 @@ class SessionEventTest(test.NoDBTestCase):
200, -1)
@ddt.ddt
class SessionImageTest(test.NoDBTestCase):
def setUp(self):
super(SessionImageTest, self).setUp()
self.ml = stubs.lxd_mock()
lxd_patcher = mock.patch('pylxd.deprecated.api.API',
mock.Mock(return_value=self.ml))
lxd_patcher.start()
self.addCleanup(lxd_patcher.stop)
self.session = session.LXDAPISession()
def test_image_defined(self):
"""Test the image is defined in the LXD hypervisor."""
instance = stubs._fake_instance()
self.ml.alias_defined.return_value = True
self.assertTrue(self.session.image_defined(instance))
calls = [mock.call.alias_defined(instance.image_ref)]
self.assertEqual(calls, self.ml.method_calls)
def test_alias_create(self):
"""Test the alias is created."""
instance = stubs._fake_instance()
alias = mock.Mock()
self.ml.alias_create.return_value = True
self.assertTrue(self.session.create_alias(alias, instance))
calls = [mock.call.alias_create(alias)]
self.assertEqual(calls, self.ml.method_calls)
@ddt.ddt
class SessionProfileTest(test.NoDBTestCase):

View File

@ -1253,8 +1253,12 @@ class LXDDriver(driver.ComputeDriver):
instance.image_ref),
external=True):
if self.session.image_defined(instance):
try:
self.client.images.get(instance.name)
return
except lxd_exceptions.LXDAPIException as e:
if e.response.status_code != 404:
raise
base_dir = BASE_DIR
if not os.path.exists(base_dir):
@ -1370,11 +1374,8 @@ class LXDDriver(driver.ComputeDriver):
with open(container_image, "rb") as rootfs_fd:
fingerprint = hashlib.sha256(
meta_fd.read() + rootfs_fd.read()).hexdigest()
alias_config = {
'name': instance.image_ref,
'target': fingerprint
}
self.session.create_alias(alias_config, instance)
image = self.client.images.get(fingerprint)
image.add_alias(instance.image_ref)
except Exception as ex:
with excutils.save_and_reraise_exception:
LOG.error(

View File

@ -108,59 +108,6 @@ class LXDAPISession(object):
#
# Image related API methods.
#
def image_defined(self, instance):
"""Checks existence of an image on the local LXD image store
:param instance: The nova instance
Returns True if supplied image exists on the host, False otherwise
"""
LOG.debug('image_defined called for instance', instance=instance)
try:
client = self.get_session()
return client.alias_defined(instance.image_ref)
except lxd_exceptions.APIError as ex:
if ex.status_code == 404:
return False
else:
msg = _('Failed to communicate with LXD API %(instance)s:'
' %(reason)s') % {'instance': instance.image_ref,
'reason': ex}
LOG.error(msg)
raise exception.NovaException(msg)
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.error(_LE('Error from LXD during image_defined '
'%(instance)s: %(reason)s'),
{'instance': instance.image_ref, 'reason': e},
instance=instance)
def create_alias(self, alias, instance):
"""Creates an alias for a given image
:param alias: The alias to be crerated
:param instance: The nove instance
:return: true if alias is created, false otherwise
"""
LOG.debug('create_alias called for instance', instance=instance)
try:
client = self.get_session()
return client.alias_create(alias)
except lxd_exceptions.APIError as ex:
msg = _('Failed to communicate with LXD API %(instance)s:'
' %(reason)s') % {'instance': instance.image_ref,
'reason': ex}
LOG.error(msg)
raise exception.NovaException(msg)
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.error(_LE('Error from LXD during create alias'
'%(instance)s: %(reason)s'),
{'instance': instance.image_ref, 'reason': e},
instance=instance)
def image_upload(self, data, headers, instance):
"""Upload an image to the local LXD image store