package io.cattle.platform.systemstack.process; import static io.cattle.platform.core.model.tables.AccountTable.*; 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.process.ProcessInstance; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.object.meta.ObjectMetaDataManager; import io.cattle.platform.process.base.AbstractDefaultProcessHandler; import io.cattle.platform.sample.data.SampleDataStartupV3; import io.cattle.platform.systemstack.catalog.CatalogService; import javax.inject.Inject; import javax.inject.Named; @Named public class ProjecttemplateCreate extends AbstractDefaultProcessHandler { @Inject SystemStackTrigger systemStackTrigger; @Inject SampleDataStartupV3 sampleDataStartupV3; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { ProjectTemplate template = (ProjectTemplate)state.getResource(); if (!Boolean.TRUE.equals(template.getIsPublic()) || !CatalogService.DEFAULT_TEMPLATE.get().equalsIgnoreCase(template.getName())) { return null; } sampleDataStartupV3.start(); Account defaultProject = getDefaultProject(); if (defaultProject == null || defaultProject.getProjectTemplateId() != null) { return null; } if (!AccountConstants.ACCOUNT_VERSION.get().equals(defaultProject.getVersion())) { return null; } Long projectTemplateId = defaultProject.getProjectTemplateId(); if (projectTemplateId == null) { projectTemplateId = template.getId(); } systemStackTrigger.trigger(defaultProject.getId()); objectManager.setFields(defaultProject, ACCOUNT.PROJECT_TEMPLATE_ID, projectTemplateId); return null; } protected Account getDefaultProject() { return objectManager.findAny(Account.class, ObjectMetaDataManager.UUID_FIELD, "adminProject"); } }