docs: def _fill_disk_filename(vm_name, disk, hypervisor, **kwargs):
      '''
      Compute the disk file name and update it in the disk value.
      '''
      base_dir = disk.get('pool', None)
      if hypervisor in ['qemu', 'kvm', 'xen']:
          # Compute the base directory from the pool property. We may have either a path
          # or a libvirt pool name there.
          # If the pool is a known libvirt one with a target path, use it as target path
          if not base_dir:
              base_dir = _get_images_dir()
          else:
              if not base_dir.startswith('/'):
                  # The pool seems not to be a path, lookup for pool infos
                  infos = pool_info(base_dir, **kwargs)
                  pool = infos[base_dir] if base_dir in infos else None
                  if not pool or not pool['target_path'] or pool['target_path'].startswith('/dev'):
                      raise CommandExecutionError(
                                  'Unable to create new disk {0}, specified pool {1} does not exist '
                                  'or is unsupported'.format(disk['name'], base_dir))
                  base_dir = pool['target_path']
      if hypervisor == 'bhyve' and vm_name:
          disk['filename'] = '{0}.{1}'.format(vm_name, disk['name'])
          disk['source_file'] = os.path.join('/dev/zvol', base_dir or '', disk['filename'])
      elif vm_name:
          # Compute the filename and source file properties if possible
          disk['filename'] = '{0}_{1}.{2}'.format(vm_name, disk['name'], disk['format'])
          disk['source_file'] = os.path.join(base_dir, disk['filename'])