'Creates a node
Example of node creation with ssh key deployed:
>>> from libcloud.compute.base import NodeAuthSSHKey
>>> key = open(\'/home/user/.ssh/id_rsa.pub\').read()
>>> auth = NodeAuthSSHKey(pubkey=key)
>>> from libcloud.compute.providers import get_driver;
>>> driver = get_driver(\'hostvirtual\')
>>> conn = driver(\'API_KEY\')
>>> image = conn.list_images()[1]
>>> size = conn.list_sizes()[0]
>>> location = conn.list_locations()[1]
>>> name = \'markos-dev\'
>>> node = conn.create_node(name, image, size, auth=auth,
>>>                         location=location)'

def create_node(self, name, image, size, **kwargs):

    dc = None
    auth = self._get_and_check_auth(kwargs.get('auth'))
    if (not self._is_valid_fqdn(name)):
        raise HostVirtualException(500, 'Name    should    be    a    valid    FQDN    (e.g,    hostname.example.com)')
    pkg = self.ex_order_package(size)
    if ('location' in kwargs):
        dc = kwargs['location'].id
    else:
        dc = DEFAULT_NODE_LOCATION_ID
    stub_node = self._to_node({'mbpkgid': pkg['id'], 'status': 'PENDING', 'fqdn': name, 'plan_id': size.id, 'os_id': image.id, 'location_id': dc})
    self.ex_provision_node(node=stub_node, auth=auth)
    node = self._wait_for_node(stub_node.id)
    if getattr(auth, 'generated', False):
        node.extra['password'] = auth.password
    return node
