Skip to content

Commit 493c7f8

Browse files
jshum2479anpanigr
andauthored
Fixes for MII domain using domainInfo.ServerStartMode: secure (#3642)
* Fixes for MII domain using domainInfo.ServerStartMode: secure Co-authored-by: Antaryami Panigrahi <[email protected]>
1 parent 9fc62dd commit 493c7f8

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,11 +2004,23 @@ def getRealListenPort(template):
20042004

20052005
# Derive the default value for SecureMode of a domain
20062006
def isSecureModeEnabledForDomain(domain):
2007-
secureModeEnabled = false
2008-
if domain.getSecurityConfiguration().getSecureMode() != None:
2009-
secureModeEnabled = domain.getSecurityConfiguration().getSecureMode().isSecureModeEnabled()
2007+
secureModeEnabled = False
2008+
2009+
# Do not use domain.getSecurityConfiguration().getSecureMode()
2010+
# it will result in cie error in MII domain created by ServerStartMode: secure
2011+
# switched to use lsa() to avoid cie not exposing the function
2012+
2013+
cd('/SecurityConfiguration/' + domain.getName())
2014+
childs = ls(returnType='c', returnMap='true')
2015+
if 'SecureMode' in childs:
2016+
cd('SecureMode/NO_NAME_0')
2017+
attributes = ls(returnType='a', returnMap='true')
2018+
if attributes['SecureModeEnabled']:
2019+
secureModeEnabled = True
20102020
else:
20112021
secureModeEnabled = domain.isProductionModeEnabled() and not LegalHelper.versionEarlierThan(domain.getDomainVersion(), "14.1.2.0")
2022+
2023+
20122024
return secureModeEnabled
20132025

20142026
def isAdministrationPortEnabledForDomain(domain):

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

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -376,32 +376,36 @@ def getAdministrationPort(server, topology):
376376
return port
377377

378378

379-
def isAdministrationPortEnabledForServer(server, topology):
379+
def isAdministrationPortEnabledForServer(server, model):
380380
administrationPortEnabled = False
381381
if 'AdministrationPortEnabled' in server:
382382
administrationPortEnabled = server['AdministrationPortEnabled']
383383
else:
384-
administrationPortEnabled = isAdministrationPortEnabledForDomain(topology)
384+
administrationPortEnabled = isAdministrationPortEnabledForDomain(model)
385385
return administrationPortEnabled
386386

387387

388-
def isAdministrationPortEnabledForDomain(topology):
388+
def isAdministrationPortEnabledForDomain(model):
389389
administrationPortEnabled = False
390-
390+
topology = model['topology']
391391
if 'AdministrationPortEnabled' in topology:
392392
administrationPortEnabled = topology['AdministrationPortEnabled']
393393
else:
394394
# AdministrationPortEnabled is not explicitly set so going with the default
395395
# Starting with 14.1.2.0, the domain's AdministrationPortEnabled default is derived from the domain's SecureMode
396-
administrationPortEnabled = isSecureModeEnabledForDomain(topology)
396+
administrationPortEnabled = isSecureModeEnabledForDomain(model)
397397
return administrationPortEnabled
398398

399399

400400
# Derive the default value for SecureMode of a domain
401-
def isSecureModeEnabledForDomain(topology):
401+
def isSecureModeEnabledForDomain(model):
402402
secureModeEnabled = False
403+
topology = model['topology']
404+
domain_info = model['domainInfo']
403405
if 'SecurityConfiguration' in topology and 'SecureMode' in topology['SecurityConfiguration'] and 'SecureModeEnabled' in topology['SecurityConfiguration']['SecureMode']:
404406
secureModeEnabled = topology['SecurityConfiguration']['SecureMode']['SecureModeEnabled']
407+
elif 'ServerStartMode' in domain_info and domain_info['ServerStartMode'] == 'secure':
408+
secureModeEnabled = True
405409
else:
406410
is_production_mode_enabled = False
407411
if 'ProductionModeEnabled' in topology:
@@ -449,7 +453,7 @@ def _get_ssl_listen_port(server):
449453
ssl_listen_port = ssl['ListenPort']
450454
if ssl_listen_port is None:
451455
ssl_listen_port = "7002"
452-
elif ssl is None and isSecureModeEnabledForDomain(model['topology']):
456+
elif ssl is None and isSecureModeEnabledForDomain(model):
453457
ssl_listen_port = "7002"
454458
return ssl_listen_port
455459

@@ -480,8 +484,7 @@ def addAdminChannelPortForwardNetworkAccessPoints(server):
480484
customAdminChannelPort = nap['ListenPort']
481485
_writeAdminChannelPortForwardNAP(name='internal-admin' + str(index), server=server,
482486
listen_port=customAdminChannelPort, protocol='admin')
483-
484-
if isAdministrationPortEnabledForServer(server, model['topology']):
487+
if isAdministrationPortEnabledForServer(server, model):
485488
_writeAdminChannelPortForwardNAP(name='internal-admin', server=server,
486489
listen_port=getAdministrationPort(server, model['topology']), protocol='admin')
487490
elif index == 0:
@@ -493,7 +496,7 @@ def addAdminChannelPortForwardNetworkAccessPoints(server):
493496
ssl_listen_port = ssl['ListenPort']
494497
if ssl_listen_port is None:
495498
ssl_listen_port = "7002"
496-
elif ssl is None and isSecureModeEnabledForDomain(model['topology']):
499+
elif ssl is None and isSecureModeEnabledForDomain(model):
497500
ssl_listen_port = "7002"
498501

499502
if ssl_listen_port is not None:

operator/src/test/python/test_wdt_mii_filter.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def test_readDomainNameFromTopologyYaml(self):
296296

297297
def test_isAdministrationPortEnabledForDomain(self):
298298
model = self.getModel()
299-
self.assertTrue(model_wdt_mii_filter.isAdministrationPortEnabledForDomain(model['topology']))
299+
self.assertTrue(model_wdt_mii_filter.isAdministrationPortEnabledForDomain(model))
300300

301301
def test_isAdministrationPortEnabledForServer(self):
302302
model = self.getModel()
@@ -307,7 +307,15 @@ def test_isAdministrationPortEnabledForServer(self):
307307
# enable Administration port for server
308308
model['topology']['Server']['admin-server']['AdministrationPortEnabled'] = True
309309

310-
self.assertTrue(model_wdt_mii_filter.isAdministrationPortEnabledForServer(model['topology']['Server']['admin-server'], model['topology']))
310+
self.assertTrue(model_wdt_mii_filter.isAdministrationPortEnabledForServer(model['topology']['Server']['admin-server'], model))
311+
312+
def test_isAdministrationPortEnabledForServerFromDomainInfo(self):
313+
model = self.getModel()
314+
315+
# disable Administration port for domain
316+
model['domainInfo']['ServerStartMode'] = 'secure'
317+
318+
self.assertTrue(model_wdt_mii_filter.isAdministrationPortEnabledForServer(model['topology']['Server']['admin-server'], model))
311319

312320
def test_isSecureModeEnabledForDomain(self):
313321
model = self.getModel()
@@ -317,7 +325,7 @@ def test_isSecureModeEnabledForDomain(self):
317325
model['topology']['SecurityConfiguration']['SecureMode'] = {}
318326
model['topology']['SecurityConfiguration']['SecureMode']['SecureModeEnabled'] = True
319327

320-
self.assertTrue(model_wdt_mii_filter.isSecureModeEnabledForDomain(model['topology']))
328+
self.assertTrue(model_wdt_mii_filter.isSecureModeEnabledForDomain(model))
321329

322330

323331
def test_istioVersionRequiresLocalHostBindings(self):

0 commit comments

Comments
 (0)