@@ -240,6 +240,31 @@ def getClusterOrNone(self,serverOrTemplate):
240240 ret = None
241241 return ret
242242
243+ # Work-around bug in off-line WLST where cluster.getDynamicServers() may throw
244+ # when there are no 'real' DynamicServers. Exception looks like:
245+ # at com.sun.proxy.$Proxy46.getDynamicServers(Unknown Source)
246+ # at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
247+ # at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
248+ # at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
249+ # at java.lang.reflect.Method.invoke(Method.java:498)
250+ def getDynamicServersOrNone (self ,cluster ):
251+ ret = None
252+ try :
253+ cd ('/Cluster/' + cluster .getName () + '/DynamicServers' )
254+ # DynamicServers MBean can be found under
255+ # /Cluster/<clusterName>/DynamicServers/<clusterName>/
256+ # or
257+ # /Cluster/<clusterName>/DynamicServers/NO_NAME_0/
258+ childObjs = ls (returnMap = 'true' , returnType = 'c' )
259+ if not childObjs .isEmpty ():
260+ cd (childObjs [0 ])
261+ if get ('ServerTemplate' ) is not None :
262+ # Cluster is a dynamic cluster if a ServerTemplate MBean is found
263+ ret = cmo
264+ except :
265+ trace ("Ignoring cd() exception for cluster '" + cluster .getName () + "' in getDynamicServerOrNone() and returning None." )
266+ return ret ;
267+
243268 def addGeneratedFile (self , filePath ):
244269 self .generatedFiles .append (filePath )
245270
@@ -366,25 +391,6 @@ def generate(self):
366391 finally :
367392 self .close ()
368393
369- # Work-around bug in off-line WLST where cluster.getDynamicServers() may throw
370- # when there are no 'real' DynamicServers. Exception looks like:
371- # at com.sun.proxy.$Proxy46.getDynamicServers(Unknown Source)
372- # at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
373- # at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
374- # at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
375- # at java.lang.reflect.Method.invoke(Method.java:498)
376- def getDynamicServersOrNone (self ,cluster ):
377- try :
378- ret = cluster .getDynamicServers ()
379- # Dynamic Servers must be configured with a ServerTemplate
380- if ret is not None :
381- if ret .getServerTemplate () is None :
382- ret = None
383- except :
384- trace ("Ignoring getDynamicServers() exception, this is expected." )
385- ret = None
386- return ret
387-
388394 def validateAdminServer (self ):
389395 adminServerName = self .env .getDomain ().getAdminServerName ()
390396 if adminServerName is None :
@@ -405,18 +411,22 @@ def validateAdminServer(self):
405411 def validateDynamicClustersDuplicateServerNamePrefix (self ):
406412 serverNamePrefixes = []
407413 for cluster in self .env .getDomain ().getClusters ():
408- if self .getDynamicServersOrNone (cluster ) is not None :
409- if cluster .getDynamicServers ().getServerNamePrefix () in serverNamePrefixes :
410- self .addError ("The ServerNamePrefix '" + cluster .getDynamicServers ().getServerNamePrefix () + "' specified for WebLogic dynamic cluster " + self .name (cluster ) + "'s dynamic servers is already in use. The ServerNamePrefix must be unique for each WebLogic dynamic cluster." )
414+ dynamicServers = self .env .getDynamicServersOrNone (cluster )
415+ if dynamicServers is not None :
416+ if dynamicServers .getServerNamePrefix () is None :
417+ self .addError ("The ServerNamePrefix is not set for WebLogic dynamic cluster " + self .name (cluster ) + "'s dynamic servers. The ServerNamePrefix must be set for each WebLogic dynamic cluster." )
411418 else :
412- serverNamePrefixes .append (cluster .getDynamicServers ().getServerNamePrefix ())
419+ if dynamicServers .getServerNamePrefix () in serverNamePrefixes :
420+ self .addError ("The ServerNamePrefix '" + dynamicServers .getServerNamePrefix () + "' specified for WebLogic dynamic cluster " + self .name (cluster ) + "'s dynamic servers is already in use. The ServerNamePrefix must be unique for each WebLogic dynamic cluster." )
421+ else :
422+ serverNamePrefixes .append (dynamicServers .getServerNamePrefix ())
413423
414424 def validateClusters (self ):
415425 for cluster in self .env .getDomain ().getClusters ():
416426 self .validateCluster (cluster )
417427
418428 def validateCluster (self , cluster ):
419- if self .getDynamicServersOrNone (cluster ) is None :
429+ if self .env . getDynamicServersOrNone (cluster ) is None :
420430 self .validateNonDynamicCluster (cluster )
421431 else :
422432 self .validateDynamicCluster (cluster )
@@ -560,8 +570,10 @@ def validateDynamicClusterNotReferencedByAnyServers(self, cluster):
560570 self .addError ("The WebLogic dynamic cluster " + self .name (cluster ) + " is referenced by configured server " + self .name (server ) + ", the operator does not support 'mixed clusters' that host both dynamic (templated) servers and configured servers." )
561571
562572 def validateDynamicClusterDynamicServersDoNotUseCalculatedListenPorts (self , cluster ):
563- if cluster .getDynamicServers ().isCalculatedListenPorts () == True :
564- self .addError ("The WebLogic dynamic cluster " + self .name (cluster ) + "'s dynamic servers use calculated listen ports." )
573+ dynamicServers = self .env .getDynamicServersOrNone (cluster )
574+ if dynamicServers is not None :
575+ if dynamicServers .isCalculatedListenPorts () == True :
576+ self .addError ("The WebLogic dynamic cluster " + self .name (cluster ) + "'s dynamic servers use calculated listen ports." )
565577
566578 def validateServerCustomChannelName (self ):
567579 reservedNames = ['default' ,'default-secure' ,'default-admin' ]
@@ -610,13 +622,13 @@ def addConfiguredClusters(self):
610622 def getConfiguredClusters (self ):
611623 rtn = []
612624 for cluster in self .env .getDomain ().getClusters ():
613- if self .getDynamicServersOrNone (cluster ) is None :
625+ if self .env . getDynamicServersOrNone (cluster ) is None :
614626 rtn .append (cluster )
615627 return rtn
616628
617629 def addConfiguredCluster (self , cluster ):
618630 self .writeln ("- name: " + self .name (cluster ))
619- dynamicServers = self .getDynamicServersOrNone (cluster )
631+ dynamicServers = self .env . getDynamicServersOrNone (cluster )
620632 if dynamicServers is not None :
621633 self .indent ();
622634 self .writeln ("dynamicServersConfig:" )
@@ -703,7 +715,7 @@ def addDynamicClusters(self):
703715 def getDynamicClusters (self ):
704716 rtn = []
705717 for cluster in self .env .getDomain ().getClusters ():
706- if self .getDynamicServersOrNone (cluster ) is not None :
718+ if self .env . getDynamicServersOrNone (cluster ) is not None :
707719 rtn .append (cluster )
708720 return rtn
709721
@@ -1195,7 +1207,7 @@ def customizeServerTemplates(self):
11951207
11961208 def customizeServerTemplate (self , template ):
11971209 name = template .getName ()
1198- server_name_prefix = template .getCluster (). getDynamicServers ( ).getServerNamePrefix ()
1210+ server_name_prefix = self . env . getDynamicServersOrNone ( template .getCluster ()).getServerNamePrefix ()
11991211 listen_address = self .env .toDNS1123Legal (self .env .getDomainUID () + "-" + server_name_prefix + "${id}" )
12001212 self .writeln ("<d:server-template>" )
12011213 self .indent ()
0 commit comments