':inherits: :class:`NodeDriver.__init__`
:param    host: The host where the API can be reached. (required)
:type     host: ``str``
:param    path: The path where the API can be reached. (required)
:type     path: ``str``
:param url: Full URL to the API endpoint. Mutually exclusive with host
and path argument.
:type url: ``str``'

def __init__(self, key, secret=None, secure=True, host=None, path=None, port=None, url=None, *args, **kwargs):

    if url:
        parsed = urlparse.urlparse(url)
        path = parsed.path
        scheme = parsed.scheme
        split = parsed.netloc.split(':')
        if (len(split) == 1):
            host = parsed.netloc
            port = (443 if (scheme == 'https') else 80)
        else:
            host = split[0]
            port = int(split[1])
    else:
        host = (host if host else self.host)
        path = (path if path else self.path)
    if (path is not None):
        self.path = path
    if (host is not None):
        self.host = host
    if ((self.type == Provider.CLOUDSTACK) and ((not host) or (not path))):
        raise Exception('When    instantiating    CloudStack    driver    directly    you    also    need    to    provide    url    or    host    and    path    argument')
    super(CloudStackNodeDriver, self).__init__(key=key, secret=secret, secure=secure, host=host, port=port)
