Skip to content

Commit be02e38

Browse files
authored
Owls 91266 - Changes to generate CoherenceMemberConfig.UnicastListenAddress for Istio (#2499)
* OWLS-91266 - Generate CoherenceMemberConfig.UnicastListenAddress for Istio
1 parent 5293c1d commit be02e38

File tree

4 files changed

+68
-7
lines changed

4 files changed

+68
-7
lines changed

integration-tests/src/test/resources/wdt-models/coherence-managed-wdt-config.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,10 @@ topology:
4949
ListenPort: 8001
5050
Cluster: 'cluster-1'
5151
CoherenceClusterSystemResource: CoherenceCluster
52-
CoherenceMemberConfig:
53-
UnicastListenAddress: 'coherence-managed-domain-cluster-1-managed-server${id}'
5452
'cluster-2-template':
5553
ListenPort: 8001
5654
Cluster: 'cluster-2'
5755
CoherenceClusterSystemResource: CoherenceCluster
58-
CoherenceMemberConfig:
59-
UnicastListenAddress: 'coherence-managed-domain-cluster-2-managed-server${id}'
6056
resources:
6157
CoherenceClusterSystemResource:
6258
CoherenceCluster:

operator/src/main/resources/scripts/introspectDomain.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,6 +1068,8 @@ def customizeServer(self, server):
10681068
self.writeListenAddress(server.getListenAddress(),listen_address)
10691069
self.customizeNetworkAccessPoints(server,listen_address)
10701070
self.customizeServerIstioNetworkAccessPoint(listen_address, server)
1071+
if (self.getCoherenceClusterSystemResourceOrNone(server) is not None):
1072+
self.customizeCoherenceMemberConfig(server.getCoherenceMemberConfig(),listen_address)
10711073
self.undent()
10721074
self.writeln("</d:server>")
10731075

@@ -1089,6 +1091,8 @@ def customizeServerTemplate(self, template):
10891091
self.writeListenAddress(template.getListenAddress(),listen_address)
10901092
self.customizeNetworkAccessPoints(template,listen_address)
10911093
self.customizeManagedIstioNetworkAccessPoint(listen_address, template)
1094+
if (self.getCoherenceClusterSystemResourceOrNone(template) is not None):
1095+
self.customizeCoherenceMemberConfig(template.getCoherenceMemberConfig(), listen_address)
10921096
self.undent()
10931097
self.writeln("</d:server-template>")
10941098

@@ -1163,6 +1167,37 @@ def _writeIstioNAP(self, name, server, listen_address, listen_port, protocol, ht
11631167
self.undent()
11641168
self.writeln('</d:network-access-point>')
11651169

1170+
def getCoherenceClusterSystemResourceOrNone(self, serverOrTemplate):
1171+
try:
1172+
cluster=serverOrTemplate.getCluster()
1173+
if (cluster is not None):
1174+
ret=cluster.getCoherenceClusterSystemResource()
1175+
else:
1176+
ret=serverOrTemplate.getCoherenceClusterSystemResource()
1177+
except:
1178+
trace("Ignoring getCoherenceClusterSystemResource () exception, this is expected.")
1179+
ret = None
1180+
return ret
1181+
1182+
def customizeCoherenceMemberConfig(self, coherence_member_config, listen_address):
1183+
repVerb='"add"'
1184+
if (coherence_member_config is None):
1185+
self.writeln('<d:coherence-member-config f:combine-mode=' + repVerb + '>')
1186+
self.indent()
1187+
self.writeln('<d:unicast-listen-address f:combine-mode=' + repVerb + '>%s</d:unicast-listen-address>' % listen_address)
1188+
self.undent()
1189+
self.writeln('</d:coherence-member-config>')
1190+
else:
1191+
unicastAddress=coherence_member_config.getUnicastListenAddress()
1192+
if unicastAddress is not None:
1193+
repVerb='"replace"'
1194+
1195+
self.writeln('<d:coherence-member-config>')
1196+
self.indent()
1197+
self.writeln('<d:unicast-listen-address f:combine-mode=' + repVerb + '>%s</d:unicast-listen-address>' % listen_address)
1198+
self.undent()
1199+
self.writeln('</d:coherence-member-config>')
1200+
11661201
def customizeServerIstioNetworkAccessPoint(self, listen_address, server):
11671202
istio_enabled = self.env.getEnvOrDef("ISTIO_ENABLED", "false")
11681203
if istio_enabled == 'false':

operator/src/main/resources/scripts/model_wdt_mii_filter.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ def customizeServerTemplates(model):
206206
customizeServerTemplate(topology, template)
207207

208208

209+
209210
def customizeServerTemplate(topology, template):
210211
server_name_prefix = getServerNamePrefix(topology, template)
211212
domain_uid = env.getDomainUID()
@@ -216,6 +217,8 @@ def customizeServerTemplate(topology, template):
216217
setServerListenAddress(template, listen_address)
217218
customizeNetworkAccessPoints(template, listen_address)
218219
customizeManagedIstioNetworkAccessPoint(template, listen_address)
220+
if (getCoherenceClusterSystemResourceOrNone(topology, template) is not None):
221+
customizeCoherenceMemberConfig(template, listen_address)
219222

220223

221224
def getServerNamePrefix(topology, template):
@@ -294,17 +297,27 @@ def customizeServers(model):
294297
names = servers.keys()
295298
for name in names:
296299
server = servers[name]
297-
customizeServer(server, name)
300+
customizeServer(model, server, name)
298301

299302

300-
def customizeServer(server, name):
303+
def customizeServer(model, server, name):
301304
listen_address=env.toDNS1123Legal(env.getDomainUID() + "-" + name)
302305
customizeLog(name, server)
303306
customizeAccessLog(name, server)
304307
customizeDefaultFileStore(server)
305308
setServerListenAddress(server, listen_address)
306309
customizeNetworkAccessPoints(server,listen_address)
307310
customizeServerIstioNetworkAccessPoint(server, listen_address)
311+
if (getCoherenceClusterSystemResourceOrNone(model['topology'], server) is not None):
312+
customizeCoherenceMemberConfig(server, listen_address)
313+
314+
315+
def customizeCoherenceMemberConfig(server, listen_address):
316+
if 'CoherenceMemberConfig ' not in server:
317+
server['CoherenceMemberConfig'] = {}
318+
319+
cmc = server['CoherenceMemberConfig']
320+
cmc['UnicastListenAddress'] = listen_address
308321

309322

310323
def getAdministrationPort(server, topology):
@@ -592,6 +605,23 @@ def getClusterOrNone(topology, name):
592605

593606
return None
594607

608+
def getCoherenceClusterSystemResourceOrNone(topology, serverOrTemplate):
609+
610+
cluster_name = getClusterNameOrNone(serverOrTemplate)
611+
if cluster_name is not None:
612+
cluster = getClusterOrNone(topology, cluster_name)
613+
if cluster is not None:
614+
if 'CoherenceClusterSystemResource' not in cluster:
615+
return None
616+
return cluster['CoherenceClusterSystemResource']
617+
else:
618+
if 'CoherenceClusterSystemResource' not in serverOrTemplate:
619+
return None
620+
else:
621+
if 'CoherenceClusterSystemResource' not in serverOrTemplate:
622+
return None
623+
return serverOrTemplate['CoherenceClusterSystemResource']
624+
595625

596626
def getDynamicServerOrNone(cluster):
597627
if 'DynamicServers' not in cluster:

operator/src/test/python/test_wdt_mii_filter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def test_customize_admin_server_static_cluster(self):
101101

102102
server_name = 'admin-server'
103103
server = model['topology']['Server'][server_name]
104-
model_wdt_mii_filter.customizeServer(server, server_name)
104+
model_wdt_mii_filter.customizeServer(model, server, server_name)
105105
listen_address = server['ListenAddress']
106106
self.assertEqual('sample-domain1-admin-server', listen_address, "Expected listen address to be \'sample-domain1-admin-server\'")
107107

0 commit comments

Comments
 (0)