package com.cattles.executionservice.falkon;
import com.cattles.executionservice.falkon.commandexecutor.FalkonExecFactory;
import com.cattles.resourcePoolManagement.VirtualMachineResourcePool;
import com.cattles.util.Constant;
import com.cattles.util.ssh.CommandExecutable;
import com.cattles.util.ssh.ConnInfo;
import com.cattles.util.ssh.SSHResult;
import com.cattles.virtualMachineManagement.VirtualMachineInformation;
import org.apache.log4j.Logger;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: youfuli
* To change this template use File | Settings | File Templates.
*/
public class FalkonClusterInitialization extends Thread {
private static Logger logger = Logger.getLogger(FalkonClusterInitialization.class);
VirtualMachineResourcePool virtualMachineResourcePool = VirtualMachineResourcePool.getResourcePool();
public String serverID;
public ArrayList<String> nodeIDList;
public FalkonClusterInitialization(String _serverID, ArrayList<String> _nodeIDList) {
serverID = _serverID;
nodeIDList = _nodeIDList;
}
public void run() {
logger.info("Begin to Initialize Falkon service**************");
VirtualMachineInformation falkonServer = virtualMachineResourcePool.getVMWithID(serverID);
CommandExecutable ce = (new FalkonExecFactory()).getCmdExec("cluster");
ConnInfo ci = new ConnInfo(falkonServer.getVmPublicIpAddress(), Constant.VIRTUAL_MACHINE_ACCOUNT, Constant.VIRTUAL_MACHINE_KEY_PATH, null);
SSHResult result = ce.connect(ci);
if (!result.isSuccess()) {
Exception exception = result.getError();
try {
throw exception;
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
result = ce.execute(Constant.FALKON_SERVICE_INTIALIZATION_COMMAND);
logger.info("Finish initializing the Falkon service**************");
if (result != null) {
//ce.disconnect();
logger.info("Finish initializing the Falkon service**************");
for (String workerID : nodeIDList) {
VirtualMachineInformation falkonWorker = virtualMachineResourcePool.getVMWithID(workerID);
logger.info("registering worker " + workerID + " to server!");
FalkonWorkerRegisteraton falkonWorkerRegisteraton = new FalkonWorkerRegisteraton(falkonWorker.getVmID(), falkonServer.getVmPublicIpAddress(), falkonWorker.getVmPublicIpAddress());
falkonWorkerRegisteraton.start();
}
}
}
}