Commit 0daba0ce authored by Cristiano Urban's avatar Cristiano Urban
Browse files

Handle empty storage list on 'DataRPCServer' class.

parent bcd565d8
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -103,9 +103,17 @@ class DataRPCServer(RedisRPCServer):
                return response                
            try:    
                if requestBody["requestType"] == "CSTORE":
                    storageList = self.dbConn.getStorageListByType("cold")
                    storageType = "cold"
                else:
                    storageList = self.dbConn.getStorageListByType("hot")
                    storageType = "hot"
                storageList = self.dbConn.getStorageListByType(storageType)
                if not storageList:
                    errorMsg = f"No storage point of type '{storageType}' available."
                    self.logger.exception(errorMsg)
                    response = { "responseType": "ERROR",
                                 "errorCode": 8,
                                 "errorMsg": errorMsg }
                    return response
            except Exception:
                errorMsg = "Database error."
                self.logger.exception(errorMsg)
@@ -122,14 +130,14 @@ class DataRPCServer(RedisRPCServer):
                errorMsg = "The user does not exist on the transfer node."
                self.logger.error(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 8,
                             "errorCode": 9,
                             "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": 9,
                             "errorCode": 10,
                             "errorMsg": errorMsg }
            else:
                if not userInDb and rapInfo:
@@ -158,19 +166,19 @@ class DataRPCServer(RedisRPCServer):
                        errorMsg = "The 'store' directory on the transfer node is empty."
                        self.logger.error(errorMsg)
                        response = { "responseType": "ERROR",
                                     "errorCode": 10,
                                     "errorCode": 11,
                                     "errorMsg": errorMsg }
                    else:
                        errorMsg = "Service busy. Please, retry later."
                        self.logger.error(errorMsg)
                        response = { "responseType": "ERROR",
                                     "errorCode": 11,
                                     "errorCode": 12,
                                     "errorMsg": errorMsg }
                else:
                    errorMsg = "Permission denied."
                    self.logger.error(errorMsg)
                    response = { "responseType": "ERROR",
                                 "errorCode": 12,
                                 "errorCode": 13,
                                 "errorMsg": errorMsg }
        elif requestBody["requestType"] == "STORE_CON":
            self.logger.info("Checking storage point connection...")
@@ -216,7 +224,7 @@ class DataRPCServer(RedisRPCServer):
                errorMsg = "Unable to insert the job in the 'write_pending' queue."
                self.logger.exception(errorMsg)
                response = { "responseType": "ERROR",
                             "errorCode": 13,
                             "errorCode": 14,
                             "errorMsg": errorMsg }
                return response
            else:
@@ -226,7 +234,7 @@ class DataRPCServer(RedisRPCServer):
            errorMsg = "Unkown request type."
            self.logger.error(errorMsg)
            response = { "responseType": "ERROR",
                         "errorCode": 14,
                         "errorCode": 15,
                         "errorMsg": errorMsg }
        return response