When attempting to use the OData API interface, we are able to get the productinfo information using the following API call:
http://hostname:8981/odata/api/ProductInfo()
However, when trying to get the routers or interfaces information:
http://hostname:8981/odata/api/routers
The following error is encountered:
{
"error": {
"code": "500",
"message": "Application failed while creating response from the data."
}
}
When checking in the odata-wrapper.log file, we see the following exception:
2020-07-20 08:52:53.193 ERROR 8360 --- [request_worker_thread_6] c.c.n.o.p.ODataEntityCollectionProcessor : Read Entity Collection failed: {0}
java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:951)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:77)
at com.ca.nfa.odata.routing.RoutingDataSource.createDataSource(RoutingDataSource.java:158)
at com.ca.nfa.odata.routing.RoutingDataSource.addNewDataSourceToTargetDataSources(RoutingDataSource.java:114)
at com.ca.nfa.odata.routing.RoutingDataSource.determineTargetDataSource(RoutingDataSource.java:90)
at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:169)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:600)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:657)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:688)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:741)
at com.ca.nfa.odata.repository.impl.SQLDataRepositoryClient.performQuery(SQLDataRepositoryClient.java:278)
NFA encrypts database passwords and stores then in the ReporterAnalyzer.ini file. In few odata api call's, we dynamically form the url and in few cases it is uses the encrypted strings to create the connection URLs to connect to the database.
If these encrypted passwords contain the special character ':', the connection URLs will fail. If the 'D' character is part of the password, this special character will be added to the encrypted string. The call for ProductInfo dynamically forms the url while the router or interfaces calls use the encrypted string. This is why the some calls work and other don't.
Release : 10.0
Component : NQRPTA - REPORTERANALYZER
To resolve this, change the NetQos user password using "Password Change Utility" (password should not contain capital D)
Steps:
note: please take backup of the harvester and console reporterAnalyzer files.
Password Change Utility documentation is found here:
https://techdocs.broadcom.com/us/en/ca-enterprise-software/it-operations-management/network-flow-analysis/10-0-0/installing/post-installation-or-upgrade-tasks/configure-mysql-user-password.html