package io.cattle.platform.process.account;
import static io.cattle.platform.core.model.tables.AccountTable.*;
import static io.cattle.platform.core.model.tables.ProjectTemplateTable.*;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.core.constants.AccountConstants;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.model.ProjectTemplate;
import io.cattle.platform.engine.handler.HandlerResult;
import io.cattle.platform.engine.handler.ProcessPreListener;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.process.common.handler.AbstractObjectProcessLogic;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import com.netflix.config.DynamicStringProperty;
@Named
public class AccountPreCreate extends AbstractObjectProcessLogic implements ProcessPreListener {
public static final DynamicStringProperty DEFAULT_TEMPLATE = ArchaiusUtil.getString("project.template.default.name");
@Override
public String[] getProcessNames() {
return new String[] { "account.create" };
}
@Override
public HandlerResult handle(ProcessState state, ProcessInstance process) {
Account account = (Account)state.getResource();
if (account.getProjectTemplateId() != null || !AccountConstants.PROJECT_KIND.equals(account.getKind())) {
return null;
}
if (StringUtils.isBlank(DEFAULT_TEMPLATE.get())) {
return null;
}
ProjectTemplate template = objectManager.findAny(ProjectTemplate.class,
PROJECT_TEMPLATE.NAME, DEFAULT_TEMPLATE.get(),
PROJECT_TEMPLATE.IS_PUBLIC, true,
PROJECT_TEMPLATE.REMOVED, null);
return new HandlerResult(
ACCOUNT.PROJECT_TEMPLATE_ID, template == null ? null : template.getId());
}
}