11
11
from wlsdeploy .aliases .model_constants import CALCULATED_LISTEN_PORTS
12
12
from wlsdeploy .aliases .model_constants import CLUSTER
13
13
from wlsdeploy .aliases .model_constants import DYNAMIC_SERVERS
14
+ from wlsdeploy .aliases .model_constants import LISTEN_PORT
15
+ from wlsdeploy .aliases .model_constants import SERVER
14
16
from wlsdeploy .aliases .model_constants import TOPOLOGY
15
17
from wlsdeploy .aliases .validation_codes import ValidationCodes
16
18
from wlsdeploy .aliases .wlst_modes import WlstModes
@@ -64,10 +66,36 @@ def check_clustered_server_ports(model, model_context):
64
66
if dynamic_folder :
65
67
calculated_listen_ports = dynamic_folder [CALCULATED_LISTEN_PORTS ]
66
68
if (calculated_listen_ports is None ) or alias_utils .convert_boolean (calculated_listen_ports ):
67
- _logger .info ('WLSDPLY-20036 ' , CALCULATED_LISTEN_PORTS , cluster_name , class_name = _class_name ,
69
+ _logger .info ('WLSDPLY-20202 ' , CALCULATED_LISTEN_PORTS , CLUSTER , cluster_name , class_name = _class_name ,
68
70
method_name = _method_name )
69
71
dynamic_folder [CALCULATED_LISTEN_PORTS ] = False
70
72
73
+ # be sure every server assigned to a cluster has the same listen port
74
+
75
+ server_port_map = {}
76
+ servers_folder = dictionary_utils .get_dictionary_element (topology_folder , SERVER )
77
+ for server_name , server_fields in servers_folder .items ():
78
+ server_cluster = server_fields [CLUSTER ]
79
+ server_port = server_fields [LISTEN_PORT ]
80
+
81
+ if server_cluster and (server_port is not None ):
82
+ server_port_text = str (server_port )
83
+ if '@@' in server_port_text :
84
+ # prepareModel filters the model before and after it is tokenized,
85
+ # so disregard variable values in the tokenized pass
86
+ continue
87
+
88
+ if server_cluster in server_port_map :
89
+ cluster_info = server_port_map [server_cluster ]
90
+ first_server = cluster_info ["firstServer" ]
91
+ cluster_port = cluster_info ["serverPort" ]
92
+ if server_port_text != cluster_port :
93
+ _logger .warning ('WLSDPLY-20203' , SERVER , first_server , server_name , CLUSTER , server_cluster ,
94
+ LISTEN_PORT , cluster_port , server_port_text , class_name = _class_name ,
95
+ method_name = _method_name )
96
+ else :
97
+ server_port_map [server_cluster ] = {"firstServer" : server_name , "serverPort" : server_port_text }
98
+
71
99
72
100
class OnlineAttributeFilter (ModelTraverse ):
73
101
"""
@@ -89,5 +117,5 @@ def unrecognized_field(self, model_dict, key, model_location):
89
117
result , message = self ._aliases .is_valid_model_attribute_name (model_location , key )
90
118
if result == ValidationCodes .VERSION_INVALID :
91
119
path = self ._aliases .get_model_folder_path (model_location )
92
- _logger .info ('WLSDPLY-20033 ' , key , path , class_name = _class_name , method_name = _method_name )
120
+ _logger .info ('WLSDPLY-20201 ' , key , path , class_name = _class_name , method_name = _method_name )
93
121
del model_dict [key ]
0 commit comments