def create_node(self, **kwargs):
        # Note we don't do much error checking in this because we
        # expect the API to error out if there is a problem.
        name = kwargs['name']
        image = kwargs['image']
        size = kwargs['size']

        data = {
            'instantiation_options':{
                'domain_name': name, 'distro': image.id
            },
            'pricing_plan_code': size.id,
        }

        if kwargs.has_key('ex_control_panel'):
            data['instantiation_options']['control_panel'] = kwargs['ex_control_panel']

        if kwargs.has_key('auth'):
            auth = kwargs['auth']
            if not isinstance(auth, NodeAuthPassword):
                raise ValueError('auth must be of NodeAuthPassword type')
            data['instantiation_options']['password'] = auth.password

        if kwargs.has_key('ex_billing_oid'):
            #TODO check for valid oid.
            data['billing_oid'] = kwargs['ex_billing_oid']

        if kwargs.has_key('ex_host_server_oid'):
            data['host_server_oid'] = kwargs['ex_host_server_oid']

        if kwargs.has_key('ex_vps_order_oid_to_clone'):
            data['vps_order_oid_to_clone'] = kwargs['ex_vps_order_oid_to_clone']

        if kwargs.has_key('ex_num_ips') and int(kwargs['ex_num_ips']) > 1:
            if not kwargs.has_key('ex_extra_ip_reason'):
                raise RimuHostingException('Need an reason for having an extra IP')
            else:
                if not data.has_key('ip_request'):
                    data['ip_request'] = {}
                data['ip_request']['num_ips'] = int(kwargs['ex_num_ips'])
                data['ip_request']['extra_ip_reason'] = kwargs['ex_extra_ip_reason']

        if kwargs.has_key('ex_memory_mb'):
            if not data.has_key('vps_parameters'):
                data['vps_parameters'] = {}
            data['vps_parameters']['memory_mb'] = kwargs['ex_memory_mb']

        if kwargs.has_key('ex_disk_space_mb'):
            if not data.has_key('ex_vps_parameters'):
                data['vps_parameters'] = {}
            data['vps_parameters']['disk_space_mb'] = kwargs['ex_disk_space_mb']

        if kwargs.has_key('ex_disk_space_2_mb'):
            if not data.has_key('vps_parameters'):
                data['vps_parameters'] = {}
            data['vps_parameters']['disk_space_2_mb'] = kwargs['ex_disk_space_2_mb']

        res = self.connection.request(
            '/orders/new-vps',
            method='POST',
            data=json.dumps({"new-vps":data})
        ).object
        node = self._to_node(res['about_order'])
        node.extra['password'] = res['new_order_request']['instantiation_options']['password']
        return node
Creates a RimuHosting instance
dataset/ETHPy150Open secondstory/dewpoint/libcloud/drivers/rimuhosting.py/RimuHostingNodeDriver.create_node