Commit f7a71539 authored by Cristiano Urban's avatar Cristiano Urban
Browse files

Check if a user is registered in the database.

parent c73f71df
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -113,6 +113,16 @@ class DbConnector(object):
                out.close()
                return job
    
    def userExists(self, username):
        """Checks if a user already exists. Returns a boolean."""
        if self.conn:
            self.cursor.execute("SELECT * FROM users WHERE user_name = %s;", (username,))
            result = self.cursor.fetchall()
            if result:
                return True
            else:
                return False

    def getRapId(self, username):
        """Returns the RAP id for a given user name."""
        if self.conn:
@@ -152,12 +162,30 @@ class DbConnector(object):
        """Inserts/updates a job object."""
        if self.conn:
            self.cursor.execute("""
                INSERT INTO job(job_id, owner_id, job_type, phase, start_time, end_time, job_info, results)
                INSERT INTO job(job_id, 
                                owner_id, 
                                job_type, 
                                phase, 
                                start_time, 
                                end_time, 
                                job_info, 
                                results)
                VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
                ON CONFLICT (job_id)
                DO UPDATE SET
                (owner_id, job_type, phase, start_time, end_time, job_info, results)
                = (EXCLUDED.owner_id, EXCLUDED.job_type, EXCLUDED.phase, EXCLUDED.start_time, EXCLUDED.end_time, EXCLUDED.job_info, EXCLUDED.results);
                (owner_id, 
                 job_type, phase, 
                 start_time, 
                 end_time, 
                 job_info, 
                 results)
                = (EXCLUDED.owner_id, 
                   EXCLUDED.job_type, 
                   EXCLUDED.phase, 
                   EXCLUDED.start_time, 
                   EXCLUDED.end_time, 
                   EXCLUDED.job_info, 
                   EXCLUDED.results);
                """,
                (jobObj.jobId,
                 jobObj.ownerId,
+4 −3
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ class StoreAMQPServer(AMQPServer):
            self.job.setInfo(requestBody)
            self.job.setPhase("PENDING")
            self.dbConn.connect()
            userInDb = self.dbConn.userExists(user)
            if requestBody["requestType"] == "CSTORE":
                storageList = self.dbConn.getStorageList("cold")
            else:
@@ -58,11 +59,11 @@ class StoreAMQPServer(AMQPServer):
            #folderPath = "/home/" + user + "/store"
            folderPath = self.storageStorePath.replace("{username}", user)
            userInfo = self.systemUtils.userInfo(user)
            # Check if the user exists on the transfer node
            if not userInfo:
            # Check if the user exists on the transfer node and is registered in the database
            if not userInfo or not userInDb:
                response = { "responseType": "ERROR",
                             "errorCode": 2,
                             "errorMsg": "The user does not exist on the transfer node." }
                             "errorMsg": "The user does not exist on the transfer node or is not registered in the database." }
            else:
                uid = os.stat(folderPath).st_uid
                gid = os.stat(folderPath).st_gid