'Changes the configuration of the running server
:param      node: Node which should be used
:type       node: :class:`Node`
:param      kwargs: keyword arguments
:type       kwargs: ``dict``
:rtype: ``bool``'

def ex_set_node_configuration(self, node, **kwargs):

    valid_keys = ('^name$', '^parent$', '^cpu$', '^smp$', '^mem$', '^boot$', '^nic:0:model$', '^nic:0:dhcp', '^nic:1:model$', '^nic:1:vlan$', '^nic:1:mac$', '^vnc:ip$', '^vnc:password$', '^vnc:tls', '^ide:[0-1]:[0-1](:media)?$', '^scsi:0:[0-7](:media)?$', '^block:[0-7](:media)?$')
    invalid_keys = []
    keys = list(kwargs.keys())
    for key in keys:
        matches = False
        for regex in valid_keys:
            if re.match(regex, key):
                matches = True
                break
        if (not matches):
            invalid_keys.append(key)
    if invalid_keys:
        raise ElasticStackException(('Invalid    configuration    key    specified:    %s' % ','.join(invalid_keys)))
    response = self.connection.request(action=('/servers/%s/set' % node.id), data=json.dumps(kwargs), method='POST')
    return ((response.status == httplib.OK) and (response.body != ''))
