use of io.stackgres.common.crd.sgcluster.StackGresClusterScriptFrom in project stackgres by ongres.
the class ClusterConstraintValidatorTest method validScriptAndScriptFrom_shouldFail.
@Test
void validScriptAndScriptFrom_shouldFail() {
StackGresClusterReview review = getValidReview();
review.getRequest().getObject().getSpec().setInitData(new StackGresClusterInitData());
review.getRequest().getObject().getSpec().getInitData().setScripts(new ArrayList<>());
review.getRequest().getObject().getSpec().getInitData().getScripts().add(new StackGresClusterScriptEntry());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).setScriptFrom(new StackGresClusterScriptFrom());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).setScript("SELECT 1");
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().setConfigMapKeyRef(new ConfigMapKeySelector());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().getConfigMapKeyRef().setName("test");
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().getConfigMapKeyRef().setKey("test");
checkErrorCause(StackGresClusterScriptEntry.class, new String[] { "spec.initData.scripts[0].script", "spec.initData.scripts[0].scriptFrom" }, "isScriptMutuallyExclusiveAndRequired", review, AssertTrue.class);
}
use of io.stackgres.common.crd.sgcluster.StackGresClusterScriptFrom in project stackgres by ongres.
the class ClusterConstraintValidatorTest method scriptFromConfigMapWithEmptyKey_shouldFail.
@Test
void scriptFromConfigMapWithEmptyKey_shouldFail() {
StackGresClusterReview review = getValidReview();
review.getRequest().getObject().getSpec().setInitData(new StackGresClusterInitData());
review.getRequest().getObject().getSpec().getInitData().setScripts(new ArrayList<>());
review.getRequest().getObject().getSpec().getInitData().getScripts().add(new StackGresClusterScriptEntry());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).setScriptFrom(new StackGresClusterScriptFrom());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().setConfigMapKeyRef(new ConfigMapKeySelector());
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().getConfigMapKeyRef().setName("test");
review.getRequest().getObject().getSpec().getInitData().getScripts().get(0).getScriptFrom().getConfigMapKeyRef().setKey("");
checkErrorCause(SecretKeySelector.class, "spec.initData.scripts[0].scriptFrom.configMapKeyRef.key", "isKeyNotEmpty", review, AssertTrue.class);
}
use of io.stackgres.common.crd.sgcluster.StackGresClusterScriptFrom in project stackgres by ongres.
the class ScriptsConfigValidatorTest method prepareForSecret.
private void prepareForSecret(StackGresClusterReview review, String name, String key) {
review.getRequest().getObject().getSpec().getInitData().getScripts().forEach(s -> {
s.setName(null);
s.setScript(null);
s.setDatabase(null);
s.setScriptFrom(new StackGresClusterScriptFrom());
s.getScriptFrom().setSecretKeyRef(new SecretKeySelector(key, name));
});
}
use of io.stackgres.common.crd.sgcluster.StackGresClusterScriptFrom in project stackgres by ongres.
the class ScriptsConfigValidatorTest method prepareForConfigMap.
private void prepareForConfigMap(StackGresClusterReview review, String name, String key) {
review.getRequest().getObject().getSpec().getInitData().getScripts().forEach(s -> {
s.setName(null);
s.setScript(null);
s.setDatabase(null);
s.setScriptFrom(new StackGresClusterScriptFrom());
s.getScriptFrom().setConfigMapKeyRef(new ConfigMapKeySelector(key, name));
});
}
use of io.stackgres.common.crd.sgcluster.StackGresClusterScriptFrom in project stackgres by ongres.
the class ClusterResourceMockedTest method checkCustomResource.
@Override
protected void checkCustomResource(StackGresCluster resource, ClusterDto resourceDto, Operation operation) {
final Metadata dtoMetadata = resourceDto.getMetadata();
final ObjectMeta resourceMetadata = resource.getMetadata();
if (dtoMetadata != null) {
assertNotNull(resourceMetadata);
assertEquals(dtoMetadata.getName(), resourceMetadata.getName());
assertEquals(dtoMetadata.getNamespace(), resourceMetadata.getNamespace());
assertEquals(dtoMetadata.getUid(), resourceMetadata.getUid());
} else {
assertNull(resourceMetadata);
}
final ClusterSpec dtoSpec = resourceDto.getSpec();
final StackGresClusterSpec resourceSpec = resource.getSpec();
if (dtoSpec != null) {
assertNotNull(resourceSpec);
assertEquals(dtoSpec.getPrometheusAutobind(), resourceSpec.getPrometheusAutobind());
assertEquals(dtoSpec.getInstances(), resourceSpec.getInstances());
assertEquals(dtoSpec.getPostgres().getVersion(), resourceSpec.getPostgres().getVersion());
assertEquals(dtoSpec.getSgInstanceProfile(), resourceSpec.getResourceProfile());
final ClusterConfiguration dtoSpecConfigurations = dtoSpec.getConfigurations();
final StackGresClusterConfiguration resourceSpecConfiguration = resourceSpec.getConfiguration();
if (dtoSpecConfigurations != null) {
assertNotNull(resourceSpecConfiguration);
assertEquals(dtoSpecConfigurations.getSgBackupConfig(), resourceSpecConfiguration.getBackupConfig());
assertEquals(dtoSpecConfigurations.getSgPoolingConfig(), resourceSpecConfiguration.getConnectionPoolingConfig());
assertEquals(dtoSpecConfigurations.getSgPostgresConfig(), resourceSpecConfiguration.getPostgresConfig());
} else {
assertNull(resourceSpecConfiguration);
}
final ClusterPod dtoSpecPods = dtoSpec.getPods();
if (dtoSpecPods != null) {
final StackGresClusterPod resourceSpecPod = resourceSpec.getPod();
assertNotNull(resourceSpecPod);
assertEquals(dtoSpecPods.getDisableConnectionPooling(), resourceSpecPod.getDisableConnectionPooling());
assertEquals(dtoSpecPods.getDisableMetricsExporter(), resourceSpecPod.getDisableMetricsExporter());
assertEquals(dtoSpecPods.getDisableMetricsExporter(), resourceSpecPod.getDisableMetricsExporter());
final ClusterPodPersistentVolume dtoPV = dtoSpecPods.getPersistentVolume();
final StackGresPodPersistentVolume resourcePV = resourceSpecPod.getPersistentVolume();
if (dtoPV != null) {
assertNotNull(resourcePV);
assertEquals(dtoPV.getSize(), resourcePV.getSize());
assertEquals(dtoPV.getStorageClass(), resourcePV.getStorageClass());
} else {
assertNull(resourcePV);
}
final StackGresClusterSpecLabels resourceMetadataLabels = Optional.ofNullable(resourceSpec.getMetadata()).map(StackGresClusterSpecMetadata::getLabels).orElse(null);
final ClusterSpecLabels dtoMetadataLabels = Optional.ofNullable(dtoSpec.getMetadata()).map(ClusterSpecMetadata::getLabels).orElse(null);
if (dtoMetadataLabels != null) {
assertNotNull(resourceMetadataLabels);
assertEquals(dtoMetadataLabels.getClusterPods(), resourceMetadataLabels.getClusterPods());
} else {
assertNull(resourceMetadataLabels);
}
final ClusterPodScheduling podScheduling = dtoSpecPods.getScheduling();
final StackGresClusterPodScheduling resourceScheduling = resourceSpecPod.getScheduling();
if (podScheduling != null) {
assertNotNull(resourceScheduling);
assertEquals(podScheduling.getNodeSelector(), resourceScheduling.getNodeSelector());
assertEquals(podScheduling.getNodeAffinity(), resourceScheduling.getNodeAffinity());
} else {
assertNull(resourceScheduling);
}
}
final ClusterInitData dtoInitData = dtoSpec.getInitData();
final StackGresClusterInitData resourceInitData = resourceSpec.getInitData();
if (dtoInitData != null) {
assertNotNull(resourceInitData);
final ClusterRestore dtoRestore = dtoInitData.getRestore();
final StackGresClusterRestore resourceRestore = resourceInitData.getRestore();
if (dtoRestore != null) {
assertNotNull(resourceRestore);
assertEquals(dtoRestore.getFromBackup().getUid(), resourceRestore.getFromBackup().getUid());
} else {
assertNull(resourceRestore);
}
if (dtoInitData.getScripts() != null) {
assertNotNull(resourceInitData.getScripts());
assertEquals(dtoInitData.getScripts().size(), resourceInitData.getScripts().size());
Seq.zip(dtoInitData.getScripts(), resourceInitData.getScripts()).forEach(entryTuple -> {
ClusterScriptEntry dtoEntry = entryTuple.v1;
StackGresClusterScriptEntry resourceEntry = entryTuple.v2;
assertEquals(dtoEntry.getDatabase(), resourceEntry.getDatabase());
assertEquals(dtoEntry.getName(), resourceEntry.getName());
assertEquals(dtoEntry.getScript(), resourceEntry.getScript());
final ClusterScriptFrom dtoScriptFrom = dtoEntry.getScriptFrom();
final StackGresClusterScriptFrom resourceScriptFrom = resourceEntry.getScriptFrom();
if (dtoScriptFrom != null) {
assertNotNull(resourceScriptFrom);
final SecretKeySelector dtoSecretKeyRef = dtoScriptFrom.getSecretKeyRef();
final SecretKeySelector resourceSecretKeyRef = resourceScriptFrom.getSecretKeyRef();
if (dtoSecretKeyRef != null) {
assertNotNull(resourceSecretKeyRef);
assertEquals(dtoSecretKeyRef.getName(), resourceSecretKeyRef.getName());
assertEquals(dtoSecretKeyRef.getKey(), resourceSecretKeyRef.getKey());
} else {
assertNull(resourceSecretKeyRef);
}
final ConfigMapKeySelector resourceConfigMapKeyRef = resourceScriptFrom.getConfigMapKeyRef();
final ConfigMapKeySelector dtoConfigMapKeyRef = dtoScriptFrom.getConfigMapKeyRef();
if (dtoConfigMapKeyRef != null) {
assertNotNull(resourceConfigMapKeyRef);
assertEquals(dtoConfigMapKeyRef.getName(), resourceConfigMapKeyRef.getName());
assertEquals(dtoConfigMapKeyRef.getKey(), resourceConfigMapKeyRef.getKey());
} else {
assertNull(resourceConfigMapKeyRef);
}
} else {
assertNull(resourceScriptFrom);
}
});
}
} else {
assertNull(resourceInitData);
}
if (dtoSpec.getDistributedLogs() != null) {
assertNotNull(resourceSpec.getDistributedLogs());
assertEquals(dtoSpec.getDistributedLogs().getDistributedLogs(), resourceSpec.getDistributedLogs().getDistributedLogs());
} else {
assertNull(resourceSpec.getDistributedLogs());
}
} else {
assertNull(resourceSpec);
}
}
Aggregations