WLST идентифицирует мультиисточник данных.

У меня есть скрипт, который нужно обновить. В настоящее время требуется пароль для всех источников данных, но теперь у нас есть несколько источников данных, а также общие источники данных. Мое требование состоит в том, что всякий раз, когда источник данных является несколькими источниками данных, он должен пропустить это и не запрашивать пароль. Я перечислил текущий сценарий ниже.

def updateJDBCPasswords():

PARAMS_TEMPLATE = '/JDBCSystemResources/%s/JDBCResource/%s/JDBCDriverParams/%s'

domainConfig()

# Get JDBC DataSources
cd("JDBCSystemResources")
dataSources = cmo.getJDBCSystemResources()

edit()
# For each DataSource update the password
for dataSource in dataSources :
    dsName = dataSource.getName()
    password=raw_input("Enter database password for "+ dsName +" : ")
    cd(PARAMS_TEMPLATE % (dsName, dsName, dsName) )
    cmo.setPassword(password)

До сих пор я видел свои темы/блоги, но ни один из них не имеет отношения к моей проблеме. Существует помощь для создания мультиисточников данных, но я не смог найти подсказку, как ее идентифицировать, чтобы удовлетворить мой сценарий.


person user520740    schedule 19.08.2014    source источник


Ответы (2)


Не совсем интуитивно, но в корне дерева serverConfig есть список развертываний, который включает в себя такие вещи, как источники данных jdbc, и это единственное место, где я мог найти mbean, который позволяет вам идентифицировать несколько источников данных. Таким образом, дополнительный код в начале создает список имен, которые следует игнорировать в вашем коде.

serverConfig()

deployments=cmo.getDeployments()

multiDataSources = []

for deployment in deployments:
    if (deployment.getType()=="JDBCMultiPool"):
      multiDataSources.append(deployment.getName())

domainConfig()

# Get JDBC DataSources
cd("JDBCSystemResources")
dataSources = cmo.getJDBCSystemResources()

# For each DataSource update the password
for dataSource in dataSources :
    dsName = dataSource.getName()
    if dsName in multiDataSources:
        print("Skipping multidatasource %s" % dsName)
        continue

    print("Processing data source %s" % dsName)
person Jeremy Gosling    schedule 13.10.2014

Что-то вроде приведенного ниже может помочь:

         cd(_dsDir + '/JDBCDriverParams/NO_NAME_0/Properties/NO_NAME_0/Property/user')
            _userprop = cmo.getValue()

            # Multi datasource wouldn't have user properties and hence skipping the updation of multi datasources
            if _userprop is None:
                continue
            else:
                # continue updating password 
                cmo.setValue(_userval)
                # Next set the password
                cd(_dsDir + '/JDBCDriverParams/NO_NAME_0')
                set('PasswordEncrypted', _dsPassword)
person Mansur Khan    schedule 15.04.2015