package io.cattle.platform.docker.process.stack; import io.cattle.platform.agent.instance.dao.AgentInstanceDao; import io.cattle.platform.core.model.Stack; import io.cattle.platform.core.util.SystemLabels; import io.cattle.platform.docker.process.util.DockerConstants; import io.cattle.platform.engine.handler.ProcessPostListener; 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.AgentBasedProcessLogic; import io.cattle.platform.util.type.CollectionUtils; import java.util.List; import java.util.Map; import javax.inject.Inject; public class DockerComposeStackHandler extends AgentBasedProcessLogic implements ProcessPostListener { @Inject AgentInstanceDao agentInstanceDao; @Override protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) { Stack env = (Stack)state.getResource(); if (!DockerConstants.TYPE_COMPOSE_PROJECT.equals(env.getKind())) { return null; } Long accountId = env.getAccountId(); List<Long> agentIds = agentInstanceDao.getAgentProvider(SystemLabels.LABEL_AGENT_SERVICE_COMPOSE_PROVIDER, 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")); } }