package org.cloudbus.cloudsim.container.containerSelectionPolicies;
import org.cloudbus.cloudsim.container.core.Container;
import org.cloudbus.cloudsim.container.core.PowerContainer;
import org.cloudbus.cloudsim.container.core.PowerContainerHost;
import org.cloudbus.cloudsim.container.core.PowerContainerVm;
import java.util.ArrayList;
import java.util.List;
/**
* Created by sareh on 31/07/15.
*/
public abstract class PowerContainerSelectionPolicy {
/**
* Gets the containers to migrate.
*
* @param host the host
* @return the container to migrate
*/
public abstract Container getContainerToMigrate(PowerContainerHost host);
/**
* Gets the migratable containers.
*
* @param host the host
* @return the migratable containers
*/
protected List<PowerContainer> getMigratableContainers(PowerContainerHost host) {
List<PowerContainer> migratableContainers= new ArrayList<>();
for (PowerContainerVm vm : host.<PowerContainerVm> getVmList()) {
if (!vm.isInMigration()) {
for (Container container: vm.getContainerList()){
if(!container.isInMigration() && !vm.getContainersMigratingIn().contains(container)){
migratableContainers.add((PowerContainer) container);}
}
}
}
return migratableContainers;
}
}