docs: def destroy(name=None, call=None):
      '''
      Destroy Xen VM or template instance
  
      .. code-block:: bash
  
          salt-cloud -d xenvm01
  
      '''
      if call == 'function':
          raise SaltCloudSystemExit(
              'The destroy action must be called with -d, --destroy, '
              '-a or --action.'
          )
      ret = {}
      __utils__['cloud.fire_event'](
          'event',
          'destroying instance',
          'salt/cloud/{0}/destroying'.format(name),
          args={'name': name},
          sock_dir=__opts__['sock_dir'],
          transport=__opts__['transport']
      )
      session = _get_session()
      vm = _get_vm(name)
      if vm:
          # get vm
          record = session.xenapi.VM.get_record(vm)
          log.debug('power_state: %s', record['power_state'])
          # shut down
          if record['power_state'] != 'Halted':
              task = session.xenapi.Async.VM.hard_shutdown(vm)
              _run_async_task(task, session)
  
          # destroy disk (vdi) by reading vdb on vm
          ret['vbd'] = destroy_vm_vdis(name, session)
          # destroy vm
          task = session.xenapi.Async.VM.destroy(vm)
          _run_async_task(task, session)
          ret['destroyed'] = True
          __utils__['cloud.fire_event'](
              'event',
              'destroyed instance',
              'salt/cloud/{0}/destroyed'.format(name),
              args={'name': name},
              sock_dir=__opts__['sock_dir'],
              transport=__opts__['transport']
          )
          if __opts__.get('update_cachedir', False) is True:
              __utils__['cloud.delete_minion_cachedir'](
                  name,
                  __active_provider_name__.split(':')[0],
                  __opts__
              )
          __utils__['cloud.cachedir_index_del'](name)
          return ret