'Creates a node.
:param name: The name of the new node
:type `str`
:param image: Image from list_images
:rtype: image:
:param ex_fixed_instance_size_id:
Fixed instance size ID from list_sizes
:rtype: ``str``
:param location: 1&1 Data center Location
:type `NodeLocation`
:param auth: SSH key or root password
:type: :class:`NodeAuthSSHKey` or :class:`NodeAuthPassword`
:param ex_ip: IP address
:type `str`
:param ex_ssh_key: SSH Key
:type `str`
:param password: Password
:type `str`
:param ex_monitoring_policy_id:
:type `str`
:param ex_firewall_policy_id:
:type `str`
:param ex_loadbalancer_id:
:type `str`
:param ex_description:
:type `str`
:param ex_power_on:
:type `bool`
:return:    Instance of class ``Node``
:rtype:     :class: `Node`'

def create_node(self, name, image, ex_fixed_instance_size_id, location=None, auth=None, ex_ip=None, ex_monitoring_policy_id=None, ex_firewall_policy_id=None, ex_loadbalancer_id=None, ex_description=None, ex_power_on=None):

    body = {'name': name, 'appliance_id': image.id, 'hardware': {'fixed_instance_size_id': ex_fixed_instance_size_id}}
    if (location is not None):
        body['datacenter_id'] = location.id
    if (ex_power_on is not None):
        body['power_on'] = ex_power_on
    if (ex_description is not None):
        body['description'] = ex_description
    if (ex_firewall_policy_id is not None):
        body['firewall_policy_id'] = ex_firewall_policy_id
    if (ex_monitoring_policy_id is not None):
        body['monitoring_policy_id'] = ex_monitoring_policy_id
    if (ex_loadbalancer_id is not None):
        body['loadbalancer_id'] = ex_loadbalancer_id
    if (auth is not None):
        if isinstance(auth, NodeAuthPassword):
            body['password'] = auth.password
        elif isinstance(auth, NodeAuthSSHKey):
            body['rsa_key'] = auth.pubkey
    if (ex_ip is not None):
        body['ip_id'] = ex_ip
    response = self.connection.request(action='servers', data=body, method='POST')
    return self._to_node(response.object)
