docs: def destroy(name, call=None):
      '''
      Destroy a node. Will check termination protection and warn if enabled.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt-cloud --destroy mymachine
      '''
      if call == 'function':
          raise SaltCloudSystemExit(
              'The destroy action must be called with -d, --destroy, '
              '-a or --action.'
          )
  
      node_metadata = _get_node(name)
      instance_id = node_metadata['instanceId']
      sir_id = node_metadata.get('spotInstanceRequestId')
      protected = show_term_protect(
          name=name,
          instance_id=instance_id,
          call='action',
          quiet=True
      )
  
      __utils__['cloud.fire_event'](
          'event',
          'destroying instance',
          'salt/cloud/{0}/destroying'.format(name),
          args={'name': name, 'instance_id': instance_id},
          sock_dir=__opts__['sock_dir'],
          transport=__opts__['transport']
      )
  
      if protected == 'true':
          raise SaltCloudSystemExit(
              'This instance has been protected from being destroyed. '
              'Use the following command to disable protection:\n\n'
              'salt-cloud -a disable_term_protect {0}'.format(
                  name
              )
          )
  
      ret = {}
  
      # Default behavior is to rename EC2 VMs when destroyed
      # via salt-cloud, unless explicitly set to False.
      rename_on_destroy = config.get_cloud_config_value('rename_on_destroy',
                                                        get_configured_provider(),
                                                        __opts__,
                                                        search_global=False)
      if rename_on_destroy is not False:
          newname = '{0}-DEL{1}'.format(name, uuid.uuid4().hex)
          rename(name, kwargs={'newname': newname}, call='action')
          log.info(
              'Machine will be identified as %s until it has been '
              'cleaned up.', newname
          )
          ret['newname'] = newname
  
      params = {'Action': 'TerminateInstances',
                'InstanceId.1': instance_id}
  
      location = get_location()
      provider = get_provider()
      result = aws.query(params,
                         location=location,
                         provider=provider,
                         opts=__opts__,
                         sigver='4')
  
      log.info(result)
      ret.update(result[0])
  
      # If this instance is part of a spot instance request, we
      # need to cancel it as well
      if sir_id is not None:
          params = {'Action': 'CancelSpotInstanceRequests',
                    'SpotInstanceRequestId.1': sir_id}
          result = aws.query(params,
                             location=location,
                             provider=provider,
                             opts=__opts__,
                             sigver='4')
          ret['spotInstance'] = result[0]
  
      __utils__['cloud.fire_event'](
          'event',
          'destroyed instance',
          'salt/cloud/{0}/destroyed'.format(name),
          args={'name': name, 'instance_id': instance_id},
          sock_dir=__opts__['sock_dir'],
          transport=__opts__['transport']
      )
  
      __utils__['cloud.cachedir_index_del'](name)
  
      if __opts__.get('update_cachedir', False) is True:
          __utils__['cloud.delete_minion_cachedir'](name, __active_provider_name__.split(':')[0], __opts__)
  
      return ret