public void submitTransferToAgent()

in controller/src/main/java/org/apache/airavata/mft/controller/TransferDispatcher.java [53:96]


    public void submitTransferToAgent(List<String> filteredAgents, String transferId,
                                      TransferApiRequest transferRequest,
                                      AgentTransferRequest agentTransferRequest, String consulKey) {

        try {
            if (filteredAgents.isEmpty()) {
                mftConsulClient.saveTransferState(transferId, null, new TransferState()
                        .setUpdateTimeMils(System.currentTimeMillis())
                        .setState("FAILED").setPercentage(0)
                        .setPublisher("controller")
                        .setDescription("No qualifying agent was found to orchestrate the transfer"));
                return;
            }

            mftConsulClient.saveTransferState(transferId,null, new TransferState()
                    .setState("STARTING")
                    .setPercentage(0)
                    .setUpdateTimeMils(System.currentTimeMillis())
                    .setPublisher("controller")
                    .setDescription("Initializing the transfer"));

            // TODO use a better way to select the right agent
            mftConsulClient.commandTransferToAgent(selectTargetAgent(filteredAgents), transferId, agentTransferRequest);
            mftConsulClient.markTransferAsProcessed(transferId, transferRequest);
            logger.info("Marked transfer {} as processed", transferId);

        } catch (Exception e) {

            logger.error("Failed to submit the transfer {} to agent", transferId, e);

            try {
                mftConsulClient.saveTransferState(transferId, null, new TransferState()
                        .setUpdateTimeMils(System.currentTimeMillis())
                        .setState("FAILED").setPercentage(0)
                        .setPublisher("controller")
                        .setDescription("Failed to submit the transfer to agent. Error: " + ExceptionUtils.getRootCauseMessage(e)));
            } catch (Exception e2) {
                // Ignore
                logger.warn("Failed to update the failed transfer state for transfer id {}", transferId, e);
            }
        } finally {
            mftConsulClient.getKvClient().deleteKey(consulKey);
        }
    }