package io.cattle.platform.register.process;
import static io.cattle.platform.core.model.tables.CredentialTable.*;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.core.dao.GenericResourceDao;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.model.Credential;
import io.cattle.platform.engine.handler.HandlerResult;
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.process.common.handler.AbstractObjectProcessLogic;
import io.cattle.platform.register.util.RegisterConstants;
import javax.inject.Inject;
import javax.inject.Named;
import com.netflix.config.DynamicStringListProperty;
@Named
public class RegisterTokenAccountCreate extends AbstractObjectProcessLogic implements ProcessPostListener {
public static final DynamicStringListProperty ACCOUNT_KINDS = ArchaiusUtil.getList("process.account.create.register.token.account.kinds");
GenericResourceDao resourceDao;
@Override
public String[] getProcessNames() {
return new String[] { "account.create" };
}
@Override
public HandlerResult handle(final ProcessState state, ProcessInstance process) {
Account account = (Account) state.getResource();
if (!ACCOUNT_KINDS.get().contains(account.getKind())) {
return null;
}
boolean found = false;
for (Credential cred : children(account, Credential.class)) {
if (RegisterConstants.KIND_CREDENTIAL_REGISTRATION_TOKEN.equals(cred.getKind())) {
found = true;
break;
}
}
if (!found) {
resourceDao.createAndSchedule(Credential.class, CREDENTIAL.ACCOUNT_ID, account.getId(), CREDENTIAL.KIND,
RegisterConstants.KIND_CREDENTIAL_REGISTRATION_TOKEN);
}
return null;
}
public GenericResourceDao getResourceDao() {
return resourceDao;
}
@Inject
public void setResourceDao(GenericResourceDao resourceDao) {
this.resourceDao = resourceDao;
}
}