NFA O-Data 500 error when to querying routers and Interface details

book

Article ID: 198836

calendar_today

Updated On:

Products

CA Network Flow Analysis (NetQos / NFA)

Issue/Introduction

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)

Cause

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.

Environment

Release : 10.0

Component : NQRPTA - REPORTERANALYZER

Resolution

To resolve this, change the NetQos user password using "Password Change Utility" (password should not contain capital D)
Steps:

  1. Please follow the steps to change the DB user Password from techdocs for both harvester and console.
  2. Restart the OData Service.
  3. In case if any other user contains 'D' please change accordingly, odata uses netqos, archive, harvester users as well to fetch data.

note: please take backup of the harvester and console reporterAnalyzer files.

Additional Information

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