sma: crypto support for vhost_blk devices

The vhost_blk devices will now support volumes with encryption enabled.
Reorder 'imports' according to PEP 8.

Change-Id: Ia4ae0832f4cf91578153da7ca0a28a83707ccdca
Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13983
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Sebastian Brzezinka 2022-08-11 13:37:29 +02:00 committed by Ben Walker
parent 62e8255460
commit aa55c23dbc

View File

@ -1,13 +1,15 @@
import os
import grpc
import logging import logging
from ..common import format_volume_id import os
from socket import AddressFamily from socket import AddressFamily
import grpc
from spdk.rpc.client import JSONRPCException from spdk.rpc.client import JSONRPCException
from .device import DeviceManager, DeviceException
from ..common import format_volume_id, volume_id_to_nguid
from ..proto import sma_pb2, virtio_blk_pb2
from ..qmp import QMPClient, QMPError from ..qmp import QMPClient, QMPError
from ..proto import sma_pb2 from ..volume import CryptoException, get_crypto_engine
from ..proto import virtio_blk_pb2 from .device import DeviceException, DeviceManager
class VhostBlkDeviceManager(DeviceManager): class VhostBlkDeviceManager(DeviceManager):
@ -72,10 +74,11 @@ class VhostBlkDeviceManager(DeviceManager):
logging.error('Failed to delete controller') logging.error('Failed to delete controller')
return False return False
def _find_bdev(self, client, name): def _find_bdev(self, client, guid):
try: try:
return client.call('bdev_get_bdevs', {'name': name})[0] bdev_name = get_crypto_engine().get_crypto_bdev(guid) or guid
except JSONRPCException: return client.call('bdev_get_bdevs', {'name': bdev_name})[0]
except (JSONRPCException, CryptoException):
return None return None
def _bdev_cmp(self, client, bdev1, bdev2): def _bdev_cmp(self, client, bdev1, bdev2):
@ -89,8 +92,9 @@ class VhostBlkDeviceManager(DeviceManager):
if nctrlr is not None: if nctrlr is not None:
return self._bdev_cmp(client, nctrlr['backend_specific']['block']['bdev'], volume_guid) return self._bdev_cmp(client, nctrlr['backend_specific']['block']['bdev'], volume_guid)
try: try:
bdev_name = get_crypto_engine().get_crypto_bdev(volume_guid) or volume_guid
return client.call('vhost_create_blk_controller', return client.call('vhost_create_blk_controller',
{'ctrlr': ctrlr, 'dev_name': volume_guid}) {'ctrlr': ctrlr, 'dev_name': bdev_name})
except JSONRPCException: except JSONRPCException:
logging.error('Failed to create subsystem') logging.error('Failed to create subsystem')
return False return False