'Destroy a node
Depending on the provider, this may destroy all data associated with
the node, including backups.
:param node: The node to be destroyed
:type node: :class:`Node`
:return: True if the destroy was successful, otherwise False
:rtype: ``bool``'

def destroy_node(self, node):

    headers = {'Accept': self.NODE_MIME_TYPE}
    e_vm = self.connection.request(node.extra['uri_id'], headers=headers).object
    state = e_vm.findtext('state')
    if (state in ['ALLOCATED', 'CONFIGURED', 'LOCKED', 'UNKNOWN']):
        raise LibcloudError('Invalid    Node    state', self)
    if (state != 'NOT_ALLOCATED'):
        vm_task = ET.Element('virtualmachinetask')
        force_undeploy = ET.SubElement(vm_task, 'forceUndeploy')
        force_undeploy.text = 'True'
        destroy_uri = (node.extra['uri_id'] + '/action/undeploy')
        headers = {'Accept': self.AR_MIME_TYPE, 'Content-type': self.VM_TASK_MIME_TYPE}
        res = self.connection.async_request(action=destroy_uri, method='POST', data=tostring(vm_task), headers=headers)
    if ((state == 'NOT_ALLOCATED') or res.async_success()):
        self.connection.request(action=node.extra['uri_id'], method='DELETE')
        return True
    else:
        return False
