Skip to content

Commit b2102ef

Browse files
authored
Merge pull request #411 from oracle/name_validation_only
OWLS-67274 (v1.1) - add validation for legal DNS names
2 parents 402ffb4 + 8cda738 commit b2102ef

File tree

5 files changed

+88
-10
lines changed

5 files changed

+88
-10
lines changed

kubernetes/create-weblogic-domain-inputs.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ version: create-weblogic-domain-inputs-v1
88
adminPort: 7001
99

1010
# Name of the Admin Server
11+
# This name must not contain an underscope ("_"), and must be lowercase.
1112
adminServerName: admin-server
1213

1314
# Name of the WebLogic domain to create
1415
domainName: base_domain
1516

16-
# Unique id identifying a domain.
17-
# This id must be lowercase and unique across all domains in a Kubernetes cluster.
17+
# Unique ID identifying a domain.
18+
# This ID must not contain an underscope ("_"), and must be lowercase and unique across all domains in a Kubernetes cluster.
1819
#domainUID: domain1
1920

2021
# Type of WebLogic Cluster
@@ -26,6 +27,7 @@ clusterType: DYNAMIC
2627
startupControl: AUTO
2728

2829
# Cluster name
30+
# This name must not contain an underscope ("_"), and must be lowercase.
2931
clusterName: cluster-1
3032

3133
# Number of managed servers to generate for the domain
@@ -35,6 +37,7 @@ configuredManagedServerCount: 2
3537
initialManagedServerReplicas: 2
3638

3739
# Base string used to generate managed server names
40+
# This name must not contain an underscope ("_"), and must be lowercase.
3841
managedServerNameBase: managed-server
3942

4043
# Port number for each managed server

kubernetes/internal/create-weblogic-domain.sh

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,25 @@ function validateVersion {
118118
}
119119

120120
#
121-
# Function to ensure the domain uid is lowercase
121+
# Function to ensure the domain uid is legal DNS name
122122
#
123123
function validateDomainUid {
124124
validateLowerCase "domainUID" ${domainUID}
125+
validateDNS1123LegalName domainUID ${domainUID}
126+
}
127+
128+
#
129+
# Function to ensure the adminServerName is legal DNS name
130+
#
131+
function validateAdminServerName {
132+
validateDNS1123LegalName adminServerName ${adminServerName}
133+
}
134+
135+
#
136+
# Function to ensure the managedServerNameBase is legal DNS name
137+
#
138+
function validateManagedServerNameBase {
139+
validateDNS1123LegalName managedServerNameBase ${managedServerNameBase}
125140
}
126141

127142
#
@@ -132,10 +147,11 @@ function validateNamespace {
132147
}
133148

134149
#
135-
# Create an instance of clusterName to be used in cases where lowercase is required.
150+
# Function to ensure the clusterName is legal DNS name
136151
#
137152
function validateClusterName {
138-
clusterNameLC=$(toLower $clusterName)
153+
clusterNameLC=$(toDNS1123Legal $clusterName)
154+
validateDNS1123LegalName clusterName ${clusterName}
139155
}
140156

141157
#
@@ -420,6 +436,8 @@ function initialize {
420436

421437
validateVersion
422438
validateDomainUid
439+
validateAdminServerName
440+
validateManagedServerNameBase
423441
validateNamespace
424442
validateClusterName
425443
validateWeblogicDomainStorageType

kubernetes/internal/utility.sh

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,35 @@ function toLower {
175175

176176
#
177177
# Function to check if a value is lowercase
178-
# $1 - value to check
179-
# $2 - name of object being checked
178+
# $1 - name of object being checked
179+
# $2 - value to check
180180
function validateLowerCase {
181181
local lcVal=$(toLower $2)
182182
if [ "$lcVal" != "$2" ]; then
183183
validationError "The value of $1 must be lowercase: $2"
184184
fi
185185
}
186186

187+
#
188+
# Function to lowercase a value and make it a legal DNS1123 name
189+
# $1 - value to convert to DNS legal name
190+
function toDNS1123Legal {
191+
local val=`echo $1 | tr "[:upper:]" "[:lower:]"`
192+
val=${val//"_"/"-"}
193+
echo "$val"
194+
}
195+
196+
#
197+
# Function to check if a value is lowercase and legal DNS name
198+
# $1 - name of object being checked
199+
# $2 - value to check
200+
function validateDNS1123LegalName {
201+
local val=$(toDNS1123Legal $2)
202+
if [ "$val" != "$2" ]; then
203+
validationError "The value of $1 contains invalid charaters (uppercase letters or "_"): $2"
204+
fi
205+
}
206+
187207
#
188208
# Function to validate the namespace
189209
#

kubernetes/src/test/java/oracle/kubernetes/operator/create/CreateDomainInputsValidationTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ public void createDomain_with_missingAdminServerName_failsAndReturnsError() thro
126126
failsAndPrints(paramMissingError(PARAM_ADMIN_SERVER_NAME)));
127127
}
128128

129+
@Test
130+
public void createDomain_with_invalidAdminServerName() throws Exception {
131+
String val = "test_admin_Server";
132+
assertThat(
133+
execCreateDomain(newInputs().adminServerName(val)),
134+
failsAndPrints(paramInvalidError(PARAM_ADMIN_SERVER_NAME, val)));
135+
}
136+
129137
@Test
130138
public void createDomain_with_missingDomainName_failsAndReturnsError() throws Exception {
131139
assertThat(
@@ -148,6 +156,14 @@ public void createDomain_with_upperCaseDomainUID_failsAndReturnsError() throws E
148156
failsAndPrints(paramNotLowercaseError(PARAM_DOMAIN_UID, val)));
149157
}
150158

159+
@Test
160+
public void createDomain_with_invalidDomainUID_failsAndReturnsError() throws Exception {
161+
String val = "test_domain_1";
162+
assertThat(
163+
execCreateDomain(newInputs().domainUID(val)),
164+
failsAndPrints(paramInvalidError(PARAM_DOMAIN_UID, val)));
165+
}
166+
151167
@Test
152168
public void createDomain_with_missingStartupControl_failsAndReturnsError() throws Exception {
153169
assertThat(
@@ -220,6 +236,14 @@ public void createDomain_with_missingClusterName_failsAndReturnsError() throws E
220236
failsAndPrints(paramMissingError(PARAM_CLUSTER_NAME)));
221237
}
222238

239+
@Test
240+
public void createDomain_with_invalidClusterName_failsAndReturnsError() throws Exception {
241+
String val = "test_Cluster_1";
242+
assertThat(
243+
execCreateDomain(newInputs().clusterName(val)),
244+
failsAndPrints(paramInvalidError(PARAM_CLUSTER_NAME, val)));
245+
}
246+
223247
@Test
224248
public void createDomain_with_missingConfiguredManagedServerCount_failsAndReturnsError()
225249
throws Exception {
@@ -262,6 +286,15 @@ public void createDomain_with_missingManagedServerNameBase_failsAndReturnsError(
262286
failsAndPrints(paramMissingError(PARAM_MANAGED_SERVER_NAME_BASE)));
263287
}
264288

289+
@Test
290+
public void createDomain_with_invalidManagedServerNameBase_failsAndReturnsError()
291+
throws Exception {
292+
String val = "test_MS";
293+
assertThat(
294+
execCreateDomain(newInputs().managedServerNameBase(val)),
295+
failsAndPrints(paramInvalidError(PARAM_MANAGED_SERVER_NAME_BASE, val)));
296+
}
297+
265298
@Test
266299
public void createDomain_with_missingManagedServerPort_failsAndReturnsError() throws Exception {
267300
assertThat(
@@ -638,6 +671,10 @@ private String invalidEnumParamValueError(String param, String val) {
638671
return errorRegexp("Invalid.*" + param + ".*" + val);
639672
}
640673

674+
private String paramInvalidError(String param, String val) {
675+
return errorRegexp(param + ".*invalid");
676+
}
677+
641678
@SuppressWarnings("SameParameterValue")
642679
private String invalidRelatedParamValueError(
643680
String param, String val, String param2, String val2) {

kubernetes/src/test/java/oracle/kubernetes/operator/utils/DomainValues.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ protected String convertNullToEmptyString(String val) {
9292
public DomainValues withTestDefaults() {
9393
return this.adminNodePort("30702")
9494
.adminPort("7002")
95-
.adminServerName("TestAdminServer")
96-
.clusterName("TestCluster")
95+
.adminServerName("test-admin-server")
96+
.clusterName("test-cluster")
9797
.clusterType(CLUSTER_TYPE_DYNAMIC)
9898
.domainName("TestDomain")
9999
.weblogicImage("store/oracle/weblogic:12.2.1.3")
@@ -102,7 +102,7 @@ public DomainValues withTestDefaults() {
102102
.loadBalancerDashboardPort("31315")
103103
.loadBalancerWebPort("31305")
104104
.configuredManagedServerCount("4")
105-
.managedServerNameBase("TestManagedServer")
105+
.managedServerNameBase("test-managed-server")
106106
.managedServerPort("8002")
107107
.initialManagedServerReplicas("3")
108108
.weblogicDomainStorageNFSServer("TestDomainStorageNFSServer")

0 commit comments

Comments
 (0)