package com.cattles.resourcePoolManagement;
import com.cattles.util.Constant;
import com.cattles.virtualMachineManagement.VirtualMachineInformation;
import org.apache.log4j.Logger;
import java.util.ArrayList;
public class VirtualResourcePool {
VirtualMachineResourcePool virtualMachineResourcePool = VirtualMachineResourcePool.getResourcePool();
private static Logger logger = Logger.getLogger(VirtualResourcePool.class);
/**
* fetch the required VM list
*
* @param vmNum
* @return
*/
public ArrayList<VirtualMachineInformation> fetchVMList(int vmNum) {
ArrayList<VirtualMachineInformation> fetchVMs = new ArrayList<VirtualMachineInformation>();
ArrayList<VirtualMachineInformation> availableVMList = virtualMachineResourcePool.getVMWithState(Constant.VIRTUAL_MACHINES_STATE_AVAILABLE);
//there are enough resource in the resource pool
logger.info("available vm size:" + availableVMList.size());
if (availableVMList.size() >= vmNum) {
fetchVMs.addAll(availableVMList.subList(0, vmNum));
} else {
int applySize = Math.abs(vmNum - availableVMList.size());
ArrayList<VirtualMachineInformation> applyVMList = virtualMachineResourcePool.applyVMs(applySize);
fetchVMs.addAll(availableVMList);
fetchVMs.addAll(applyVMList);
}
//TODO:update VMs' state
ArrayList<String> fetchVMsIDList = new ArrayList<String>();//the ID list of fetched VMs
for (int i = 0; i < fetchVMs.size(); i++) {
fetchVMsIDList.add(fetchVMs.get(i).getVmID());
}
virtualMachineResourcePool.modifyVMsState(fetchVMsIDList, Constant.VIRTUAL_MACHINES_STATE_BUSY);
return fetchVMs;
}
public boolean deregisterVMs(ArrayList<String> vmIDList) {
for (String vmID : vmIDList) {
logger.info("deregistering virtual machines:" + vmID);
}
virtualMachineResourcePool.modifyVMsState(vmIDList, Constant.VIRTUAL_MACHINES_STATE_AVAILABLE);
return true;
}
}