'Create a new node instance. This instance will be started
automatically.
Not all hosting API\'s are created equal and to allow libcloud to
support as many as possible there are some standard supported
variations of ``create_node``. These are declared using a
``features`` API.
You can inspect ``driver.features[\'create_node\']`` to see what
variation of the API you are dealing with:
``ssh_key``
You can inject a public key into a new node allows key based SSH
authentication.
``password``
You can inject a password into a new node for SSH authentication.
If no password is provided libcloud will generated a password.
The password will be available as
``return_value.extra[\'password\']``.
``generates_password``
The hosting provider will generate a password. It will be returned
to you via ``return_value.extra[\'password\']``.
Some drivers allow you to set how you will authenticate with the
instance that is created. You can inject this initial authentication
information via the ``auth`` parameter.
If a driver supports the ``ssh_key`` feature flag for ``created_node``
you can upload a public key into the new instance::
>>> from libcloud.compute.drivers.dummy import DummyNodeDriver
>>> driver = DummyNodeDriver(0)
>>> auth = NodeAuthSSHKey(\'pubkey data here\')
>>> node = driver.create_node("test_node", auth=auth)
If a driver supports the ``password`` feature flag for ``create_node``
you can set a password::
>>> driver = DummyNodeDriver(0)
>>> auth = NodeAuthPassword(\'mysecretpassword\')
>>> node = driver.create_node("test_node", auth=auth)
If a driver supports the ``password`` feature and you don\'t provide the
``auth`` argument libcloud will assign a password::
>>> driver = DummyNodeDriver(0)
>>> node = driver.create_node("test_node")
>>> password = node.extra[\'password\']
A password will also be returned in this way for drivers that declare
the ``generates_password`` feature, though in that case the password is
actually provided to the driver API by the hosting provider rather than
generated by libcloud.
You can only pass a :class:`.NodeAuthPassword` or
:class:`.NodeAuthSSHKey` to ``create_node`` via the auth parameter if
has the corresponding feature flag.
:param name:   String with a name for this new node (required)
:type name:   ``str``
:param size:   The size of resources allocated to this node.
(required)
:type size:   :class:`.NodeSize`
:param image:  OS Image to boot on node. (required)
:type image:  :class:`.NodeImage`
:param location: Which data center to create a node in. If empty,
undefined behavior will be selected. (optional)
:type location: :class:`.NodeLocation`
:param auth:   Initial authentication information for the node
(optional)
:type auth:   :class:`.NodeAuthSSHKey` or :class:`NodeAuthPassword`
:return: The newly created node.
:rtype: :class:`.Node`'

def create_node(self, **kwargs):

    raise NotImplementedError('create_node    not    implemented    for    this    driver')
