package org.cloudbus.cloudsim.container.hostSelectionPolicies;
import org.cloudbus.cloudsim.container.core.ContainerHost;
import org.cloudbus.cloudsim.container.core.PowerContainerHostUtilizationHistory;
import org.cloudbus.cloudsim.core.CloudSim;
import java.util.List;
import java.util.Set;
/**
* Created by sareh on 11/08/15.
*/
public class HostSelectionPolicyMostFull extends HostSelectionPolicy {
@Override
public ContainerHost getHost(List<ContainerHost> hostList, Object obj,Set<? extends ContainerHost> excludedHostList) {
ContainerHost selectedHost = null;
if(CloudSim.clock() >1.0){
double maxUsage = Double.MIN_VALUE;
for (ContainerHost host : hostList) {
if (excludedHostList.contains(host)) {
continue;
}
if (host instanceof PowerContainerHostUtilizationHistory) {
double hostUtilization= ((PowerContainerHostUtilizationHistory) host).getUtilizationOfCpu();
if (hostUtilization > maxUsage) {
maxUsage = hostUtilization;
selectedHost = host;
}
}
}
return selectedHost;
}else {
// At the simulation start all the VMs by leastFull algorithms.
selectedHost = new HostSelectionPolicyFirstFit().getHost(hostList,obj ,excludedHostList);
return selectedHost;
}
}
}