'Create a new GoGird node
@inherits: :class:`NodeDriver.create_node`
:keyword    ex_description: Description of a Node
:type       ex_description: ``str``
:keyword    ex_ip: Public IP address to use for a Node. If not
specified, first available IP address will be picked
:type       ex_ip: ``str``
:rtype: :class:`GoGridNode`'

def create_node(self, **kwargs):

    node = self.ex_create_node_nowait(**kwargs)
    timeout = (60 * 20)
    waittime = 0
    interval = (2 * 60)
    while ((node.id is None) and (waittime < timeout)):
        nodes = self.list_nodes()
        for i in nodes:
            if ((i.public_ips[0] == node.public_ips[0]) and (i.id is not None)):
                return i
        waittime += interval
        time.sleep(interval)
    if (id is None):
        raise Exception(("Wasn't    able    to    wait    for    id    allocation    for    the    node    %s" % str(node)))
    return node
