97
97
from utils import *
98
98
from weblogic .management .configuration import LegalHelper
99
99
100
+
100
101
class OfflineWlstEnv (object ):
101
102
102
103
def open (self ):
103
104
104
105
# before doing anything, get each env var and verify it exists
106
+ global server_template_sslports
107
+ global server_listening_ports
108
+
105
109
106
110
self .DOMAIN_UID = self .getEnv ('DOMAIN_UID' )
107
111
self .DOMAIN_HOME = self .getEnv ('DOMAIN_HOME' )
@@ -177,7 +181,8 @@ def open(self):
177
181
if os .path .isfile (the_file_path ):
178
182
os .unlink (the_file_path )
179
183
180
-
184
+ server_template_sslports , server_listening_ports = get_server_template_listening_ports_from_configxml (self .getDomainHome () + os .sep
185
+ + 'config' + os .sep + 'config.xml' )
181
186
trace ("About to load domain from " + self .getDomainHome ())
182
187
readDomain (self .getDomainHome ())
183
188
self .domain = cmo
@@ -442,26 +447,6 @@ def validateNonDynamicClusterNotReferencedByAnyServerTemplates(self, cluster):
442
447
ADMIN_LISTEN_PORT = 'admin listen port'
443
448
ADMIN_LISTEN_PORT_ENABLED = 'admin listen port enabled'
444
449
445
- def getServerClusterPortPropertyValue (self , server , clusterListenPortProperty ):
446
- sslListenPort = None
447
- sslListenPortEnabled = None
448
- ssl = getSSLOrNone (server )
449
- if ssl is not None :
450
- sslListenPort = ssl .getListenPort ()
451
- sslListenPortEnabled = ssl .isEnabled ()
452
- elif ssl is None and isSecureModeEnabledForDomain (self .env .getDomain ()):
453
- sslListenPort = "7002"
454
- sslListenPortEnabled = True
455
-
456
- return {
457
- LISTEN_PORT : server .getListenPort (),
458
- LISTEN_PORT_ENABLED : isListenPortEnabledForServer (server , self .env .getDomain ()),
459
- SSL_LISTEN_PORT : sslListenPort ,
460
- SSL_LISTEN_PORT_ENABLED : sslListenPortEnabled ,
461
- ADMIN_LISTEN_PORT : getAdministrationPort (server , self .env .getDomain ()),
462
- ADMIN_LISTEN_PORT_ENABLED : isAdministrationPortEnabledForServer (server , self .env .getDomain ())
463
- }[clusterListenPortProperty ]
464
-
465
450
def validateNonDynamicClusterServersHaveSameListenPort (self , cluster ):
466
451
firstServer = None
467
452
firstListenPort = None
@@ -472,13 +457,13 @@ def validateNonDynamicClusterServersHaveSameListenPort(self, cluster):
472
457
firstAdminPortEnabled = None
473
458
for server in self .env .getDomain ().getServers ():
474
459
if cluster is self .env .getClusterOrNone (server ):
475
- listenPort = server . getListenPort ( )
460
+ listenPort = getRealListenPort ( server )
476
461
listenPortEnabled = isListenPortEnabledForServer (server , self .env .getDomain ())
477
462
ssl = getSSLOrNone (server )
478
463
sslListenPort = None
479
464
sslListenPortEnabled = None
480
465
if ssl is not None :
481
- sslListenPort = ssl .getListenPort ()
466
+ sslListenPort = getRealSSLListenPort ( server , ssl .getListenPort () )
482
467
sslListenPortEnabled = ssl .isEnabled ()
483
468
elif isSecureModeEnabledForDomain (self .env .getDomain ()):
484
469
sslListenPort = 7002
@@ -508,19 +493,19 @@ def validateNonDynamicClusterServersHaveSameListenPort(self, cluster):
508
493
if adminPortEnabled != firstAdminPortEnabled :
509
494
self .addError ("The WebLogic configured cluster " + self .name (cluster ) + "'s server " + self .name (firstServer ) + " has ssl listen port enabled: " + self .booleanToString (firstAdminPortEnabled ) + " but its server " + self .name (server ) + "'s ssl listen port enabled: " + self .booleanToString (adminPortEnabled ) + ". Channels in a cluster must be either all enabled or disabled." )
510
495
511
- def validateClusterServersListenPortProperty (self , cluster , errorMsg , clusterListenPortProperty ):
512
- firstServer = None
513
- firstListenPortProperty = None
514
- for server in self .env .getDomain ().getServers ():
515
- if cluster is self .env .getClusterOrNone (server ):
516
- listenPortProperty = getServerClusterPortPropertyValue (self , server , clusterListenPortProperty )
517
- if firstServer is None :
518
- firstServer = server
519
- firstListenPortProperty = listenPortProperty
520
- else :
521
- if listenPortProperty != firstListenPortProperty :
522
- self .addError (errorMsg .substitute (cluster = self .name (cluster ), server1 = self .name (firstServer ), property = clusterListenPortProperty , value1 = str (firstListenPortProperty ), server2 = self .name (server ), value2 = str (firstListenPortProperty )))
523
- return
496
+ # def validateClusterServersListenPortProperty(self, cluster, errorMsg, clusterListenPortProperty):
497
+ # firstServer = None
498
+ # firstListenPortProperty = None
499
+ # for server in self.env.getDomain().getServers():
500
+ # if cluster is self.env.getClusterOrNone(server):
501
+ # listenPortProperty = getServerClusterPortPropertyValue(self, server, clusterListenPortProperty)
502
+ # if firstServer is None:
503
+ # firstServer = server
504
+ # firstListenPortProperty = listenPortProperty
505
+ # else:
506
+ # if listenPortProperty != firstListenPortProperty:
507
+ # self.addError(errorMsg.substitute(cluster=self.name(cluster), server1=self.name(firstServer), property=clusterListenPortProperty, value1=str(firstListenPortProperty), server2=self.name(server), value2=str(firstListenPortProperty)))
508
+ # return
524
509
525
510
def validateNonDynamicClusterServerHaveSameCustomChannels (self , cluster ):
526
511
firstServer = None
@@ -667,18 +652,24 @@ def addServer(self, server, is_server_template=False):
667
652
name = self .name (server )
668
653
self .writeln ("- name: " + name )
669
654
if isListenPortEnabledForServer (server , self .env .getDomain (), is_server_template ):
670
- self .writeln (" listenPort: " + str (server .getListenPort ()))
655
+ listen_port = getRealListenPort (server )
656
+ self .writeln (" listenPort: " + str (listen_port ))
671
657
self .writeln (" listenAddress: " + self .quote (self .env .toDNS1123Legal (self .env .getDomainUID () + "-" + server .getName ())))
672
658
if isAdministrationPortEnabledForServer (server , self .env .getDomain (), is_server_template ):
673
659
self .writeln (" adminPort: " + str (getAdministrationPort (server , self .env .getDomain ())))
674
660
self .addSSL (server )
675
661
self .addNetworkAccessPoints (server , is_server_template )
676
662
677
663
def addSSL (self , server ):
664
+ '''
665
+ Write the SSL topology information to the output
666
+ :param server: Server or ServerTemplate
667
+ '''
678
668
ssl = getSSLOrNone (server )
679
669
if ssl is not None and ssl .isEnabled ():
670
+ sslport = getRealSSLListenPort (server , ssl .getListenPort ())
680
671
self .indent ()
681
- self .writeln ("sslListenPort: " + str (ssl . getListenPort () ))
672
+ self .writeln ("sslListenPort: " + str (sslport ))
682
673
self .undent ()
683
674
elif ssl is None and isSecureModeEnabledForDomain (self .env .getDomain ()):
684
675
self .indent ()
@@ -722,7 +713,8 @@ def addDynamicCluster(self, cluster):
722
713
self .indent ()
723
714
template = self .findDynamicClusterServerTemplate (cluster )
724
715
dyn_servers = cluster .getDynamicServers ()
725
- self .writeln ("port: " + str (template .getListenPort ()))
716
+ listen_port = getRealListenPort (template )
717
+ self .writeln ("port: " + str (listen_port ))
726
718
self .writeln ("maxServers: " + str (dyn_servers .getDynamicClusterSize ()))
727
719
self .writeln ("baseServerName: " + self .quote (dyn_servers .getServerNamePrefix ()))
728
720
self .undent ()
@@ -793,7 +785,7 @@ def addNetworkAccessPoint(self, server, nap, is_server_template):
793
785
794
786
def addIstioNetworkAccessPoints (self , server , is_server_template , added_nap ):
795
787
'''
796
- Write the container ports information for operator to create the container ports
788
+ Write the container ports information for operator to create the container ports in the topology.xml file
797
789
:param server: server or template mbean
798
790
:param is_server_template: true if it is from ServerTemplate
799
791
:param added_nap: true if there are existing nap section in the output
@@ -806,17 +798,17 @@ def addIstioNetworkAccessPoints(self, server, is_server_template, added_nap):
806
798
self .writeln (" networkAccessPoints:" )
807
799
self .indent ()
808
800
809
- self .addIstioNetworkAccessPoint ("tcp-ldap" , "ldap" , server . getListenPort ( ), 0 )
810
- self .addIstioNetworkAccessPoint ("tcp-default" , "t3" , server . getListenPort ( ), 0 )
801
+ self .addIstioNetworkAccessPoint ("tcp-ldap" , "ldap" , getRealListenPort ( server ), 0 )
802
+ self .addIstioNetworkAccessPoint ("tcp-default" , "t3" , getRealListenPort ( server ), 0 )
811
803
# No need to to http default, PodStepContext already handle it
812
- self .addIstioNetworkAccessPoint ("http-default" , "http" , server . getListenPort ( ), 0 )
813
- self .addIstioNetworkAccessPoint ("tcp-snmp" , "snmp" , server . getListenPort ( ), 0 )
814
- self .addIstioNetworkAccessPoint ("tcp-iiop" , "iiop" , server . getListenPort ( ), 0 )
804
+ self .addIstioNetworkAccessPoint ("http-default" , "http" , getRealListenPort ( server ), 0 )
805
+ self .addIstioNetworkAccessPoint ("tcp-snmp" , "snmp" , getRealListenPort ( server ), 0 )
806
+ self .addIstioNetworkAccessPoint ("tcp-iiop" , "iiop" , getRealListenPort ( server ), 0 )
815
807
816
808
ssl = getSSLOrNone (server )
817
809
ssl_listen_port = None
818
810
if ssl is not None and ssl .isEnabled ():
819
- ssl_listen_port = ssl .getListenPort ()
811
+ ssl_listen_port = getRealSSLListenPort ( server , ssl .getListenPort () )
820
812
elif ssl is None and isSecureModeEnabledForDomain (self .env .getDomain ()):
821
813
ssl_listen_port = "7002"
822
814
@@ -1191,7 +1183,7 @@ def customizeServerIstioNetworkAccessPoint(self, listen_address, server):
1191
1183
istio_readiness_port = self .env .getEnvOrDef ("ISTIO_READINESS_PORT" , None )
1192
1184
if istio_readiness_port is None :
1193
1185
return
1194
- admin_server_port = server . getListenPort ( )
1186
+ admin_server_port = getRealListenPort ( server )
1195
1187
# readiness probe
1196
1188
self ._writeIstioNAP (name = 'http-probe' , server = server , listen_address = listen_address ,
1197
1189
listen_port = istio_readiness_port , protocol = 'http' , http_enabled = "true" )
@@ -1218,7 +1210,7 @@ def customizeServerIstioNetworkAccessPoint(self, listen_address, server):
1218
1210
ssl = getSSLOrNone (server )
1219
1211
ssl_listen_port = None
1220
1212
if ssl is not None and ssl .isEnabled ():
1221
- ssl_listen_port = ssl .getListenPort ()
1213
+ ssl_listen_port = getRealSSLListenPort ( server , ssl .getListenPort () )
1222
1214
elif ssl is None and isSecureModeEnabledForDomain (self .env .getDomain ()):
1223
1215
ssl_listen_port = "7002"
1224
1216
@@ -1251,7 +1243,7 @@ def customizeManagedIstioNetworkAccessPoint(self, listen_address, template):
1251
1243
if istio_readiness_port is None :
1252
1244
return
1253
1245
1254
- listen_port = template . getListenPort ( )
1246
+ listen_port = getRealListenPort ( template )
1255
1247
self ._writeIstioNAP (name = 'http-probe' , server = template , listen_address = listen_address ,
1256
1248
listen_port = istio_readiness_port , protocol = 'http' )
1257
1249
@@ -1273,7 +1265,7 @@ def customizeManagedIstioNetworkAccessPoint(self, listen_address, template):
1273
1265
ssl = getSSLOrNone (template )
1274
1266
ssl_listen_port = None
1275
1267
if ssl is not None and ssl .isEnabled ():
1276
- ssl_listen_port = ssl .getListenPort ()
1268
+ ssl_listen_port = getRealSSLListenPort ( template , ssl .getListenPort () )
1277
1269
elif ssl is None and isSecureModeEnabledForDomain (self .env .getDomain ()):
1278
1270
ssl_listen_port = "7002"
1279
1271
@@ -1676,8 +1668,38 @@ def getSSLOrNone(server):
1676
1668
except :
1677
1669
trace ("Ignoring getSSL() exception, this is expected." )
1678
1670
ret = None
1671
+
1679
1672
return ret
1680
1673
1674
+ def getRealSSLListenPort (server , sslport ):
1675
+ # default ssl port for ssl template if not specified
1676
+ # this is the actual weblogic will start with, although it is supposed
1677
+ # to be 8100 but if the config.xml element is empty, then the
1678
+ # wlst mbean returns 8100 and we cannot use this in the topology.xml
1679
+ # when setting up the container port since the actual listening port is
1680
+ # 7002
1681
+ if server_template_sslports .has_key (server .getName ()):
1682
+ configxml_ssl_port = server_template_sslports [server .getName ()]
1683
+ if configxml_ssl_port is None :
1684
+ return 7002
1685
+
1686
+ return sslport
1687
+
1688
+ def getRealListenPort (server ):
1689
+ # default listening port for template if not specified
1690
+ # this is the actual weblogic will start with, although it is supposed
1691
+ # to be 7100 but if the config.xml element is empty, then the
1692
+ # wlst mbean returns 7100 and we cannot use this in the topology.xml
1693
+ # when setting up the container port since the actual listening port is
1694
+ # 7001
1695
+ if server_listening_ports .has_key (server .getName ()):
1696
+ port = server_listening_ports [server .getName ()]
1697
+ if port is None :
1698
+ return 7001
1699
+
1700
+ return server .getListenPort ()
1701
+
1702
+
1681
1703
# Derive the default value for SecureMode of a domain
1682
1704
def isSecureModeEnabledForDomain (domain ):
1683
1705
secureModeEnabled = false
0 commit comments