package io.cattle.platform.process.stack;
import io.cattle.platform.agent.instance.dao.AgentInstanceDao;
import io.cattle.platform.core.model.Stack;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.eventing.model.EventVO;
import io.cattle.platform.process.common.handler.AgentBasedProcessHandler;
import io.cattle.platform.util.type.CollectionUtils;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
public class StackAgentHandler extends AgentBasedProcessHandler {
@Inject
AgentInstanceDao agentInstanceDao;
String agentService;
String stackKind;
@Override
protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) {
Stack env = (Stack)state.getResource();
if (!stackKind.equals(env.getKind())) {
return null;
}
Long accountId = env.getAccountId();
List<Long> agentIds = agentInstanceDao.getAgentProvider(agentService, accountId);
return agentIds.size() == 0 ? null : agentIds.get(0);
}
@Override
protected void preProcessEvent(EventVO<?> event, ProcessState state, ProcessInstance process, Object eventResource, Object dataResource,
Object agentResource) {
super.preProcessEvent(event, state, process, eventResource, dataResource, agentResource);
Map<String, Object> data = CollectionUtils.toMap(event.getData());
data.put("environment", data.get("stack"));
}
public String getStackKind() {
return stackKind;
}
@Inject
public void setStackKind(String environmentKind) {
this.stackKind = environmentKind;
}
public String getAgentService() {
return agentService;
}
@Inject
public void setAgentService(String agentService) {
this.agentService = agentService;
}
}