@@ -111,14 +111,24 @@ function createServerStartPolicyPatch {
111
111
local policy=$3
112
112
local __result=$4
113
113
local currentStartPolicy=" "
114
+ local serverStartPolicyPatch=" "
114
115
115
116
# Get server start policy for this server
116
117
getServerPolicy " ${domainJson} " " ${serverName} " currentStartPolicy
117
- if [ -z " ${currentStartPolicy} " ]; then
118
+ managedServers=$( echo ${domainJson} | jq -cr ' (.spec.managedServers)' )
119
+ if [[ -z " ${currentStartPolicy} " && " ${managedServers} " == " null" ]]; then
118
120
# Server start policy doesn't exist, add a new policy
119
121
addPolicyCmd=" .[.| length] |= . + {\" serverName\" :\" ${serverName} \" , \
120
122
\" serverStartPolicy\" :\" ${policy} \" }"
121
123
serverStartPolicyPatch=$( echo ${domainJson} | jq .spec.managedServers | jq -c " ${addPolicyCmd} " )
124
+ elif [ " ${managedServers} " != " null" ]; then
125
+ extractSpecCmd=" (.spec.managedServers)"
126
+ mapCmd=" \
127
+ . |= (map(.serverName) | index (\" ${serverName} \" )) as \$ idx | \
128
+ if \$ idx then \
129
+ .[\$ idx][\" serverStartPolicy\" ] = \" ${policy} \" \
130
+ else .+ [{serverName: \" ${serverName} \" , serverStartPolicy: \" ${policy} \" }] end"
131
+ serverStartPolicyPatch=$( echo ${domainJson} | jq " ${extractSpecCmd} " | jq " ${mapCmd} " )
122
132
else
123
133
# Server start policy exists, replace policy value
124
134
replacePolicyCmd=" (.spec.managedServers[] \
@@ -142,9 +152,7 @@ function createPatchJsonToUnsetPolicyAndUpdateReplica {
142
152
local replicaPatch=$3
143
153
local __result=$4
144
154
145
- replacePolicyCmd=" [(.spec.managedServers[] \
146
- | select (.serverName != \" ${serverName} \" ))]"
147
- serverStartPolicyPatch=$( echo ${domainJson} | jq " ${replacePolicyCmd} " )
155
+ unsetServerStartPolicy " ${domainJson} " " ${serverName} " serverStartPolicyPatch
148
156
patchJson=" {\" spec\" : {\" clusters\" : " ${replicaPatch} " ,\" managedServers\" : " ${serverStartPolicyPatch} " }}"
149
157
eval $__result =" '${patchJson} '"
150
158
}
@@ -199,13 +207,35 @@ function createPatchJsonToUnsetPolicy {
199
207
local serverName=$2
200
208
local __result=$3
201
209
202
- replacePolicyCmd=" [(.spec.managedServers[] \
203
- | select (.serverName != \" ${serverName} \" ))]"
204
- serverStartPolicyPatch=$( echo ${domainJson} | jq " ${replacePolicyCmd} " )
210
+ unsetServerStartPolicy " ${domainJson} " " ${serverName} " serverStartPolicyPatch
205
211
patchJson=" {\" spec\" : {\" managedServers\" : " ${serverStartPolicyPatch} " }}"
206
212
eval $__result =" '${patchJson} '"
207
213
}
208
214
215
+ #
216
+ # Function to create patch string with server start policy unset
217
+ # $1 - Domain resource in json format
218
+ # $2 - Name of server whose policy will be unset
219
+ # $3 - Return value containing patch string with server start policy unset
220
+ #
221
+ function unsetServerStartPolicy {
222
+ local domainJson=$1
223
+ local serverName=$2
224
+ local __result=$3
225
+ local unsetStartPolicyPatch=" "
226
+
227
+ unsetCmd=" (.spec.managedServers[] | select (.serverName == \" ${serverName} \" ) | del (.serverStartPolicy))"
228
+ replacePolicyCmd=$( echo ${domainJson} | jq -cr " ${unsetCmd} " )
229
+ replacePolicyCmdLen=$( echo " ${replacePolicyCmd} " | jq -e keys_unsorted | jq length)
230
+ if [ ${replacePolicyCmdLen} == 1 ]; then
231
+ mapCmd=" . |= map(if .serverName == \" ${serverName} \" then del(.) else . end)"
232
+ else
233
+ mapCmd=" . |= map(if .serverName == \" ${serverName} \" then . = ${replacePolicyCmd} else . end)"
234
+ fi
235
+ unsetStartPolicyPatch=$( echo ${domainJson} | jq " (.spec.managedServers)" | jq " ${mapCmd} " )
236
+ eval $__result =" '${unsetStartPolicyPatch} '"
237
+ }
238
+
209
239
#
210
240
# Function to create patch json to update cluster server start policy
211
241
# $1 - Domain resource in json format
0 commit comments