package io.cattle.platform.ha.monitor.dao.impl; import static io.cattle.platform.core.model.tables.AgentTable.*; import static io.cattle.platform.core.model.tables.HostTable.*; import static io.cattle.platform.core.model.tables.InstanceHostMapTable.*; import static io.cattle.platform.core.model.tables.InstanceTable.*; import io.cattle.platform.core.constants.CommonStatesConstants; import io.cattle.platform.db.jooq.dao.impl.AbstractJooqDao; import io.cattle.platform.ha.monitor.dao.PingInstancesMonitorDao; import io.cattle.platform.ha.monitor.model.KnownInstance; import java.util.HashMap; import java.util.List; import java.util.Map; public class PingInstancesMonitorDaoImpl extends AbstractJooqDao implements PingInstancesMonitorDao { @Override public Map<String, KnownInstance> getInstances(long agentId) { List<KnownInstance> instances = create() .select(INSTANCE.fields()) .from(AGENT) .join(HOST) .on(AGENT.ID.eq(HOST.AGENT_ID)) .join(INSTANCE_HOST_MAP) .on(INSTANCE_HOST_MAP.HOST_ID.eq(HOST.ID) .and(INSTANCE_HOST_MAP.REMOVED.isNull())) .join(INSTANCE) .on(INSTANCE.ID.eq(INSTANCE_HOST_MAP.INSTANCE_ID)) .where(INSTANCE.STATE.ne(CommonStatesConstants.PURGED) .and(AGENT.ID.eq(agentId))) .fetchInto(KnownInstance.class); Map<String, KnownInstance> result = new HashMap<String, KnownInstance>(); for (KnownInstance i : instances) result.put(i.getUuid(), i); return result; } @Override public Long getAgentIdForInstanceHostMap(String instanceHostMap) { if ( instanceHostMap == null ) { return null; } return create() .select(HOST.AGENT_ID) .from(HOST) .join(INSTANCE_HOST_MAP) .on(INSTANCE_HOST_MAP.HOST_ID.eq(HOST.ID)) .where(INSTANCE_HOST_MAP.ID.eq(Long.parseLong(instanceHostMap))) .fetchOne(HOST.AGENT_ID); } }