':param ex_remove_files: Remove all the files from the datastore.
:type ex_remove_files: ``bool``'

@wrap_non_libcloud_exceptions
def destroy_node(self, node, ex_remove_files=True):

    ex_remove_files = False
    vm = self._get_vm_for_node(node=node)
    server = self.connection.client
    if ex_remove_files:
        request = VI.Destroy_TaskRequestMsg()
        _this = request.new__this(vm._mor)
        _this.set_attribute_type(vm._mor.get_attribute_type())
        request.set_element__this(_this)
        ret = server._proxy.Destroy_Task(request)._returnval
        task = VITask(ret, server)
        status = task.wait_for_state([task.STATE_SUCCESS, task.STATE_ERROR])
        if (status == task.STATE_ERROR):
            raise LibcloudError(('Error    destroying    node:    %s' % task.get_error_message()))
    else:
        request = VI.UnregisterVMRequestMsg()
        _this = request.new__this(vm._mor)
        _this.set_attribute_type(vm._mor.get_attribute_type())
        request.set_element__this(_this)
        ret = server._proxy.UnregisterVM(request)
        task = VITask(ret, server)
    return True
