docs: def _parseBlockDevice(self, block_device):
          """
          Parse a higher-level view of the block device mapping into something
          novaclient wants. This should be similar to how Horizon presents it.
          Required keys:
              device_name: The name of the device; e.g. vda or xda.
              source_type: image, snapshot, volume, or blank/None.
              destination_type: Destination of block device: volume or local.
              delete_on_termination: True/False.
              uuid: The image, snapshot, or volume id.
              boot_index: Integer used for boot order.
              volume_size: Size of the device in GiB.
          """
          client_block_device = {}
          client_block_device['device_name'] = block_device.get(
              'device_name', 'vda')
          client_block_device['source_type'] = block_device.get(
              'source_type', 'image')
          client_block_device['destination_type'] = block_device.get(
              'destination_type', 'volume')
          client_block_device['delete_on_termination'] = bool(
              block_device.get('delete_on_termination', True))
          client_block_device['uuid'] = block_device['uuid']
          client_block_device['boot_index'] = int(
              block_device.get('boot_index', 0))
          # Allow None here. It will be rendered later.
          client_block_device['volume_size'] = block_device.get('volume_size')
          return client_block_device