diff --git a/integration-tests/src/test/resources/wdt-models/coherence-managed-wdt-config.yaml b/integration-tests/src/test/resources/wdt-models/coherence-managed-wdt-config.yaml index b53cd3c954f..3acb07151e5 100644 --- a/integration-tests/src/test/resources/wdt-models/coherence-managed-wdt-config.yaml +++ b/integration-tests/src/test/resources/wdt-models/coherence-managed-wdt-config.yaml @@ -49,14 +49,10 @@ topology: ListenPort: 8001 Cluster: 'cluster-1' CoherenceClusterSystemResource: CoherenceCluster - CoherenceMemberConfig: - UnicastListenAddress: 'coherence-managed-domain-cluster-1-managed-server${id}' 'cluster-2-template': ListenPort: 8001 Cluster: 'cluster-2' CoherenceClusterSystemResource: CoherenceCluster - CoherenceMemberConfig: - UnicastListenAddress: 'coherence-managed-domain-cluster-2-managed-server${id}' resources: CoherenceClusterSystemResource: CoherenceCluster: diff --git a/operator/src/main/resources/scripts/introspectDomain.py b/operator/src/main/resources/scripts/introspectDomain.py index a4e498936ae..1098a053014 100644 --- a/operator/src/main/resources/scripts/introspectDomain.py +++ b/operator/src/main/resources/scripts/introspectDomain.py @@ -1068,6 +1068,8 @@ def customizeServer(self, server): self.writeListenAddress(server.getListenAddress(),listen_address) self.customizeNetworkAccessPoints(server,listen_address) self.customizeServerIstioNetworkAccessPoint(listen_address, server) + if (self.getCoherenceClusterSystemResourceOrNone(server) is not None): + self.customizeCoherenceMemberConfig(server.getCoherenceMemberConfig(),listen_address) self.undent() self.writeln("") @@ -1089,6 +1091,8 @@ def customizeServerTemplate(self, template): self.writeListenAddress(template.getListenAddress(),listen_address) self.customizeNetworkAccessPoints(template,listen_address) self.customizeManagedIstioNetworkAccessPoint(listen_address, template) + if (self.getCoherenceClusterSystemResourceOrNone(template) is not None): + self.customizeCoherenceMemberConfig(template.getCoherenceMemberConfig(), listen_address) self.undent() self.writeln("") @@ -1163,6 +1167,37 @@ def _writeIstioNAP(self, name, server, listen_address, listen_port, protocol, ht self.undent() self.writeln('') + def getCoherenceClusterSystemResourceOrNone(self, serverOrTemplate): + try: + cluster=serverOrTemplate.getCluster() + if (cluster is not None): + ret=cluster.getCoherenceClusterSystemResource() + else: + ret=serverOrTemplate.getCoherenceClusterSystemResource() + except: + trace("Ignoring getCoherenceClusterSystemResource () exception, this is expected.") + ret = None + return ret + + def customizeCoherenceMemberConfig(self, coherence_member_config, listen_address): + repVerb='"add"' + if (coherence_member_config is None): + self.writeln('') + self.indent() + self.writeln('%s' % listen_address) + self.undent() + self.writeln('') + else: + unicastAddress=coherence_member_config.getUnicastListenAddress() + if unicastAddress is not None: + repVerb='"replace"' + + self.writeln('') + self.indent() + self.writeln('%s' % listen_address) + self.undent() + self.writeln('') + def customizeServerIstioNetworkAccessPoint(self, listen_address, server): istio_enabled = self.env.getEnvOrDef("ISTIO_ENABLED", "false") if istio_enabled == 'false': diff --git a/operator/src/main/resources/scripts/model_wdt_mii_filter.py b/operator/src/main/resources/scripts/model_wdt_mii_filter.py index 8d929286edf..87326c94238 100644 --- a/operator/src/main/resources/scripts/model_wdt_mii_filter.py +++ b/operator/src/main/resources/scripts/model_wdt_mii_filter.py @@ -206,6 +206,7 @@ def customizeServerTemplates(model): customizeServerTemplate(topology, template) + def customizeServerTemplate(topology, template): server_name_prefix = getServerNamePrefix(topology, template) domain_uid = env.getDomainUID() @@ -216,6 +217,8 @@ def customizeServerTemplate(topology, template): setServerListenAddress(template, listen_address) customizeNetworkAccessPoints(template, listen_address) customizeManagedIstioNetworkAccessPoint(template, listen_address) + if (getCoherenceClusterSystemResourceOrNone(topology, template) is not None): + customizeCoherenceMemberConfig(template, listen_address) def getServerNamePrefix(topology, template): @@ -294,10 +297,10 @@ def customizeServers(model): names = servers.keys() for name in names: server = servers[name] - customizeServer(server, name) + customizeServer(model, server, name) -def customizeServer(server, name): +def customizeServer(model, server, name): listen_address=env.toDNS1123Legal(env.getDomainUID() + "-" + name) customizeLog(name, server) customizeAccessLog(name, server) @@ -305,6 +308,16 @@ def customizeServer(server, name): setServerListenAddress(server, listen_address) customizeNetworkAccessPoints(server,listen_address) customizeServerIstioNetworkAccessPoint(server, listen_address) + if (getCoherenceClusterSystemResourceOrNone(model['topology'], server) is not None): + customizeCoherenceMemberConfig(server, listen_address) + + +def customizeCoherenceMemberConfig(server, listen_address): + if 'CoherenceMemberConfig ' not in server: + server['CoherenceMemberConfig'] = {} + + cmc = server['CoherenceMemberConfig'] + cmc['UnicastListenAddress'] = listen_address def getAdministrationPort(server, topology): @@ -592,6 +605,23 @@ def getClusterOrNone(topology, name): return None +def getCoherenceClusterSystemResourceOrNone(topology, serverOrTemplate): + + cluster_name = getClusterNameOrNone(serverOrTemplate) + if cluster_name is not None: + cluster = getClusterOrNone(topology, cluster_name) + if cluster is not None: + if 'CoherenceClusterSystemResource' not in cluster: + return None + return cluster['CoherenceClusterSystemResource'] + else: + if 'CoherenceClusterSystemResource' not in serverOrTemplate: + return None + else: + if 'CoherenceClusterSystemResource' not in serverOrTemplate: + return None + return serverOrTemplate['CoherenceClusterSystemResource'] + def getDynamicServerOrNone(cluster): if 'DynamicServers' not in cluster: diff --git a/operator/src/test/python/test_wdt_mii_filter.py b/operator/src/test/python/test_wdt_mii_filter.py index c376dbc2a9f..ccca77c2355 100644 --- a/operator/src/test/python/test_wdt_mii_filter.py +++ b/operator/src/test/python/test_wdt_mii_filter.py @@ -101,7 +101,7 @@ def test_customize_admin_server_static_cluster(self): server_name = 'admin-server' server = model['topology']['Server'][server_name] - model_wdt_mii_filter.customizeServer(server, server_name) + model_wdt_mii_filter.customizeServer(model, server, server_name) listen_address = server['ListenAddress'] self.assertEqual('sample-domain1-admin-server', listen_address, "Expected listen address to be \'sample-domain1-admin-server\'")