示例#1
0
文件: database.py 项目: AZed/uvcdat
def connect(uri=None, user="", password=""):
    """
    Method:

      connect(uri=None, user="", password="")

    Description:

      Open a CDMS database connection.

    Arguments:

      uri: Universal Resource Identifier. If unspecified, defaults to the environment variable CDMSROOT.
      user: user id
      password: password

    Returns:

      Database instance.

    Example:

      db = cdms.connect("ldap://dbhost.llnl.gov/database=CDMS,ou=PCMDI,o=LLNL,c=US")
    """
    if uri is None:
        try:
            uri = os.environ['CDMSROOT']
        except KeyError:
            raise CDMSError, ConnectError + '%s\nSet environment variable CDMSROOT to default database location'%uri
    (scheme,netloc,path,parameters,query,fragment)=cdurlparse.urlparse(uri)

    if scheme in ['','ldap']:
        try:
            ldapdb = ldap.open(netloc)
        except:
            raise CDMSError, ConnectError +"%s\n%s"%(uri,sys.exc_value)

        try:
            ldapdb.simple_bind_s(user,password)
        except:
            raise CDMSError, AuthenticationError + "%s\n%s"%(uri,sys.exc_value)

        try:
            result = ldapdb.search_s(path[1:], ldap.SCOPE_SUBTREE, "objectclass=database")
        except:
            raise CDMSError, DatabaseNotFound + "%s\n%s"%(uri,sys.exc_value)

        try:
            dn, attrs = result[0]
        except:
            raise CDMSError, PermissionError + uri
        newuri = "ldap://%s/%s"%(netloc,dn)
        db = LDAPDatabase(newuri, ldapdb)
        db.setExternalDict(attrs)
        return db

    else:
        raise CDMSError, SchemeNotSupported +  scheme
示例#2
0
def connect(uri=None, user="", password=""):
    """
    Method:

      connect(uri=None, user="", password="")

    Description:

      Open a CDMS database connection.

    Arguments:

      uri: Universal Resource Identifier. If unspecified, defaults to the environment variable CDMSROOT.
      user: user id
      password: password

    Returns:

      Database instance.

    Example:

      db = cdms.connect("ldap://dbhost.llnl.gov/database=CDMS,ou=PCMDI,o=LLNL,c=US")
    """
    if uri is None:
        try:
            uri = os.environ['CDMSROOT']
        except KeyError:
            raise CDMSError, ConnectError + '%s\nSet environment variable CDMSROOT to default database location' % uri
    (scheme, netloc, path, parameters, query,
     fragment) = cdurlparse.urlparse(uri)

    if scheme in ['', 'ldap']:
        try:
            ldapdb = ldap.open(netloc)
        except:
            raise CDMSError, ConnectError + "%s\n%s" % (uri, sys.exc_value)

        try:
            ldapdb.simple_bind_s(user, password)
        except:
            raise CDMSError, AuthenticationError + "%s\n%s" % (uri,
                                                               sys.exc_value)

        try:
            result = ldapdb.search_s(path[1:], ldap.SCOPE_SUBTREE,
                                     "objectclass=database")
        except:
            raise CDMSError, DatabaseNotFound + "%s\n%s" % (uri, sys.exc_value)

        try:
            dn, attrs = result[0]
        except:
            raise CDMSError, PermissionError + uri
        newuri = "ldap://%s/%s" % (netloc, dn)
        db = LDAPDatabase(newuri, ldapdb)
        db.setExternalDict(attrs)
        return db

    else:
        raise CDMSError, SchemeNotSupported + scheme
示例#3
0
文件: database.py 项目: AZed/uvcdat
 def __init__(self, uri, db):
     (scheme,netloc,path,parameters,query,fragment)=cdurlparse.urlparse(uri)
     AbstractDatabase.__init__(self,uri,path[1:])
     self.netloc = netloc
     self.db = db
示例#4
0
 def __init__(self, uri, db):
     (scheme, netloc, path, parameters, query,
      fragment) = cdurlparse.urlparse(uri)
     AbstractDatabase.__init__(self, uri, path[1:])
     self.netloc = netloc
     self.db = db