Skip to content

Commit 178d145

Browse files
committed
Refactored channel validations for non dynamic cluster servers
1 parent acd7e45 commit 178d145

File tree

1 file changed

+53
-43
lines changed

1 file changed

+53
-43
lines changed

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

Lines changed: 53 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
import shutil
8787
import re
8888
from datetime import datetime
89+
from enum import Enum
8990

9091
# Include this script's current directory in the import path (so we can import traceUtils, etc.)
9192
# sys.path.append('/weblogic-operator/scripts')
@@ -340,7 +341,7 @@ def validateCluster(self, cluster):
340341
def validateNonDynamicCluster(self, cluster):
341342
self.validateNonDynamicClusterReferencedByAtLeastOneServer(cluster)
342343
self.validateNonDynamicClusterNotReferencedByAnyServerTemplates(cluster)
343-
self.validateNonDynamicClusterServersHaveSameListenPort(cluster)
344+
self.validateNonDynamicClusterServersHaveSameListenPortProperties(cluster)
344345

345346
def validateNonDynamicClusterReferencedByAtLeastOneServer(self, cluster):
346347
for server in self.env.getDomain().getServers():
@@ -353,60 +354,69 @@ def validateNonDynamicClusterNotReferencedByAnyServerTemplates(self, cluster):
353354
if template.getCluster() is cluster:
354355
self.addError("The non-dynamic cluster " + self.name(cluster) + " is referenced by the server template " + self.name(template) + ".")
355356

356-
def validateNonDynamicClusterServersHaveSameListenPort(self, cluster):
357+
class ClusterListenPortProperties(Enum):
358+
LISTEN_PORT = 'listen port'
359+
LISTEN_PORT_ENABLED = 'listen port enabled'
360+
SSL_LISTEN_PORT = 'ssl listen port'
361+
SSL_LISTEN_PORT_ENABLED= 'ssl listen port enabled'
362+
ADMIN_LISTEN_PORT = 'admin listen port'
363+
ADMIN_LISTEN_PORT_ENABLED = 'admin listen port enabled'
364+
365+
def getServerClusterPortPropertyValue(server, clusterListenPortProperty):
366+
return {
367+
ClusterListenPortProperties.LISTEN_PORT: server.getListenPort(),
368+
ClusterListenPortProperties.LISTEN_PORT_ENABLED: server.isListenPortEnabled(),
369+
ClusterListenPortProperties.SSL_LISTEN_PORT: None if server.getSSL()==None else server.getSSL().getListenPort(),
370+
ClusterListenPortProperties.SSL_LISTEN_PORT_ENABLED: None if server.getSSL()==None else server.getSSL().isListenPortEnabled(),
371+
ClusterListenPortProperties.ADMIN_LISTEN_PORT: server.getAdministrationPort(),
372+
ClusterListenPortProperties.ADMIN_LISTEN_PORT_ENABLED: server.isAdministrationPortEnabled()
373+
}[clusterListenPortProperty]
374+
375+
def validateNonDynamicClusterServersHaveSameListenPortProperties(self, cluster):
376+
errorMsg = "The non-dynamic cluster {0}'s server {1}'s {2} is {3} but its server {4}'s {2} is {5}. All {2} values for the same channel in a cluster must be the same."
377+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.LISTEN_PORT)
378+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.LISTEN_PORT_ENABLED)
379+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.SSL_LISTEN_PORT)
380+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.SSL_LISTEN_PORT_ENABLED)
381+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.ADMIN_LISTEN_PORT)
382+
validateClusterServersListenPortProperty(self, cluster, errorMsg, ClusterListenPortProperties.ADMIN_LISTEN_PORT_ENABLED)
383+
384+
def validateClusterServersListenPortProperty(self, cluster, errorMsg, clusterListenPortProperty):
357385
firstServer = None
358-
firstListenPort = None
359-
firstListenPortEnabled = None
360-
firstSslListenPort = None
361-
firstSslListenPortEnabled = None
362-
firstAdminPort = None
363-
firstAdminPortEnabled = None
386+
firstListenPortProperty = None
364387
for server in self.env.getDomain().getServers():
365388
if cluster is server.getCluster():
366-
listenPort = server.getListenPort()
367-
listenPortEnabled = server.isListenPortEnabled()
368-
ssl = server.getSSL()
369-
sslListenPort = None
370-
sslListenPortEnabled = None
371-
if ssl is not None:
372-
sslListenPort = ssl.getListenPort()
373-
sslListenPortEnabled = ssl.isEnabled()
374-
adminPort = server.getAdministrationPort()
375-
adminPortEnabled = server.isAdministrationPortEnabled()
389+
listenPortProperty = getServerClusterPortPropertyValue(server, clusterListenPortProperty)
376390
if firstServer is None:
377391
firstServer = server
378-
firstListenPort = defaultPort
379-
firstListenPortEnabled = listenPortEnabled
380-
firstSslListenPort = sslListenPort
381-
firstSslListenPortEnabled = sslListenPortEnabled
382-
firstAdminPort = adminPort
383-
firstAdminPortEnabled = adminPortEnabled
392+
firstListenPortProperty = listenPortProperty
384393
else:
385-
if listenPort != firstListenPort:
386-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + "'s listen port is " + str(firstListenPort) + " but its server " + self.name(server) + "'s listen port is " + str(listenPort) + ". All ports for the same channel in a cluster must be the same.")
387-
if listenPortEnabled != firstListenPortEnabled:
388-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + " has listen port enabled: " + str(firstListenPortEnabled) + " but its server " + self.name(server) + "'s listen port enabled: " + str(listenPortEnabled) + ". Channels in a cluster must be either all enabled or disabled.")
389-
if sslListenPort != firstSslListenPort:
390-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + "'s ssl listen port is " + str(firstSslListenPort) + " but its server " + self.name(server) + "'s ssl listen port is " + str(sslListenPort) + ". All ports for the same channel in a cluster must be the same.")
391-
if sslListenPortEnabled != firstSslListenPortEnabled:
392-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + " has ssl listen port enabled: " + str(firstSslListenPortEnabled) + " but its server " + self.name(server) + "'s ssl listen port enabled: " + str(sslListenPortEnabled) + ". Channels in a cluster must be either all enabled or disabled.")
393-
if adminPort != firstAdminListenPort:
394-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + "'s ssl listen port is " + str(firstAdminPort) + " but its server " + self.name(server) + "'s ssl listen port is " + str(adminPort) + ". All ports for the same channel in a cluster must be the same.")
395-
if adminPortEnabled != firstAdminPortEnabled:
396-
self.addError("The non-dynamic cluster " + self.name(cluster) + "'s server " + self.name(firstServer) + " has ssl listen port enabled: " + str(firstAdminPortEnabled) + " but its server " + self.name(server) + "'s ssl listen port enabled: " + str(adminPortEnabled) + ". Channels in a cluster must be either all enabled or disabled.")
397-
return
394+
if listenPortProperty != firstListenPortProperty:
395+
self.addError(errorMsg.format(self.name(cluster), self.name(firstServer), clusterListenPortProperty.value, str(firstListenPortProperty), self.name(server), str(firstListenPortProperty))
396+
return
398397

399398
def NonDynamicClusterServerChannelsHaveSameProtocol(self, cluster):
399+
firstServer = None
400400
serverNap = {}
401401
for server in self.env.getDomain().getServers():
402402
if cluster is server.getCluster():
403-
for nap in server.getNetworkAccessPoints():
404-
if nap.getName() in serverNap
405-
if serverNap[nap.getName()] != nap.getProtocol()
406-
self.addError("The non-dynamic cluster " + self.name(cluster) + " has network access point " + self.name(nap.getName()) + " with conflicting protocols : " + self.name(nap.getProtocol()) + ", " +self.name(serverNap[nap.getName()]) + ". All protocols for the same network access point in a cluster must be the same.")
407-
return
403+
if firstServer is None:
404+
for nap in server.getNetworkAccessPoints():
405+
serverNap[nap.getName()] = nap.getProtocol() + "~" + nap.getListenPort();
406+
firstServer = server
407+
else:
408+
naps = server.getNetworkAccessPoints()
409+
if len(naps) != len(serverNap)
410+
self.addError("The non-dynamic cluster " + self.name(cluster) + " has mismatched number of network access points in servers " + self.name(firstServer) + " and " + self.name(server) + ". All network access points in a cluster must be the same."
411+
return
408412
else:
409-
serverNap[nap.getName()] = nap.getProtocol()
413+
if nap.getName() in serverNap
414+
if serverNap[nap.getName()] != nap.getProtocol() + "~" + nap.getListenPort()
415+
self.addError("The non-dynamic cluster " + self.name(cluster) + " has mismatched network access point " + self.name(nap) + " in server " + self.name(firstServer) + " and " + self.name(server) + ". All network access points in a cluster must be the same.")
416+
return
417+
else:
418+
self.addError("The non-dynamic cluster " + self.name(cluster) + " has mismatched network access point " + self.name(nap) + " in server " + self.name(firstServer) + " and " + self.name(server) + ". All network access points in a cluster must be the same.")
419+
return
410420

411421

412422
def validateDynamicCluster(self, cluster):

0 commit comments

Comments
 (0)