package org.ow2.choreos.ee.services.update; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.ow2.choreos.services.datamodel.DeployableService; import org.ow2.choreos.services.datamodel.DeployableServiceSpec; public class UpdateActionFactory { private Logger logger = Logger.getLogger(UpdateActionFactory.class); public List<UpdateAction> getActions(DeployableService currentService, DeployableServiceSpec newServiceSpec) { DeployableServiceSpec currentServiceSpec = currentService.getSpec(); List<UpdateAction> actions = new ArrayList<UpdateAction>(); logger.info("Calculating changes on service spec \nOld = " + currentServiceSpec + "\nNew = " + newServiceSpec); if (currentServiceSpec.getNumberOfInstances() < newServiceSpec.getNumberOfInstances()) { UpdateAction action = new IncreaseNumberOfReplicas(currentService, newServiceSpec); actions.add(action); } else if (currentServiceSpec.getNumberOfInstances() > newServiceSpec.getNumberOfInstances()) { UpdateAction action = new DecreaseNumberOfReplicas(currentService, newServiceSpec); actions.add(action); } if (!(currentServiceSpec.getResourceImpact() == null || currentServiceSpec.getResourceImpact().getMemory() == null)) { if (!(currentServiceSpec.getResourceImpact().getMemory().ordinal() == newServiceSpec.getResourceImpact() .getMemory().ordinal())) { UpdateAction action = new Migrate(currentService, newServiceSpec); actions.add(action); } } logger.info("Detected changes: " + actions); return actions; } }