Search code examples
pythonwebspherejythonwsadminibm-was

WSadmin TypeError: sequence subscript must be integer or slice using AdminConfig.modify


I am trying to create a script in Jython to migrate some applications from was 7 to was 8.5. After I create the Data Source I am stuck for about 2 hours with this error: TypeError: sequence subscript must be integer or slice

The problem appear at line 25 and i have no idea how to solve it. If you need more information let me know. Please help me! Thank you very much!

My code:

if ( len(OracleDataSourceList) > 0 ):
dbuserList=AdminTask.listAuthDataEntries()
for dataSource in OracleDataSourceList:
    datasourceName=dataSource[0]
    dsJNDIName=dataSource[1]
    compAuthAlias=dataSource[2]
    providerName=dataSource[3]
    dataStoreHelperClassName=dataSource[4]
    description=dataSource[5]
    databaseURL=dataSource[6]
    databaseMaxConnections=dataSource[7]
    databaseMinConnections=dataSource[8]
    databaseconnTimeout=dataSource[9]
    databasereapTime=dataSource[10]
    databaseunusedTimeout=dataSource[11]
    databaseagedTimeout=dataSource[12]

    #Create Data Source
    dataSourceId = AdminJDBC.createDataSourceAtScope( scope, providerName, datasourceName, dsJNDIName, dataStoreHelperClassName, databaseURL, [['componentManagedAuthenticationAlias',compAuthAlias],['containerManagedPersistence','true'],['description',description]])

    #Modify connection pool
    connectionPoolList = AdminConfig.list('ConnectionPool', dataSourceId)
    connectionPoolList = AdminUtilities.convertToList(connectionPoolList)
    connectionPoolId = connectionPoolList[0]
    AdminConfig.modify(connectionPoolId, [["maxConnections", databaseMaxConnections]\
                                          ["minConnections", databaseMinConnections]\
                                          ["connTimeout", databaseconnTimeout]\
                                          ["reapTime", databasereapTime]\
                                          ["unusedTimeout", databaseunusedTimeout]\
                                          ["agedTimeout", databaseagedTimeout]\
                                         ])
print 'Saving configuration...'
AdminConfig.save()
print "Configuration saved."

Error:

WASX7017E: Exception received while running file "createDataSource.py"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
   File "<string>", line 25, in ?
TypeError: sequence subscript must be integer or slice

Solution

  • I solved the problem.

    Replace the lines 25:31 with:

    AdminConfig.modify(connectionPoolId, [["maxConnections", databaseMaxConnections], ["minConnections", databaseMinConnections], ["connectionTimeout", databaseconnTimeout], ["reapTime", databasereapTime], ["unusedTimeout", databaseunusedTimeout], ["agedTimeout", databaseagedTimeout]])