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

Added connection check for storage points + minor changes in error codes.

parent 5c8605a9
Loading
Loading
Loading
Loading
Loading
+28 −9
Original line number Diff line number Diff line
@@ -91,14 +91,14 @@ class DataRPCServer(RedisRPCServer):
                errorMsg = "Multiple users with the same email address in RAP."
                self.logger.exception(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 5,
                             "errorCode": 6,
                             "errorMsg": errorMsg }
                return response
            except HTTPException:
                errorMsg = "HTTP exception."
                self.logger.exception(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 6,
                             "errorCode": 7,
                             "errorMsg": errorMsg }
                return response                
            try:    
@@ -122,14 +122,14 @@ class DataRPCServer(RedisRPCServer):
                errorMsg = "The user does not exist on the transfer node."
                self.logger.error(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 7,
                             "errorCode": 8,
                             "errorMsg": errorMsg }
            elif not (userInDb or rapInfo):
                # the user cannot be found neither in RAP nor in db
                errorMsg = "The user is not registered neither in RAP nor in the database."
                self.logger.error(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 8,
                             "errorCode": 9,
                             "errorMsg": errorMsg }
            else:
                if not userInDb and rapInfo:
@@ -158,21 +158,40 @@ class DataRPCServer(RedisRPCServer):
                        errorMsg = "The 'store' directory on the transfer node is empty."
                        self.logger.error(errorMsg)
                        response = { "responseType": "ERROR",
                                     "errorCode": 9,
                                     "errorCode": 10,
                                     "errorMsg": errorMsg }
                    else:
                        errorMsg = "Service busy. Please, retry later."
                        self.logger.error(errorMsg)
                        response = { "responseType": "ERROR",
                                     "errorCode": 10,
                                     "errorCode": 11,
                                     "errorMsg": errorMsg }
                else:
                    errorMsg = "Permission denied."
                    self.logger.error(errorMsg)
                    response = { "responseType": "ERROR",
                                 "errorCode": 11,
                                 "errorCode": 12,
                                 "errorMsg": errorMsg }
        elif requestBody["requestType"] == "STORE_CON":
            self.logger.info("Checking storage point connection...")
            try:
                hostname = self.dbConn.getStorageHostname(requestBody["storageId"])
            except Exception:
                errorMsg = "Database error."
                self.logger.exception(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 2,
                             "errorMsg": errorMsg }
                return response
            else:
                hostIsUp = True if os.system("ping -c 1 " + hostname) == 0 else False
                if not hostIsUp:
                    errorMsg = f"The host '{hostname}' is not reachable."
                    self.logger.error(errorMsg)
                    response = { "responseType": "ERROR",
                                 "errorCode": 5,
                                 "errorMsg": errorMsg }
                    return response
            username = requestBody["userName"]
            self.prepare(username)
            jobObj = Job()
@@ -197,7 +216,7 @@ class DataRPCServer(RedisRPCServer):
                errorMsg = "Unable to insert the job in the 'write_pending' queue."
                self.logger.exception(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 12,
                             "errorCode": 13,
                             "errorMsg": errorMsg }
                return response
            else:
@@ -207,7 +226,7 @@ class DataRPCServer(RedisRPCServer):
            errorMsg = "Unkown request type."
            self.logger.error(errorMsg)
            response = { "responseType": "ERROR",
                         "errorCode": 13,
                         "errorCode": 14,
                         "errorMsg": errorMsg }
        return response