package org.ow2.choreos.ee.reconfiguration.events; import org.apache.log4j.Logger; import org.ow2.choreos.chors.ChoreographyNotFoundException; import org.ow2.choreos.chors.EnactmentException; import org.ow2.choreos.chors.datamodel.Choreography; import org.ow2.choreos.chors.datamodel.ChoreographySpec; import org.ow2.choreos.ee.reconfiguration.ComplexEventHandler; import org.ow2.choreos.ee.reconfiguration.HandlingEvent; import org.ow2.choreos.services.datamodel.DeployableService; import org.ow2.choreos.services.datamodel.DeployableServiceSpec; public class HighResponseTime extends ComplexEventHandler { Logger logger = Logger.getLogger(this.getClass()); @Override public void handleEvent(HandlingEvent event) { String node = event.getNode(); String service = event.getService(); Choreography choreography = registryHelper.getChoreography(node, service); String serviceName = null; for (DeployableService s : choreography.getDeployableServices()) { if (s.getUUID().equals(service)) serviceName = s.getSpec().getName(); } if (choreography == null || serviceName == null) return; ChoreographySpec choreographySpec = choreography.getChoreographySpec(); for (DeployableServiceSpec s : choreographySpec.getDeployableServiceSpecs()) { if (s.getName().equals(service)) { logger.debug("Found service spec. Going to increase number of instances"); s.setNumberOfInstances(s.getNumberOfInstances() + 1); break; } } try { logger.info("Going to update chor with spec: " + choreographySpec); registryHelper.getChorClient().updateChoreography(choreography.getId(), choreographySpec); } catch (ChoreographyNotFoundException e) { logger.error(e.getMessage()); } catch (EnactmentException e) { logger.error(e.getMessage()); } try { logger.info("Enacting choreography"); registryHelper.getChorClient().enactChoreography(choreography.getId()); } catch (EnactmentException e) { logger.error(e.getMessage()); } catch (ChoreographyNotFoundException e) { logger.error(e.getMessage()); } } }