package io.cattle.platform.register.dao.impl;
import static io.cattle.platform.core.model.tables.AgentTable.*;
import io.cattle.platform.core.constants.AccountConstants;
import io.cattle.platform.core.constants.AgentConstants;
import io.cattle.platform.core.model.Agent;
import io.cattle.platform.core.model.GenericObject;
import io.cattle.platform.db.jooq.dao.impl.AbstractJooqDao;
import io.cattle.platform.object.ObjectManager;
import io.cattle.platform.object.util.DataAccessor;
import io.cattle.platform.register.dao.RegisterDao;
import io.cattle.platform.register.util.RegisterConstants;
import io.cattle.platform.util.type.CollectionUtils;
import java.util.Map;
import javax.inject.Inject;
public class RegisterDaoImpl extends AbstractJooqDao implements RegisterDao {
ObjectManager objectManager;
@Override
public Agent createAgentForRegistration(String key, GenericObject obj) {
Map<String,Object> data = CollectionUtils.asMap(
RegisterConstants.AGENT_DATA_REGISTRATION_KEY, key,
AgentConstants.DATA_AGENT_RESOURCES_ACCOUNT_ID, obj.getAccountId());
String format = DataAccessor.fieldString(obj, "agentUriFormat");
if (format == null) {
format = "event://%s";
}
Agent agent = objectManager.create(Agent.class,
AGENT.KIND, AccountConstants.REGISTERED_AGENT_KIND,
AGENT.URI, String.format(format, obj.getUuid()),
AGENT.DATA, data,
AGENT.MANAGED_CONFIG, true);
DataAccessor.fromDataFieldOf(obj)
.withKey(RegisterConstants.DATA_AGENT_ID)
.set(agent.getId());
objectManager.persist(obj);
return agent;
}
public ObjectManager getObjectManager() {
return objectManager;
}
@Inject
public void setObjectManager(ObjectManager objectManager) {
this.objectManager = objectManager;
}
}