Skip to content

Commit 9a16216

Browse files
committed
Move env, livenessProbe and readinessProbe under serverPod
1 parent d51b391 commit 9a16216

File tree

5 files changed

+236
-107
lines changed

5 files changed

+236
-107
lines changed

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

Lines changed: 14 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,13 @@
44

55
package oracle.kubernetes.weblogic.domain.v2;
66

7-
import static java.util.Collections.emptyList;
8-
97
import com.google.gson.annotations.Expose;
108
import com.google.gson.annotations.SerializedName;
119
import io.kubernetes.client.models.V1EnvVar;
1210
import io.kubernetes.client.models.V1Probe;
13-
import java.util.ArrayList;
1411
import java.util.List;
1512
import java.util.Objects;
16-
import java.util.Optional;
1713
import javax.annotation.Nullable;
18-
import javax.validation.Valid;
1914
import oracle.kubernetes.json.Description;
2015
import org.apache.commons.lang3.builder.EqualsBuilder;
2116
import org.apache.commons.lang3.builder.HashCodeBuilder;
@@ -29,16 +24,8 @@
2924
*/
3025
public abstract class BaseConfiguration {
3126

32-
/**
33-
* Environment variables to pass while starting a server.
34-
*
35-
* @since 2.0
36-
*/
37-
@SerializedName("env")
38-
@Expose
39-
@Valid
40-
@Description("A list of environment variables to add to a server")
41-
private List<V1EnvVar> env = new ArrayList<>();
27+
@Description("Configuration affecting the server pod")
28+
private ServerPod serverPod = new ServerPod();
4229

4330
/** Desired startup state. Legal values are RUNNING or ADMIN. */
4431
@SerializedName("serverStartState")
@@ -61,28 +48,6 @@ public abstract class BaseConfiguration {
6148
+ "Legal values are NEVER, ALWAYS, or IF_NEEDED.")
6249
private String serverStartPolicy;
6350

64-
/**
65-
* Defines the settings for the liveness probe. Any that are not specified will default to the
66-
* runtime liveness probe tuning settings.
67-
*
68-
* @since 2.0
69-
*/
70-
@SerializedName("livenessProbe")
71-
@Expose
72-
@Description("Settings for the liveness probe associated with a server")
73-
private V1Probe livenessProbe = new V1Probe();
74-
75-
/**
76-
* Defines the settings for the readiness probe. Any that are not specified will default to the
77-
* runtime readiness probe tuning settings.
78-
*
79-
* @since 2.0
80-
*/
81-
@SerializedName("readinessProbe")
82-
@Expose
83-
@Description("Settings for the readiness probe associated with a server")
84-
private V1Probe readinessProbe = new V1Probe();
85-
8651
/**
8752
* Fills in any undefined settings in this configuration from another configuration.
8853
*
@@ -94,9 +59,7 @@ void fillInFrom(BaseConfiguration other) {
9459
if (serverStartState == null) serverStartState = other.getServerStartState();
9560
if (overrideStartPolicyFrom(other)) serverStartPolicy = other.getServerStartPolicy();
9661

97-
for (V1EnvVar var : getV1EnvVars(other)) addIfMissing(var);
98-
copyValues(livenessProbe, other.livenessProbe);
99-
copyValues(readinessProbe, other.readinessProbe);
62+
serverPod.fillInFrom(other.serverPod);
10063
}
10164

10265
private boolean overrideStartPolicyFrom(BaseConfiguration other) {
@@ -112,37 +75,13 @@ private boolean isStartNever() {
11275
return Objects.equals(getServerStartPolicy(), ConfigurationConstants.START_NEVER);
11376
}
11477

115-
private List<V1EnvVar> getV1EnvVars(BaseConfiguration configuration) {
116-
return Optional.ofNullable(configuration.getEnv()).orElse(emptyList());
117-
}
118-
119-
private void addIfMissing(V1EnvVar var) {
120-
if (!hasEnvVar(var.getName())) addEnvVar(var);
121-
}
122-
123-
private boolean hasEnvVar(String name) {
124-
if (env == null) return false;
125-
for (V1EnvVar var : env) {
126-
if (var.getName().equals(name)) return true;
127-
}
128-
return false;
129-
}
130-
131-
private void copyValues(V1Probe toProbe, V1Probe fromProbe) {
132-
if (toProbe.getInitialDelaySeconds() == null)
133-
toProbe.setInitialDelaySeconds(fromProbe.getInitialDelaySeconds());
134-
if (toProbe.getTimeoutSeconds() == null)
135-
toProbe.setTimeoutSeconds(fromProbe.getTimeoutSeconds());
136-
if (toProbe.getPeriodSeconds() == null) toProbe.setPeriodSeconds(fromProbe.getPeriodSeconds());
137-
}
138-
13978
/**
14079
* Returns true if any version 2 configuration fields are specified.
14180
*
14281
* @return whether there is version 2 configuration field in this instance
14382
*/
14483
protected boolean hasV2Fields() {
145-
return serverStartState != null || serverStartPolicy != null || !env.isEmpty();
84+
return serverStartState != null || serverStartPolicy != null || serverPod.hasV2Fields();
14685
}
14786

14887
@Nullable
@@ -156,20 +95,15 @@ void setServerStartState(@Nullable String serverStartState) {
15695

15796
@Nullable
15897
public List<V1EnvVar> getEnv() {
159-
return env;
98+
return serverPod.getEnv();
16099
}
161100

162101
public void setEnv(@Nullable List<V1EnvVar> env) {
163-
this.env = env;
102+
serverPod.setEnv(env);
164103
}
165104

166105
void addEnvironmentVariable(String name, String value) {
167-
addEnvVar(new V1EnvVar().name(name).value(value));
168-
}
169-
170-
private void addEnvVar(V1EnvVar var) {
171-
if (env == null) setEnv(new ArrayList<>());
172-
env.add(var);
106+
serverPod.addEnvVar(new V1EnvVar().name(name).value(value));
173107
}
174108

175109
void setServerStartPolicy(String serverStartPolicy) {
@@ -181,33 +115,27 @@ protected String getServerStartPolicy() {
181115
}
182116

183117
void setLivenessProbe(Integer initialDelay, Integer timeout, Integer period) {
184-
livenessProbe.initialDelaySeconds(initialDelay).timeoutSeconds(timeout).periodSeconds(period);
118+
serverPod.setLivenessProbe(initialDelay, timeout, period);
185119
}
186120

187121
V1Probe getLivenessProbe() {
188-
return livenessProbe;
122+
return serverPod.getLivenessProbe();
189123
}
190124

191125
void setReadinessProbe(Integer initialDelay, Integer timeout, Integer period) {
192-
readinessProbe.initialDelaySeconds(initialDelay).timeoutSeconds(timeout).periodSeconds(period);
126+
serverPod.setReadinessProbe(initialDelay, timeout, period);
193127
}
194128

195129
V1Probe getReadinessProbe() {
196-
return readinessProbe;
130+
return serverPod.getReadinessProbe();
197131
}
198132

199133
@Override
200134
public String toString() {
201135
return new ToStringBuilder(this)
202136
.append("serverStartState", serverStartState)
203137
.append("serverStartPolicy", serverStartPolicy)
204-
.append("livenessProbe.initialDelaySeconds", livenessProbe.getInitialDelaySeconds())
205-
.append("livenessProbe.timeoutSeconds", livenessProbe.getTimeoutSeconds())
206-
.append("livenessProbe.periodSeconds", livenessProbe.getPeriodSeconds())
207-
.append("readinessProbeProbe.initialDelaySeconds", readinessProbe.getInitialDelaySeconds())
208-
.append("readinessProbe.timeoutSeconds", readinessProbe.getTimeoutSeconds())
209-
.append("readinessProbe.periodSeconds", readinessProbe.getPeriodSeconds())
210-
.append("env", env)
138+
.append("serverPod", serverPod)
211139
.toString();
212140
}
213141

@@ -220,22 +148,18 @@ public boolean equals(Object o) {
220148
BaseConfiguration that = (BaseConfiguration) o;
221149

222150
return new EqualsBuilder()
223-
.append(env, that.env)
151+
.append(serverPod, that.serverPod)
224152
.append(serverStartState, that.serverStartState)
225153
.append(serverStartPolicy, that.serverStartPolicy)
226-
.append(livenessProbe, that.livenessProbe)
227-
.append(readinessProbe, that.readinessProbe)
228154
.isEquals();
229155
}
230156

231157
@Override
232158
public int hashCode() {
233159
return new HashCodeBuilder(17, 37)
234-
.append(env)
160+
.append(serverPod)
235161
.append(serverStartState)
236162
.append(serverStartPolicy)
237-
.append(livenessProbe)
238-
.append(readinessProbe)
239163
.toHashCode();
240164
}
241165
}
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
// Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at
3+
// http://oss.oracle.com/licenses/upl.
4+
5+
package oracle.kubernetes.weblogic.domain.v2;
6+
7+
import static java.util.Collections.emptyList;
8+
9+
import com.google.gson.annotations.Expose;
10+
import com.google.gson.annotations.SerializedName;
11+
import io.kubernetes.client.models.V1EnvVar;
12+
import io.kubernetes.client.models.V1Probe;
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
import java.util.Optional;
16+
import javax.annotation.Nullable;
17+
import javax.validation.Valid;
18+
import oracle.kubernetes.json.Description;
19+
import org.apache.commons.lang3.builder.EqualsBuilder;
20+
import org.apache.commons.lang3.builder.HashCodeBuilder;
21+
import org.apache.commons.lang3.builder.ToStringBuilder;
22+
23+
class ServerPod {
24+
25+
/**
26+
* Environment variables to pass while starting a server.
27+
*
28+
* @since 2.0
29+
*/
30+
@SerializedName("env")
31+
@Expose
32+
@Valid
33+
@Description("A list of environment variables to add to a server")
34+
private List<V1EnvVar> env = new ArrayList<>();
35+
36+
/**
37+
* Defines the settings for the liveness probe. Any that are not specified will default to the
38+
* runtime liveness probe tuning settings.
39+
*
40+
* @since 2.0
41+
*/
42+
@SerializedName("livenessProbe")
43+
@Expose
44+
@Description("Settings for the liveness probe associated with a server")
45+
private V1Probe livenessProbe = new V1Probe();
46+
47+
/**
48+
* Defines the settings for the readiness probe. Any that are not specified will default to the
49+
* runtime readiness probe tuning settings.
50+
*
51+
* @since 2.0
52+
*/
53+
@SerializedName("readinessProbe")
54+
@Expose
55+
@Description("Settings for the readiness probe associated with a server")
56+
private V1Probe readinessProbe = new V1Probe();
57+
58+
V1Probe getReadinessProbe() {
59+
return this.readinessProbe;
60+
}
61+
62+
void setReadinessProbe(Integer initialDelay, Integer timeout, Integer period) {
63+
this.readinessProbe
64+
.initialDelaySeconds(initialDelay)
65+
.timeoutSeconds(timeout)
66+
.periodSeconds(period);
67+
}
68+
69+
boolean hasV2Fields() {
70+
return !this.env.isEmpty();
71+
}
72+
73+
void fillInFrom(ServerPod serverPod1) {
74+
for (V1EnvVar var : serverPod1.getV1EnvVars()) addIfMissing(var);
75+
copyValues(livenessProbe, serverPod1.livenessProbe);
76+
copyValues(readinessProbe, serverPod1.readinessProbe);
77+
}
78+
79+
private List<V1EnvVar> getV1EnvVars() {
80+
return Optional.ofNullable(getEnv()).orElse(emptyList());
81+
}
82+
83+
private void addIfMissing(V1EnvVar var) {
84+
if (!hasEnvVar(var.getName())) addEnvVar(var);
85+
}
86+
87+
private boolean hasEnvVar(String name) {
88+
if (env == null) return false;
89+
for (V1EnvVar var : env) {
90+
if (var.getName().equals(name)) return true;
91+
}
92+
return false;
93+
}
94+
95+
private static void copyValues(V1Probe toProbe, V1Probe fromProbe) {
96+
if (toProbe.getInitialDelaySeconds() == null)
97+
toProbe.setInitialDelaySeconds(fromProbe.getInitialDelaySeconds());
98+
if (toProbe.getTimeoutSeconds() == null)
99+
toProbe.setTimeoutSeconds(fromProbe.getTimeoutSeconds());
100+
if (toProbe.getPeriodSeconds() == null) toProbe.setPeriodSeconds(fromProbe.getPeriodSeconds());
101+
}
102+
103+
List<V1EnvVar> getEnv() {
104+
return this.env;
105+
}
106+
107+
void addEnvVar(V1EnvVar var) {
108+
if (this.env == null) setEnv(new ArrayList<>());
109+
this.env.add(var);
110+
}
111+
112+
void setEnv(@Nullable List<V1EnvVar> env) {
113+
this.env = env;
114+
}
115+
116+
V1Probe getLivenessProbe() {
117+
return this.livenessProbe;
118+
}
119+
120+
void setLivenessProbe(Integer initialDelay, Integer timeout, Integer period) {
121+
this.livenessProbe
122+
.initialDelaySeconds(initialDelay)
123+
.timeoutSeconds(timeout)
124+
.periodSeconds(period);
125+
}
126+
127+
@Override
128+
public String toString() {
129+
return new ToStringBuilder(this)
130+
.append("env", env)
131+
.append("livenessProbe.initialDelaySeconds", livenessProbe.getInitialDelaySeconds())
132+
.append("livenessProbe.timeoutSeconds", livenessProbe.getTimeoutSeconds())
133+
.append("livenessProbe.periodSeconds", livenessProbe.getPeriodSeconds())
134+
.append("readinessProbeProbe.initialDelaySeconds", readinessProbe.getInitialDelaySeconds())
135+
.append("readinessProbe.timeoutSeconds", readinessProbe.getTimeoutSeconds())
136+
.append("readinessProbe.periodSeconds", readinessProbe.getPeriodSeconds())
137+
.toString();
138+
}
139+
140+
@Override
141+
public boolean equals(Object o) {
142+
if (this == o) return true;
143+
144+
if (o == null || getClass() != o.getClass()) return false;
145+
146+
ServerPod that = (ServerPod) o;
147+
148+
return new EqualsBuilder()
149+
.append(env, that.env)
150+
.append(livenessProbe, that.livenessProbe)
151+
.append(readinessProbe, that.readinessProbe)
152+
.isEquals();
153+
}
154+
155+
@Override
156+
public int hashCode() {
157+
return new HashCodeBuilder(17, 37)
158+
.append(env)
159+
.append(livenessProbe)
160+
.append(readinessProbe)
161+
.toHashCode();
162+
}
163+
}

model/src/test/java/oracle/kubernetes/weblogic/domain/v2/DomainV2Test.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,26 @@ public void whenDomain2ReadFromYaml_hostPathStorageDefinesRequiredPV() throws IO
605605
assertThat(pv, hasJsonPath("$.spec.hostPath.path", equalTo("/other/path")));
606606
}
607607

608+
@Test
609+
public void whenDomain2ReadFromYaml_serverConfiguresReadinessProbe() throws IOException {
610+
Domain domain = readDomain(DOMAIN_V2_SAMPLE_YAML_2);
611+
ServerSpec serverSpec = domain.getServer("server2", "cluster1");
612+
613+
assertThat(serverSpec.getReadinessProbe().getInitialDelaySeconds(), equalTo(10));
614+
assertThat(serverSpec.getReadinessProbe().getTimeoutSeconds(), equalTo(15));
615+
assertThat(serverSpec.getReadinessProbe().getPeriodSeconds(), equalTo(20));
616+
}
617+
618+
@Test
619+
public void whenDomain2ReadFromYaml_serverConfiguresLivenessProbe() throws IOException {
620+
Domain domain = readDomain(DOMAIN_V2_SAMPLE_YAML_2);
621+
ServerSpec serverSpec = domain.getServer("server2", "cluster1");
622+
623+
assertThat(serverSpec.getLivenessProbe().getInitialDelaySeconds(), equalTo(20));
624+
assertThat(serverSpec.getLivenessProbe().getTimeoutSeconds(), equalTo(5));
625+
assertThat(serverSpec.getLivenessProbe().getPeriodSeconds(), equalTo(18));
626+
}
627+
608628
@Test
609629
public void whenDomain3ReadFromYaml_PredefinedStorageDefinesClaimName() throws IOException {
610630
Domain domain = readDomain(DOMAIN_V2_SAMPLE_YAML_3);

0 commit comments

Comments
 (0)