Skip to content

Commit c4643b6

Browse files
teoincontattolgarciaog
authored andcommitted
feat: removed secret and configmap checks for sgobjectstorages and sgscripts
1 parent 2e5b2e9 commit c4643b6

16 files changed

Lines changed: 16 additions & 1306 deletions

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/validation/objectstorage/ObjectStorageReferencesValidator.java

Lines changed: 0 additions & 146 deletions
This file was deleted.

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/validation/script/ScriptsConfigValidator.java

Lines changed: 1 addition & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,15 @@
66
package io.stackgres.operator.validation.script;
77

88
import java.util.List;
9-
import java.util.Map;
10-
import java.util.Objects;
119
import java.util.Optional;
12-
import java.util.Set;
1310
import java.util.stream.Collectors;
1411

15-
import com.google.common.collect.ImmutableSet;
16-
import io.fabric8.kubernetes.api.model.ConfigMap;
17-
import io.fabric8.kubernetes.api.model.ConfigMapKeySelector;
18-
import io.fabric8.kubernetes.api.model.Secret;
19-
import io.fabric8.kubernetes.api.model.SecretKeySelector;
2012
import io.stackgres.common.ErrorType;
2113
import io.stackgres.common.crd.sgscript.StackGresScript;
2214
import io.stackgres.common.crd.sgscript.StackGresScriptEntry;
2315
import io.stackgres.common.crd.sgscript.StackGresScriptEntryStatus;
24-
import io.stackgres.common.crd.sgscript.StackGresScriptFrom;
2516
import io.stackgres.common.crd.sgscript.StackGresScriptSpec;
2617
import io.stackgres.common.crd.sgscript.StackGresScriptStatus;
27-
import io.stackgres.common.resource.ResourceFinder;
2818
import io.stackgres.operator.common.StackGresScriptReview;
2919
import io.stackgres.operator.validation.ValidationType;
3020
import io.stackgres.operatorframework.admissionwebhook.Operation;
@@ -39,19 +29,8 @@ public class ScriptsConfigValidator implements ScriptValidator {
3929
private final String constraintViolationUri = ErrorType
4030
.getErrorTypeUri(ErrorType.CONSTRAINT_VIOLATION);
4131

42-
private final String invalidReference = ErrorType
43-
.getErrorTypeUri(ErrorType.INVALID_CR_REFERENCE);
44-
45-
private final ResourceFinder<Secret> secretFinder;
46-
47-
private final ResourceFinder<ConfigMap> configMapFinder;
48-
4932
@Inject
50-
public ScriptsConfigValidator(
51-
ResourceFinder<Secret> secretFinder,
52-
ResourceFinder<ConfigMap> configMapFinder) {
53-
this.secretFinder = secretFinder;
54-
this.configMapFinder = configMapFinder;
33+
public ScriptsConfigValidator() {
5534
}
5635

5736
@Override
@@ -68,8 +47,6 @@ public void validate(StackGresScriptReview review) throws ValidationFailed {
6847
.orElse(List.of());
6948
checkIdsUniqueness(scripts);
7049
checkStatusIdsCorrelation(scripts, scriptsStatuses);
71-
checkSecretKeySelectors(review, scripts);
72-
checkConfigMapsSelectors(review, scripts);
7350
}
7451
}
7552

@@ -103,72 +80,4 @@ private void checkStatusIdsCorrelation(List<StackGresScriptEntry> scripts,
10380
}
10481
}
10582

106-
private void checkConfigMapsSelectors(StackGresScriptReview review,
107-
List<StackGresScriptEntry> scripts)
108-
throws ValidationFailed {
109-
String clusterNamespace = review.getRequest().getObject().getMetadata().getNamespace();
110-
111-
List<ConfigMapKeySelector> configMapsSelectors = scripts.stream()
112-
.map(StackGresScriptEntry::getScriptFrom)
113-
.filter(Objects::nonNull)
114-
.<ConfigMapKeySelector>map(StackGresScriptFrom::getConfigMapKeyRef)
115-
.filter(Objects::nonNull)
116-
.toList();
117-
118-
for (ConfigMapKeySelector configMapRef : configMapsSelectors) {
119-
Optional<ConfigMap> scriptConfigMap = configMapFinder
120-
.findByNameAndNamespace(configMapRef.getName(), clusterNamespace);
121-
122-
if (scriptConfigMap.isEmpty()) {
123-
fail(invalidReference,
124-
"Referenced ConfigMap " + configMapRef.getName()
125-
+ " does not exists in namespace " + clusterNamespace);
126-
} else {
127-
Set<String> configMapKeys = ImmutableSet.<String>builder()
128-
.addAll(Optional.ofNullable(scriptConfigMap.get().getData())
129-
.map(Map::keySet)
130-
.orElse(Set.of()))
131-
.addAll(Optional.ofNullable(scriptConfigMap.get().getBinaryData())
132-
.map(Map::keySet)
133-
.orElse(Set.of()))
134-
.build();
135-
136-
if (!configMapKeys.contains(configMapRef.getKey())) {
137-
fail(invalidReference, "Key " + configMapRef.getKey()
138-
+ " does not exists in ConfigMap " + configMapRef.getName());
139-
}
140-
}
141-
142-
}
143-
144-
}
145-
146-
private void checkSecretKeySelectors(StackGresScriptReview review,
147-
List<StackGresScriptEntry> scripts)
148-
throws ValidationFailed {
149-
String clusterNamespace = review.getRequest().getObject().getMetadata().getNamespace();
150-
151-
List<SecretKeySelector> secretKeySelectors = scripts.stream()
152-
.map(StackGresScriptEntry::getScriptFrom)
153-
.filter(Objects::nonNull)
154-
.<SecretKeySelector>map(StackGresScriptFrom::getSecretKeyRef)
155-
.filter(Objects::nonNull)
156-
.toList();
157-
158-
for (SecretKeySelector secretRef : secretKeySelectors) {
159-
Optional<Secret> scriptSecret = secretFinder
160-
.findByNameAndNamespace(secretRef.getName(), clusterNamespace);
161-
162-
if (scriptSecret.isEmpty()) {
163-
fail(invalidReference,
164-
"Referenced Secret " + secretRef.getName()
165-
+ " does not exists in namespace " + clusterNamespace);
166-
} else if (!scriptSecret.get().getData().containsKey(secretRef.getKey())) {
167-
fail(invalidReference,
168-
"Key " + secretRef.getKey()
169-
+ " does not exists in Secret " + secretRef.getName());
170-
}
171-
}
172-
}
173-
17483
}

stackgres-k8s/src/operator/src/test/java/io/stackgres/operator/validation/ObjectStorageValidationResourceTest.java

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,24 @@
88
import static io.restassured.RestAssured.given;
99
import static org.hamcrest.Matchers.is;
1010

11-
import java.util.Arrays;
12-
import java.util.Map;
13-
14-
import io.fabric8.kubernetes.api.model.SecretBuilder;
15-
import io.fabric8.kubernetes.api.model.SecretKeySelector;
1611
import io.quarkus.test.junit.QuarkusTest;
1712
import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
1813
import io.restassured.http.ContentType;
1914
import io.stackgres.common.crd.storages.AwsS3Storage;
20-
import io.stackgres.common.crd.storages.AwsSecretKeySelector;
21-
import io.stackgres.common.resource.SecretWriter;
2215
import io.stackgres.operator.common.StackGresObjectStorageReview;
2316
import io.stackgres.operator.common.fixture.AdmissionReviewFixtures;
2417
import io.stackgres.testutil.RandomObjectUtils;
25-
import io.stackgres.testutil.StringUtils;
26-
import jakarta.inject.Inject;
2718
import org.junit.jupiter.api.DisplayName;
2819
import org.junit.jupiter.api.Test;
2920

3021
@QuarkusTest
3122
@WithKubernetesTestServer
3223
class ObjectStorageValidationResourceTest {
3324

34-
@Inject
35-
SecretWriter writer;
36-
3725
@Test
3826
@DisplayName("Given a valid creation review should pass")
3927
void testValidCreate() {
4028
var review = getValidReview();
41-
createMandatorySecrets(review);
4229

4330
given()
4431
.body(review)
@@ -50,20 +37,6 @@ void testValidCreate() {
5037

5138
}
5239

53-
@Test
54-
@DisplayName("Given a valid creation review should fail")
55-
void testInvalidCreated() {
56-
var review = getValidReview();
57-
58-
given()
59-
.body(review)
60-
.contentType(ContentType.JSON)
61-
.post(ValidationUtil.OBJECT_STORAGE_VALIDATION_PATH)
62-
.then()
63-
.statusCode(200)
64-
.body("response.allowed", is(false));
65-
}
66-
6740
private StackGresObjectStorageReview getValidReview() {
6841
StackGresObjectStorageReview review = AdmissionReviewFixtures.objectStorage().loadCreate().get();
6942
var objectStorage = review.getRequest().getObject();
@@ -79,37 +52,4 @@ private StackGresObjectStorageReview getValidReview() {
7952
return review;
8053
}
8154

82-
private void createMandatorySecrets(StackGresObjectStorageReview review) {
83-
var objectStorage = review.getRequest().getObject();
84-
final AwsSecretKeySelector secretKeySelectors = objectStorage.getSpec().getS3()
85-
.getAwsCredentials().getSecretKeySelectors();
86-
var accessKeyId = secretKeySelectors.getAccessKeyId();
87-
var secretAccessKey = secretKeySelectors.getSecretAccessKey();
88-
89-
createSecrets(
90-
objectStorage.getMetadata().getNamespace(),
91-
accessKeyId, secretAccessKey
92-
);
93-
94-
}
95-
96-
private void createSecrets(String namespace, SecretKeySelector... selectors) {
97-
98-
Arrays.stream(selectors).forEach(selector -> {
99-
writer.create(
100-
new SecretBuilder()
101-
.withNewMetadata()
102-
.withNamespace(namespace)
103-
.withName(selector.getName())
104-
.endMetadata()
105-
.withData(
106-
Map.of(
107-
selector.getKey(), StringUtils.getRandomString()
108-
)
109-
)
110-
.build());
111-
});
112-
113-
}
114-
11555
}

0 commit comments

Comments
 (0)