'Add a VS
:param  kwargs: All keyword arguments to create a VS
:type   kwargs: ``dict``
:rtype: :class:`OnAppNode`'

def create_node(self, name, ex_memory, ex_cpus, ex_cpu_shares, ex_hostname, ex_template_id, ex_primary_disk_size, ex_swap_disk_size, ex_required_virtual_machine_build=1, ex_required_ip_address_assignment=1, **kwargs):

    server_params = dict(label=name, memory=ex_memory, cpus=ex_cpus, cpu_shares=ex_cpu_shares, hostname=ex_hostname, template_id=ex_template_id, primary_disk_size=ex_primary_disk_size, swap_disk_size=ex_swap_disk_size, required_virtual_machine_build=ex_required_virtual_machine_build, required_ip_address_assignment=ex_required_ip_address_assignment, rate_limit=kwargs.get('rate_limit'))
    server_params.update(OnAppNodeDriver._create_args_to_params(**kwargs))
    data = json.dumps({'virtual_machine': server_params})
    response = self.connection.request('/virtual_machines.json', data=data, headers={'Content-type': 'application/json'}, method='POST')
    return self._to_node(response.object['virtual_machine'])
