package io.cattle.platform.app;
import io.cattle.platform.core.addon.BlkioDeviceOption;
import io.cattle.platform.core.addon.CatalogTemplate;
import io.cattle.platform.core.addon.ComposeConfig;
import io.cattle.platform.core.addon.HaConfigInput;
import io.cattle.platform.core.addon.HaproxyConfig;
import io.cattle.platform.core.addon.InServiceUpgradeStrategy;
import io.cattle.platform.core.addon.InstanceHealthCheck;
import io.cattle.platform.core.addon.LoadBalancerCookieStickinessPolicy;
import io.cattle.platform.core.addon.LogConfig;
import io.cattle.platform.core.addon.MountEntry;
import io.cattle.platform.core.addon.NetworkPolicyRule;
import io.cattle.platform.core.addon.NetworkPolicyRule.NetworkPolicyRuleAction;
import io.cattle.platform.core.addon.NetworkPolicyRule.NetworkPolicyRuleWithin;
import io.cattle.platform.core.addon.NetworkPolicyRuleBetween;
import io.cattle.platform.core.addon.NetworkPolicyRuleMember;
import io.cattle.platform.core.addon.PortRule;
import io.cattle.platform.core.addon.ProcessPool;
import io.cattle.platform.core.addon.ProcessSummary;
import io.cattle.platform.core.addon.PublicEndpoint;
import io.cattle.platform.core.addon.RecreateOnQuorumStrategyConfig;
import io.cattle.platform.core.addon.RestartPolicy;
import io.cattle.platform.core.addon.RollingRestartStrategy;
import io.cattle.platform.core.addon.ScalePolicy;
import io.cattle.platform.core.addon.SecretReference;
import io.cattle.platform.core.addon.ServiceLink;
import io.cattle.platform.core.addon.ServiceRestart;
import io.cattle.platform.core.addon.ServiceUpgrade;
import io.cattle.platform.core.addon.ServiceUpgradeStrategy;
import io.cattle.platform.core.addon.ServicesPortRange;
import io.cattle.platform.core.addon.TargetPortRule;
import io.cattle.platform.core.addon.ToServiceUpgradeStrategy;
import io.cattle.platform.core.addon.Ulimit;
import io.cattle.platform.core.addon.VirtualMachineDisk;
import io.cattle.platform.core.addon.VolumeActivateInput;
import io.cattle.platform.core.model.CattleTable;
import io.cattle.platform.db.jooq.utils.SchemaRecordTypeListGenerator;
import io.cattle.platform.extension.dynamic.api.addon.ExternalHandlerProcessConfig;
import io.cattle.platform.object.meta.TypeSet;
import io.cattle.platform.util.type.Priority;
import java.util.Arrays;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CoreModelConfig {
@Bean
SchemaRecordTypeListGenerator CoreSchemaList() {
SchemaRecordTypeListGenerator generator = new SchemaRecordTypeListGenerator();
generator.setSchemaClass(CattleTable.class);
return generator;
}
@Bean
TypeSet CoreAddonTypeSet() {
TypeSet typeSet = new TypeSet("CoreAddonTypeSet");
typeSet.setTypeClasses(Arrays.asList(
LogConfig.class,
RestartPolicy.class,
LoadBalancerCookieStickinessPolicy.class,
ExternalHandlerProcessConfig.class,
ComposeConfig.class,
InstanceHealthCheck.class,
ServiceLink.class,
ServiceUpgrade.class,
ServiceUpgradeStrategy.class,
InServiceUpgradeStrategy.class,
ToServiceUpgradeStrategy.class,
PublicEndpoint.class,
VirtualMachineDisk.class,
VolumeActivateInput.class,
HaproxyConfig.class,
RollingRestartStrategy.class,
ServiceRestart.class,
ServicesPortRange.class,
RecreateOnQuorumStrategyConfig.class,
HaConfigInput.class,
BlkioDeviceOption.class,
ScalePolicy.class,
Ulimit.class,
CatalogTemplate.class,
PortRule.class,
TargetPortRule.class,
MountEntry.class,
NetworkPolicyRule.class,
NetworkPolicyRuleMember.class,
NetworkPolicyRuleBetween.class,
NetworkPolicyRuleWithin.class,
NetworkPolicyRuleAction.class,
ProcessSummary.class,
ProcessPool.class,
SecretReference.class
));
return typeSet;
}
@Bean
TypeSet CoreTypeSet(SchemaRecordTypeListGenerator list) {
TypeSet typeSet = new TypeSet("CoreTypeSet");
typeSet.setTypeClasses(list.getRecordTypes());
typeSet.setTypeNames(Arrays.asList(
"addOutputsInput",
"addRemoveServiceLinkInput",
"changeSecretInput",
"apiKey,parent=credential",
"composeConfigInput",
"container,parent=instance",
"instanceConsole",
"instanceConsoleInput",
"instanceStop",
"project,parent=account",
"password,parent=credential",
"registry,parent=storagePool",
"registryCredential,parent=credential",
"setProjectMembersInput",
"setServiceLinksInput",
"sshKey,parent=credential",
"virtualMachine,parent=container",
"storageDriverService,parent=service",
"networkDriverService,parent=service",
"loadBalancerService,parent=service",
"externalService,parent=service",
"dnsService,parent=service",
"kubernetesService,parent=service",
"launchConfig,parent=container",
"secondaryLaunchConfig,parent=launchConfig",
"pullTask,parent=genericObject",
"externalVolumeEvent,parent=externalEvent",
"externalStoragePoolEvent,parent=externalEvent",
"externalServiceEvent,parent=externalEvent",
"stackUpgrade",
"kubernetesStackUpgrade",
"externalDnsEvent,parent=externalEvent",
"externalHostEvent,parent=externalEvent",
"loadBalancerConfig",
"composeService,parent=service",
"composeProject,parent=stack",
"kubernetesStack,parent=stack",
"haConfig",
"machine,parent=physicalHost",
"revertToSnapshotInput",
"restoreFromBackupInput",
"snapshotBackupInput,parent=backup",
"volumeSnapshotInput",
"nfsConfig",
"binding",
"serviceBinding",
"lbConfig",
"lbTargetConfig",
"balancerServiceConfig",
"balancerTargetConfig",
"defaultNetwork,parent=network"
));
typeSet.setPriority(Priority.PRE);
return typeSet;
}
}