コード例 #1
0
ファイル: createRole.py プロジェクト: cernops/CloudMan
def insertRoles(roleList):
    noOfEntries = len(roleList)

    if noOfEntries <= 0: 
        return 0

    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()
    maxRecordsInOneCommit = getConfigParameters.getMaxInsertsInOneCommit()

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        mysqlDB.autocommit(False)
        cursor = mysqlDB.cursor()
    except:
        print 'Cannot open connection to database '
        return 0
        pass

    savepointStmt = "SAVEPOINT A" 
    count = 0
    noOfCommits = 0

    for entry in roleList:
        userName = entry[0]
        sphereType = entry[1]
        sphereName = entry[2]
        role = entry[3]

        SQLStatement = "INSERT INTO user_roles (user_name, sphere_type, sphere_name, role) VALUES ('" \
                            + userName + "', '" \
                            + sphereType + "', '"\
                            + sphereName + "', '" \
                            + role + "')"
        #print SQLStatement

        try:
            cursor.execute(SQLStatement)
            cursor.execute(savepointStmt)
            count = count + 1
        except MySQLdb.IntegrityError, message:
            #print 'Role exists for user(%s %s %s %s)' %(userName, sphereType, sphereName, role)
            pass

        if count >= maxRecordsInOneCommit:
            count = 0
            try:
                mysqlDB.commit()
                noOfCommits = noOfCommits + 1
            except:
                continue
コード例 #2
0
def getGroupMembersFromDatabase(groupNames):
    returnValue = []
    noOfEntries = len(groupNames)

    if noOfEntries <= 0:
        return returnValue

    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        mysqlDB.autocommit(False)
        cursor = mysqlDB.cursor()
    except:
        print 'Cannot open connection to database '
        return returnValue
        pass

    sqlStmtPrefix = "SELECT user_name FROM user_group_mapping WHERE group_name = '"

    for oneGroup in groupNames:
        if oneGroup != '':
           sqlStmt = sqlStmtPrefix + oneGroup + "'"
        else:
           continue

        try:
            cursor.execute(sqlStmt)
            resultset = cursor.fetchall()
        except:
            continue

        for entry in resultset:
            userName = entry[0]
            if userName != None:
                newReturnEntry = [oneGroup, userName]
                returnValue.append(newReturnEntry)

    try:
        cursor.close()
        mysqlDB.close()
    except:
        pass

    #for entry in returnValue:
    #    print entry

    return returnValue
コード例 #3
0
def insertUserGroupMapping(userGroupList):
    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()
    maxRecordsInOneCommit = getConfigParameters.getMaxInsertsInOneCommit()

    userName = ""
    groupName = ""
    count = 0

    listSize = len(userGroupList)

    if listSize <= 0:
        return 0

    savepointStmt = "SAVEPOINT A"
    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        mysqlDB.autocommit(False)
        cursor = mysqlDB.cursor()
    except:
        return 0
    noOfCommits = 0

    cursor.execute(savepointStmt)

    for tuple in userGroupList:
        groupName = tuple[0]
        userName = tuple[1]

        SQLStatement = "INSERT INTO user_group_mapping (user_name, group_name) VALUES ('" \
                           + userName + "', '" \
                           + groupName + "')"

        try:
            cursor.execute(SQLStatement)
            cursor.execute(savepointStmt)
            count = count + 1
        except MySQLdb.IntegrityError, message:
            #print 'User %s is already present in group %s' % (userName, groupName)
            pass

        if count >= maxRecordsInOneCommit:
            count = 0
            try:
                mysqlDB.commit()
                noOfCommits = noOfCommits + 1
            except:
                continue 
コード例 #4
0
ファイル: createRole.py プロジェクト: cernops/CloudMan
def getGroupAdminGroups():
    returnValue = []
    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        cursor = mysqlDB.cursor()
    except:
        print 'Cannot open connection to database '
        return returnValue
        pass

    sqlStatement = "SELECT name, admin_group FROM groups"

    try:
        cursor.execute(sqlStatement)
        resultset = cursor.fetchall()

        for record in resultset:
            try:
                groupName = record[0]
                adminGroupName = record[1]

                if adminGroupName != None:
                    oneEntry = [groupName, adminGroupName]
                    returnValue.append(oneEntry)
            except:
                print 'Error reading one record'
                continue

    except:
        print 'Error while executing query to find group admin groups'
        return returnValue

    try:
        cursor.close()
        mysqlDB.close()
    except:
        pass

    for entry in returnValue:
        print entry

    return returnValue
コード例 #5
0
ファイル: insertEgroups.py プロジェクト: cernops/CloudMan
def insertEGroups(eGroupList):
    noOfEntries = len(eGroupList)

    if noOfEntries <= 0:
        return 0

    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()
    maxRecordsInOneCommit = getConfigParameters.getMaxInsertsInOneCommit()

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        mysqlDB.autocommit(False)
        cursor = mysqlDB.cursor()
    except:
        print 'Cannot open connection to database '
        return 0
        pass

    savepointStmt = "SAVEPOINT A"
    count = 0
    noOfCommits = 0

    for groupName in eGroupList:

        SQLStatement = "INSERT INTO egroups(name) VALUES ('" \
                            + groupName + "')"
        #print SQLStatement

        try:
            cursor.execute(SQLStatement)
            cursor.execute(savepointStmt)
            count = count + 1
        except MySQLdb.IntegrityError, message:
            #print 'E-group %s exists..' %(groupName)
            pass

        if count >= maxRecordsInOneCommit:
            count = 0
            try:
                mysqlDB.commit()
                noOfCommits = noOfCommits + 1
            except:
                continue
コード例 #6
0
def createGroupList():
    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()
    returnValue = []

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        cursor = mysqlDB.cursor()
    except:
        return 0

    sqlStatement = " SELECT admin_group AS all_groups FROM groups UNION "\
                       "SELECT admin_group AS all_groups FROM project UNION "\
                       "SELECT admin_group AS all_groups FROM region "

    try:
        cursor.execute(sqlStatement)
        resultset = cursor.fetchall()

        for record in resultset:
            try:
                groupName = record[0]

                if groupName != None:
                    returnValue.append(groupName)
            except:
                print 'Error reading one record'
                continue
    except:
        print 'Error while executing query to find project admin groups'
        return returnValue

    try:
        cursor.close()
        mysqlDB.close()
    except:
        pass

    for entry in returnValue:
        print entry

    return returnValue
コード例 #7
0
ファイル: createRole.py プロジェクト: cernops/CloudMan
def createProjectManageRoles():
    dbHost, dbUser, dbPassword, dbName = getConfigParameters.getDBConnectionParameters()

    try:
        mysqlDB = MySQLdb.connect(dbHost, dbUser, dbPassword, dbName)
        cursor = mysqlDB.cursor()
    except:
        print 'Cannot open connection to database '
        return returnValue
        pass

    projectsAndAdminGroups = getProjectAdminGroups()
    roleList = []

    for entry in projectsAndAdminGroups:
        projectName = entry[0]
        adminGroup = entry[1]

        if adminGroup != '':
            usersList = manageUsersAndGroups.getGroupMembersFromDatabase([adminGroup])
            for userGroupMapping in usersList:
                groupName = userGroupMapping[0]
                userName = userGroupMapping[1]
                roleList.append([userName, 'project', projectName, 'manager'])
        else:
            pass

    for entry in roleList:
        print entry

    insertRoles(roleList)

    try:
        cursor.close()
        mysqlDB.close()
    except:
        pass