Skip to content

Commit 924785b

Browse files
committed
Merge remote-tracking branch 'origin/domain-introspector' into owls69363-part2
2 parents 3fe07b6 + f7181af commit 924785b

35 files changed

+1170
-167
lines changed

integration-tests/src/test/java/oracle/kubernetes/operator/utils/Domain.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -315,19 +315,26 @@ public void callWebAppAndVerifyLoadBalancing(String webappName, boolean verifyLo
315315
if (loadBalancer.equals("APACHE")) {
316316
testAppUrl.append("weblogic/");
317317
}
318-
testAppUrl.append(webappName).append("/"); // curl cmd to call webapp
319-
StringBuffer curlCmd = new StringBuffer("curl --silent --show-error --noproxy ");
318+
testAppUrl.append(webappName).append("/");
319+
// curl cmd to call webapp
320+
StringBuffer curlCmd = new StringBuffer("curl --silent ");
320321
curlCmd
321-
.append(TestUtils.getHostName())
322-
.append(" ")
323-
.append(testAppUrl.toString()); // curl cmd to get response code
322+
.append(" -H 'host: ")
323+
.append(domainUid)
324+
.append(".org' ")
325+
.append(testAppUrl.toString());
326+
327+
// curl cmd to get response code
324328
StringBuffer curlCmdResCode = new StringBuffer(curlCmd.toString());
325-
curlCmdResCode.append(
326-
" --write-out %{http_code} -o /dev/null"); // call webapp iteratively till its
327-
// deployed/ready
328-
callWebAppAndWaitTillReady(
329-
curlCmdResCode
330-
.toString()); // execute curl and look for the managed server name in response
329+
curlCmdResCode.append(" --write-out %{http_code} -o /dev/null");
330+
331+
logger.info("Curd cmd with response code " + curlCmdResCode);
332+
logger.info("Curd cmd " + curlCmd);
333+
334+
// call webapp iteratively till its deployed/ready
335+
callWebAppAndWaitTillReady(curlCmdResCode.toString());
336+
337+
// execute curl and look for the managed server name in response
331338
callWebAppAndCheckForServerNameInResponse(curlCmd.toString(), verifyLoadBalance);
332339
// logger.info("curlCmd "+curlCmd);
333340
}

integration-tests/src/test/java/oracle/kubernetes/operator/utils/TestUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ public static String getHostName() throws Exception {
113113
if (System.getenv("K8S_NODEPORT_HOST") != null) {
114114
return System.getenv("K8S_NODEPORT_HOST");
115115
} else {
116-
ExecResult result = ExecCommand.exec("hostname | awk -F. '{print $1}'");
116+
// ExecResult result = ExecCommand.exec("hostname | awk -F. '{print $1}'");
117+
ExecResult result = ExecCommand.exec("hostname");
117118
return result.stdout().trim();
118119
}
119120
}

model/src/main/java/oracle/kubernetes/weblogic/domain/ClusterConfigurator.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
package oracle.kubernetes.weblogic.domain;
66

7+
import io.kubernetes.client.models.V1PodSecurityContext;
8+
import io.kubernetes.client.models.V1SecurityContext;
9+
710
/** An interface for an object to configure a cluster in a test. */
811
@SuppressWarnings("UnusedReturnValue")
912
public interface ClusterConfigurator {
@@ -23,6 +26,16 @@ ClusterConfigurator withReadinessProbeSettings(
2326
ClusterConfigurator withLivenessProbeSettings(
2427
Integer initialDelay, Integer timeout, Integer period);
2528

29+
ClusterConfigurator withNodeSelector(String labelKey, String labelValue);
30+
31+
ClusterConfigurator withRequestRequirement(String resource, String quantity);
32+
33+
ClusterConfigurator withLimitRequirement(String resource, String quantity);
34+
35+
ClusterConfigurator withContainerSecurityContext(V1SecurityContext containerSecurityContext);
36+
37+
ClusterConfigurator withPodSecurityContext(V1PodSecurityContext podSecurityContext);
38+
2639
ClusterConfigurator withAdditionalVolume(String name, String path);
2740

2841
ClusterConfigurator withAdditionalVolumeMount(String name, String path);

model/src/main/java/oracle/kubernetes/weblogic/domain/DomainConfigurator.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import io.kubernetes.client.models.V1LocalObjectReference;
88
import io.kubernetes.client.models.V1ObjectMeta;
9+
import io.kubernetes.client.models.V1PodSecurityContext;
10+
import io.kubernetes.client.models.V1SecurityContext;
911
import java.util.Arrays;
1012
import javax.annotation.Nonnull;
1113
import oracle.kubernetes.weblogic.domain.v2.Domain;
@@ -247,4 +249,59 @@ protected String getAsName() {
247249
public abstract ClusterConfigurator configureCluster(@Nonnull String clusterName);
248250

249251
public abstract void setShuttingDown(boolean start);
252+
253+
/**
254+
* Add a node label to the Domain's node selector
255+
*
256+
* @param labelKey the pod label key
257+
* @param labelValue the pod label value
258+
* @return this object
259+
*/
260+
public abstract DomainConfigurator withNodeSelector(String labelKey, String labelValue);
261+
262+
/**
263+
* Add a resource requirement at domain level. The requests for memory are measured in bytes. You
264+
* can express memory as a plain integer or as a fixed-point integer using one of these suffixes:
265+
* E, P, T, G, M, K. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. The
266+
* requests for cpu are mesured in cpu units and can be expressed in millicores i.e. 100m is the
267+
* same as 0.1
268+
*
269+
* @param resource the resource to be added as requirement cpu or memory
270+
* @param quantity the quantity required for the resource
271+
* @return this object
272+
*/
273+
public abstract DomainConfigurator withRequestRequirement(String resource, String quantity);
274+
275+
/**
276+
* Add a resource limit at domain level, the requests for memory are measured in bytes. You can
277+
* express memory as a plain integer or as a fixed-point integer using one of these suffixes: E,
278+
* P, T, G, M, K. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. The
279+
* requests for cpu are mesured in cpu units and can be expressed in millicores i.e. 100m is the
280+
* same as 0.1
281+
*
282+
* @param resource the resource to be added as requirement cpu or memory
283+
* @param quantity the quantity required for the resource
284+
* @return this object
285+
*/
286+
public abstract DomainConfigurator withLimitRequirement(String resource, String quantity);
287+
288+
/**
289+
* Add security constraints at container level, if the same constraint is also defined at pod
290+
* level then container constraint take precedence
291+
*
292+
* @param containerSecurityContext the security context object
293+
* @return this object
294+
*/
295+
public abstract DomainConfigurator withContainerSecurityContext(
296+
V1SecurityContext containerSecurityContext);
297+
298+
/**
299+
* Add security constraints at container level, if the same constraint is also defined at pod
300+
* level then container constraint take precedence
301+
*
302+
* @param podSecurityContext
303+
* @return this object
304+
*/
305+
public abstract DomainConfigurator withPodSecurityContext(
306+
V1PodSecurityContext podSecurityContext);
250307
}

model/src/main/java/oracle/kubernetes/weblogic/domain/ServerConfigurator.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
package oracle.kubernetes.weblogic.domain;
66

7+
import io.kubernetes.client.models.V1PodSecurityContext;
8+
import io.kubernetes.client.models.V1SecurityContext;
9+
710
/** An interface for an object to configure a server in a test. */
811
@SuppressWarnings("UnusedReturnValue")
912
public interface ServerConfigurator {
@@ -21,6 +24,16 @@ ServerConfigurator withLivenessProbeSettings(
2124
ServerConfigurator withReadinessProbeSettings(
2225
Integer initialDelay, Integer timeout, Integer period);
2326

27+
ServerConfigurator withNodeSelector(String labelKey, String labelValue);
28+
29+
ServerConfigurator withRequestRequirement(String resource, String quantity);
30+
31+
ServerConfigurator withLimitRequirement(String resource, String quantity);
32+
33+
ServerConfigurator withContainerSecurityContext(V1SecurityContext containerSecurityContext);
34+
35+
ServerConfigurator withPodSecurityContext(V1PodSecurityContext podSecurityContext);
36+
2437
ServerConfigurator withAdditionalVolume(String name, String path);
2538

2639
ServerConfigurator withAdditionalVolumeMount(String name, String path);

model/src/main/java/oracle/kubernetes/weblogic/domain/v2/BaseConfiguration.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
import com.google.gson.annotations.Expose;
88
import com.google.gson.annotations.SerializedName;
99
import io.kubernetes.client.models.V1EnvVar;
10+
import io.kubernetes.client.models.V1PodSecurityContext;
11+
import io.kubernetes.client.models.V1ResourceRequirements;
12+
import io.kubernetes.client.models.V1SecurityContext;
1013
import io.kubernetes.client.models.V1Volume;
1114
import io.kubernetes.client.models.V1VolumeMount;
1215
import java.util.List;
16+
import java.util.Map;
1317
import java.util.Objects;
1418
import javax.annotation.Nullable;
1519
import oracle.kubernetes.json.Description;
@@ -122,6 +126,42 @@ ProbeTuning getReadinessProbe() {
122126
return serverPod.getReadinessProbeTuning();
123127
}
124128

129+
void addNodeSelector(String labelKey, String labelValue) {
130+
serverPod.addNodeSelector(labelKey, labelValue);
131+
}
132+
133+
Map<String, String> getNodeSelector() {
134+
return serverPod.getNodeSelector();
135+
}
136+
137+
public V1ResourceRequirements getResources() {
138+
return serverPod.getResourceRequirements();
139+
}
140+
141+
void addRequestRequirement(String resource, String quantity) {
142+
serverPod.addRequestRequirement(resource, quantity);
143+
}
144+
145+
void addLimitRequirement(String resource, String quantity) {
146+
serverPod.addLimitRequirement(resource, quantity);
147+
}
148+
149+
public V1PodSecurityContext getPodSecurityContext() {
150+
return serverPod.getPodSecurityContext();
151+
}
152+
153+
public V1SecurityContext getContainerSecurityContext() {
154+
return serverPod.getContainerSecurityContext();
155+
}
156+
157+
public void setPodSecurityContext(V1PodSecurityContext podSecurityContext) {
158+
serverPod.setPodSecurityContext(podSecurityContext);
159+
}
160+
161+
public void setContainerSecurityContext(V1SecurityContext containerSecurityContext) {
162+
serverPod.setContainerSecurityContext(containerSecurityContext);
163+
}
164+
125165
public List<V1Volume> getAdditionalVolumes() {
126166
return serverPod.getAdditionalVolumes();
127167
}

model/src/main/java/oracle/kubernetes/weblogic/domain/v2/DomainV2Configurator.java

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import static oracle.kubernetes.weblogic.domain.v2.ConfigurationConstants.START_ALWAYS;
1010
import static oracle.kubernetes.weblogic.domain.v2.ConfigurationConstants.START_NEVER;
1111

12+
import io.kubernetes.client.models.V1PodSecurityContext;
13+
import io.kubernetes.client.models.V1SecurityContext;
1214
import java.util.Arrays;
1315
import javax.annotation.Nonnull;
1416
import oracle.kubernetes.operator.KubernetesConstants;
@@ -161,6 +163,37 @@ private Server createManagedServer(String serverName) {
161163
return server;
162164
}
163165

166+
@Override
167+
public DomainConfigurator withNodeSelector(String labelKey, String labelValue) {
168+
((BaseConfiguration) getDomainSpec()).addNodeSelector(labelKey, labelValue);
169+
return this;
170+
}
171+
172+
@Override
173+
public DomainConfigurator withRequestRequirement(String resource, String quantity) {
174+
((BaseConfiguration) getDomainSpec()).addRequestRequirement(resource, quantity);
175+
return this;
176+
}
177+
178+
@Override
179+
public DomainConfigurator withLimitRequirement(String resource, String quantity) {
180+
((BaseConfiguration) getDomainSpec()).addLimitRequirement(resource, quantity);
181+
return this;
182+
}
183+
184+
@Override
185+
public DomainConfigurator withContainerSecurityContext(
186+
V1SecurityContext containerSecurityContext) {
187+
((BaseConfiguration) getDomainSpec()).setContainerSecurityContext(containerSecurityContext);
188+
return this;
189+
}
190+
191+
@Override
192+
public DomainConfigurator withPodSecurityContext(V1PodSecurityContext podSecurityContext) {
193+
((BaseConfiguration) getDomainSpec()).setPodSecurityContext(podSecurityContext);
194+
return this;
195+
}
196+
164197
class ServerConfiguratorImpl implements ServerConfigurator {
165198
private Server server;
166199

@@ -205,6 +238,37 @@ public ServerConfigurator withReadinessProbeSettings(
205238
return this;
206239
}
207240

241+
@Override
242+
public ServerConfigurator withRequestRequirement(String resource, String quantity) {
243+
server.addRequestRequirement(resource, quantity);
244+
return this;
245+
}
246+
247+
@Override
248+
public ServerConfigurator withNodeSelector(String labelKey, String labelValue) {
249+
server.addNodeSelector(labelKey, labelValue);
250+
return this;
251+
}
252+
253+
@Override
254+
public ServerConfigurator withLimitRequirement(String resource, String quantity) {
255+
server.addLimitRequirement(resource, quantity);
256+
return this;
257+
}
258+
259+
@Override
260+
public ServerConfigurator withContainerSecurityContext(
261+
V1SecurityContext containerSecurityContext) {
262+
server.setContainerSecurityContext(containerSecurityContext);
263+
return this;
264+
}
265+
266+
@Override
267+
public ServerConfigurator withPodSecurityContext(V1PodSecurityContext podSecurityContext) {
268+
server.setPodSecurityContext(podSecurityContext);
269+
return this;
270+
}
271+
208272
@Override
209273
public ServerConfigurator withAdditionalVolume(String name, String path) {
210274
server.addAdditionalVolume(name, path);
@@ -294,6 +358,37 @@ public ClusterConfigurator withLivenessProbeSettings(
294358
return this;
295359
}
296360

361+
@Override
362+
public ClusterConfigurator withNodeSelector(String labelKey, String labelValue) {
363+
cluster.addNodeSelector(labelKey, labelValue);
364+
return this;
365+
}
366+
367+
@Override
368+
public ClusterConfigurator withRequestRequirement(String resource, String quantity) {
369+
cluster.addRequestRequirement(resource, quantity);
370+
return this;
371+
}
372+
373+
@Override
374+
public ClusterConfigurator withLimitRequirement(String resource, String quantity) {
375+
cluster.addLimitRequirement(resource, quantity);
376+
return this;
377+
}
378+
379+
@Override
380+
public ClusterConfigurator withContainerSecurityContext(
381+
V1SecurityContext containerSecurityContext) {
382+
cluster.setContainerSecurityContext(containerSecurityContext);
383+
return this;
384+
}
385+
386+
@Override
387+
public ClusterConfigurator withPodSecurityContext(V1PodSecurityContext podSecurityContext) {
388+
cluster.setPodSecurityContext(podSecurityContext);
389+
return this;
390+
}
391+
297392
@Override
298393
public ClusterConfigurator withAdditionalVolume(String name, String path) {
299394
cluster.addAdditionalVolume(name, path);

0 commit comments

Comments
 (0)