summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/data-provider/provider/src/main/java
diff options
context:
space:
mode:
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>2023-03-02 12:06:07 +0530
committerRavi Pendurty <ravi.pendurty@highstreet-technologies.com>2023-03-10 10:46:55 +0530
commit6b8e4f12fc66a64fa5c5498d06891f1f5f1189ac (patch)
tree6414988944a78393509923a5ace70d66db0b29bd /sdnr/wt/data-provider/provider/src/main/java
parentd944abfab1a53a462868ae805ab5372935f854ef (diff)
Upgrade parents to 2.5.4-SNAPSHOT
Code changes as a result of changes induced by ODL Chlorine SR1 Issue-ID: CCSDK-3856 Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com> Change-Id: Ic08786f050e58bdb8371c8f8c25fb0db9f258cd4 Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/data-provider/provider/src/main/java')
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/EsDataObjectReaderWriter2.java4
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessor.java1
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorInventory.java81
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorPm.java4
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/FaultEntityManager.java10
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseEventsService.java16
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseMaintenanceService.java2
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/rpctypehelper/QueryByFilter.java10
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/impl/ElasticSearchDataProvider.java30
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbDatabaseDataProvider.java16
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbInventoryTreeProvider.java35
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeChildObject.java187
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java26
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeObject.java148
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/MsServlet.java7
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/UserdataHttpServlet.java19
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java9
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java2
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/yangschema/YangSchemaHttpServlet.java8
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderImpl.java4
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java25
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataTreeProviderImpl.java310
22 files changed, 314 insertions, 640 deletions
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/EsDataObjectReaderWriter2.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/EsDataObjectReaderWriter2.java
index a10864c96..dbb73bdad 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/EsDataObjectReaderWriter2.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/EsDataObjectReaderWriter2.java
@@ -28,7 +28,6 @@ import java.lang.reflect.InvocationTargetException;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.eclipse.jdt.annotation.NonNull;
import org.onap.ccsdk.features.sdnr.wt.common.database.DatabaseClient;
import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
@@ -36,7 +35,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper2;
import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
-import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,7 +58,7 @@ public class EsDataObjectReaderWriter2<T extends DataObject> {
private String dataTypeName;
/** Elasticsearch Database client to be used **/
- private DatabaseClient db;
+ protected DatabaseClient db;
/** Mapper with configuration to use opendaylight yang-tools builder pattern for object creation **/
private YangToolsMapper2<T> yangtoolsMapper;
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessor.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessor.java
index ec467eab1..8319d5d4f 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessor.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessor.java
@@ -57,4 +57,5 @@ public class DataObjectAcessor<T extends DataObject> extends EsDataObjectReaderW
SearchResult<T> result = doReadAll(queryBuilder, ignoreException);
return new QueryResult<>(queryByFilter, result);
}
+
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorInventory.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorInventory.java
new file mode 100644
index 000000000..622333403
--- /dev/null
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorInventory.java
@@ -0,0 +1,81 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor;
+
+import java.io.IOException;
+import org.onap.ccsdk.features.sdnr.wt.common.database.ExtRestClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.AggregationEntries;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.rpctypehelper.QueryByFilter;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.rpctypehelper.QueryResult;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DataObjectAcessorInventory<T extends DataObject> extends DataObjectAcessorWithId<T> {
+
+ private final Logger LOG = LoggerFactory.getLogger(DataObjectAcessorInventory.class);
+
+ private static final String KEY = "node-id";
+
+ private ExtRestClient dbClient;
+
+ public DataObjectAcessorInventory(HtDatabaseClient dbClient, Entity entity, Class<T> clazz,
+ boolean doFullsizeRequest) throws ClassNotFoundException {
+ super(dbClient, entity, clazz, doFullsizeRequest);
+ LOG.info("Create DataObjectAcessorInventory");
+ this.dbClient = dbClient;
+ }
+
+
+ /**
+ * get aggregated devices list
+ *
+ * @param input filter should be empty/no filter handled, only sortorder for KEY ('node-name')
+ * @return
+ * @throws IOException
+ */
+ public QueryResult<String> getDataDeviceList(EntityInput input) {
+
+ QueryByFilter queryByFilter = new QueryByFilter(input);
+ SearchRequest request =
+ queryByFilter.getSearchRequestAggregated(KEY,this.getDataTypeName(), this.getDataTypeName(), this.doFullsizeRequest);
+ try {
+ SearchResponse response = this.dbClient.search(request);
+ AggregationEntries aggs = response.getAggregations(KEY);
+ String[] uuids =
+ aggs.getKeysAsPagedStringList(queryByFilter.getPageSize(), queryByFilter.getPageStartIndex());
+ long totalSize = aggs.size();
+ return new QueryResult<String>(queryByFilter.getPage(), queryByFilter.getPageSize(),
+ new SearchResult<String>(uuids, totalSize));
+ } catch (IOException e) {
+ throw new RuntimeException("problem reading nodes for req=" + request, e);
+ }
+
+ }
+
+}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorPm.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorPm.java
index 04849004f..8e04db07b 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorPm.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/acessor/DataObjectAcessorPm.java
@@ -72,7 +72,7 @@ public class DataObjectAcessorPm<T extends DataObject> extends DataObjectAcessor
public DataObjectAcessorPm(HtDatabaseClient dbClient, Intervall mode, Entity entity, Class<T> clazz,
boolean doFullsizeRequest) throws ClassNotFoundException {
super(dbClient, entity, clazz, doFullsizeRequest);
- LOG.info("DataObjectAcessorPm");
+ LOG.info("Create DataObjectAcessorPm");
this.dbClient = dbClient;
this.mode = mode;
}
@@ -113,7 +113,7 @@ public class DataObjectAcessorPm<T extends DataObject> extends DataObjectAcessor
QueryByFilter queryByFilter = new QueryByFilter(input);
SearchRequest request =
- queryByFilter.getSearchRequestBySortOrder(NODE_KEY, UUID_KEY, mode.getIndex(), mode.getType(), this.doFullsizeRequest);
+ queryByFilter.getSearchRequestAggregated(NODE_KEY, mode.getIndex(), mode.getType(), this.doFullsizeRequest);
try {
SearchResponse response = this.dbClient.search(request);
AggregationEntries aggs = response.getAggregations(KEY);
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/FaultEntityManager.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/FaultEntityManager.java
index 64156dc07..708467d0d 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/FaultEntityManager.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/FaultEntityManager.java
@@ -21,8 +21,6 @@
*/
package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.entity;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.entity.DatabaseIdGenerator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Fault;
@@ -38,7 +36,7 @@ public class FaultEntityManager {
/**
* Specific problems are not moving into current problem list
- *
+ *
* @param problemName to be verified
* @return true if problem is current
*/
@@ -52,7 +50,7 @@ public class FaultEntityManager {
/**
* Specific problems are not moving into current problem list
- *
+ *
* @param fault to be verified
* @return true if cleared indication
*/
@@ -62,7 +60,7 @@ public class FaultEntityManager {
/**
* Create a specific ES id for the current log.
- *
+ *
* @return a string with the generated ES Id
*/
public static String genSpecificEsId(String nodeName, String objectId, String problemName) {
@@ -80,7 +78,7 @@ public class FaultEntityManager {
/**
* Create Es id
- *
+ *
* @param fault used to create uuid for faultcurrent
* @return String with Id
*/
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseEventsService.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseEventsService.java
index 9cfe4e50d..8367a87d3 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseEventsService.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseEventsService.java
@@ -38,7 +38,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.queries.BoolQueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.RangeQueryBuilder;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.EsDataObjectReaderWriter2;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.ArchiveCleanProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataInconsistencyException;
@@ -97,16 +96,11 @@ public class HtDatabaseEventsService implements ArchiveCleanProvider, DataProvid
private final EsDataObjectReaderWriter2<GuicutthroughEntity> guiCutThroughDB;
private final EsDataObjectReaderWriter2<PmdataEntity> pmData15mDB;
private final EsDataObjectReaderWriter2<PmdataEntity> pmData24hDB;
-
- @SuppressWarnings("unused")
- private final DatabaseDataProvider dataProvider;
// --- Construct and initialize
- public HtDatabaseEventsService(HtDatabaseClient client, DatabaseDataProvider elasticSearchDataProvider)
- throws Exception {
+ public HtDatabaseEventsService(HtDatabaseClient client) throws Exception {
LOG.info("Create {} start", HtDatabaseEventsService.class);
- this.dataProvider = elasticSearchDataProvider;
try {
// Create control structure
@@ -124,8 +118,8 @@ public class HtDatabaseEventsService implements ArchiveCleanProvider, DataProvid
eventRWFaultLogDB = new EsDataObjectReaderWriter2<>(client, Entity.Faultlog, FaultlogEntity.class,
FaultlogBuilder.class);
- eventRWFCMLogDB = new EsDataObjectReaderWriter2<>(client, Entity.Cmlog, CmlogEntity.class,
- CmlogBuilder.class);
+ eventRWFCMLogDB =
+ new EsDataObjectReaderWriter2<>(client, Entity.Cmlog, CmlogEntity.class, CmlogBuilder.class);
eventRWConnectionLogDB = new EsDataObjectReaderWriter2<>(client, Entity.Connectionlog,
ConnectionlogEntity.class, ConnectionlogBuilder.class);
@@ -460,7 +454,7 @@ public class HtDatabaseEventsService implements ArchiveCleanProvider, DataProvid
@Override
public boolean updateNetworkConnection22(NetworkElementConnectionEntity networkElementConnectionEntitiy,
String nodeId) {
- LOG.info("update networkelement-connection for {} with data {}", nodeId, networkElementConnectionEntitiy);
+ LOG.debug("update networkelement-connection for {} with data {}", nodeId, networkElementConnectionEntitiy);
return this.networkelementConnectionDB.updateOrCreate(networkElementConnectionEntitiy, nodeId,
Arrays.asList("is-required", "username", "password")) != null;
// NetworkElementConnectionEntity e =
@@ -530,7 +524,7 @@ public class HtDatabaseEventsService implements ArchiveCleanProvider, DataProvid
QueryBuilder queryFaultLog = EsFaultLogDevicemanager.getQueryForTimeStamp(netconfTimeStamp);
numberOfElements += eventRWFaultLogDB.doReadAll(queryFaultLog).getTotal();
- QueryBuilder queryCMLog = EsCMLogDevicemanager.getQueryForTimeStamp(netconfTimeStamp);
+ QueryBuilder queryCMLog = EsCMLogDevicemanager.getQueryForTimeStamp(netconfTimeStamp);
numberOfElements += eventRWFCMLogDB.doReadAll(queryCMLog).getTotal();
return numberOfElements;
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseMaintenanceService.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseMaintenanceService.java
index 9f4c0f399..c280f4fb3 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseMaintenanceService.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/entity/HtDatabaseMaintenanceService.java
@@ -80,7 +80,7 @@ public class HtDatabaseMaintenanceService implements HtDatabaseMaintenance {
if (maintenanceRW.write(m, m.getNodeId()) == null) {
throw new IllegalArgumentException("Problem writing to database: " + m.getId());
}
- LOG.info("Wrote maintenance object {}", m.toString());
+ LOG.debug("Wrote maintenance object {}", m.toString());
}
return m;
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/rpctypehelper/QueryByFilter.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/rpctypehelper/QueryByFilter.java
index 69f9bcc29..51584484b 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/rpctypehelper/QueryByFilter.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/data/rpctypehelper/QueryByFilter.java
@@ -130,16 +130,16 @@ public class QueryByFilter {
}
}
- public SearchRequest getSearchRequestBySortOrder(String nodeKey, String uuidKey, String index, String dataType,
- boolean doFullsizeRequest) {
- Sortorder soNode = getSortOrder(sortOrder, nodeKey);
+ public SearchRequest getSearchRequestAggregated(String aggregationKey, String index, String dataType,
+ boolean doFullsizeRequest) {
+ Sortorder soNode = getSortOrder(sortOrder, aggregationKey);
SearchRequest request = new SearchRequest(index, dataType);
QueryBuilder query = null;
if (soNode != null) {
query = QueryBuilders.matchAllQuery().setFullsizeRequest(doFullsizeRequest)
- .aggregations(nodeKey, convert(soNode.getSortorder())).size(0);
+ .aggregations(aggregationKey, convert(soNode.getSortorder())).size(0);
} else {
- query = QueryBuilders.matchAllQuery().setFullsizeRequest(doFullsizeRequest).aggregations(nodeKey).size(0);
+ query = QueryBuilders.matchAllQuery().setFullsizeRequest(doFullsizeRequest).aggregations(aggregationKey).size(0);
}
request.setQuery(query);
return request;
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/impl/ElasticSearchDataProvider.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/impl/ElasticSearchDataProvider.java
index 753930cdd..71372275a 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/impl/ElasticSearchDataProvider.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/elasticsearch/impl/ElasticSearchDataProvider.java
@@ -29,8 +29,8 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.EsConfig;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor.DataObjectAcessorInventory;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor.DataObjectAcessorPm;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor.DataObjectAcessorPm.Intervall;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor.DataObjectAcessorStatus;
@@ -38,10 +38,13 @@ import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.entity.HtDatabaseEventsService;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.entity.HtDatabaseMaintenanceService;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.rpctypehelper.QueryResult;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.impl.DataTreeProviderImpl;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMediatorserver;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtUserdataManager;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.InventoryTreeProvider;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
@@ -65,6 +68,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryDeviceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
@@ -82,6 +86,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -100,7 +105,7 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data> mediatorserverRW;
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> maintenanceRW;
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.gui.cut.through.entry.output.Data> guicutthroughRW;
- private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> equipmentRW;
+ private final DataObjectAcessorInventory<Data> equipmentRW;
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> connnectionlogRW;
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data> eventlogRW;
private final DataObjectAcessorWithId<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data> networkelementConnectionRW;
@@ -111,6 +116,7 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
private final HtDatabaseEventsService databaseService;
private final HtDatabaseMaintenanceService databaseMaintenanceService;
private final HtUserdataManager usermanager;
+ private final InventoryTreeProvider inventoryTreeProvider;
private final HtDatabaseMediatorserver dbMediatorServerService = new HtDatabaseMediatorserver() {
@@ -158,7 +164,7 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
doFullsizeRequests);
this.guicutthroughRW.setWriteInterface(Guicutthrough.class);
- this.equipmentRW = new DataObjectAcessorWithId<>(dbClient, Entity.Inventoryequipment,
+ this.equipmentRW = new DataObjectAcessorInventory<>(dbClient, Entity.Inventoryequipment,
org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data.class,
doFullsizeRequests);
@@ -197,9 +203,10 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
this.readStatus = new DataObjectAcessorStatus(dbClient, Entity.Faultcurrent, doFullsizeRequests);
- this.databaseService = new HtDatabaseEventsService(dbClient, this);
+ this.databaseService = new HtDatabaseEventsService(dbClient);
this.databaseMaintenanceService = new HtDatabaseMaintenanceService(dbClient);
this.usermanager = new HtUserdataManagerImpl(this.dbClient);
+ this.inventoryTreeProvider = new DataTreeProviderImpl(this.dbClient);
}
/*-------------------------
@@ -297,6 +304,17 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
}
@Override
+ public ReadInventoryDeviceListOutputBuilder readInventoryDeviceList(EntityInput input) {
+ ReadInventoryDeviceListOutputBuilder outputBuilder = new ReadInventoryDeviceListOutputBuilder();
+ QueryResult<String> result = equipmentRW.getDataDeviceList(input);
+ outputBuilder.setPagination(
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.device.list.output.PaginationBuilder(
+ result.getPagination()).build());
+ outputBuilder.setData(result.getResult().getHitSets());
+ return outputBuilder;
+ }
+
+ @Override
public ReadConnectionlogListOutputBuilder readConnectionlogList(EntityInput input) {
ReadConnectionlogListOutputBuilder outputBuilder = new ReadConnectionlogListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> result =
@@ -547,5 +565,9 @@ public class ElasticSearchDataProvider implements DatabaseDataProvider {
return this.usermanager;
}
+ @Override
+ public InventoryTreeProvider getInventoryTreeProvider() {
+ return this.inventoryTreeProvider;
+ }
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbDatabaseDataProvider.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbDatabaseDataProvider.java
index 54cf32ce0..02b58bf72 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbDatabaseDataProvider.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbDatabaseDataProvider.java
@@ -24,11 +24,12 @@ package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.nodb;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMediatorserver;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtUserdataManager;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.InventoryTreeProvider;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMaintenanceOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.CreateMediatorServerInput;
@@ -48,6 +49,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryDeviceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
@@ -72,12 +74,14 @@ public class NoDbDatabaseDataProvider implements DatabaseDataProvider {
private final HtDatabaseMediatorserver mediatorserver;
private final HtDatabaseMaintenance maintenance;
private final DataProvider dataprovider;
+ private final InventoryTreeProvider inventoryTreeProvider;
public NoDbDatabaseDataProvider() {
this.usermanger = new NoDbHtUserdataManager();
this.mediatorserver = new NoDbHtDatabaseMediatorserver();
this.maintenance = new NoDbHtDatabaseMaintenance();
this.dataprovider = new NoDbDataProvider();
+ this.inventoryTreeProvider = new NoDbInventoryTreeProvider();
}
@Override
public HtDatabaseClient getRawClient() {
@@ -241,4 +245,14 @@ public class NoDbDatabaseDataProvider implements DatabaseDataProvider {
public HtUserdataManager getUserManager() {
return this.usermanger;
}
+
+ @Override
+ public InventoryTreeProvider getInventoryTreeProvider() {
+ return this.inventoryTreeProvider;
+ }
+
+ @Override
+ public ReadInventoryDeviceListOutputBuilder readInventoryDeviceList(EntityInput input) {
+ return new ReadInventoryDeviceListOutputBuilder();
+ }
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbInventoryTreeProvider.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbInventoryTreeProvider.java
new file mode 100644
index 000000000..ad2960f64
--- /dev/null
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/nodb/NoDbInventoryTreeProvider.java
@@ -0,0 +1,35 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2023 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.nodb;
+
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.InventoryTreeProvider;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.DataTreeObject;
+
+import java.io.IOException;
+import java.util.List;
+
+public class NoDbInventoryTreeProvider implements InventoryTreeProvider {
+ @Override
+ public DataTreeObject readInventoryTree(List<String> tree, String filter) throws IOException {
+ return new DataTreeObject("","");
+ }
+}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeChildObject.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeChildObject.java
deleted file mode 100644
index 05e6d2f13..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeChildObject.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP : ccsdk features
- * ================================================================================
- * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
- * All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- *
- */
-package org.onap.ccsdk.features.sdnr.wt.dataprovider.http;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import org.json.JSONObject;
-
-public class DataTreeChildObject {
-
- private final String label;
-// private final String ownSeverity;
-// private final String childrenSeveritySummary;
- private final boolean isMatch;
- private final Map<String, DataTreeChildObject> children;
- private final Map<String, Object> properties;
-
- public boolean isMatch() {
- return this.isMatch;
- }
-
- public DataTreeChildObject(String label, boolean isMatch, Map<String, DataTreeChildObject> children,
- String ownSeverity, String childrenSeveritySummary) {
- this.label = label;
- this.isMatch = isMatch;
- this.children = children;
-// this.ownSeverity = ownSeverity;
-// this.childrenSeveritySummary = childrenSeveritySummary;
- this.properties = new HashMap<>();
- }
-
- public DataTreeChildObject setProperty(String key, Object value) {
- this.properties.put(key, value);
- return this;
- }
-
- public Object getProperty(String key, Object defaultValue) {
- return this.properties.getOrDefault(key, defaultValue);
- }
-
- /**
- * @param string
- * @param b
- */
- public DataTreeChildObject(String label, boolean isMatch) {
- this(label, isMatch, new HashMap<>(), null, null);
- }
-
- /**
- * @param treeLevel
- * @param id
- * @param data
- * @param childKey
- * @param parentKey
- * @return
- */
- public boolean putChild(long treeLevel, String id, DataTreeChildObject data, String parentKey, String childKey) {
- Object itemValue;
- Object itemValueToMatch = data.getProperty(parentKey, null);
- if (itemValueToMatch == null) {
- return false;
- }
- if (treeLevel > 0) {
- if (this.children != null) {
- for (DataTreeChildObject child : this.children.values()) {
- if (child.putChild(treeLevel - 1, id, data, parentKey, childKey)) {
- return true;
- }
- }
- }
- } else {
- itemValue = this.getProperty(childKey, null);
- if (itemValue != null && itemValue.equals(itemValueToMatch)) {
- this.children.put(id, data);
- return true;
- }
- }
- return false;
- }
-
- /**
- * @param treeLevel
- * @param id
- * @param data
- * @param parentKey
- * @param childKey
- * @return
- */
- public boolean putChildIfNotExists(long treeLevel, String id, DataTreeChildObject data, String parentKey,
- String childKey) {
- Object itemValue;
- Object itemValueToMatch = data.getProperty(parentKey, null);
- if (itemValueToMatch == null) {
- return false;
- }
- if (treeLevel > 0) {
- if (this.children != null) {
- for (DataTreeChildObject child : this.children.values()) {
- if (child.putChildIfNotExists(treeLevel - 1, id, data, parentKey, childKey)) {
- return true;
- }
- }
- }
- } else {
- itemValue = this.getProperty(childKey, null);
- if (itemValue != null && itemValue.equals(itemValueToMatch)) {
- if (!this.children.containsKey(id)) {
- this.children.put(id, data);
- }
- }
- }
- return false;
- }
-
- /**
- * @return
- */
- public JSONObject toJSONObject() {
- JSONObject o = new JSONObject();
- o.put("label", this.label);
- o.put("isMatch", this.isMatch);
- JSONObject c = new JSONObject();
- if (this.children != null) {
- for (Entry<String, DataTreeChildObject> entry : this.children.entrySet()) {
- c.put(entry.getKey(), entry.getValue().toJSONObject());
- }
- }
- o.put("children", c);
- //o.put("ownSeverity", null);
- //o.put("childrenSeveritySummary", null);
- return o;
- }
-
- public boolean hasChildMatching() {
- boolean match = false;
- for (DataTreeChildObject child : this.children.values()) {
- match = match || child.hasChildMatching() || this.isMatch;
- if (match) {
- break;
- }
- }
- return match;
- }
-
- /**
- *
- */
- public void removeUnmatchedPaths() {
- List<String> toRemove = new ArrayList<>();
- for (Entry<String, DataTreeChildObject> entry : this.children.entrySet()) {
- if (!(entry.getValue().hasChildMatching() || entry.getValue().isMatch)) {
- toRemove.add(entry.getKey());
- } else {
- entry.getValue().removeUnmatchedPaths();
- }
- }
- for (String key : toRemove) {
- this.children.remove(key);
- }
- }
-
- public boolean hasChildren() {
- return this.children!=null && !this.children.isEmpty();
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
index 3c4a7621b..2f7b9e3fc 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
@@ -32,14 +32,18 @@ import java.util.List;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
-import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.impl.DataTreeProviderImpl;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.InventoryTreeProvider;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.DataTreeObject;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,22 +51,22 @@ import org.slf4j.LoggerFactory;
* @author Michael Dürre
*
*/
+
+@HttpWhiteboardServletPattern("/tree/*")
+@HttpWhiteboardServletName("DataTreeHttpServlet")
+@Component(service = Servlet.class)
public class DataTreeHttpServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
- private final DataTreeProviderImpl dataTreeProvider;
+ private InventoryTreeProvider dataTreeProvider;
private static final Logger LOG = LoggerFactory.getLogger(DataTreeHttpServlet.class);
public DataTreeHttpServlet() {
super();
- this.dataTreeProvider = new DataTreeProviderImpl();
}
- /**
- * @param client
- */
- public void setDatabaseClient(HtDatabaseClient client) {
- this.dataTreeProvider.setDatabaseClient(client);
+ public void setInventoryTreeProvider(InventoryTreeProvider provider) {
+ this.dataTreeProvider = provider;
}
@@ -109,7 +113,7 @@ public class DataTreeHttpServlet extends HttpServlet {
LOG.debug("GET request for {}", uri);
final EntityWithTree e = getEntity(uri);
if (e != null) {
- LOG.info("GET request for {} to e={} with tree={}", uri, e.entity, e.tree);
+ LOG.debug("GET request for {} to e={} with tree={}", uri, e.entity, e.tree);
switch (e.entity) {
case Inventoryequipment:
DataTreeObject o = this.dataTreeProvider.readInventoryTree(e.tree, null);
@@ -170,7 +174,7 @@ public class DataTreeHttpServlet extends HttpServlet {
final Matcher matcher = pattern.matcher(uri);
if (matcher.find() && matcher.groupCount() > 0) {
try {
- Optional<Entity> oe = Entity.forName(matcher.group(1));
+ Optional<Entity> oe = Optional.ofNullable(Entity.forName(matcher.group(1)));
if (oe.isPresent()) {
return new EntityWithTree(oe.get(), matcher.groupCount() > 1 ? matcher.group(2) : null);
} else {
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeObject.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeObject.java
deleted file mode 100644
index f12ff3deb..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeObject.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP : ccsdk features
- * ================================================================================
- * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
- * All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- *
- */
-package org.onap.ccsdk.features.sdnr.wt.dataprovider.http;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import org.json.JSONObject;
-
-public class DataTreeObject extends HashMap<String, DataTreeChildObject> {
-
- private static final long serialVersionUID = 1L;
- private final String parentKey;
- private final String childKey;
-
- public DataTreeObject createTreeByPath(String[] pathFilter) {
-
- if (pathFilter != null && pathFilter.length > 0) {
- for (String key : this.keySet()) {
- if (key.equals(pathFilter[0])) {
- DataTreeChildObject o = this.getChildElemByPath(this.get(key), slice(pathFilter, 1));
- DataTreeObject r = new DataTreeObject(this.parentKey, this.childKey);
- r.put(key, o);
- return r;
- }
- }
- }
-
- return null;
-
- }
-
- private DataTreeChildObject getChildElemByPath(DataTreeChildObject source, String[] pathFilter) {
-
- if (pathFilter != null && pathFilter.length > 0) {
- // for(String key:source..keySet()) {
- // if(key.equals(pathFilter[0])){
- // DataTreeChildObject o= this.getChildElemByPath(this.get(key),slice(pathFilter,1));
- // }
- // }
- }
-
- return null;
- }
-
- public DataTreeObject(String parentKey, String childKey) {
- this.parentKey = parentKey;
- this.childKey = childKey;
- }
-
- /**
- * @param treeLevel
- * @param id
- * @param data
- */
- public void put(long treeLevel, String id, DataTreeChildObject data) {
- for (DataTreeChildObject entry : this.values()) {
- if (entry.putChild(treeLevel, id, data, this.parentKey, this.childKey)) {
- break;
- }
- }
-
- }
-
- /**
- *
- */
- public String toJSON() {
- JSONObject o = new JSONObject();
- for (Entry<String, DataTreeChildObject> entry : this.entrySet()) {
- o.put(entry.getKey(), entry.getValue().toJSONObject());
- }
- return o.toString();
- }
-
- /**
- *
- */
- public void removeUnmatchedPaths() {
- List<String> toRemove = new ArrayList<>();
- for (Entry<String,DataTreeChildObject> entry : this.entrySet()) {
- entry.getValue().removeUnmatchedPaths();
- if(!entry.getValue().isMatch() && !entry.getValue().hasChildren()) {
- toRemove.add(entry.getKey());
- }
- }
- for(String toRemoveKey:toRemove) {
- this.remove(toRemoveKey);
- }
-
- }
-
- /**
- * @param treeLevel
- * @param id
- * @param setProperty
- */
- public void putIfNotExists(long treeLevel, String id, DataTreeChildObject data) {
- for (DataTreeChildObject entry : this.values()) {
- if (entry.putChildIfNotExists(treeLevel, id, data, this.parentKey, this.childKey)) {
- break;
- }
- }
- }
-
- /**
- * @param id
- * @param data
- */
- public void putIfNotExists(String id, DataTreeChildObject data) {
- if (!this.containsKey(id)) {
- this.put(id, data);
- }
- }
-
- /**
- * @param source
- * @param i
- * @return
- */
- public static String[] slice(String[] source, int start) {
- String[] r = new String[source.length - start];
- for (int i = 0; i < r.length; i++) {
- r[i] = source[i + start];
- }
- return r;
-
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/MsServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/MsServlet.java
index 103dec70d..85658d439 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/MsServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/MsServlet.java
@@ -22,15 +22,22 @@
package org.onap.ccsdk.features.sdnr.wt.dataprovider.http;
import java.io.IOException;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.onap.ccsdk.features.sdnr.wt.common.http.BaseServlet;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.impl.MediatorServerDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMediatorserver;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@HttpWhiteboardServletPattern("/ms/*")
+@HttpWhiteboardServletName("MsServlet")
+@Component(service = Servlet.class)
public class MsServlet extends BaseServlet {
/**
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/UserdataHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/UserdataHttpServlet.java
index b51d2a6df..92bccce6f 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/UserdataHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/UserdataHttpServlet.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -33,9 +34,15 @@ import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.onap.ccsdk.features.sdnr.wt.common.http.BaseHTTPClient;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtUserdataManager;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@HttpWhiteboardServletPattern({"/userdata","/userdata/*"})
+@HttpWhiteboardServletName("UserdataHttpServlet")
+@Component(service = Servlet.class)
public class UserdataHttpServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@@ -50,10 +57,10 @@ public class UserdataHttpServlet extends HttpServlet {
final String uri = req.getRequestURI();
final Matcher matcher = PATTERN.matcher(uri);
if (matcher.find()) {
- LOG.info("GET found match");
+ LOG.debug("GET found match");
this.handleGetRequest(req, resp, matcher.groupCount() > 0 ? matcher.group(1) : null);
} else {
- LOG.info("no valid request");
+ LOG.debug("no valid request");
super.doGet(req, resp);
}
}
@@ -63,11 +70,11 @@ public class UserdataHttpServlet extends HttpServlet {
final String uri = req.getRequestURI();
final Matcher matcher = PATTERN.matcher(uri);
if (matcher.find()) {
- LOG.info("PUT found match");
+ LOG.debug("PUT found match");
final String payload = getPayload(req);
this.handlePutRequest(req, resp, payload, matcher.groupCount() > 0 ? matcher.group(1) : null);
} else {
- LOG.info("no valid request");
+ LOG.debug("no valid request");
super.doPut(req, resp);
}
}
@@ -81,10 +88,10 @@ public class UserdataHttpServlet extends HttpServlet {
final String uri = req.getRequestURI();
final Matcher matcher = PATTERN.matcher(uri);
if (matcher.find()) {
- LOG.info("DELETE found match");
+ LOG.debug("DELETE found match");
this.handleDeleteRequest(req, resp, matcher.groupCount() > 0 ? matcher.group(1) : null);
} else {
- LOG.info("no valid request");
+ LOG.debug("no valid request");
super.doPut(req, resp);
}
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
index 40a46e6fb..45bd80cd6 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
@@ -29,6 +29,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
@@ -41,9 +42,16 @@ import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStamp
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ServiceScope;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@HttpWhiteboardServletPattern("/about")
+@HttpWhiteboardServletName("AboutHttpServlet")
+@Component(service = Servlet.class)
public class AboutHttpServlet extends HttpServlet {
/**
@@ -98,7 +106,6 @@ public class AboutHttpServlet extends HttpServlet {
this.BUNDLESTATE_LUT.put(Bundle.STARTING, "starting");
this.BUNDLESTATE_LUT.put(Bundle.STOPPING, "stopping");
this.BUNDLESTATE_LUT.put(Bundle.ACTIVE, "active");
-
}
protected String getGroupIdOrDefault(String def) {
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
index 868bf7ec6..c623d9955 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
@@ -72,6 +72,8 @@ public class ODLVersionLUT {
}
if(odlMdsalVersionLUT==null) {
odlMdsalVersionLUT = new HashMap<>();
+ odlMdsalVersionLUT.put("10.0.2","chlorine-SR0 (0.17.0)");
+ odlMdsalVersionLUT.put("9.0.5","sulfur-SR2 (0.16.2)");
odlMdsalVersionLUT.put("9.0.4","sulfur-SR1 (0.16.1)");
odlMdsalVersionLUT.put("9.0.2","sulfur-SR0 (0.16.0)");
odlMdsalVersionLUT.put("8.0.11","phosphorus-SR2 (0.15.2)");
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/yangschema/YangSchemaHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/yangschema/YangSchemaHttpServlet.java
index 86f67b1de..f9fa2e931 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/yangschema/YangSchemaHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/yangschema/YangSchemaHttpServlet.java
@@ -23,13 +23,21 @@ package org.onap.ccsdk.features.sdnr.wt.dataprovider.http.yangschema;
import java.io.IOException;
import java.text.ParseException;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName;
+import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@HttpWhiteboardServletPattern("/yang-schema/*")
+@HttpWhiteboardServletName("YangSchemaHttpServlet")
+@Component(service = Servlet.class)
public class YangSchemaHttpServlet extends HttpServlet {
/**
*
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderImpl.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderImpl.java
index e06a1a9a2..66ffdf8b3 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderImpl.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderImpl.java
@@ -87,7 +87,7 @@ public class DataProviderImpl implements IEntityDataProvider, AutoCloseable {
try {
// Start RPC Service
this.rpcApiService = new DataProviderServiceImpl(rpcProviderService, this.mediatorServerServlet, this.dataBroker);
- this.treeServlet.setDatabaseClient(this.rpcApiService.getRawClient());
+ this.treeServlet.setInventoryTreeProvider(this.rpcApiService.getInventoryTreeProvider());
this.userdataServlet.setDatabaseClient(this.rpcApiService.getHtDatabaseUserManager());
LOG.info("Session Initiated end. Initialization done");
} catch (Exception e) {
@@ -109,7 +109,7 @@ public class DataProviderImpl implements IEntityDataProvider, AutoCloseable {
/**
* Used to close all Services, that should support AutoCloseable Pattern
*
- * @param toClose
+ * @param toCloseList
* @throws Exception
*/
private void close(AutoCloseable... toCloseList) throws Exception {
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
index b75108ab2..d21d50f83 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
@@ -27,9 +27,6 @@ import com.google.common.util.concurrent.ListenableFuture;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
@@ -39,15 +36,16 @@ import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNull;
import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.impl.ElasticSearchDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.nodb.NoDbDatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.SqlDBDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.http.MsServlet;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DatabaseDataProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtUserdataManager;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.IEsConfig;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.InventoryTreeProvider;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.SdnrDbType;
import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
import org.opendaylight.mdsal.binding.api.DataBroker;
@@ -82,6 +80,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryDeviceListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryDeviceListOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListInput;
@@ -141,7 +141,6 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
private final DatabaseDataProvider dataProvider;
private final ConfigurationFileRepresentation configuration;
private final DataProviderConfig dbConfig;
- private final HtUserdataManager dbUserManager;
private final DataBroker dataBroker;
private final MsServlet mediatorServerServlet;
@@ -161,7 +160,6 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
else {
this.dataProvider = new NoDbDatabaseDataProvider();
}
- this.dbUserManager = this.dataProvider.getUserManager();
this.dataProvider.waitForYellowDatabaseStatus(DATABASE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
mediatorServerServlet.setDataProvider(this.dataProvider.getHtDatabaseMediatorServer());
// Register ourselves as the REST API RPC implementation
@@ -296,6 +294,15 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
}
@Override
+ public ListenableFuture<RpcResult<ReadInventoryDeviceListOutput>> readInventoryDeviceList(
+ ReadInventoryDeviceListInput input) {
+ LOG.debug("RPC Request: readInventoryDeviceList with input {}", input);
+ RpcResultBuilder<ReadInventoryDeviceListOutput> result =
+ read(() -> DataProviderServiceImpl.this.dataProvider.readInventoryDeviceList(input));
+ return result.buildFuture();
+ }
+
+ @Override
public ListenableFuture<RpcResult<ReadPmdata15mLtpListOutput>> readPmdata15mLtpList(
ReadPmdata15mLtpListInput input) {
LOG.debug("RPC Request: readPmdata15mLtpList with input {}", input);
@@ -495,6 +502,10 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
return buf.toString();
}
+ public InventoryTreeProvider getInventoryTreeProvider() {
+ return this.dataProvider.getInventoryTreeProvider();
+ }
+
private interface GetEntityInput<O extends DataObject,B> {
B get() throws IOException;
}
@@ -515,7 +526,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
public HtUserdataManager getHtDatabaseUserManager() {
- return this.dbUserManager;
+ return this.dataProvider.getUserManager();
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataTreeProviderImpl.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataTreeProviderImpl.java
index cb62e3326..f5f1e4583 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataTreeProviderImpl.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataTreeProviderImpl.java
@@ -21,294 +21,114 @@
*/
package org.onap.ccsdk.features.sdnr.wt.dataprovider.impl;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import org.json.JSONObject;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
-import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.BoolQueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder;
-import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Search7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.AggregationEntries;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.http.DataTreeChildObject;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.http.DataTreeObject;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.acessor.DataObjectAcessorWithId;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.BaseInventoryTreeProvider;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
/**
* @author Michael Dürre
- *
*/
-public class DataTreeProviderImpl {
+public class DataTreeProviderImpl extends BaseInventoryTreeProvider {
+ private static final Logger LOG = LoggerFactory.getLogger(DataTreeProviderImpl.class);
private static final long MAXSIZE_PERSEARCH = 10;
- private HtDatabaseClient dbClient;
- private static final String INVENTORY_PROPERTY_TREELEVEL = "tree-level";
- private static final String INVENTORY_PROPERTY_NODEID = "node-id";
- private static final String INVENTORY_PROPERTY_UUID = "uuid";
- private static final String INVENTORY_PROPERTY_PARENTUUID = "parent-uuid";
- private static final String INVENTORY_PROPERTY_FOR_LABEL_CHILD = "uuid";
- private static final String INVENTORY_PROPERTY_FOR_LABEL = "uuid";
-
- private List<SearchHit> search(Entity e, String filter, String propTreeLevel) throws IOException {
- return this.search(e, filter, null, null, null, null, null, null, propTreeLevel);
- }
-
- private List<SearchHit> search(Entity e, String filter, String nodeKey, String nodeId, String parentKey,
- String parentValue, String childKey, String childValue, String propTreeLevel) throws IOException {
- QueryBuilder query =
- filter == null ? QueryBuilders.matchAllQuery() : QueryBuilders.searchAllFieldsQuery(filter);
- if ((nodeId != null && nodeKey != null) || (parentKey != null && parentValue != null)) {
- BoolQueryBuilder bquery = new BoolQueryBuilder();
- if (filter != null) {
- bquery.must(query);
- }
- if (nodeId != null) {
- bquery.must(QueryBuilders.matchQuery(nodeKey, nodeId));
- }
- query = bquery;
-
+ private final HtDatabaseClient dbClient;
+ private final DataObjectAcessorWithId<Inventory> dbReader;
+
+ public DataTreeProviderImpl(HtDatabaseClient dbClient) {
+ this.dbClient = dbClient;
+ try {
+ this.dbReader = new DataObjectAcessorWithId<>(dbClient,Entity.Inventoryequipment,Inventory.class,true);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
}
- return this.search(e, query, propTreeLevel);
}
- private List<SearchHit> search(Entity e, QueryBuilder query, String propTreeLevel) throws IOException {
- List<SearchHit> list = new ArrayList<SearchHit>();
- query.sort(propTreeLevel, SortOrder.ASCENDING);
- SearchRequest request = new Search7Request(Entity.Inventoryequipment.getName());
+ private List<InventoryEntity> search(QueryBuilder query) {
+
query.size(MAXSIZE_PERSEARCH);
- request.setQuery(query);
- SearchResponse response = this.dbClient.search(request);
- SearchHit[] matches = response.getHits();
- for (SearchHit hit : matches) {
- list.add(hit);
- }
+ SearchResult<Inventory> response = null;
+ response = this.dbReader.doReadAll(query);
+ List<Inventory> matches = response.getHits();
+ List<InventoryEntity> list = new ArrayList<>();
+ list.addAll(matches);
if (response.getTotal() > MAXSIZE_PERSEARCH) {
long todo = response.getTotal();
long from = MAXSIZE_PERSEARCH;
while (todo > from) {
- request.setQuery(query.from(from));
+ query.from(from);
from += MAXSIZE_PERSEARCH;
//merge into list
- response = this.dbClient.search(request);
+ response = this.dbReader.doReadAll(query);
matches = response.getHits();
- for (SearchHit hit : matches) {
- list.add(hit);
- }
+ list.addAll(matches);
}
}
return list;
}
- /**
- * @param iNVENTORY_PROPERTY_NODEID2
- * @return
- * @throws IOException
- */
- private AggregationEntries searchAggregated(Entity e, String key) throws IOException {
- QueryBuilder query = QueryBuilders.matchAllQuery().aggregations(key).size(MAXSIZE_PERSEARCH);
- SearchRequest request = new Search7Request(e.getName());
- request.setQuery(query);
- SearchResponse response = this.dbClient.search(request);
- return response.getAggregations(key);
- }
-
- /**
- *
- * @param tree
- * @param filter
- * @param
- * @return
- * @throws IOException
- */
- public DataTreeObject readInventoryTree(List<String> tree, String filter) throws IOException {
- //root nodes will be node-information -> below inventory
- if (tree == null || tree.size() <= 0) {
- return this.readInventoryTreeWithNode(filter);
- }
- //root node will be inventory on tree-level if sliced treePath
- else {
- return this.readInventoryTreeForNode(tree.get(0), tree.subList(0, tree.size() - 1), filter);
+ @Override
+ protected List<String> getAllNodeIds() {
+ QueryBuilder query = QueryBuilders.matchAllQuery().setFullsizeRequest(true).aggregations(INVENTORY_PROPERTY_NODEID).size(0);
+ SearchRequest request = new SearchRequest(Entity.Inventoryequipment.getName(),Entity.Inventoryequipment.getName());
+ request.setQuery(query);
+ try {
+ SearchResponse response = this.dbClient.search(request);
+ AggregationEntries aggs = response.getAggregations(INVENTORY_PROPERTY_NODEID);
+ return new ArrayList<>(aggs.keySet());
+ } catch (IOException e) {
+ LOG.warn("problem reading nodes of inventory: ", e);
}
-
+ return List.of();
}
- /**
- * @param string
- * @param slice
- * @param filter
- * @param mode
- * @return
- */
- private DataTreeObject readInventoryTreeForNode(String nodeId, List<String> list, String filter)
- throws IOException {
- DataTreeObject tree = new DataTreeObject(INVENTORY_PROPERTY_PARENTUUID, INVENTORY_PROPERTY_UUID);
- final String parentUuid = list.size() > 1 ? list.get(list.size() - 2) : null;
- final String uuid = list.size() > 0 ? list.get(list.size() - 1) : null;
- List<SearchHit> matches = this.search(Entity.Inventoryequipment, filter, INVENTORY_PROPERTY_NODEID, nodeId,
- INVENTORY_PROPERTY_PARENTUUID, parentUuid, INVENTORY_PROPERTY_UUID, uuid, INVENTORY_PROPERTY_TREELEVEL);
-
- //tree.a(subtreePath);
- List<SearchHit> others = this.search(Entity.Inventoryequipment, (String) null, INVENTORY_PROPERTY_NODEID, nodeId,
- null, null, null, null, INVENTORY_PROPERTY_TREELEVEL);
- if (matches.size() > 0) {
- int treeLevelToStart = (list == null || list.size() <= 0) ? 0 : list.size() - 1;
- //build tree
- JSONObject hitData;
- //fill root elems
- for (SearchHit hit : matches) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) == treeLevelToStart) {
- tree.put(hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), true)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
- }
- for (SearchHit hit : others) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) == treeLevelToStart) {
- tree.putIfNotExists(hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), false)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
- }
- //fill child elems
- for (SearchHit hit : matches) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) > treeLevelToStart) {
- tree.put(hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) - treeLevelToStart - 1, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), true)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
- }
- for (SearchHit hit : others) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) > treeLevelToStart) {
- tree.putIfNotExists(hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) - treeLevelToStart - 1, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), false)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
- }
- tree.removeUnmatchedPaths();
- }
- return tree;
+ @Override
+ protected List<InventoryEntity> search(String filter, String sortOrderProperty, SortOrder sortOrder) {
+ return this.search(filter, null, null, null, sortOrderProperty, sortOrder);
}
- /**
- * node will be root elements inventory information below from level-1
- *
- * @param filter
- * @return
- * @throws IOException
- */
- private DataTreeObject readInventoryTreeWithNode(String filter) throws IOException {
- DataTreeObject tree = new DataTreeObject(INVENTORY_PROPERTY_PARENTUUID, INVENTORY_PROPERTY_UUID);
-
- List<SearchHit> matches = this.search(Entity.Inventoryequipment, filter, INVENTORY_PROPERTY_TREELEVEL);
- List<SearchHit> others = null;
- if (matches.size() > 0) {
+ @Override
+ protected List<InventoryEntity> search(String filter, String nodeId, String parentUuid, String uuid, String sortOrderProperty, SortOrder sortOrder) {
+ QueryBuilder query =
+ filter == null ? QueryBuilders.matchAllQuery() : QueryBuilders.searchAllFieldsQuery(filter);
+ if ((nodeId != null) || (parentUuid != null)) {
+ BoolQueryBuilder bquery = new BoolQueryBuilder();
if (filter != null) {
- //find all parents up to tree-level 0
- String nodeId = "";
- List<String> alreadyInList = new ArrayList<>();
- BoolQueryBuilder query2 = QueryBuilders.boolQuery();
- for (SearchHit hit : matches) {
- nodeId = hit.getSource().getString(INVENTORY_PROPERTY_NODEID);
- if (alreadyInList.contains(nodeId)) {
- continue;
- }
- query2.should(QueryBuilders.matchQuery(INVENTORY_PROPERTY_NODEID, nodeId));
- alreadyInList.add(nodeId);
- tree.put(nodeId,
- new DataTreeChildObject(nodeId, false).setProperty(INVENTORY_PROPERTY_UUID, nodeId));
-
- }
- others = this.search(Entity.Inventoryequipment, query2, INVENTORY_PROPERTY_TREELEVEL);
- } else {
- AggregationEntries nodes = this.searchAggregated(Entity.Inventoryequipment, INVENTORY_PROPERTY_NODEID);
- for (String node : nodes.keySet()) {
- tree.put(node, new DataTreeChildObject(node, false).setProperty(INVENTORY_PROPERTY_UUID, node));
- }
- }
-
- //build tree
- JSONObject hitData;
- //fill root elems
- for (SearchHit hit : matches) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) == 0) {
- tree.put(0, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), true)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_NODEID)));
- }
- }
- if (others != null) {
- for (SearchHit hit : others) {
- hitData = hit.getSource();
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) == 0) {
- tree.putIfNotExists(0, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL), false)
- .setProperty(INVENTORY_PROPERTY_UUID,
- hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_NODEID)));
- }
- }
- }
- //fill child elements
- for (SearchHit hit : matches) {
- hitData = hit.getSource();
- long treeLevel = hitData.getLong(INVENTORY_PROPERTY_TREELEVEL);
- if (treeLevel > 0) {
- tree.put(treeLevel, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL_CHILD), true)
- .setProperty(INVENTORY_PROPERTY_UUID, hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
+ bquery.must(query);
}
- if (others != null) {
- for (SearchHit hit : others) {
- hitData = hit.getSource();
- long treeLevel = hitData.getLong(INVENTORY_PROPERTY_TREELEVEL);
- if (hitData.getLong(INVENTORY_PROPERTY_TREELEVEL) > 0) {
- tree.putIfNotExists(treeLevel, hit.getId(),
- new DataTreeChildObject(hitData.getString(INVENTORY_PROPERTY_FOR_LABEL_CHILD), false)
- .setProperty(INVENTORY_PROPERTY_UUID,
- hitData.getString(INVENTORY_PROPERTY_UUID))
- .setProperty(INVENTORY_PROPERTY_PARENTUUID,
- hitData.getString(INVENTORY_PROPERTY_PARENTUUID)));
- }
- }
+ if (nodeId != null) {
+ bquery.must(QueryBuilders.matchQuery(INVENTORY_PROPERTY_NODEID, nodeId));
}
- tree.removeUnmatchedPaths();
+ query = bquery;
}
- return tree;
+ query.sort(sortOrderProperty, sortOrder);
+ return this.search(query);
}
-
-
- /**
- * @param client
- */
- public void setDatabaseClient(HtDatabaseClient client) {
- this.dbClient = client;
-
+ @Override
+ protected List<InventoryEntity> getItemsForNodes(List<String> nodeIds, String sortOrderProperty, SortOrder sortOrder) {
+ BoolQueryBuilder query = QueryBuilders.boolQuery();
+ nodeIds.forEach(e->query.should(QueryBuilders.matchQuery(INVENTORY_PROPERTY_NODEID,e)));
+ return this.search(query);
}
+
}