package io.cattle.platform.agent.connection.simulator;
import io.cattle.platform.core.model.Agent;
import io.cattle.platform.eventing.model.Event;
import io.cattle.platform.eventing.model.EventVO;
import io.cattle.platform.object.ObjectManager;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AgentConnectionSimulator implements Simulator {
private static final Logger log = LoggerFactory.getLogger(AgentConnectionSimulator.class);
Agent agent;
boolean open = true;
ObjectManager objectManager;
List<AgentSimulatorEventProcessor> processors;
Map<String, Object[]> instances = new HashMap<String, Object[]>();
public AgentConnectionSimulator(ObjectManager objectManager, Agent agent, List<AgentSimulatorEventProcessor> processors) {
super();
this.objectManager = objectManager;
this.agent = agent;
this.processors = processors;
}
@Override
public Event execute(Event event) {
if (!open) {
return null;
}
objectManager.reload(agent);
for (AgentSimulatorEventProcessor processor : processors) {
Event response = null;
try {
response = processor.handle(this, event);
} catch (IOException e) {
log.info("IOException in simulator handling [{}]: {}", event.getName(), e.getMessage());
} catch (Exception e) {
throw new IllegalStateException(e);
}
if (response != null) {
return response;
}
}
return EventVO.reply(event);
}
public Agent getAgent() {
return agent;
}
public Map<String, Object[]> getInstances() {
return instances;
}
public List<AgentSimulatorEventProcessor> getProcessors() {
return processors;
}
public boolean isOpen() {
return open;
}
public void setOpen(boolean open) {
this.open = open;
}
}