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:
parent
8277d81d03
commit
9d107415f7
@ -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):
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user