'Create a new node
@inherits:  :class:`NodeDriver.create_node`
:keyword    ex_keyname:  The name of the key pair
:type       ex_keyname:  ``str``
:keyword    ex_userdata: String containing user data
see
https://help.ubuntu.com/community/CloudInit
:type       ex_userdata: ``str``
:keyword    ex_config_drive: Enable config drive
see
http://docs.openstack.org/grizzly/openstack-compute/admin/content/config-drive.html
:type       ex_config_drive: ``bool``
:keyword    ex_security_groups: List of security groups to assign to
the node
:type       ex_security_groups: ``list`` of
:class:`OpenStackSecurityGroup`
:keyword    ex_metadata: Key/Value metadata to associate with a node
:type       ex_metadata: ``dict``
:keyword    ex_files:   File Path => File contents to create on
the no  de
:type       ex_files:   ``dict``
:keyword    networks: The server is launched into a set of Networks.
:type       networks: ``list`` of :class:`OpenStackNetwork`
:keyword    ex_disk_config: Name of the disk configuration.
Can be either ``AUTO`` or ``MANUAL``.
:type       ex_disk_config: ``str``
:keyword    ex_config_drive: If True enables metadata injection in a
server through a configuration drive.
:type       ex_config_drive: ``bool``
:keyword    ex_admin_pass: The root password for the node
:type       ex_admin_pass: ``str``
:keyword    ex_availability_zone: Nova availability zone for the node
:type       ex_availability_zone: ``str``'

def create_node(self, **kwargs):

    server_params = self._create_args_to_params(None, **kwargs)
    resp = self.connection.request('/servers', method='POST', data={'server': server_params})
    create_response = resp.object['server']
    server_resp = self.connection.request(('/servers/%s' % create_response['id']))
    server_object = server_resp.object['server']
    server_object['adminPass'] = create_response.get('adminPass', None)
    return self._to_node(server_object)
