diff options
author | Michael Dürre <michael.duerre@highstreet-technologies.com> | 2020-02-26 06:41:50 +0100 |
---|---|---|
committer | KAPIL SINGAL <ks220y@att.com> | 2020-02-27 14:52:20 +0000 |
commit | ee75b19ee79f49b28a3137b6dcfdf02d6120f3de (patch) | |
tree | 49a6a7b10578ee5f9780ea38f8a9408cf4cf14c7 /sdnr/wt/data-provider/setup | |
parent | 8f762f215f49fd4b1d498adc2cc4f98093f0ddf3 (diff) |
add data migration tool
add tool for data migration and initialization
Issue-ID: SDNC-1085
Signed-off-by: Michael Dürre <michael.duerre@highstreet-technologies.com>
Change-Id: Ibd1ffeffa95d2897ae65f7d964e98941d810ffcb
Signed-off-by: Michael Dürre <michael.duerre@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/data-provider/setup')
35 files changed, 3166 insertions, 0 deletions
diff --git a/sdnr/wt/data-provider/setup/pom.xml b/sdnr/wt/data-provider/setup/pom.xml new file mode 100644 index 000000000..74391a86d --- /dev/null +++ b/sdnr/wt/data-provider/setup/pom.xml @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ ============LICENSE_START======================================================= + ~ ONAP : ccsdk features + ~ ================================================================================ + ~ Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. + ~ All rights reserved. + ~ ================================================================================ + ~ Update Copyright (C) 2020 AT&T 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======================================================= + ~ + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>binding-parent</artifactId> + <version>1.5.2-SNAPSHOT</version> + <relativePath/> + </parent> + + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>sdnr-wt-data-provider-setup</artifactId> + <version>0.7.1-SNAPSHOT</version> + <packaging>bundle</packaging> + + <name>ccsdk-features :: ${project.artifactId}</name> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + </license> + </licenses> + + <properties> + <maven.javadoc.skip>true</maven.javadoc.skip> + <databaseport>49404</databaseport> + </properties> + + <dependencies> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-data-provider-model</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <executions> + <execution> + <id>generateDTOs</id> + <phase>generate-sources</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <skip>${skipTests}</skip> + <executable>bash</executable> + <arguments> + <argument>${basedir}/../provider/src/main/resources/es-init.sh</argument> + <argument>initfile</argument> + <argument>-f</argument> + <argument>${project.build.directory}/EsInit.script</argument> + </arguments> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>com.github.alexcojocaru</groupId> + <artifactId>elasticsearch-maven-plugin</artifactId> + <version>6.16</version> + <configuration> + <skip>${skipTests}</skip> + <clusterName>testCluster</clusterName> + <transportPort>49504</transportPort> + <httpPort>${databaseport}</httpPort> + <version>6.5.0</version> + </configuration> + <executions> + <execution> + <id>start-elasticsearch</id> + <phase>process-test-classes</phase> + <goals> + <goal>runforked</goal> + </goals> + </execution> + <execution> + <id>stop-elasticsearch</id> + <phase>prepare-package</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemProperties> + <property> + <name>databaseport</name> + <value>${databaseport}</value> + </property> + </systemProperties> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>make-assembly</id> <!-- this is used for inheritance merges --> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + <configuration> + <finalName>sdnr-dmt</finalName> + <appendAssemblyId>false</appendAssemblyId> + <archive> + <manifest> + <mainClass>org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.Program</mainClass> + </manifest> + </archive> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + </configuration> + </plugin> + + </plugins> + </build> +</project> diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderImpl.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderImpl.java new file mode 100644 index 000000000..ff5406a99 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderImpl.java @@ -0,0 +1,370 @@ +/* + * ============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.setup; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; + +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.config.HostInfo; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.AliasesEntry; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.AliasesEntryList; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.EsVersion; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.IndicesEntry; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.IndicesEntryList; +import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateAliasRequest; +import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateIndexRequest; +import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteAliasRequest; +import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteIndexRequest; +import org.onap.ccsdk.features.sdnr.wt.common.database.responses.AcknowledgedResponse; +import org.onap.ccsdk.features.sdnr.wt.common.database.responses.GetInfoResponse; +import org.onap.ccsdk.features.sdnr.wt.common.database.responses.ListAliasesResponse; +import org.onap.ccsdk.features.sdnr.wt.common.database.responses.ListIndicesResponse; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentData; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataMigrationReport; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataContainer; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DataMigrationProviderImpl implements DataMigrationProviderService { + + private final Logger LOG = LoggerFactory.getLogger(DataMigrationProviderImpl.class); + + private final HtDatabaseClient dbClient; + + public DataMigrationProviderImpl(HostInfo[] hosts, String username, String password, boolean trustAll) { + this.dbClient = new HtDatabaseClient(hosts, username, password, trustAll); + } + + @Override + public DataMigrationReport importData(String filename, boolean dryrun) throws Exception { + return this.importData(filename, dryrun, Release.CURRENT_RELEASE); + } + + public DataMigrationReport importData(String filename, boolean dryrun, Release forRelease) throws Exception { + DataMigrationReport report = new DataMigrationReport(); + File file = new File(filename); + if (!file.exists()) { + if (dryrun) { + report.error("file %s not found", filename); + return report; + } + throw new FileNotFoundException(filename); + } + DataContainer container = null; + try { + container = DataContainer.load(file); + } catch (Exception e) { + if (dryrun) { + report.error("problem loading file %s: %s", filename, e.getMessage()); + return report; + } + throw new Exception("problem loading file " + filename, e); + } + ReleaseInformation ri = ReleaseInformation.getInstance(forRelease); + SearchHitConverter converter; + Set<ComponentName> components = ri.getComponents(); + //for all db components of dest architecture + for (ComponentName component : components) { + //convert to ComponentData for current release with existing ComponentData of the container + converter = SearchHitConverter.Factory.getInstance(container.getRelease(), forRelease, component); + if (converter == null) { + continue; + } + ComponentData data = converter.convert(container); + if (data != null) { + String indexName = ri.getAlias(component); + String dataTypeName = ri.getDataType(component); + if (dryrun) { + report.log("write %d entries into %s/%s", data.size(), indexName, dataTypeName); + } else { + LOG.debug("write {} entries into {}/{}", data.size(), indexName, dataTypeName); + } + for (SearchHit item : data) { + if (!dryrun) { + String id = this.dbClient.doWriteRaw(indexName, dataTypeName, item.getId(), + item.getSourceAsString()); + if (!item.getId().equals(id)) { + LOG.warn("entry for {} with original id {} was written with another id {}", + component.getValue(), item.getId(), id); + } + } + } + } else { + if (dryrun) { + report.error("unable to convert data for " + component.getValue() + " from version " + + container.getRelease().getValue() + " to " + forRelease.getValue() + "\n"); + } else { + LOG.warn("unable to convert data for {} from version {} to {}", component.getValue(), + container.getRelease().getValue(), forRelease.getValue()); + } + } + } + LOG.info("import of {} completed", filename); + if (dryrun) { + report.log("import of %s completed", filename); + } + report.setCompleted(true); + return report; + } + + + /** + * export data + * if file exists .1 (.n) will be created + * + */ + @Override + public DataMigrationReport exportData(String filename) { + DataMigrationReport report = new DataMigrationReport(); + + DataContainer container = new DataContainer(); + + filename = this.checkFilenameForWrite(filename); + LOG.info("output will be written to {}", filename); + //autodetect version + Release dbRelease = this.autoDetectRelease(); + if(dbRelease==null) { + report.error("unbable to detect db release. is database initialized?"); + return report; + } + ReleaseInformation ri = ReleaseInformation.getInstance(dbRelease); + boolean componentsSucceeded = true; + for(ComponentName c: ri.getComponents()) { + ComponentData data = new ComponentData(c); + SearchResult<SearchHit> result = this.dbClient.doReadAllJsonData(ri.getAlias(c),ri.getDataType(c),false); + data.addAll(result.getHits()); + container.addComponent(c, data ); + } + try { + Files.write(new File(filename).toPath(), Arrays.asList(container.toJSON()), StandardCharsets.UTF_8); + report.setCompleted(componentsSucceeded); + } catch (IOException e) { + LOG.warn("problem writing data to {}: {}", filename, e); + } + return report; + } + + private String checkFilenameForWrite(String filename) { + File f = new File(filename); + if (!f.exists()) { + return filename; + } + return this.checkFilenameForWrite(filename, 0); + } + + private String checkFilenameForWrite(String filename, int apdx) { + File f = new File(String.format("$s.$d",filename,apdx)); + if (!f.exists()) { + return filename; + } + return this.checkFilenameForWrite(filename, apdx + 1); + } + + @Override + public Release getCurrentVersion() { + return Release.CURRENT_RELEASE; + } + + + public Release autoDetectRelease() { + EsVersion dbVersion = this.readActualVersion(); + AliasesEntryList aliases = this.readAliases(); + IndicesEntryList indices = this.readIndices(); + if(indices==null) { + return null; + } + List<Release> foundReleases = new ArrayList<Release>(); + //if there are active aliases reduce indices to the active ones + if(aliases!=null && aliases.size()>0) { + indices = indices.subList(aliases.getLinkedIndices()); + } + for(Release r:Release.values()) { + if(r.isDbInRange(dbVersion)) { + ReleaseInformation ri = ReleaseInformation.getInstance(r); + if(ri!=null && ri.containsIndices(indices)) { + foundReleases.add(r); + } + } + } + if (foundReleases.size() == 1) { + return foundReleases.get(0); + } + LOG.error("detect {} releases: {}. unable to detect for which one to do sth.",foundReleases.size(), foundReleases); + return null; + } + private EsVersion readActualVersion() { + try { + GetInfoResponse response = this.dbClient.getInfo(); + return response.getVersion(); + } catch (Exception e) { + LOG.warn(e.getMessage()); + } + return null; + } + + private AliasesEntryList readAliases() { + AliasesEntryList entries = null; + try { + ListAliasesResponse response = this.dbClient.getAliases(); + entries = response.getEntries(); + } catch (ParseException | IOException e) { + LOG.error(e.getMessage()); + } + return entries; + } + + private IndicesEntryList readIndices() { + IndicesEntryList entries = null; + try { + ListIndicesResponse response = this.dbClient.getIndices(); + entries = response.getEntries(); + } catch (ParseException | IOException e) { + LOG.error(e.getMessage()); + } + return entries; + } + + @Override + public boolean initDatabase(Release release, int numShards, int numReplicas, String dbPrefix, + boolean forceRecreate) { + EsVersion dbVersion = this.readActualVersion(); + if (dbVersion == null) { + return false; + } + if (!release.isDbInRange(dbVersion)) { + LOG.warn("db version {} maybe not compatible with release {}", dbVersion, release); + return false; + } + if (forceRecreate) { + this.clearDatabase(release, dbPrefix); + } + ReleaseInformation ri = ReleaseInformation.getInstance(release); + AliasesEntryList aliases = this.readAliases(); + IndicesEntryList indices = this.readIndices(); + if (aliases == null || indices == null) { + return false; + } + AcknowledgedResponse response = null; + for (ComponentName component : ri.getComponents()) { + try { + if (ri.hasOwnDbIndex(component)) { + //check if index already exists + String indexName = ri.getIndex(component, dbPrefix); + String aliasName = ri.getAlias(component, dbPrefix); + if (indices.findByIndex(indexName) == null) { + LOG.info("creating index for {}", component); + CreateIndexRequest request = new CreateIndexRequest(ri.getIndex(component, dbPrefix)); + request.mappings(new JSONObject(ri.getDatabaseMapping(component))); + request.settings(new JSONObject(ri.getDatabaseSettings(component, numShards, numReplicas))); + response = this.dbClient.createIndex(request); + LOG.info(response.isAcknowledged() ? "succeeded" : "failed"); + } else { + LOG.info("index {} for {} already exists", indexName, component); + } + //check if alias already exists + if (aliases.findByAlias(aliasName) == null) { + LOG.info("creating alias for {}", component); + response = this.dbClient.createAlias(new CreateAliasRequest(indexName, aliasName)); + LOG.info(response.isAcknowledged() ? "succeeded" : "failed"); + } else { + LOG.info("alias {} for index {} for {} already exists", aliasName, indexName, component); + } + } + } catch (IOException e) { + LOG.error(e.getMessage()); + return false; + } + } + return true; + } + + @Override + public boolean clearDatabase(Release release, String dbPrefix) { + + //check aliases + AliasesEntryList entries = this.readAliases(); + if (entries == null) { + return false; + } + ReleaseInformation ri = ReleaseInformation.getInstance(release); + AcknowledgedResponse response; + if (entries.size() <= 0) { + LOG.info("no aliases to clear"); + } else { + for (ComponentName component : ri.getComponents()) { + String aliasToDelete = ri.getAlias(component, dbPrefix); + AliasesEntry entryToDelete = entries.findByAlias(aliasToDelete); + if (entryToDelete != null) { + try { + LOG.info("deleting alias {} for index {}", entryToDelete.getAlias(), entryToDelete.getIndex()); + response=this.dbClient.deleteAlias( + new DeleteAliasRequest(entryToDelete.getIndex(), entryToDelete.getAlias())); + LOG.info(response.isResponseSucceeded()?"succeeded":"failed"); + } catch (IOException e) { + LOG.error(e.getMessage()); + return false; + } + } + } + } + IndicesEntryList entries2 = this.readIndices(); + if (entries2 == null) { + return false; + } + if (entries2.size() <= 0) { + LOG.info("no indices to clear"); + } else { + for (ComponentName component : ri.getComponents()) { + String indexToDelete = ri.getIndex(component, dbPrefix); + IndicesEntry entryToDelete = entries2.findByIndex(indexToDelete); + if (entryToDelete != null) { + try { + LOG.info("deleting index {}", entryToDelete.getName()); + response=this.dbClient.deleteIndex(new DeleteIndexRequest(entryToDelete.getName())); + LOG.info(response.isResponseSucceeded()?"succeeded":"failed"); + } catch (IOException e) { + LOG.error(e.getMessage()); + return false; + } + } + } + } + + return true; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderService.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderService.java new file mode 100644 index 000000000..d908d6931 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/DataMigrationProviderService.java @@ -0,0 +1,70 @@ +/* + * ============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.setup; + +import java.io.FileNotFoundException; + +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataMigrationReport; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; + + +public interface DataMigrationProviderService { + + /** + * import data from file and write these to database + * @param filename source + * @param dryrun only loading file and check consistency, not pushing into database + * @return report + * @throws FileNotFoundException + * @throws Exception + */ + DataMigrationReport importData(String filename,boolean dryrun) throws FileNotFoundException, Exception; + /** + * export current data to file + * @param filename + */ + DataMigrationReport exportData(String filename); + + /** + * + * @return + */ + Release getCurrentVersion(); + + /** + * @param release + * @param numShards + * @param numReplicas + * @param dbPrefix + * @param forceRecreate + * @return + */ + boolean initDatabase(Release release, int numShards, int numReplicas, String dbPrefix, boolean forceRecreate); + + /** + * clean up the database + * all data will be removed + * complete structure will be destroyed + * @return + */ + boolean clearDatabase(Release release, String dbPrefix); +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/Program.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/Program.java new file mode 100644 index 000000000..abb372920 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/Program.java @@ -0,0 +1,357 @@ +/* + * ============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.setup; + +import java.util.Arrays; +import java.util.List; + +import org.apache.commons.cli.*; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.apache.log4j.RollingFileAppender; +import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataMigrationReport; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.MavenDatabasePluginInitFile; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; + +/** + * @author Michael Dürre + * + */ +public class Program { + + private static final String CMD_INITDB = "init"; + private static final String CMD_CLEAR_DB = "delete"; + private static final String CMD_CREATE_PLUGIN_INIT_FILE = "pluginfile"; + private static final String CMD_IMPORT = "import"; + private static final String CMD_EXPORT = "export"; + private static final String CMD_LIST_VERSION = "list"; + private static final String CMD_INITDB_DESCRIPTION = "initialize databse indices and aliases"; + private static final String CMD_CLEAR_DB_DESCRIPTION = "clear database indices and aliases"; + private static final String CMD_CREATE_PLUGIN_INIT_FILE_DESCRIPTION = "create maven plugin file"; + private static final String CMD_IMPORT_DESCRIPTION = "import data into database"; + private static final String CMD_EXPORT_DESCRIPTION = "export data from database"; + private static final String CMD_LIST_VERSION_DESCRIPTION = "list release versions"; + + private static final List<String[]> commands = Arrays.asList(new String[] { CMD_INITDB, CMD_INITDB_DESCRIPTION }, + new String[] { CMD_CLEAR_DB, CMD_CLEAR_DB_DESCRIPTION }, + new String[] { CMD_CREATE_PLUGIN_INIT_FILE, CMD_CREATE_PLUGIN_INIT_FILE_DESCRIPTION }, + new String[] { CMD_IMPORT, CMD_IMPORT_DESCRIPTION }, new String[] { CMD_EXPORT, CMD_EXPORT_DESCRIPTION }, + new String[] { CMD_LIST_VERSION, CMD_LIST_VERSION_DESCRIPTION }); + private static final String APPLICATION_NAME = "SDNR DataMigrationTool"; + private static final int DEFAULT_SHARDS = 5; + private static final int DEFAULT_REPLICAS = 1; + private static final String DEFAULT_DBURL = "http://sdnrdb:9200"; + private static final String DEFAULT_DBPREFIX = ""; + private static final String OPTION_FORCE_RECREATE_SHORT = "f"; + private static final String OPTION_SILENT_SHORT = "n"; + private static final String OPTION_SILENT = "silent"; + private static final String OPTION_VERSION_SHORT = "v"; + private static final String OPTION_SHARDS_SHORT = "s"; + private static final String OPTION_REPLICAS_SHORT = "r"; + private static final String OPTION_OUTPUTFILE_SHORT = "of"; + private static final String OPTION_INPUTFILE_SHORT = "if"; + private static final String OPTION_DEBUG_SHORT = "x"; + private static final String OPTION_TRUSTINSECURESSL_SHORT = "k"; + + private static Options options = init(); + + private static Log LOG = null; + + @SuppressWarnings("unchecked") + private static <T> T getOptionOrDefault(CommandLine cmd, String option, T def) throws ParseException { + if (def instanceof Boolean) { + return cmd.hasOption(option) ? (T) Boolean.TRUE : def; + } + if (cmd.hasOption(option) && cmd.getOptionValue(option) != null) { + if (option.equals(OPTION_VERSION_SHORT)) { + String v = cmd.getOptionValue(option); + return (T) Release.getValueBySuffix(v.startsWith("-") ? v : ("-" + v)); + } else { + return (T) cmd.getParsedOptionValue(option); + } + } + return def; + } + + private static void initLog(boolean silent, String logfile) { + initLog(silent, logfile, Level.INFO); + } + + private static void initLog(boolean silent, String logfile, Level loglvl) { + Logger.getRootLogger().getLoggerRepository().resetConfiguration(); + LOG = LogFactory.getLog(Program.class); + if (!silent) { + ConsoleAppender console = new ConsoleAppender(); // create appender + // configure the appender + String PATTERN = "%d [%p|%C{1}] %m%n"; + console.setLayout(new PatternLayout(PATTERN)); + console.setThreshold(loglvl); + console.activateOptions(); + // add appender to any Logger (here is root) + Logger.getRootLogger().addAppender(console); + } + if (logfile != null) { + RollingFileAppender fa = new RollingFileAppender(); + fa.setName("FileLogger"); + fa.setFile(logfile); + fa.setLayout(new PatternLayout("%d %-5p [%c] %m%n")); + fa.setThreshold(loglvl); + fa.setMaximumFileSize(10000000); + fa.setAppend(true); + fa.setMaxBackupIndex(5); + fa.activateOptions(); + // add appender to any Logger (here is root) + Logger.getRootLogger().addAppender(fa); + } + // repeat with all other desired appenders + } + + public static void main(String[] args) { + CommandLineParser parser = new DefaultParser(); + HelpFormatter formatter = new HelpFormatter(); + CommandLine cmd = null; + try { + cmd = parser.parse(options, args); + } catch (ParseException e) { + System.out.println(e.getMessage()); + printHelp(formatter); + System.exit(1); + } + if (cmd == null) { + printHelp(formatter); + System.exit(1); + } + try { + initLog(getOptionOrDefault(cmd, OPTION_SILENT_SHORT, false), null,getOptionOrDefault(cmd, OPTION_DEBUG_SHORT, false)?Level.DEBUG:Level.INFO); + } catch (ParseException e2) { + + } + switch (cmd.getOptionValue("c")) { + case CMD_INITDB: + try { + cmd_init_db(cmd); + } catch (Exception e1) { + exit(e1); + } + break; + case CMD_CLEAR_DB: + try { + cmd_clear_db(cmd); + } catch (Exception e1) { + exit(e1); + } + break; + case CMD_CREATE_PLUGIN_INIT_FILE: + try { + String of = getOptionOrDefault(cmd, "of", null); + if (of == null) { + throw new Exception("please add the parameter output-file"); + } + MavenDatabasePluginInitFile.create(Release.CURRENT_RELEASE, of); + } catch (Exception e) { + exit(e); + } + break; + case CMD_IMPORT: + try { + cmd_dbimport(cmd); + } catch (Exception e1) { + exit(e1); + } + break; + case CMD_EXPORT: + try { + cmd_dbexport(cmd); + } catch (Exception e) { + exit(e); + } + break; + case CMD_LIST_VERSION: + cmd_listversion(); + break; + default: + printHelp(formatter); + break; + } + System.exit(0); + } + + /** + * @param formatter + */ + private static void printHelp(HelpFormatter formatter) { + formatter.printHelp(APPLICATION_NAME, options); + System.out.println("\nCommands:"); + for (String[] c : commands) { + System.out.println(String.format("%10s\t%s", c[0], c[1])); + } + } + + /** + * + */ + private static void cmd_listversion() { + + System.out.println("Database Releases:"); + final String format = "%15s\t%8s"; + System.out.println(String.format(format, "Name", "Version")); + for (Release r : Release.values()) { + + System.out.println(String.format(format, r.getValue(), + r.getDBSuffix() != null && r.getDBSuffix().length() > 1 ? r.getDBSuffix().substring(1) : "")); + } + + } + + /** + * @throws Exception + * + */ + private static void cmd_dbimport(CommandLine cmd) throws Exception { + String dbUrl = getOptionOrDefault(cmd, "db", DEFAULT_DBURL); + String username = getOptionOrDefault(cmd, "dbu", null); + String password = getOptionOrDefault(cmd, "dbp", null); + String filename = getOptionOrDefault(cmd, OPTION_OUTPUTFILE_SHORT, null); + boolean trustAll = getOptionOrDefault(cmd, OPTION_TRUSTINSECURESSL_SHORT, false); + if (filename == null) { + throw new Exception("please add output file parameter"); + } + DataMigrationProviderImpl service = new DataMigrationProviderImpl(new HostInfo[] { HostInfo.parse(dbUrl) }, + username, password,trustAll); + DataMigrationReport report = service.importData(filename,false); + LOG.info(report); + } + + /** + * @throws Exception + * + */ + private static void cmd_dbexport(CommandLine cmd) throws Exception { + String dbUrl = getOptionOrDefault(cmd, "db", DEFAULT_DBURL); + String username = getOptionOrDefault(cmd, "dbu", null); + String password = getOptionOrDefault(cmd, "dbp", null); + String filename = getOptionOrDefault(cmd, OPTION_OUTPUTFILE_SHORT, null); + boolean trustAll = getOptionOrDefault(cmd, OPTION_TRUSTINSECURESSL_SHORT, false); + if (filename == null) { + throw new Exception("please add output file parameter"); + } + DataMigrationProviderImpl service = new DataMigrationProviderImpl(new HostInfo[] { HostInfo.parse(dbUrl) }, + username, password,trustAll); + DataMigrationReport report = service.exportData(filename); + LOG.info(report); + } + + /** + * @param e + */ + private static void exit(Exception e) { + if (LOG != null) { + LOG.error("Error during execution: {}", e); + } else { + System.err.println(e); + } + System.exit(1); + } + + /** + * @param cmd + * @throws ParseException + * @throws java.text.ParseException + */ + private static void cmd_clear_db(CommandLine cmd) throws ParseException, java.text.ParseException { + Release r = getOptionOrDefault(cmd, OPTION_VERSION_SHORT, Release.CURRENT_RELEASE); + String dbUrl = getOptionOrDefault(cmd, "db", DEFAULT_DBURL); + String dbPrefix = getOptionOrDefault(cmd, "p", DEFAULT_DBPREFIX); + String username = getOptionOrDefault(cmd, "dbu", null); + String password = getOptionOrDefault(cmd, "dbp", null); + boolean trustAll = getOptionOrDefault(cmd, OPTION_TRUSTINSECURESSL_SHORT, false); + DataMigrationProviderImpl service = new DataMigrationProviderImpl(new HostInfo[] { HostInfo.parse(dbUrl) }, + username, password,trustAll); + service.clearDatabase(r, dbPrefix); + } + + /** + * @param cmd + * @throws ParseException + * @throws java.text.ParseException + */ + private static void cmd_init_db(CommandLine cmd) throws ParseException, java.text.ParseException { + Release r = getOptionOrDefault(cmd, OPTION_VERSION_SHORT, Release.CURRENT_RELEASE); + int numShards = getOptionOrDefault(cmd, OPTION_SHARDS_SHORT, DEFAULT_SHARDS); + int numReplicas = getOptionOrDefault(cmd, OPTION_REPLICAS_SHORT, DEFAULT_REPLICAS); + String dbUrl = getOptionOrDefault(cmd, "db", DEFAULT_DBURL); + String dbPrefix = getOptionOrDefault(cmd, "p", DEFAULT_DBPREFIX); + String username = getOptionOrDefault(cmd, "dbu", null); + String password = getOptionOrDefault(cmd, "dbp", null); + boolean trustAll = getOptionOrDefault(cmd, OPTION_TRUSTINSECURESSL_SHORT, false); + DataMigrationProviderImpl service = new DataMigrationProviderImpl(new HostInfo[] { HostInfo.parse(dbUrl) }, + username, password,trustAll); + boolean forceRecreate = cmd.hasOption(OPTION_FORCE_RECREATE_SHORT); + service.initDatabase(r, numShards, numReplicas, dbPrefix, forceRecreate); + + } + + /** + * @return + */ + private static Options init() { + Options options = new Options(); + options.addOption(createOption("c", "cmd", true, "command to execute", true)); + options.addOption(createOption("db", "dburl", true, "database url", false)); + options.addOption(createOption("dbu", "db-username", true, "database basic auth username", false)); + options.addOption(createOption("dbp", "db-password", true, "database basic auth password", false)); + options.addOption(createOption(OPTION_REPLICAS_SHORT, "replicas", true, "amount of replicas", false)); + options.addOption(createOption(OPTION_SHARDS_SHORT, "shards", true, "amount of shards", false)); + options.addOption(createOption("p", "prefix", true, "prefix for db indices", false)); + options.addOption(createOption(OPTION_VERSION_SHORT, "version", true, "version", false)); + options.addOption(createOption(OPTION_DEBUG_SHORT, "verbose", false, "verbose mode", false)); + options.addOption(createOption(OPTION_TRUSTINSECURESSL_SHORT, "trust-insecure", false, "trust insecure ssl certs", false)); + options.addOption(createOption("w", "wait", true, "wait delay for yellow status", false)); + options.addOption( + createOption(OPTION_FORCE_RECREATE_SHORT, "force-recreate", false, "delete if sth exists", false)); + options.addOption(createOption(OPTION_SILENT_SHORT, OPTION_SILENT, false, "prevent console output", false)); + options.addOption(createOption(OPTION_OUTPUTFILE_SHORT, "output-file", true, "file to write into", false)); + options.addOption(createOption(OPTION_INPUTFILE_SHORT, "input-file", true, "file to read from", false)); + + return options; + } + + /** + * @param opt + * @param longOpt + * @param hasArg + * @param description + * @param required + * @return + */ + private static Option createOption(String opt, String longOpt, boolean hasArg, String description, + boolean required) { + Option o = new Option(opt, longOpt, hasArg, description); + o.setRequired(required); + return o; + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/ReleaseInformation.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/ReleaseInformation.java new file mode 100644 index 000000000..5c5aa2a8b --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/ReleaseInformation.java @@ -0,0 +1,157 @@ +/* + * ============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.setup; + +import java.util.Map; +import java.util.Set; + +import org.onap.ccsdk.features.sdnr.wt.common.database.data.IndicesEntryList; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DatabaseInfo; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.KeepDataSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.elalto.ElAltoReleaseInformation; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.frankfurt.FrankfurtReleaseInformation; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.guilin.GuilinReleaseInformation; + +public abstract class ReleaseInformation { + + private final Release release; + private final Map<ComponentName, DatabaseInfo> dbMap; + + public ReleaseInformation(Release r, Map<ComponentName, DatabaseInfo> dbMap) { + this.release = r; + this.dbMap = dbMap; + } + + /** + * get database alias for component + * @param name + * @return alias or null if not exists + */ + public String getAlias(ComponentName name) { + return this.getAlias(name,""); + } + public String getAlias(ComponentName name,String prefix) { + return dbMap.get(name) == null ? null : prefix+dbMap.get(name).alias; + } + + /** + * @param c + * @return + */ + public String getIndex(ComponentName name) { + return this.getIndex(name,""); + } + public String getIndex(ComponentName name,String prefix) { + return dbMap.get(name) == null ? null : (prefix+dbMap.get(name).getIndex(this.release.getDBSuffix())); + } + + /** + * get database datatype (doctype) for component + * @param name + * @return datatype or null if not exists + */ + public String getDataType(ComponentName name) { + return dbMap.get(name) == null ? null : dbMap.get(name).doctype; + } + + /** + * get database doctype definition for component + * @param name + * @return mappings or null if not exists + */ + public String getDatabaseMapping(ComponentName name) { + return dbMap.get(name) == null ? null : dbMap.get(name).getMapping(); + } + /** + * get database settings definition for component + * @param name + * @return settings or null if not exists + */ + public String getDatabaseSettings(ComponentName name,int shards,int replicas) { + return dbMap.get(name) == null ? null : dbMap.get(name).getSettings(shards, replicas); + } + + /** + * get converter for component data + * @param dst destination release + * @param comp component to convert + * @return + */ + public SearchHitConverter getConverter(Release dst, ComponentName comp) { + if(dst==this.release && this.getComponents().contains(comp)) { + return new KeepDataSearchHitConverter(comp); + } + return null; + } + + public static ReleaseInformation getInstance(Release r) { + switch (r) { + case EL_ALTO: + return new ElAltoReleaseInformation(); + case FRANKFURT_R1: + return new FrankfurtReleaseInformation(); + case GUILIN: + return new GuilinReleaseInformation(); + default: + return null; + } + } + + /** + * @return + */ + public Set<ComponentName> getComponents() { + return dbMap.keySet(); + } + + /** + * @param component + * @return + */ + public boolean hasOwnDbIndex(ComponentName component) { + return this.getDatabaseMapping(component)!=null; + } + + /** + * @param indices + * @return true if components of this release are covered by the given indices + */ + protected boolean containsIndices(IndicesEntryList indices) { + + if(this.dbMap.size()<=0) { + return false; + } + for(DatabaseInfo entry:this.dbMap.values()) { + String dbIndexName = entry.getIndex(this.release.getDBSuffix()); + if(indices.findByIndex(dbIndexName)==null) { + return false; + } + } + return true; + + } + + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/BaseSearchHitConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/BaseSearchHitConverter.java new file mode 100644 index 000000000..2f4f067bd --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/BaseSearchHitConverter.java @@ -0,0 +1,51 @@ +/* + * ============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.setup.data; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; + +public abstract class BaseSearchHitConverter implements SearchHitConverter { + + private ComponentName name; + public BaseSearchHitConverter(ComponentName name) { + this.name = name; + } + + protected SearchHit getSearchHit(String index, String type, String id, JSONObject data) { + JSONObject o = new JSONObject(); + o.put("_index", index); + o.put("_type", type); + o.put("_id", id); + o.put("_source", data); + return new SearchHit(o); + } + @Override + public ComponentData convert(DataContainer container) { + ComponentData srcData = container.getComponents().get(this.name); + ComponentData dstData = new ComponentData(srcData.getName()); + for(SearchHit sh:srcData) { + dstData.add(this.convert(sh)); + } + return dstData; + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentData.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentData.java new file mode 100644 index 000000000..fd361843c --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentData.java @@ -0,0 +1,62 @@ +/* + * ============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.setup.data; + +import java.util.ArrayList; +import org.json.JSONArray; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; + +public class ComponentData extends ArrayList<SearchHit>{ + + /** + * + */ + private static final long serialVersionUID = 1L; + private final ComponentName name; + + public ComponentData(ComponentName name) { + this(name,null); + } + + public ComponentData(ComponentName name,JSONArray a) { + this.name = name; + if(a!=null) { + for(int i=0;i<a.length();i++) { + this.add(new SearchHit(a.getJSONObject(i))); + } + } + + } + + public ComponentName getName() { + return this.name; + } + + public JSONArray toJsonArray() { + JSONArray a = new JSONArray(); + for(SearchHit h:this) { + a.put(h.getRaw()); + } + return a; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentName.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentName.java new file mode 100644 index 000000000..9c5ef5c53 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ComponentName.java @@ -0,0 +1,59 @@ +/* + * ============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.setup.data; + +public enum ComponentName { + + CONNECTIONLOG("connectionlog"), + EVENTLOG("eventlog"), + FAULTLOG("faultlog"), + FAULTCURRENT("faultcurrent"), + HISTORICAL_PERFORMANCE_15M("historicalperformance15m"), + HISTORICAL_PERFORMANCE_24H("historicalperformance24h"), + INVENTORY("inventory"), + INVENTORYTOPLEVEL("inventorytoplevel"), + MAINTENANCE("maintenance"), + MEDIATOR_SERVER("mediator-server"), + REQUIRED_NETWORKELEMENT("required-networkelement"); + + private final String value; + + private ComponentName(String s) { + this.value = s; + } + @Override + public String toString() { + return this.value; + } + public String getValue() { + return value; + } + public static ComponentName getValueOf(String s) throws Exception { + s = s.toLowerCase(); + for(ComponentName p:ComponentName.values()) { + if(p.value.equals(s)) { + return p; + } + } + throw new Exception("value not found for "+s); + } +}
\ No newline at end of file diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigData.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigData.java new file mode 100644 index 000000000..95c483736 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigData.java @@ -0,0 +1,35 @@ +/* + * ============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.setup.data; + +public class ConfigData { + + private final String[] lines; + + public String[] getLines() { + return this.lines; + } + public ConfigData(String content) { + this.lines = content.split("\n"); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigName.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigName.java new file mode 100644 index 000000000..181fe2006 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/ConfigName.java @@ -0,0 +1,52 @@ +/* + * ============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.setup.data; + +public enum ConfigName { + + APIGATEWAY("apigateway"), + DEVICEMANAGER("devicemanager"), + DATAPROVIDER("dataprovider"); + + + private final String value; + + private ConfigName(String s) { + this.value = s; + } + @Override + public String toString() { + return this.value; + } + public String getValue() { + return value; + } + public static ConfigName getValueOf(String s) throws Exception { + s = s.toLowerCase(); + for(ConfigName p:ConfigName.values()) { + if(p.value.equals(s)) { + return p; + } + } + throw new Exception("value not found"); + } +}
\ No newline at end of file diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataContainer.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataContainer.java new file mode 100644 index 000000000..f50969ed6 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataContainer.java @@ -0,0 +1,141 @@ +/* + * ============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.setup.data; + +import java.io.File; +import java.io.FileNotFoundException; +import java.nio.file.Files; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStampImpl; + +/** + * + * @author Michael Dürre + * + */ +public class DataContainer { + + private final Release release; + private final Date created; + private final Map<ComponentName, ComponentData> components; + private final Map<ConfigName, ConfigData> configs; + + public Release getRelease() { + return this.release; + } + + public boolean isCurrentRelease() { + return this.release.equals(Release.CURRENT_RELEASE); + } + + public Date getCreated() { + return this.created; + } + + public Map<ComponentName, ComponentData> getComponents() { + return this.components; + } + + public Map<ConfigName, ConfigData> getConfigs() { + return this.configs; + } + + public DataContainer() { + this(Release.CURRENT_RELEASE); + } + + public DataContainer(Release release) { + this(release, new Date()); + } + + public DataContainer(Release release, Date dt) { + this.release = release; + this.created = dt; + this.components = new HashMap<>(); + this.configs = new HashMap<>(); + } + + public void addComponent(ComponentName name, ComponentData data) { + this.components.put(name, data); + } + + public void addConfig(ConfigName name, ConfigData data) { + this.configs.put(name, data); + } + + public static DataContainer load(File file) throws Exception { + if(!file.exists()) { + throw new FileNotFoundException(); + } + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'"); + JSONObject o = new JSONObject(new String(Files.readAllBytes(file.toPath()))); + DataContainer c = new DataContainer(Release.getValueOf(o.getString("release")), + format.parse(o.getString("created"))); + JSONObject comps = o.getJSONObject("components"); + + String k; + ComponentName compKey; + JSONArray compData; + for (Object key : comps.keySet()) { + k = String.valueOf(key); + // check component if exists + compKey = ComponentName.getValueOf(k); + compData = comps.getJSONArray(k); + c.addComponent(compKey, new ComponentData(compKey, compData)); + } + ConfigName confKey; + ConfigData confData; + JSONObject confs = o.getJSONObject("configs"); + for (Object key : confs.keySet()) { + k = String.valueOf(key); + confKey = ConfigName.getValueOf(k); + confData = new ConfigData(confs.getString(k)); + c.addConfig(confKey, confData); + } + return c; + } + + public String toJSON() { + JSONObject o = new JSONObject(); + o.put("release", this.release.getValue()); + o.put("created", NetconfTimeStampImpl.getConverter().getTimeStampAsNetconfString(this.created)); + JSONObject compsJson = new JSONObject(); + JSONObject confsJson = new JSONObject(); + for (Entry<ComponentName, ComponentData> entry : this.components.entrySet()) { + compsJson.put(entry.getKey().getValue(), entry.getValue().toJsonArray()); + } + for (Entry<ConfigName, ConfigData> entry : this.configs.entrySet()) { + confsJson.put(entry.getKey().getValue(), entry.getValue().toString()); + } + o.put("components", compsJson); + o.put("configs", confsJson); + return o.toString(); + } + +}
\ No newline at end of file diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataMigrationReport.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataMigrationReport.java new file mode 100644 index 000000000..c8270bad6 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DataMigrationReport.java @@ -0,0 +1,54 @@ +/* + * ============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.setup.data; + +import java.util.ArrayList; +import java.util.List; + +public class DataMigrationReport { + + private boolean completed; + private final List<String> logs; + private final List<String> errors; + public void setCompleted(boolean s) { + this.completed = s; + } + public boolean completed() { + return this.completed; + } + public void log(String format,Object ...params) { + this.logs.add(String.format(format, params)); + } + public void error(String format,Object ...params) { + this.errors.add(String.format(format, params)); + } + public DataMigrationReport() { + this.completed = false; + this.logs = new ArrayList<>(); + this.errors = new ArrayList<>(); + } + @Override + public String toString() { + return "DataMigrationReport [completed=" + completed + ", logs=" + logs + ", errors=" + errors + "]"; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DatabaseInfo.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DatabaseInfo.java new file mode 100644 index 000000000..a6e81343a --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/DatabaseInfo.java @@ -0,0 +1,63 @@ +/* + * ============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.setup.data; + +/** + * @author Michael Dürre + * + */ +public class DatabaseInfo { + public final String doctype; + public final String alias; + private final String mapping; + private final String settingsFormat; + private final String index; + public String getIndex(String version) { + return this.index + version; + } + + public DatabaseInfo(String alias, String doctype, String mapping) { + this(alias,alias,doctype,mapping); + } + + public DatabaseInfo(String index,String alias, String doctype, String mapping) { + this(index,alias,doctype, mapping, + "{\"index\":{\"number_of_shards\":%d,\"number_of_replicas\":%d},\"analysis\":{\"analyzer\":{\"content\":" + + "{\"type\":\"custom\",\"tokenizer\":\"whitespace\"}}}}"); + } + + public DatabaseInfo(String index,String alias,String doctype, String mapping, String settingsformat) { + this.index = index; + this.alias = alias; + this.doctype = doctype; + this.mapping = mapping; + this.settingsFormat = settingsformat; + } + + + public String getMapping() { + return this.mapping==null?null:String.format("{\"%s\":{\"properties\":%s}}",this.doctype, this.mapping); + } + public String getSettings(int shards, int replicas) { + return String.format(this.settingsFormat, shards, replicas); + } +}
\ No newline at end of file diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/KeepDataSearchHitConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/KeepDataSearchHitConverter.java new file mode 100644 index 000000000..fa86c90e2 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/KeepDataSearchHitConverter.java @@ -0,0 +1,43 @@ +/* + * ============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.setup.data; + +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; + +public class KeepDataSearchHitConverter implements SearchHitConverter { + + + private final ComponentName name; + + public KeepDataSearchHitConverter(ComponentName name) { + this.name = name; + } + @Override + public SearchHit convert(SearchHit source) { + return source; + } + + @Override + public ComponentData convert(DataContainer container) { + return container.getComponents().get(this.name); + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/MavenDatabasePluginInitFile.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/MavenDatabasePluginInitFile.java new file mode 100644 index 000000000..a63f8d4c1 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/MavenDatabasePluginInitFile.java @@ -0,0 +1,58 @@ +/* + * ============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.setup.data; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.ReleaseInformation; + + +/** + * @author Michael Dürre + * + */ +public class MavenDatabasePluginInitFile { + private static final int replicas=1; + private static final int shards=5; + private static final String mappings="\"mappings\":%s"; + private static final String settings="\"settings\":{\"index\":{\"number_of_shards\":%d,\"number_of_replicas\":%d},\"analysis\":{\"analyzer\":{\"content\":"+ + "{\"type\":\"custom\",\"tokenizer\":\"whitespace\"}}}}"; + + public static void create(Release release, String filename) throws IOException { + + ReleaseInformation ri = ReleaseInformation.getInstance(release); + Set<ComponentName> comps=ri.getComponents(); + List<String> lines = new ArrayList<String>(); + for(ComponentName c:comps) { + lines.add(String.format("PUT:%s/:{"+settings+","+mappings+"}",ri.getIndex(c),shards,replicas,ri.getDatabaseMapping(c))); + lines.add(String.format("PUT:%s/_alias/%s/:{}", ri.getIndex(c),ri.getAlias(c))); + } + Files.write(new File(filename).toPath(),lines,StandardCharsets.UTF_8); + + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/Release.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/Release.java new file mode 100644 index 000000000..ae4522dc5 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/Release.java @@ -0,0 +1,98 @@ +/* + * ============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.setup.data; + +import org.onap.ccsdk.features.sdnr.wt.common.database.data.AliasesEntry; +import org.onap.ccsdk.features.sdnr.wt.common.database.data.EsVersion; + +public enum Release { + + EL_ALTO("el alto","_v1",new EsVersion(2,2,0),new EsVersion(2,2,0)), + FRANKFURT_R1("frankfurt-R1","-v2",new EsVersion(6,4,3),new EsVersion(6,8,6)), + FRANKFURT_R2("frankfurt-R2","",new EsVersion(6,4,3),new EsVersion(6,8,6)), + FRANKFURT_R3("frankfurt-R3","",new EsVersion(6,4,3),new EsVersion(6,8,6)), + + GUILIN("guilin","",new EsVersion(6,4,3),new EsVersion(6,8,6)); + + public static final Release CURRENT_RELEASE = Release.FRANKFURT_R1; + + private final String value; + private final String dbSuffix; + private final EsVersion minDbVersion; + private final EsVersion maxDbVersion; + + private Release(String s,String dbsuffix,EsVersion minDbVersion,EsVersion maxDbVersion) { + this.value = s; + this.dbSuffix=dbsuffix; + this.minDbVersion = minDbVersion; + this.maxDbVersion = maxDbVersion; + } + @Override + public String toString() { + return this.value; + } + public String getValue() { + return value; + } + public static Release getValueOf(String s) throws Exception { + //s = s.toLowerCase(); + for(Release p:Release.values()) { + if(p.value.equals(s)) { + return p; + } + } + throw new Exception("value not found"); + } + public static Release getValueBySuffix(String suffix) { + for(Release r:Release.values()) { + if(r.dbSuffix.equals(suffix)) + return r; + } + return null; + } + public static String getDbSuffix(AliasesEntry entry) throws Exception { + ComponentName comp = ComponentName.getValueOf(entry.getAlias()); + if(comp!=null) { + return entry.getIndex().substring(entry.getAlias().length()); + } + return null; + } + /** + * @return + */ + public String getDBSuffix() { + return this.dbSuffix; + } + /** + * @return + */ + public EsVersion getDBVersion() { + return this.minDbVersion; + } + /** + * @param dbVersion2 + * @return + */ + public boolean isDbInRange(EsVersion dbVersion) { + return dbVersion.isNewerOrEqualThan(minDbVersion) && dbVersion.isOlderOrEqualThan(maxDbVersion); + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/SearchHitConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/SearchHitConverter.java new file mode 100644 index 000000000..7a549ca86 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/data/SearchHitConverter.java @@ -0,0 +1,64 @@ +/* + * ============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.setup.data; + +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.elalto.ElAltoReleaseInformation; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.frankfurt.FrankfurtReleaseInformation; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.guilin.GuilinReleaseInformation; + +public interface SearchHitConverter { + + /** + * convert single entry of database + * @param source + * @return + */ + public SearchHit convert(SearchHit source); + + /** + * @param component destination component + * @param container source data + * @return data for destination component + */ + public ComponentData convert(DataContainer container); + + + public static class Factory{ + public static SearchHitConverter getInstance(Release src,Release dst, ComponentName component) { + switch(src) { + case EL_ALTO: + return new ElAltoReleaseInformation().getConverter(dst, component); + case FRANKFURT_R1: + return new FrankfurtReleaseInformation().getConverter(dst, component); + case GUILIN: + return new GuilinReleaseInformation().getConverter(dst, component); + default: + return null; + + } + } + } + + + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/ElAltoReleaseInformation.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/ElAltoReleaseInformation.java new file mode 100644 index 000000000..559468f79 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/ElAltoReleaseInformation.java @@ -0,0 +1,92 @@ +/* + * ============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.setup.elalto; + +import java.util.HashMap; +import java.util.Map; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DatabaseInfo; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.KeepDataSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.ReleaseInformation; + +public class ElAltoReleaseInformation extends ReleaseInformation { + + + private Map<Release, Map<ComponentName, SearchHitConverter>> converters; + + public ElAltoReleaseInformation() { + super(Release.EL_ALTO, createDbInfos()); + this.converters = generateConverters(); + } + + private static Map<ComponentName, DatabaseInfo> createDbInfos() { + Map<ComponentName,DatabaseInfo> map = new HashMap<>(); + map.put(ComponentName.EVENTLOG, new DatabaseInfo("sdnevents","eventlog","")); + map.put(ComponentName.FAULTCURRENT, new DatabaseInfo("sdnevents","faultcurrent","")); + map.put(ComponentName.FAULTLOG, new DatabaseInfo("sdnevents","faultlog","")); + map.put(ComponentName.INVENTORY, new DatabaseInfo("sdnevents","inventoryequipment","")); + map.put(ComponentName.INVENTORYTOPLEVEL, new DatabaseInfo("sdnevents","inventorytoplevel","")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_15M, new DatabaseInfo("sdnperformance","historicalperformance15min","")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_24H, new DatabaseInfo("sdnperformance","historicalperformance24h","")); + map.put(ComponentName.REQUIRED_NETWORKELEMENT, new DatabaseInfo("mwtn","required-networkelement","{\"required-networkelement\": {\"date_detection\": false }}")); + map.put(ComponentName.MEDIATOR_SERVER, new DatabaseInfo("mwtn","mediator-server","")); + map.put(ComponentName.MAINTENANCE, new DatabaseInfo("mwtn","maintenancemode","")); + return map; + } + + /** + * @return components used in el alto + */ + + + private static Map<Release, Map<ComponentName, SearchHitConverter>> generateConverters() { + Map<Release, Map<ComponentName, SearchHitConverter>> c = new HashMap<>(); + Map<ComponentName, SearchHitConverter> frankfurtConverters = new HashMap<>(); + frankfurtConverters.put(ComponentName.EVENTLOG, new FrankfurtEventlogConverter()); + frankfurtConverters.put(ComponentName.FAULTCURRENT, new FrankfurtFaultcurrentConverter()); + frankfurtConverters.put(ComponentName.FAULTLOG, new FrankfurtFaultlogConverter()); + frankfurtConverters.put(ComponentName.INVENTORY, new KeepDataSearchHitConverter(ComponentName.INVENTORY)); + //obsolete in frankfurt + //frankfurtConverters.put(ComponentName.INVENTORYTOPLEVEL, new KeepDataSearchHitConverter(ComponentName.INVENTORYTOPLEVEL)); + frankfurtConverters.put(ComponentName.HISTORICAL_PERFORMANCE_15M, new KeepDataSearchHitConverter(ComponentName.HISTORICAL_PERFORMANCE_15M)); + frankfurtConverters.put(ComponentName.HISTORICAL_PERFORMANCE_24H, new KeepDataSearchHitConverter(ComponentName.HISTORICAL_PERFORMANCE_24H)); + frankfurtConverters.put(ComponentName.MAINTENANCE, new FrankfurtMaintenanceConverter()); + frankfurtConverters.put(ComponentName.MEDIATOR_SERVER, new KeepDataSearchHitConverter(ComponentName.MEDIATOR_SERVER)); + frankfurtConverters.put(ComponentName.REQUIRED_NETWORKELEMENT, new FrankfurtRequiredNetworkElementConverter()); + frankfurtConverters.put(ComponentName.CONNECTIONLOG,new FrankfurtConnectionlogConverter()); + c.put(Release.FRANKFURT_R1,frankfurtConverters); + return c; + } + + @Override + public SearchHitConverter getConverter(Release dst, ComponentName comp) { + SearchHitConverter c=this.converters.containsKey(dst)?this.converters.get(dst).get(comp):null; + if(c==null) { + c=super.getConverter(dst, comp); + } + return c; + } + + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtConnectionlogConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtConnectionlogConverter.java new file mode 100644 index 000000000..d68373199 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtConnectionlogConverter.java @@ -0,0 +1,120 @@ +/* + * ============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.setup.elalto; + +import java.util.Map; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentData; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataContainer; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.frankfurt.data.ConnectionLogStatus; + +/** + * + * @author Michael Dürre + * + * Convert data from el alto to frankfurt + * + * src: eventlog + * dst: connectionlog + * + * + * { + * "event": { + * "nodeName": "SDN-Controller-5a150173d678", + * "counter": "48", + * "timeStamp": "2019-10-07T09:57:08.2Z", + * "objectId": "Sim2230", + * "attributeName": "ConnectionStatus", + * "newValue": "connecting", + * "type": "AttributeValueChangedNotificationXml" + * } + * } + * + * => + * + * { + * "timestamp": "2020-01-28T12:00:10.2Z", + * "status": "Connected", + * "node-id": "sim1" + * } + * + */ +public class FrankfurtConnectionlogConverter extends BaseSearchHitConverter { + + public FrankfurtConnectionlogConverter() { + super(ComponentName.CONNECTIONLOG); + } + + /** + * @source eventlog searchhit converted to connectionlog entry + */ + @Override + public SearchHit convert(SearchHit source) { + + JSONObject data = new JSONObject(); + JSONObject inner = source.getSource().getJSONObject("event"); + String eventType = inner.getString("type"); + String eventSource = inner.getString("nodeName"); + if (!eventSource.startsWith("SDN-Controller")) { + return null; + } + data.put("node-id", inner.getString("objectId")); + data.put("timestamp", inner.getString("timeStamp")); + if (eventType.equals("AttributeValueChangedNotificationXml")) { + String event = inner.getString("newValue").toLowerCase(); + if (event.equals("connected")) { + data.put("status", ConnectionLogStatus.Connected.getName()); + } else if (event.equals("connecting")) { + data.put("status", ConnectionLogStatus.Connecting.getName()); + } else { + data.put("status", ConnectionLogStatus.UnableToConnect.getName()); + } + + } else if (eventType.equals("ObjectCreationNotificationXml")) { + data.put("status", ConnectionLogStatus.Mounted.getName()); + + } else if (eventType.equals("ObjectDeletionNotificationXml")) { + data.put("status", ConnectionLogStatus.Unmounted.getName()); + } + + return this.getSearchHit(source.getIndex(), source.getType(), source.getId(), data); + } + + @Override + public ComponentData convert(DataContainer container) { + Map<ComponentName, ComponentData> src = container.getComponents(); + if (!src.containsKey(ComponentName.EVENTLOG)) { + return null; + } + ComponentData eventData = src.get(ComponentName.EVENTLOG); + ComponentData dstData = new ComponentData(ComponentName.CONNECTIONLOG); + for (SearchHit sh : eventData) { + dstData.add(this.convert(sh)); + } + return dstData; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtEventlogConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtEventlogConverter.java new file mode 100644 index 000000000..e04378bbe --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtEventlogConverter.java @@ -0,0 +1,55 @@ +/* + * ============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.setup.elalto; + +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentData; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataContainer; + +/** + * + * @author Michael Dürre + * + * + * Cannot be converted from el alto to frankfurt + * most of the entries are in connectionlog + * + */ +public class FrankfurtEventlogConverter extends BaseSearchHitConverter{ + + public FrankfurtEventlogConverter() { + super(ComponentName.EVENTLOG); + } + + @Override + public SearchHit convert(SearchHit source) { + return null; + } + + @Override + public ComponentData convert(DataContainer container) { + return null; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultcurrentConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultcurrentConverter.java new file mode 100644 index 000000000..060434fe9 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultcurrentConverter.java @@ -0,0 +1,80 @@ +/* + * ============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.setup.elalto; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; + +/** + * + * @author Michael Dürre + * + * { + * "faultCurrent": { + * "nodeName": "sim9090", + * "counter": "50443", + * "timeStamp": "2017-07-27T13:33:49.0Z", + * "objectId": "a2.module-1.1.5.6", + * "problem": "Ais", + * "severity": "Major", + * "type": "ProblemNotificationXml" + * } + * } + * + * => + * + * { + * "timestamp": "2017-01-01T00:00:00.0Z", + * "object-id": "LP-MWS-TTP-01", + * "severity": "Warning", + * "counter": 2, + * "node-id": "sim1", + * "problem": "unknownProblem2" + * } + */ +public class FrankfurtFaultcurrentConverter extends BaseSearchHitConverter { + + /** + * @param name + */ + public FrankfurtFaultcurrentConverter() { + super(ComponentName.FAULTCURRENT); + } + + @Override + public SearchHit convert(SearchHit source) { + + JSONObject data = new JSONObject(); + JSONObject src = source.getSource(); + JSONObject srcInner = src.getJSONObject("faultCurrent"); + data.put("node-id", srcInner.getString("nodeName")); + data.put("severity", srcInner.getString("severity")); + data.put("counter", Long.parseLong(srcInner.getString("counter"))); + data.put("timestamp", srcInner.getString("timeStamp")); + data.put("object-id",srcInner.getString("objectId")); + data.put("problem", srcInner.getString("problem")); + + return this.getSearchHit(source.getIndex(), source.getType(), source.getId(), data ); + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultlogConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultlogConverter.java new file mode 100644 index 000000000..87e71c612 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtFaultlogConverter.java @@ -0,0 +1,78 @@ +/* + * ============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.setup.elalto; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; + +/** + * + * @author Michael Dürre + *{ + * "fault": { + * "nodeName": "SDN-Controller-5a150173d678", + * "counter": "380", + * "timeStamp": "2019-10-18T18:40:25.0Z", + * "objectId": "ADVA-DTAG-Nuernberg-3", + * "problem": "connectionLossOAM", + * "severity": "Major", + * "type": "ProblemNotificationXml" + * } + *} + * + * => + *{ + * "timestamp": "2017-01-01T00:00:00.0Z", + * "object-id": "LP-MWPS-RADIO", + * "severity": "Critical", + * "counter": -1, + * "node-id": "sim1", + * "source-type": "Netconf", + * "problem": "signalIsLost" + *} + * + */ +public class FrankfurtFaultlogConverter extends BaseSearchHitConverter{ + + public FrankfurtFaultlogConverter() { + super(ComponentName.FAULTLOG); + } + + @Override + public SearchHit convert(SearchHit source) { + + JSONObject data = new JSONObject(); + JSONObject src = source.getSource(); + JSONObject srcInner = src.getJSONObject("fault"); + data.put("node-id", srcInner.getString("nodeName")); + data.put("severity", srcInner.getString("severity")); + data.put("counter", Long.parseLong(srcInner.getString("counter"))); + data.put("timestamp", srcInner.getString("timeStamp")); + data.put("object-id",srcInner.getString("objectId")); + data.put("problem", srcInner.getString("problem")); + data.put("type", "Netconf"); + return this.getSearchHit(source.getIndex(), source.getType(), source.getId(), data ); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtMaintenanceConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtMaintenanceConverter.java new file mode 100644 index 000000000..16be5d97b --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtMaintenanceConverter.java @@ -0,0 +1,86 @@ +/* + * ============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.setup.elalto; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; + +/** + * convert maintenance object from el alto version to frankfurt + * + * @author jack + * + *{ + * "node": "ddd", + * "filter": [ + * { + * "definition": { + * "object-id-ref": "", + * "problem": "" + * }, + * "description": "", + * "start": "2019-11-26T15:37+00:00", + * "end": "2019-11-26T23:37+00:00" + * }], + * "active": false + *} + * => + *{ + * "id": "sim1" + * "node-id": "sim1", + * "description": "", + * "start": "2020-01-28T12:00:17.6Z", + * "end": "2020-01-28T12:00:17.6Z", + * "active": false, + * "object-id-ref": "", + * "problem": "" + * + */ +public class FrankfurtMaintenanceConverter extends BaseSearchHitConverter { + + public FrankfurtMaintenanceConverter() { + super(ComponentName.MAINTENANCE); + } + + @Override + public SearchHit convert(SearchHit source) { + + JSONObject src = source.getSource(); + JSONObject data = new JSONObject(); + data.put("id", src.getString("node")); + data.put("node-id", src.getString("node")); + data.put("active", src.getBoolean("active")); + JSONObject filter = null; + if (src.has("filter")) { + filter = src.getJSONArray("filter").length() > 0 ? src.getJSONArray("filter").getJSONObject(0) : null; + } + data.put("start", filter != null ? filter.getString("start") : ""); + data.put("end", filter != null ? filter.getString("end") : ""); + data.put("description", filter != null ? filter.getString("description") : ""); + JSONObject definition = filter!=null?filter.has("definition")?filter.getJSONObject("definition"):null:null; + data.put("problem", definition!=null?definition.getString("problem"):""); + data.put("object-id-ref", definition!=null?definition.getString("object-id-ref"):""); + return this.getSearchHit(source.getIndex(), source.getType(), source.getId(), data); + } +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtRequiredNetworkElementConverter.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtRequiredNetworkElementConverter.java new file mode 100644 index 000000000..ef6de907e --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/elalto/FrankfurtRequiredNetworkElementConverter.java @@ -0,0 +1,78 @@ +/* + * ============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.setup.elalto; + +import org.json.JSONObject; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.BaseSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.frankfurt.data.ConnectionLogStatus; + +/** + * + * @author Michael Dürre + * + * { + * "mountId":"nts-manager-dev-micha", + * "host":"10.20.5.2", + * "port":8300, + * "username":"netconf", + * "password":"netconf" + * } + * + * => + * + * { + * "node-id": "sim1", + * "is-required": true, + * "password": "ads", + * "port": 12600, + * "host": "10.20.5.2", + * "id": "sim1", + * "username": "ad", + * "status": "Connected" + * } + * + */ +public class FrankfurtRequiredNetworkElementConverter extends BaseSearchHitConverter{ + + public FrankfurtRequiredNetworkElementConverter() { + super(ComponentName.REQUIRED_NETWORKELEMENT); + } + + @Override + public SearchHit convert(SearchHit source) { + + JSONObject data = new JSONObject(); + JSONObject src = source.getSource(); + data.put("id", src.getString("mountId")); + data.put("node-id", src.getString("mountId")); + data.put("username", src.getString("username")); + data.put("password", src.getString("password")); + data.put("host", src.getString("host")); + data.put("port", src.getInt("port")); + data.put("status", ConnectionLogStatus.Undefined.getName()); + data.put("is-required", true); + return this.getSearchHit(source.getIndex(), source.getType(), source.getId(), data ); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/FrankfurtReleaseInformation.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/FrankfurtReleaseInformation.java new file mode 100644 index 000000000..f83263b62 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/FrankfurtReleaseInformation.java @@ -0,0 +1,77 @@ +/* + * ============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.setup.frankfurt; + +import java.util.HashMap; +import java.util.Map; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DatabaseInfo; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.ReleaseInformation; + +public class FrankfurtReleaseInformation extends ReleaseInformation { + + private final Map<Release, Map<ComponentName, SearchHitConverter>> converters = new HashMap<>(); + + public FrankfurtReleaseInformation() { + super(Release.FRANKFURT_R1, createDBMap()); + } + + private static Map<ComponentName, DatabaseInfo> createDBMap() { + Map<ComponentName, DatabaseInfo> map = new HashMap<>(); + map.put(ComponentName.CONNECTIONLOG, new DatabaseInfo("connectionlog", "connectionlog", + "{\"node-id\": {\"type\": \"keyword\"},\"timestamp\": {\"type\": \"date\"},\"status\": {\"type\": \"keyword\"}}")); + map.put(ComponentName.EVENTLOG, new DatabaseInfo("eventlog", "eventlog", + "{\"node-id\": {\"type\": \"keyword\"},\"source-type\": {\"type\": \"keyword\"},\"timestamp\": {\"type\": \"date\"},\"new-value\": {\"type\": \"keyword\"},\"attribute-name\": {\"type\": \"keyword\"},\"counter\": {\"type\": \"long\"},\"object-id\": {\"type\": \"keyword\"}}")); + map.put(ComponentName.FAULTCURRENT, new DatabaseInfo("faultcurrent", "faultcurrent", + "{\"node-id\": {\"type\": \"keyword\"},\"severity\": {\"type\": \"keyword\"},\"timestamp\": {\"type\": \"date\"},\"problem\": {\"type\": \"keyword\"},\"counter\": {\"type\": \"long\"},\"object-id\":{\"type\": \"keyword\"}}")); + map.put(ComponentName.FAULTLOG, new DatabaseInfo("faultlog", "faultlog", + "{\"node-id\": {\"type\": \"keyword\"},\"severity\": {\"type\": \"keyword\"},\"timestamp\": {\"type\": \"date\"},\"problem\": {\"type\": \"keyword\"},\"counter\": {\"type\": \"long\"},\"object-id\":{\"type\": \"keyword\"},\"source-type\":{\"type\": \"keyword\"}}")); + map.put(ComponentName.INVENTORY, new DatabaseInfo("inventoryequipment", "inventoryequipment", + "{\"date\": {\"type\": \"keyword\"},\"model-identifier\": {\"type\": \"keyword\"},\"manufacturer-identifier\": {\"type\": \"keyword\"},\"type-name\": {\"type\": \"keyword\"},\"description\": {\"type\": \"keyword\"},\"uuid\": {\"type\": \"keyword\"},\"version\": {\"type\": \"keyword\"},\"parent-uuid\": {\"type\": \"keyword\"},\"contained-holder\": {\"type\": \"keyword\"},\"node-id\": {\"type\": \"keyword\"},\"tree-level\": {\"type\": \"long\"},\"part-type-id\": {\"type\": \"keyword\"},\"serial\": {\"type\": \"keyword\"}}")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_15M, new DatabaseInfo("historicalperformance15min", + "historicalperformance15min", + "{\"node-name\":{\"type\": \"keyword\"},\"timestamp\":{\"type\": \"date\"},\"suspect-interval-flag\":{\"type\":\"boolean\"},\"scanner-id\":{\"type\": \"keyword\"},\"uuid-interface\":{\"type\": \"keyword\"},\"layer-protocol-name\":{\"type\": \"keyword\"},\"granularity-period\":{\"type\": \"keyword\"},\"radio-signal-id\":{\"type\": \"keyword\"}}")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_24H, new DatabaseInfo("historicalperformance24h", + "historicalperformance24h", + "{\"node-name\":{\"type\": \"keyword\"},\"timestamp\":{\"type\": \"date\"},\"suspect-interval-flag\":{\"type\":\"boolean\"},\"scanner-id\":{\"type\": \"keyword\"},\"uuid-interface\":{\"type\": \"keyword\"},\"layer-protocol-name\":{\"type\": \"keyword\"},\"granularity-period\":{\"type\": \"keyword\"},\"radio-signal-id\":{\"type\": \"keyword\"}}")); + map.put(ComponentName.REQUIRED_NETWORKELEMENT, new DatabaseInfo("networkelement-connection", + "networkelement-connection", + "{\"node-id\": {\"type\": \"keyword\"},\"host\": {\"type\": \"keyword\"},\"port\": {\"type\": \"long\"},\"username\": {\"type\": \"keyword\"},\"password\": {\"type\": \"keyword\"},\"core-model-capability\": {\"type\": \"keyword\"},\"device-type\": {\"type\": \"keyword\"},\"is-required\": {\"type\": \"boolean\"},\"status\": {\"type\": \"keyword\"}}")); + map.put(ComponentName.MEDIATOR_SERVER, new DatabaseInfo("mediator-server", "mediator-server", + "{\"url\":{\"type\": \"keyword\"},\"name\":{\"type\": \"keyword\"}}")); + map.put(ComponentName.MAINTENANCE, new DatabaseInfo("maintenancemode", "maintenancemode", + "{\"node-id\": {\"type\": \"keyword\"},\"active\": {\"type\": \"boolean\"}},\"date_detection\":false}}")); + return map; + } + + @Override + public SearchHitConverter getConverter(Release dst, ComponentName comp) { + SearchHitConverter c=this.converters.containsKey(dst)?this.converters.get(dst).get(comp):null; + if(c==null) { + c=super.getConverter(dst, comp); + } + return c; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/data/ConnectionLogStatus.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/data/ConnectionLogStatus.java new file mode 100644 index 000000000..7615c4452 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/frankfurt/data/ConnectionLogStatus.java @@ -0,0 +1,38 @@ +/* + * ============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.setup.frankfurt.data; + +/** + * @author Michael Dürre + * + */ +public enum ConnectionLogStatus { + Connected, Connecting, UnableToConnect, Mounted, Unmounted, Undefined; + + /** + * @return + */ + public String getName() { + return this.name(); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/guilin/GuilinReleaseInformation.java b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/guilin/GuilinReleaseInformation.java new file mode 100644 index 000000000..4912e4bc4 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/guilin/GuilinReleaseInformation.java @@ -0,0 +1,71 @@ +/* + * ============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.setup.guilin; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.KeepDataSearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.ReleaseInformation; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DatabaseInfo; + +public class GuilinReleaseInformation extends ReleaseInformation { + + /** + * @param r + * @param dbMap + */ + public GuilinReleaseInformation() { + super(Release.GUILIN, createDBMap()); + + } + + private static Map<ComponentName, DatabaseInfo> createDBMap() { + Map<ComponentName, DatabaseInfo> map = new HashMap<>(); + map.put(ComponentName.EVENTLOG, new DatabaseInfo("eventlog", "eventlog", "")); + map.put(ComponentName.FAULTCURRENT, new DatabaseInfo("faultcurrent", "faultcurrent", "")); + map.put(ComponentName.FAULTLOG, new DatabaseInfo("faultlog", "faultlog", "")); + map.put(ComponentName.INVENTORY, new DatabaseInfo("inventoryequipment", "inventoryequipment", "")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_15M, + new DatabaseInfo("historicalperformance15min", "historicalperformance15min", "")); + map.put(ComponentName.HISTORICAL_PERFORMANCE_24H, + new DatabaseInfo("historicalperformance24h", "historicalperformance24h", "")); + map.put(ComponentName.REQUIRED_NETWORKELEMENT, + new DatabaseInfo("networkelement-connection", "networkelement-connection", "")); + map.put(ComponentName.MEDIATOR_SERVER, new DatabaseInfo("mediator-server", "mediator-server", "")); + map.put(ComponentName.MAINTENANCE, new DatabaseInfo("maintenancemode", "maintenancemode", "")); + return map; + } + + @Override + public SearchHitConverter getConverter(Release dst, ComponentName comp) { + if (dst == Release.GUILIN) { + return new KeepDataSearchHitConverter(comp); + } + return null; + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestData.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestData.java new file mode 100644 index 000000000..c17ef8b2d --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestData.java @@ -0,0 +1,171 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * 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.setup; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.common.test.JSONAssert; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentData; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ConfigData; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ConfigName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataContainer; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataMigrationReport; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.MavenDatabasePluginInitFile; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; + +/** + * @author Michael Dürre + * + */ +public class TestData { + private static final JSONObject EVENTLOG_SEARCHHIT = new JSONObject("{\n" + "\"_index\": \"sdnevents_v1\",\n" + + "\"_type\": \"eventlog\",\n" + "\"_id\": \"AXB7cJHlZ_FApnwi29xq\",\n" + "\"_version\": 1,\n" + + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"event\": {\n" + + "\"nodeName\": \"SDN-Controller-465e2ae306ca\",\n" + "\"counter\": \"1\",\n" + + "\"timeStamp\": \"2020-02-25T08:22:19.8Z\",\n" + "\"objectId\": \"sim2230\",\n" + + "\"attributeName\": \"ConnectionStatus\",\n" + "\"newValue\": \"connecting\",\n" + + "\"type\": \"AttributeValueChangedNotificationXml\"\n" + "}\n" + "}\n" + "}"); + private static final JSONObject EVENTLOG_SEARCHHIT2= new JSONObject("{\n" + "\"_index\": \"sdnevents_v1\",\n" + + "\"_type\": \"eventlog\",\n" + "\"_id\": \"AXB7cJHlZ_FApnwi29xq\",\n" + "\"_version\": 1,\n" + + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"event\": {\n" + + "\"nodeName\": \"SDN-Controller-465e2ae306ca\",\n" + "\"counter\": \"3\",\n" + + "\"timeStamp\": \"2020-02-22T08:22:19.8Z\",\n" + "\"objectId\": \"sim2230\",\n" + + "\"attributeName\": \"ConnectionStatus\",\n" + "\"newValue\": \"connected\",\n" + + "\"type\": \"AttributeValueChangedNotificationXml\"\n" + "}\n" + "}\n" + "}"); + private static final String CONFIG_CONTENT = "[dcae]\n" + + "dcaeUserCredentials=admin:admin\n" + + "dcaeUrl=off\n" + + "dcaeHeartbeatPeriodSeconds=120\n" + + "dcaeTestCollector=no\n" + + "\n" + + "[es]\n" + + "esCluster=sendateodl5\n" + + "#time limit to keep increasing data in database [in seconds]\n" + + "#60*60*24*30 (30days)\n" + + "esArchiveLimit=2592000\n" + + "#folder where removed data will be stored\n" + + "esArchiveFolder=./backup\n" + + "#interval to archive database [in seconds]\n" + + "#60*60*24 (1day)\n" + + "esArchiveInterval=86400\n" + + "\n" + + "[aai]\n" + + "#keep comment\n" + + "aaiHeaders=[\"X-TransactionId: 9999\"]\n" + + "aaiUrl=http://localhost:81\n" + + "aaiUserCredentials=AAI:AAI\n" + + "aaiDeleteOnMountpointRemove=false\n" + + "aaiTrustAllCerts=false\n" + + "aaiApiVersion=aai/v13\n" + + "aaiPropertiesFile=aaiclient.properties\n" + + "aaiApplicationId=SDNR\n" + + "aaiPcks12ClientCertFile=/opt/logs/externals/data/stores/keystore.client.p12\n" + + "aaiPcks12ClientCertPassphrase=adminadmin\n" + + "aaiClientConnectionTimeout=30000\n" + + "\n" + + "[pm]\n" + + "pmCluster=sendateodl5\n" + + "pmEnabled=true\n" + + ""; + @Test + public void testComponentData() { + JSONArray hits = new JSONArray(); + hits.put(EVENTLOG_SEARCHHIT); + hits.put(EVENTLOG_SEARCHHIT2); + ComponentData data = new ComponentData(ComponentName.EVENTLOG,hits); + JSONArray out = data.toJsonArray(); + assertEquals(ComponentName.EVENTLOG, data.getName()); + JSONAssert.assertEquals(EVENTLOG_SEARCHHIT.toString(),out.getJSONObject(0).toString(),false); + JSONAssert.assertEquals(EVENTLOG_SEARCHHIT2.toString(),out.getJSONObject(1).toString(),false); + + } + @Test + public void testConfigData() { + ConfigData data = new ConfigData(CONFIG_CONTENT); + assertTrue(data.getLines().length>10); + } + @Test + public void testConfigName() { + ConfigName name = ConfigName.APIGATEWAY; + assertEquals("apigateway", name.getValue()); + try { + assertEquals(ConfigName.APIGATEWAY,ConfigName.getValueOf("apigateway")); + } catch (Exception e) { + fail(e.getMessage()); + } + + } + @Test + public void testDataContainer() { + DataContainer container = new DataContainer(); + assertEquals(Release.CURRENT_RELEASE,container.getRelease()); + assertNotNull(container.getCreated()); + + try { + container = DataContainer.load(new File("src/test/resources/test.bak.json")); + } catch (Exception e) { + fail(e.getMessage()); + } + assertNotNull(container); + assertEquals(Release.EL_ALTO,container.getRelease()); + assertNotNull(container.getCreated()); + assertTrue(container.getComponents().size()>0); + assertTrue(container.getConfigs().size()==0); + } + @Test + public void testReport() { + DataMigrationReport report = new DataMigrationReport(); + + assertFalse(report.completed()); + long myvar = 42; + String myvar2 = "come"; + report.log("%d was wrong",myvar); + report.error("%s to me",myvar2); + assertTrue(report.toString().contains("42 was wrong")); + assertTrue(report.toString().contains("come to me")); + report.setCompleted(true); + assertTrue(report.completed()); + + } + @Test + public void TestPluginFileCreation() { + + final String TESTFILE = "asi324po.sa"; + try { + MavenDatabasePluginInitFile.create(Release.FRANKFURT_R1, TESTFILE); + } catch (IOException e) { + fail(e.getMessage()); + } + File f = new File(TESTFILE); + if(f.exists()) { + f.delete(); + } + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoReleaseInformation.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoReleaseInformation.java new file mode 100644 index 000000000..6c949df51 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoReleaseInformation.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * ============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.setup; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Set; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.elalto.ElAltoReleaseInformation; + +public class TestElAltoReleaseInformation { + + @Test + public void test() { + ElAltoReleaseInformation ri = new ElAltoReleaseInformation(); + Set<ComponentName> components = ri.getComponents(); + assertFalse(components.contains(ComponentName.CONNECTIONLOG)); + assertTrue(components.contains(ComponentName.EVENTLOG)); + assertEquals("sdnevents",ri.getAlias(ComponentName.FAULTLOG)); + assertEquals("sdnevents_v1",ri.getIndex(ComponentName.FAULTLOG)); + assertNull(ri.getConverter(Release.EL_ALTO,ComponentName.CONNECTIONLOG)); + assertNotNull(ri.getConverter(Release.EL_ALTO, ComponentName.FAULTCURRENT)); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoToFrankfurtConversion.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoToFrankfurtConversion.java new file mode 100644 index 000000000..3770cea67 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestElAltoToFrankfurtConversion.java @@ -0,0 +1,133 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * 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.setup; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.json.JSONObject; +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.SearchHitConverter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.elalto.ElAltoReleaseInformation; + +/** + * @author Michael Dürre + * + */ +public class TestElAltoToFrankfurtConversion { + + private static final JSONObject FAULTLOG_SEARCHHIT = new JSONObject("{\n" + "\"_index\": \"sdnevents_v1\",\n" + + "\"_type\": \"faultlog\",\n" + "\"_id\": \"sim12600/LP-MWS-TTP-01/unknownProblem1\",\n" + + "\"_version\": 1,\n" + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"fault\": {\n" + + "\"nodeName\": \"sim12600\",\n" + "\"counter\": \"1\",\n" + "\"timeStamp\": \"2017-01-01T00:00:00.0Z\",\n" + + "\"objectId\": \"LP-MWS-TTP-01\",\n" + "\"problem\": \"unknownProblem1\",\n" + + "\"severity\": \"Critical\",\n" + "\"type\": \"ProblemNotificationXml\"\n" + "}\n" + "}\n" + "}"); + private static final JSONObject FAULTCURRENT_SEARCHHIT = new JSONObject("{\n" + "\"_index\": \"sdnevents_v1\",\n" + + "\"_type\": \"faultcurrent\",\n" + "\"_id\": \"sim12600/LP-MWS-TTP-01/unknownProblem1\",\n" + + "\"_version\": 1,\n" + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"faultCurrent\": {\n" + + "\"nodeName\": \"sim12600\",\n" + "\"counter\": \"1\",\n" + "\"timeStamp\": \"2017-01-01T00:00:00.0Z\",\n" + + "\"objectId\": \"LP-MWS-TTP-01\",\n" + "\"problem\": \"unknownProblem1\",\n" + + "\"severity\": \"Critical\",\n" + "\"type\": \"ProblemNotificationXml\"\n" + "}\n" + "}\n" + "}"); + private static final JSONObject INVENTORY_SEARCHHIT = new JSONObject( + "{\n" + "\"_index\": \"sdnevents_v1\",\n" + "\"_type\": \"inventoryequipment\",\n" + + "\"_id\": \"sim12600/a2.module-1.1.5.5\",\n" + "\"_version\": 1,\n" + "\"_score\": 1,\n" + + "\"_source\": {\n" + "\"treeLevel\": 2,\n" + "\"parentUuid\": \"CARD-1.1.5.0\",\n" + + "\"mountpoint\": \"sim12600\",\n" + "\"uuid\": \"a2.module-1.1.5.5\",\n" + + "\"containedHolder\": [\n" + "\"SUBRACK-1.55.0.0\"\n" + "],\n" + "\"manufacturerName\": null,\n" + + "\"manufacturerIdentifier\": \"ONF-Wireless-Transport\",\n" + "\"serial\": \"310330015\",\n" + + "\"date\": \"2013-04-13T00:00:00.0Z\",\n" + "\"version\": \"a2.module-newest\",\n" + + "\"description\": \"WS/p8.module/a2.module#5\",\n" + "\"partTypeId\": \"3EM23141AD01\",\n" + + "\"modelIdentifier\": \"CRPQABVFAA\",\n" + "\"typeName\": \"a2.module\"\n" + "}\n" + "}"); + private static final JSONObject REQUIREDNE_SEARCHHIT = new JSONObject("{\n" + "\"_index\": \"mwtn_v1\",\n" + + "\"_type\": \"required-networkelement\",\n" + "\"_id\": \"sim2230\",\n" + "\"_version\": 1,\n" + + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"mountId\": \"sim2230\",\n" + "\"host\": \"10.20.5.2\",\n" + + "\"port\": 2230,\n" + "\"username\": \"adsa\",\n" + "\"password\": \"asda\"\n" + "}\n" + "}"); + private static final JSONObject EVENTLOG_SEARCHHIT = new JSONObject("{\n" + "\"_index\": \"sdnevents_v1\",\n" + + "\"_type\": \"eventlog\",\n" + "\"_id\": \"AXB7cJHlZ_FApnwi29xq\",\n" + "\"_version\": 1,\n" + + "\"_score\": 1,\n" + "\"_source\": {\n" + "\"event\": {\n" + + "\"nodeName\": \"SDN-Controller-465e2ae306ca\",\n" + "\"counter\": \"1\",\n" + + "\"timeStamp\": \"2020-02-25T08:22:19.8Z\",\n" + "\"objectId\": \"sim2230\",\n" + + "\"attributeName\": \"ConnectionStatus\",\n" + "\"newValue\": \"connecting\",\n" + + "\"type\": \"AttributeValueChangedNotificationXml\"\n" + "}\n" + "}\n" + "}"); + private static final JSONObject MAINTENANCE_SEARCHHIT = new JSONObject("{\n" + + "\"_index\": \"mwtn_v1\",\n" + + "\"_type\": \"maintenancemode\",\n" + + "\"_id\": \"sim2230\",\n" + + "\"_version\": 1,\n" + + "\"_score\": 1,\n" + + "\"_source\": {\n" + + "\"node\": \"sim2230\",\n" + + "\"filter\": [\n" + + "{\n" + + "\"definition\": {\n" + + "\"object-id-ref\": \"\",\n" + + "\"problem\": \"\"\n" + + "},\n" + + "\"description\": \"\",\n" + + "\"start\": \"\",\n" + + "\"end\": \"\"\n" + + "}\n" + + "],\n" + + "\"active\": false\n" + + "}\n" + + "}"); + @Test + public void test() { + ElAltoReleaseInformation ri = new ElAltoReleaseInformation(); + //faultlog + SearchHitConverter faultlogConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.FAULTLOG); + assertNotNull(faultlogConverter); + SearchHit frankfurtFaultlogEntry = faultlogConverter.convert(new SearchHit(FAULTLOG_SEARCHHIT)); + assertNotNull(frankfurtFaultlogEntry); + //faultcurrent + SearchHitConverter faultcurrentConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.FAULTCURRENT); + assertNotNull(faultcurrentConverter); + SearchHit frankfurtFaultcurrentEntry = faultcurrentConverter.convert(new SearchHit(FAULTCURRENT_SEARCHHIT)); + assertNotNull(frankfurtFaultcurrentEntry); + //inventory + SearchHitConverter inventoryConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.INVENTORY); + assertNotNull(inventoryConverter); + SearchHit frankfurtInventory = inventoryConverter.convert(new SearchHit(INVENTORY_SEARCHHIT)); + assertNotNull(frankfurtInventory); + //inventory + SearchHitConverter neConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.REQUIRED_NETWORKELEMENT); + assertNotNull(neConverter); + SearchHit frankfurtNE = neConverter.convert(new SearchHit(REQUIREDNE_SEARCHHIT)); + assertNotNull(frankfurtNE); + //eventlog + SearchHitConverter eventlogConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.EVENTLOG); + assertNotNull(eventlogConverter); + SearchHit frankfurtEvent = eventlogConverter.convert(new SearchHit(EVENTLOG_SEARCHHIT)); + assertNull(frankfurtEvent); + //eventlog->connectionlog + SearchHitConverter conlogConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.CONNECTIONLOG); + assertNotNull(conlogConverter); + SearchHit frankfurtconlog = conlogConverter.convert(new SearchHit(EVENTLOG_SEARCHHIT)); + assertNotNull(frankfurtconlog); + //maintenance + SearchHitConverter maintenanceConverter = ri.getConverter(Release.FRANKFURT_R1, ComponentName.MAINTENANCE); + assertNotNull(maintenanceConverter); + SearchHit frankfurtmaint = maintenanceConverter.convert(new SearchHit(MAINTENANCE_SEARCHHIT)); + assertNotNull(frankfurtmaint); + + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestFrankfurtReleaseInformation.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestFrankfurtReleaseInformation.java new file mode 100644 index 000000000..6cdde651a --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestFrankfurtReleaseInformation.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature + * ================================================================================================= + * 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.setup; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Set; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.ComponentName; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.frankfurt.FrankfurtReleaseInformation; + +public class TestFrankfurtReleaseInformation { + + @Test + public void test() { + FrankfurtReleaseInformation ri = new FrankfurtReleaseInformation(); + Set<ComponentName> components = ri.getComponents(); + assertFalse(components.contains(ComponentName.INVENTORYTOPLEVEL)); + assertTrue(components.contains(ComponentName.EVENTLOG)); + assertEquals("faultlog",ri.getAlias(ComponentName.FAULTLOG)); + assertEquals("faultlog-v2",ri.getIndex(ComponentName.FAULTLOG)); + assertNull(ri.getConverter(Release.FRANKFURT_R1,ComponentName.INVENTORYTOPLEVEL)); + assertNotNull(ri.getConverter(Release.FRANKFURT_R1, ComponentName.FAULTCURRENT)); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestGuilinReleaseInformation.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestGuilinReleaseInformation.java new file mode 100644 index 000000000..a376facc7 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestGuilinReleaseInformation.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * ============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.setup; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.guilin.GuilinReleaseInformation; + +public class TestGuilinReleaseInformation { + + @Test + public void test() { + new GuilinReleaseInformation(); + } + +} diff --git a/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestMigrationProvider.java b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestMigrationProvider.java new file mode 100644 index 000000000..82283f5a3 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/setup/TestMigrationProvider.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * 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.setup; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.DataMigrationProviderImpl; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.DataMigrationReport; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data.Release; + +/** + * @author Michael Dürre + * + */ +public class TestMigrationProvider { + + private static final String FRANKFURT_BACKUP_FILE = "src/test/resources/test2.bak.json"; + public static HostInfo[] hosts = new HostInfo[] { new HostInfo("localhost", Integer + .valueOf(System.getProperty("databaseport") != null ? System.getProperty("databaseport") : "49200")) }; + + @Test + public void testCreateImport() { + DataMigrationProviderImpl provider = new DataMigrationProviderImpl(hosts, null, null,true); + + try { + //create el alto db infrastructure + provider.initDatabase(Release.FRANKFURT_R1, 5, 1, "", true); + //import data into database + DataMigrationReport report = provider.importData(FRANKFURT_BACKUP_FILE, false, Release.FRANKFURT_R1); + assertTrue(report.completed()); + assertEquals(Release.FRANKFURT_R1, provider.autoDetectRelease()); + } catch (Exception e) { + fail(e.getMessage()); + } + } +} diff --git a/sdnr/wt/data-provider/setup/src/test/resources/test.bak.json b/sdnr/wt/data-provider/setup/src/test/resources/test.bak.json new file mode 100644 index 000000000..103299ac3 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/resources/test.bak.json @@ -0,0 +1 @@ +{"configs":{},"components":{"inventorytoplevel":[{"_index":"sdnevents_v1","_type":"inventorytoplevel","_source":{"uuidList":["SHELF-1.1.0.0","IDU-1.55.0.0","ODU-1.56.0.0","IDU-1.65.0.0"],"mountpoint":"sim12600"},"_id":"sim12600","_score":1},{"_index":"sdnevents_v1","_type":"inventorytoplevel","_source":{"uuidList":[],"mountpoint":"sim2230"},"_id":"sim2230","_score":1}],"required-networkelement":[{"_index":"mwtn_v1","_type":"required-networkelement","_source":{"mountId":"sim12600","password":"asda","port":12600,"host":"10.20.5.2","username":"adsa"},"_id":"sim12600","_score":1},{"_index":"mwtn_v1","_type":"required-networkelement","_source":{"mountId":"sim2230","password":"asda","port":2230,"host":"10.20.5.2","username":"adsa"},"_id":"sim2230","_score":1}],"faultlog":[],"faultcurrent":[{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"signalIsLost","counter":"2","type":"ProblemNotificationXml","objectId":"LP-MWPS-TTP-01"}},"_id":"sim12600/LP-MWPS-TTP-01/signalIsLost","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-06-30T18:28:13.0Z","severity":"Minor","problem":"BatteryBFail","counter":"5","type":"ProblemNotificationXml","objectId":"SHELF-1.1.0.0"}},"_id":"sim12600/SHELF-1.1.0.0/BatteryBFail","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-07-27T13:38:55.0Z","severity":"Major","problem":"CableLOS","counter":"50446","type":"ProblemNotificationXml","objectId":"ODU-1.56.0.0"}},"_id":"sim12600/ODU-1.56.0.0/CableLOS","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Warning","problem":"unknownProblem2","counter":"2","type":"ProblemNotificationXml","objectId":"LP-MWS-TTP-01"}},"_id":"sim12600/LP-MWS-TTP-01/unknownProblem2","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim2230","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"signalIsLost","counter":"1","type":"ProblemNotificationXml","objectId":"LP-MWPS-TTP-RADIO"}},"_id":"sim2230/LP-MWPS-TTP-RADIO/signalIsLost","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"unknownProblem1","counter":"1","type":"ProblemNotificationXml","objectId":"LP-MWS-TTP-01"}},"_id":"sim12600/LP-MWS-TTP-01/unknownProblem1","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"signalIsLost","counter":"2","type":"ProblemNotificationXml","objectId":"LP-MWPS-TTP-02"}},"_id":"sim12600/LP-MWPS-TTP-02/signalIsLost","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"unknownProblem1","counter":"1","type":"ProblemNotificationXml","objectId":"LP-MWS-TTP-02"}},"_id":"sim12600/LP-MWS-TTP-02/unknownProblem1","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim12600","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Warning","problem":"unknownProblem2","counter":"2","type":"ProblemNotificationXml","objectId":"LP-MWS-TTP-02"}},"_id":"sim12600/LP-MWS-TTP-02/unknownProblem2","_score":1},{"_index":"sdnevents_v1","_type":"faultcurrent","_source":{"faultCurrent":{"nodeName":"sim2230","timeStamp":"2017-01-01T00:00:00.0Z","severity":"Critical","problem":"rslIsExceeded","counter":"2","type":"ProblemNotificationXml","objectId":"LP-MWPS-TTP-RADIO"}},"_id":"sim2230/LP-MWPS-TTP-RADIO/rslIsExceeded","_score":1}],"eventlog":[{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:18.7Z","counter":"0","type":"ObjectCreationNotificationXml","objectId":"sim2230"}},"_id":"AXB7cI7WZ_FApnwi29xp","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T11:26:24.3Z","newValue":"connecting","attributeName":"ConnectionStatus","counter":"8","type":"AttributeValueChangedNotificationXml","objectId":"sim2230"}},"_id":"AXB8GRhSZ_FApnwi29x-","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:34.8Z","newValue":"connecting","attributeName":"ConnectionStatus","counter":"4","type":"AttributeValueChangedNotificationXml","objectId":"sim12600"}},"_id":"AXB7cMxTZ_FApnwi29xt","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T10:22:58.0Z","newValue":"connecting","attributeName":"ConnectionStatus","counter":"6","type":"AttributeValueChangedNotificationXml","objectId":"sim12600"}},"_id":"AXB73wQQZ_FApnwi29x2","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T11:26:27.0Z","newValue":"connected","attributeName":"ConnectionStatus","counter":"9","type":"AttributeValueChangedNotificationXml","objectId":"sim2230"}},"_id":"AXB8GSLnZ_FApnwi29x_","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:26.3Z","newValue":"connected","attributeName":"ConnectionStatus","counter":"2","type":"AttributeValueChangedNotificationXml","objectId":"sim2230"}},"_id":"AXB7cKsFZ_FApnwi29xr","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:34.3Z","counter":"3","type":"ObjectCreationNotificationXml","objectId":"sim12600"}},"_id":"AXB7cMqbZ_FApnwi29xs","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:19.8Z","newValue":"connecting","attributeName":"ConnectionStatus","counter":"1","type":"AttributeValueChangedNotificationXml","objectId":"sim2230"}},"_id":"AXB7cJHlZ_FApnwi29xq","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T08:22:43.7Z","newValue":"connected","attributeName":"ConnectionStatus","counter":"5","type":"AttributeValueChangedNotificationXml","objectId":"sim12600"}},"_id":"AXB7cO9OZ_FApnwi29xu","_score":1},{"_index":"sdnevents_v1","_type":"eventlog","_source":{"event":{"nodeName":"SDN-Controller-465e2ae306ca","timeStamp":"2020-02-25T10:23:06.3Z","newValue":"connected","attributeName":"ConnectionStatus","counter":"7","type":"AttributeValueChangedNotificationXml","objectId":"sim12600"}},"_id":"AXB73yRWZ_FApnwi29x3","_score":1}],"inventory":[{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2013-10-21T00:00:00.0Z","modelIdentifier":"model-id-12","manufacturerIdentifier":"SAN","manufacturerName":null,"typeName":"p8.module","description":"WS/p8.module","uuid":"CARD-1.1.5.0","version":"234","parentUuid":"SHELF-1.1.0.0","mountpoint":"sim12600","containedHolder":["PORT-1.1.5.6","PORT-1.1.5.5","PORT-1.1.5.8","PORT-1.1.5.7"],"treeLevel":1,"partTypeId":"part-number-12","serial":"africa"},"_id":"sim12600/CARD-1.1.5.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2013-11-23T00:00:00.0Z","modelIdentifier":"model-id-12","manufacturerIdentifier":"SAN","manufacturerName":null,"typeName":"p8.module","description":"WS/p8.module","uuid":"CARD-1.1.6.0","version":"234","parentUuid":"SHELF-1.1.0.0","mountpoint":"sim12600","containedHolder":["PORT-1.1.6.5","PORT-1.1.6.7","PORT-1.1.6.6","PORT-1.1.6.8"],"treeLevel":1,"partTypeId":"part-number-12","serial":"serial-number-124"},"_id":"sim12600/CARD-1.1.6.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2013-04-13T00:00:00.0Z","modelIdentifier":"CRPQABVFAA","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"a2.module","description":"WS/p8.module/a2.module#5","uuid":"a2.module-1.1.6.5","version":"a2.module-newest","parentUuid":"CARD-1.1.6.0","mountpoint":"sim12600","containedHolder":["SUBRACK-1.65.0.0"],"treeLevel":2,"partTypeId":"3EM23141AD01","serial":"310330008"},"_id":"sim12600/a2.module-1.1.6.5","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2008-10-21T00:00:00.0Z","modelIdentifier":"model-id-s3s","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"p4.module","description":"WS/DS3","uuid":"CARD-1.1.8.0","version":"unknown","parentUuid":"SHELF-1.1.0.0","mountpoint":"sim12600","containedHolder":[],"treeLevel":1,"partTypeId":"unknown","serial":"sd-dsa-eqw"},"_id":"sim12600/CARD-1.1.8.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2007-02-19T00:00:00.0Z","modelIdentifier":"model-id-s3s","manufacturerIdentifier":"CIT","manufacturerName":null,"typeName":"wind","description":"WS/wind","uuid":"CARD-1.1.9.0","version":"wind","parentUuid":"SHELF-1.1.0.0","mountpoint":"sim12600","containedHolder":[],"treeLevel":1,"partTypeId":"party-yea","serial":"proto-type"},"_id":"sim12600/CARD-1.1.9.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2014-01-16T00:00:00.0Z","modelIdentifier":"model-id-s3s","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"MWR-ng","description":"MWR-ng Dir#6.5-Ch#1","uuid":"IDU-1.65.0.0","version":"MWR-ng","parentUuid":"network-element","mountpoint":"sim12600","containedHolder":["PORT-1.65.1.4","PORT-1.65.1.2"],"treeLevel":0,"partTypeId":"3DB76047BAAA02","serial":"WAUZZI"},"_id":"sim12600/IDU-1.65.0.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"","modelIdentifier":"","manufacturerIdentifier":"","manufacturerName":null,"typeName":"a2.module","description":"WS/p8.module/a2.module#6","uuid":"a2.module-1.1.5.6","version":"","parentUuid":"CARD-1.1.5.0","mountpoint":"sim12600","containedHolder":["SUBRACK-1.56.0.0"],"treeLevel":2,"partTypeId":"","serial":""},"_id":"sim12600/a2.module-1.1.5.6","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2013-04-13T00:00:00.0Z","modelIdentifier":"CRPQABVFAA","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"a2.module","description":"WS/p8.module/a2.module#5","uuid":"a2.module-1.1.5.5","version":"a2.module-newest","parentUuid":"CARD-1.1.5.0","mountpoint":"sim12600","containedHolder":["SUBRACK-1.55.0.0"],"treeLevel":2,"partTypeId":"3EM23141AD01","serial":"310330015"},"_id":"sim12600/a2.module-1.1.5.5","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2014-01-15T00:00:00.0Z","modelIdentifier":"model-id-s3s","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"MWR-ng","description":"MWR-ng Dir#5.5-Ch#1","uuid":"IDU-1.55.0.0","version":"MWR-ng","parentUuid":"network-element","mountpoint":"sim12600","containedHolder":["PORT-1.55.1.2","PORT-1.55.1.4"],"treeLevel":0,"partTypeId":"3DB76047BAAA02","serial":"Serie2017-14"},"_id":"sim12600/IDU-1.55.0.0","_score":1},{"_index":"sdnevents_v1","_type":"inventoryequipment","_source":{"date":"2014-01-07T00:00:00.0Z","modelIdentifier":"model-id-s3s","manufacturerIdentifier":"ONF-Wireless-Transport","manufacturerName":null,"typeName":"RxDiv","description":"MWR#55Ch#1/RxDiv","uuid":"CARD-1.55.1.4","version":"2017","parentUuid":"IDU-1.55.0.0","mountpoint":"sim12600","containedHolder":[],"treeLevel":1,"partTypeId":"partNo2017-12","serial":"Serie2017-12"},"_id":"sim12600/CARD-1.55.1.4","_score":1}],"historicalperformance24h":[{"_index":"sdnperformance_v1","_type":"historicalperformance24h","_source":{"time-stamp":"2017-03-01T00:00:00.0Z","node-name":"sim2230","uuid-interface":"LP-MWPS-TTP-RADIO","scanner-id":"PM_RADIO_24H_1","layer-protocol-name":"MWPS","granularity-period":"PERIOD_24HOURS","radio-signal-id":"Test8","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"time64-states":86400,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":86400,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"rx-level-min":-44,"rx-level-avg":-44,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-45,"defect-blocks-sum":-1,"time32-states":-1}},"_id":"sim2230/LP-MWPS-TTP-RADIO/2017-03-01T00:00:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance24h","_source":{"time-stamp":"2017-07-04T00:00:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-01","scanner-id":"PM_RADIO_24H_1","layer-protocol-name":"MWPS","granularity-period":"PERIOD_24HOURS","radio-signal-id":"Test11","suspect-interval-flag":true,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":1,"unavailability":504,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":20,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":86400,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":2,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":2,"time256-states":38319,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":5,"cses":0,"time4-states-s":9,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-41,"defect-blocks-sum":-1,"time32-states":1}},"_id":"sim12600/LP-MWPS-TTP-01/2017-07-04T00:00:00.0+00:00","_score":1}],"maintenance":[{"_index":"mwtn_v1","_type":"maintenancemode","_source":{"filter":[{"start":"","description":"","definition":{"problem":"","object-id-ref":""},"end":""}],"node":"sim12600","active":false},"_id":"sim12600","_score":1},{"_index":"mwtn_v1","_type":"maintenancemode","_source":{"filter":[{"start":"","description":"","definition":{"problem":"","object-id-ref":""},"end":""}],"node":"sim2230","active":false},"_id":"sim2230","_score":1}],"historicalperformance15m":[{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T07:00:00.0Z","node-name":"sim2230","uuid-interface":"LP-MWPS-TTP-RADIO","scanner-id":"PM_RADIO_15M_13","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test8","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"time64-states":900,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"rx-level-min":-44,"rx-level-avg":-44,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-45,"defect-blocks-sum":-1,"time32-states":-1}},"_id":"sim2230/LP-MWPS-TTP-RADIO/2017-03-01T07:00:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T07:30:00.0Z","node-name":"sim2230","uuid-interface":"LP-MWPS-TTP-RADIO","scanner-id":"PM_RADIO_15M_11","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test8","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"time64-states":900,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"rx-level-min":-44,"rx-level-avg":-44,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-45,"defect-blocks-sum":-1,"time32-states":-1}},"_id":"sim2230/LP-MWPS-TTP-RADIO/2017-03-01T07:30:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T13:45:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-01","scanner-id":"PM_RADIO_15M_10","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test11","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-41,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-01/2017-07-04T13:45:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T12:30:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-01","scanner-id":"PM_RADIO_15M_15","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test11","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-41,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-01/2017-07-04T12:30:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T15:00:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-01","scanner-id":"PM_RADIO_15M_5","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test11","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-41,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-01/2017-07-04T15:00:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T16:00:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-02","scanner-id":"PM_RADIO_15M_01","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test12","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":11,"snir-max":-99,"time16-states":76,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":10,"tx-level-min":0,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":0,"rx-level-min":-62,"rx-level-avg":-62,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":267,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-62,"defect-blocks-sum":-1,"time32-states":557}},"_id":"sim12600/LP-MWPS-TTP-02/2017-07-04T16:00:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T14:00:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-02","scanner-id":"PM_RADIO_15M_8","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test12","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":1,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-40,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-02/2017-07-04T14:00:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T14:15:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-02","scanner-id":"PM_RADIO_15M_7","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test12","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-41,"time1024-states-l":-1,"es":2,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-40,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-02/2017-07-04T14:15:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T12:15:00.0Z","node-name":"sim12600","uuid-interface":"LP-MWPS-TTP-02","scanner-id":"PM_RADIO_15M_15","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test12","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"time64-states":0,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"rx-level-min":-41,"rx-level-avg":-40,"time1024-states-l":-1,"es":3,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-40,"defect-blocks-sum":-1,"time32-states":0}},"_id":"sim12600/LP-MWPS-TTP-02/2017-07-04T12:15:00.0+00:00","_score":1},{"_index":"sdnperformance_v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T06:30:00.0Z","node-name":"sim2230","uuid-interface":"LP-MWPS-TTP-RADIO","scanner-id":"PM_RADIO_15M_15","layer-protocol-name":"MWPS","granularity-period":"PERIOD_15MIN","radio-signal-id":"Test8","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"time64-states":900,"unavailability":0,"time8192-states-l":-1,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"time2048-states":-1,"xpd-max":-99,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"rx-level-min":-44,"rx-level-avg":-44,"time1024-states-l":-1,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"rx-level-max":-45,"defect-blocks-sum":-1,"time32-states":-1}},"_id":"sim2230/LP-MWPS-TTP-RADIO/2017-03-01T06:30:00.0+00:00","_score":1}],"mediator-server":[]},"release":"el alto","created":"2020-02-25T12:57:32.4Z"} diff --git a/sdnr/wt/data-provider/setup/src/test/resources/test2.bak.json b/sdnr/wt/data-provider/setup/src/test/resources/test2.bak.json new file mode 100644 index 000000000..513d28d30 --- /dev/null +++ b/sdnr/wt/data-provider/setup/src/test/resources/test2.bak.json @@ -0,0 +1 @@ +{"configs":{},"components":{"required-networkelement":[{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55005","is-required":false,"core-model-capability":"Unsupported","port":55005,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55005","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55005","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55006","is-required":false,"core-model-capability":"Unsupported","port":55006,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55006","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55006","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55008","is-required":false,"core-model-capability":"Unsupported","port":55008,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55008","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55008","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55004","is-required":false,"core-model-capability":"Unsupported","port":55004,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55004","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55004","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55001","is-required":false,"core-model-capability":"Unsupported","port":55001,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55001","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55001","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"robot_sim_2_equipment","is-required":true,"password":"admin","core-model-capability":"2017-03-20","port":2231,"host":"10.20.6.29","device-type":"Wireless","id":"robot_sim_2_equipment","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:notification:1.0","(urn:onf:params:xml:ns:yang:microwave-model?revision=2017-03-24)microwave-model","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:onf:params:xml:ns:yang:onf-ptp-dataset?revision=2017-05-08)onf-ptp-dataset","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2012-02-22)ietf-netconf-acm","(urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages?revision=2017-04-02)onf-core-model-conditional-packages","(urn:onf:params:xml:ns:yang:core-model?revision=2017-03-20)core-model","(urn:onf:params:xml:ns:yang:g.874.1-model?revision=2017-03-20)g.874.1-model","(urn:ietf:params:xml:ns:yang:ietf-ptp-dataset?revision=2017-02-08)ietf-ptp-dataset","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types","(urn:ietf:params:xml:ns:netconf:partial-lock:1.0?revision=2009-10-19)ietf-netconf-partial-lock","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages?revision=2017-04-02)onf-ethernet-conditional-packages"],"unavailable-capabilities":["(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults"],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","username":"admin","status":"Connected"},"_id":"robot_sim_2_equipment","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"Robot_NTS_Manager","is-required":true,"password":"netconf","core-model-capability":"Unsupported","port":8200,"host":"10.20.5.5","device-type":"NtsManager","id":"Robot_NTS_Manager","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=23","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","username":"netconf","status":"Connected"},"_id":"Robot_NTS_Manager","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55002","is-required":false,"core-model-capability":"Unsupported","port":55002,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55002","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55002","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"robot_ntsim_1","is-required":true,"password":"netconf","core-model-capability":"Unsupported","port":55000,"host":"10.20.5.5","device-type":"ORAN","id":"robot_ntsim_1","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","username":"netconf","status":"Connected"},"_id":"robot_ntsim_1","_score":1},{"_index":"networkelement-connection-v1","_type":"networkelement-connection","_source":{"node-id":"e13685991bfd_55009","is-required":false,"core-model-capability":"Unsupported","port":55009,"device-type":"ORAN","host":"10.20.5.5","node-details":{"available-capabilities":["urn:ietf:params:netconf:base:1.0","urn:ietf:params:netconf:base:1.1","urn:ietf:params:netconf:capability:candidate:1.0","urn:ietf:params:netconf:capability:notification:1.0","urn:ietf:params:netconf:capability:rollback-on-error:1.0","urn:ietf:params:netconf:capability:xpath:1.0","urn:ietf:params:netconf:capability:startup:1.0","urn:ietf:params:netconf:capability:interleave:1.0","urn:ietf:params:netconf:capability:url:1.0","urn:ietf:params:netconf:capability:writable-running:1.0","urn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=60","urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","urn:ietf:params:netconf:capability:validate:1.1","(urn:o-ran:alarms:1.0?revision=2019-02-04)o-ran-alarm-id","(urn:o-ran:sync:1.0?revision=2019-03-06)o-ran-sync","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:o-ran:ald-port:1.0?revision=2019-03-07)o-ran-ald-port","(urn:o-ran:supervision:1.0?revision=2019-04-11)o-ran-supervision","(urn:onf:params:xml:ns:yang:network-topology-simulator?revision=2019-10-25)network-topology-simulator","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:ietf:params:xml:ns:yang:iana-hardware?revision=2018-03-13)iana-hardware","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2016-11-02)ietf-ssh-server","(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","(urn:o-ran:lbm:1.0?revision=2019-02-04)o-ran-lbm","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2017-01-19)iana-if-type","(urn:o-ran:compression-factors:1.0?revision=2019-06-19)o-ran-compression-factors","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:o-ran:hardware:1.0?revision=2019-03-28)o-ran-hardware","(urn:o-ran:interfaces:1.0?revision=2019-03-28)o-ran-interfaces","(urn:o-ran:mplane-interfaces:1.0?revision=2019-04-11)o-ran-mplane-int","(urn:o-ran:uplane-conf:1.0?revision=2019-04-01)o-ran-uplane-conf","(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2016-11-02)ietf-tls-server","(urn:o-ran:ald:1.0?revision=2019-03-07)o-ran-ald","(urn:ietf:params:xml:ns:yang:ietf-system?revision=2014-08-06)ietf-system","(urn:o-ran:external-io:1.0?revision=2019-03-07)o-ran-externalio","(urn:o-ran:fm:1.0?revision=2019-02-04)o-ran-fm","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:o-ran:message5:1.0?revision=2019-02-04)o-ran-ecpri-delay","(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","(urn:ietf:params:xml:ns:yang:1?revision=2017-02-20)yang","(urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types?revision=2018-01-30)ietf-dhcpv6-types","(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-10-18)ietf-crypto-types","(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2017-08-17)ietf-datastores","(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2016-11-02)ietf-netconf-server","(urn:o-ran:performance-management:1.0?revision=2019-06-05)o-ran-performance-management","(urn:o-ran:laa-operations:1.0?revision=2019-04-01)o-ran-laa-operations","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library","(urn:o-ran:operations:1.0?revision=2019-04-08)o-ran-operations","(urn:o-ran:dhcp:1.0?revision=2019-05-25)o-ran-dhcp","(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","(urn:o-ran:software-management:1.0?revision=2019-06-05)o-ran-software-management","(urn:ietf:params:xml:ns:yang:ietf-hardware?revision=2018-03-13)ietf-hardware","(urn:o-ran:fan:1.0?revision=2019-03-06)o-ran-fan","(urn:o-ran:delay:1.0?revision=2019-06-03)o-ran-delay-management","(urn:o-ran:beamforming:1.0?revision=2019-06-19)o-ran-beamforming","(urn:o-ran:module-cap:1.0?revision=2019-02-04)o-ran-module-cap","(urn:o-ran:trace:1.0?revision=2019-02-21)o-ran-trace","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces","(urn:o-ran:troubleshooting:1.0?revision=2019-02-04)o-ran-troubleshooting","(urn:o-ran:user-mgmt:1.0?revision=2019-04-25)o-ran-usermgmt","(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2016-10-31)ietf-keystore","(urn:o-ran:processing-element:1.0?revision=2019-02-04)o-ran-processing-element","(urn:o-ran:laa:1.0?revision=2019-02-04)o-ran-laa","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:o-ran:file-management:1.0?revision=2019-06-05)o-ran-file-management","(urn:o-ran:transceiver:1.0?revision=2019-03-07)o-ran-transceiver","(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","(urn:o-ran:udpecho:1.0?revision=2019-02-04)o-ran-udp-echo"],"unavailable-capabilities":[],"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetails"},"id":"e13685991bfd_55009","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnection","status":"Connected"},"_id":"e13685991bfd_55009","_score":1}],"faultlog":[],"faultcurrent":[{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Warning","node-id":"robot_sim_2_equipment","problem":"unknownProblem2","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWS-TTP-02","timestamp":"2017-01-01T00:00:00.0Z"},"_id":"robot_sim_2_equipment/LP-MWS-TTP-02/unknownProblem2","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Minor","node-id":"robot_sim_2_equipment","problem":"BatteryBFail","counter":5,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"SHELF-1.1.0.0","timestamp":"2017-06-30T18:28:13.0Z"},"_id":"robot_sim_2_equipment/SHELF-1.1.0.0/BatteryBFail","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Warning","node-id":"robot_sim_2_equipment","problem":"unknownProblem2","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWS-TTP-01","timestamp":"2017-01-01T00:00:00.0Z"},"_id":"robot_sim_2_equipment/LP-MWS-TTP-01/unknownProblem2","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Major","node-id":"robot_sim_2_equipment","problem":"Ais","counter":50443,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"a2.module-1.1.5.6","timestamp":"2017-07-27T13:33:49.0Z"},"_id":"robot_sim_2_equipment/a2.module-1.1.5.6/Ais","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Major","node-id":"robot_sim_2_equipment","problem":"CableLOS","counter":50446,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"ODU-1.56.0.0","timestamp":"2017-07-27T13:38:55.0Z"},"_id":"robot_sim_2_equipment/ODU-1.56.0.0/CableLOS","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Critical","node-id":"robot_sim_1","problem":"rslIsExceeded","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWPS-TTP-RADIO","timestamp":"2017-01-01T00:00:00.0Z"},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/rslIsExceeded","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Critical","node-id":"robot_sim_2_equipment","problem":"unknownProblem1","counter":1,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWS-TTP-02","timestamp":"2017-01-01T00:00:00.0+00:00"},"_id":"robot_sim_2_equipment/LP-MWS-TTP-02/unknownProblem1","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Critical","node-id":"robot_sim_2_equipment","problem":"signalIsLost","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWPS-TTP-01","timestamp":"2017-01-01T00:00:00.0Z"},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-01/signalIsLost","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Critical","node-id":"robot_sim_2_equipment","problem":"unknownProblem1","counter":1,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWS-TTP-01","timestamp":"2017-01-01T00:00:00.0+00:00"},"_id":"robot_sim_2_equipment/LP-MWS-TTP-01/unknownProblem1","_score":1},{"_index":"faultcurrent-v1","_type":"faultcurrent","_source":{"severity":"Critical","node-id":"robot_sim_2_equipment","problem":"signalIsLost","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Faultcurrent","object-id":"LP-MWPS-TTP-02","timestamp":"2017-01-01T00:00:00.0Z"},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-02/signalIsLost","_score":1}],"eventlog":[{"_index":"eventlog-v1","_type":"eventlog","_source":{"node-id":"SDN-Controller-0","attribute-name":"startup","source-type":"Controller","counter":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog","object-id":"DeviceManager","new-value":"done","timestamp":"2020-02-25T08:00:15.2Z"},"_id":"Eo1ce3ABrQpvHi5aXFdl","_score":1},{"_index":"eventlog-v1","_type":"eventlog","_source":{"node-id":"SDN-Controller-0","attribute-name":"startup","source-type":"Controller","counter":1,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog","object-id":"DeviceManagerGRan","new-value":"done","timestamp":"2020-02-25T08:00:15.9Z"},"_id":"E41ce3ABrQpvHi5aXld9","_score":1},{"_index":"eventlog-v1","_type":"eventlog","_source":{"node-id":"SDN-Controller-0","attribute-name":"startup","source-type":"Controller","counter":3,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog","object-id":"DeviceManagerORan","new-value":"done","timestamp":"2020-02-25T08:00:16.1Z"},"_id":"FY1ce3ABrQpvHi5aX1cZ","_score":1},{"_index":"eventlog-v1","_type":"eventlog","_source":{"node-id":"SDN-Controller-0","attribute-name":"startup","source-type":"Controller","counter":2,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog","object-id":"DeviceManagerOnf","new-value":"done","timestamp":"2020-02-25T08:00:15.9Z"},"_id":"FI1ce3ABrQpvHi5aXleF","_score":1}],"inventory":[{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2005-11-09T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"3FE25774AA01","manufacturer-identifier":"ONF-Wireless-Transport","description":"WS/CORE-MAIN/a2.module#5","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"a2.module-newest","tree-level":2,"uuid":"a2.module-1.1.1.5","model-identifier":"VAUIAEYAAA","type-name":"a2.module","contained-holder":["SUBRACK-1.15.0.0"],"serial":"0003548168","parent-uuid":"CARD-1.1.1.0"},"_id":"robot_sim_2_equipment/a2.module-1.1.1.5","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2013-11-23T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"part-number-12","manufacturer-identifier":"SAN","description":"WS/p8.module","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"234","tree-level":1,"uuid":"CARD-1.1.6.0","model-identifier":"model-id-12","type-name":"p8.module","contained-holder":["PORT-1.1.6.5","PORT-1.1.6.7","PORT-1.1.6.6","PORT-1.1.6.8"],"serial":"serial-number-124","parent-uuid":"SHELF-1.1.0.0"},"_id":"robot_sim_2_equipment/CARD-1.1.6.0","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2013-04-13T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"3EM23141AD01","manufacturer-identifier":"ONF-Wireless-Transport","description":"WS/p8.module/a2.module#5","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"a2.module-newest","tree-level":2,"uuid":"a2.module-1.1.6.5","model-identifier":"CRPQABVFAA","type-name":"a2.module","contained-holder":["SUBRACK-1.65.0.0"],"serial":"310330008","parent-uuid":"CARD-1.1.6.0"},"_id":"robot_sim_2_equipment/a2.module-1.1.6.5","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2014-01-07T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"partNo2017-12","manufacturer-identifier":"ONF-Wireless-Transport","description":"MWR#55Ch#1/RxDiv","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"2017","tree-level":1,"uuid":"CARD-1.55.1.4","model-identifier":"model-id-s3s","type-name":"RxDiv","contained-holder":[],"serial":"Serie2017-12","parent-uuid":"IDU-1.55.0.0"},"_id":"robot_sim_2_equipment/CARD-1.55.1.4","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2017-09-09T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"Partnumber","manufacturer-identifier":"ONF-Wireless-Transport","description":"MWR#56Ch#1/a2.moduletraff","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"a2.module-newest","tree-level":1,"uuid":"a2.module-1.56.1.2","model-identifier":"model-id","type-name":"a2.module","contained-holder":[],"serial":"Serial1","parent-uuid":"ODU-1.56.0.0"},"_id":"robot_sim_2_equipment/a2.module-1.56.1.2","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2015-08-17T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"part-number-2","manufacturer-identifier":"SAN","description":"WS/CORE-MAIN","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"123","tree-level":1,"uuid":"CARD-1.1.1.0","model-identifier":"model-id-2","type-name":"latest","contained-holder":["PORT-1.1.1.6","PORT-1.1.1.5","PORT-1.1.1.8","PORT-1.1.1.7"],"serial":"asdf-asdasd-asd","parent-uuid":"SHELF-1.1.0.0"},"_id":"robot_sim_2_equipment/CARD-1.1.1.0","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2010-02-05T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"1AB376720002","manufacturer-identifier":"ONF-Wireless-Transport","description":"WS/CORE-MAIN/a2.module#8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"a2.module-newest","tree-level":2,"uuid":"a2.module-1.1.1.8","model-identifier":"NGI7AMLMAA","type-name":"a2.module","contained-holder":["SUBRACK-1.18.0.0"],"serial":"01T441601301","parent-uuid":"CARD-1.1.1.0"},"_id":"robot_sim_2_equipment/a2.module-1.1.1.8","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2013-10-21T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"part-number-12","manufacturer-identifier":"SAN","description":"WS/p8.module","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"234","tree-level":1,"uuid":"CARD-1.1.5.0","model-identifier":"model-id-12","type-name":"p8.module","contained-holder":["PORT-1.1.5.6","PORT-1.1.5.5","PORT-1.1.5.8","PORT-1.1.5.7"],"serial":"africa","parent-uuid":"SHELF-1.1.0.0"},"_id":"robot_sim_2_equipment/CARD-1.1.5.0","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"node-id":"robot_sim_2_equipment","part-type-id":"","manufacturer-identifier":"","description":"WS/p8.module/a2.module#6","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"","tree-level":2,"uuid":"a2.module-1.1.5.6","model-identifier":"","type-name":"a2.module","contained-holder":["SUBRACK-1.56.0.0"],"serial":"","parent-uuid":"CARD-1.1.5.0"},"_id":"robot_sim_2_equipment/a2.module-1.1.5.6","_score":1},{"_index":"inventoryequipment-v1","_type":"inventoryequipment","_source":{"date":"2014-01-16T00:00:00.0Z","node-id":"robot_sim_2_equipment","part-type-id":"3DB76047BAAA02","manufacturer-identifier":"ONF-Wireless-Transport","description":"MWR-ng Dir#6.5-Ch#1","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory","version":"MWR-ng","tree-level":0,"uuid":"IDU-1.65.0.0","model-identifier":"model-id-s3s","type-name":"MWR-ng","contained-holder":["PORT-1.65.1.4","PORT-1.65.1.2"],"serial":"WAUZZI","parent-uuid":"network-element"},"_id":"robot_sim_2_equipment/IDU-1.65.0.0","_score":1}],"historicalperformance24h":[{"_index":"historicalperformance24h-v1","_type":"historicalperformance24h","_source":{"time-stamp":"2017-07-04T00:00:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_RADIO_24H_1","uuid-interface":"LP-MWPS-TTP-01","layer-protocol-name":"MWPS","granularity-period":"Period24Hours","radio-signal-id":"Test11","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":true,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":1,"time8192-states-l":-1,"unavailability":504,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":20,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":86400,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":2,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":2,"time256-states":38319,"time1024-states-l":-1,"rx-level-min":-41,"rx-level-avg":-41,"es":5,"cses":0,"time4-states-s":9,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-41,"time32-states":1}},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-01/2017-07-04T00:00:00.0+00:00","_score":1},{"_index":"historicalperformance24h-v1","_type":"historicalperformance24h","_source":{"time-stamp":"2017-03-01T00:00:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_RADIO_24H_1","uuid-interface":"LP-MWPS-TTP-RADIO","layer-protocol-name":"MWPS","granularity-period":"Period24Hours","radio-signal-id":"Test8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":86400,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":86400,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"time1024-states-l":-1,"rx-level-min":-44,"rx-level-avg":-44,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-45,"time32-states":-1}},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/2017-03-01T00:00:00.0+00:00","_score":1}],"maintenance":[{"_index":"maintenancemode-v1","_type":"maintenancemode","_source":{"node-id":"robot_sim_2_equipment","problem":"","object-id-ref":"","start":"2020-02-25T08:01:57.2Z","description":"","active":false,"end":"2020-02-25T08:01:57.2Z","id":"robot_sim_2_equipment","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Maintenance"},"_id":"robot_sim_2_equipment","_score":1},{"_index":"maintenancemode-v1","_type":"maintenancemode","_source":{"node-id":"robot_sim_1","problem":"","object-id-ref":"","start":"2020-02-25T08:01:43.0Z","description":"","active":false,"end":"2020-02-25T08:01:43.0Z","id":"robot_sim_1","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Maintenance"},"_id":"robot_sim_1","_score":1}],"historicalperformance15m":[{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T12:00:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_RADIO_15M_16","uuid-interface":"LP-MWPS-TTP-02","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test12","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":0,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"time1024-states-l":-1,"rx-level-min":-41,"rx-level-avg":-40,"es":3,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-40,"time32-states":0}},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-02/2017-07-04T12:00:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T13:45:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_RADIO_15M_10","uuid-interface":"LP-MWPS-TTP-01","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test11","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":0,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"time1024-states-l":-1,"rx-level-min":-41,"rx-level-avg":-41,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-41,"time32-states":0}},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-01/2017-07-04T13:45:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-07-04T15:15:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_RADIO_15M_4","uuid-interface":"LP-MWPS-TTP-01","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test11","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":25,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":0,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":25,"tx-level-min":25,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":-1,"time4-states":0,"time8-states":0,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":0,"time256-states":900,"time1024-states-l":-1,"rx-level-min":-41,"rx-level-avg":-41,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-41,"time32-states":0}},"_id":"robot_sim_2_equipment/LP-MWPS-TTP-01/2017-07-04T15:15:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T06:15:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_RADIO_15M_16","uuid-interface":"LP-MWPS-TTP-RADIO","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":900,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"time1024-states-l":-1,"rx-level-min":-44,"rx-level-avg":-44,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-45,"time32-states":-1}},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/2017-03-01T06:15:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T06:30:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_RADIO_15M_15","uuid-interface":"LP-MWPS-TTP-RADIO","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":900,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"time1024-states-l":-1,"rx-level-min":-44,"rx-level-avg":-44,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-45,"time32-states":-1}},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/2017-03-01T06:30:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T08:30:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_RADIO_15M_7","uuid-interface":"LP-MWPS-TTP-RADIO","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":900,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"time1024-states-l":-1,"rx-level-min":-44,"rx-level-avg":-44,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-45,"time32-states":-1}},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/2017-03-01T08:30:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T09:15:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_RADIO_15M_4","uuid-interface":"LP-MWPS-TTP-RADIO","layer-protocol-name":"MWPS","granularity-period":"Period15Min","radio-signal-id":"Test8","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"time4096-states-l":-1,"time16-states-s":-1,"tx-level-max":3,"snir-max":-99,"time16-states":0,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","time64-states":900,"time8192-states-l":-1,"unavailability":0,"time512-states":-1,"xpd-min":-99,"xpd-avg":-99,"tx-level-avg":3,"tx-level-min":3,"rf-temp-min":-99,"rf-temp-avg":-99,"snir-avg":-99,"snir-min":-99,"time-period":900,"time2-states":0,"time4-states":0,"time8-states":-1,"ses":0,"time2048-states-l":-1,"xpd-max":-99,"time2048-states":-1,"rf-temp-max":-99,"time8192-states":-1,"time128-states":-1,"time256-states":-1,"time1024-states-l":-1,"rx-level-min":-44,"rx-level-avg":-44,"es":0,"cses":0,"time4-states-s":0,"time1024-states":-1,"time512-states-l":-1,"time4096-states":-1,"defect-blocks-sum":-1,"rx-level-max":-45,"time32-states":-1}},"_id":"robot_sim_1/LP-MWPS-TTP-RADIO/2017-03-01T09:15:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T09:15:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_ETH_CONTAINER_RADIO_15M_008","uuid-interface":"LP-ETH-CTP-01","layer-protocol-name":"ETH","granularity-period":"Period15Min","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"tx-ethernet-bytes-max-s":-1,"time-period":900,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","tx-ethernet-bytes-max-m":-1,"tx-ethernet-bytes-sum":0}},"_id":"robot_sim_2_equipment/LP-ETH-CTP-01/2017-03-01T09:15:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T09:00:00.0+00:00","node-name":"robot_sim_2_equipment","scanner-id":"PM_ETH_CONTAINER_RADIO_15M_007","uuid-interface":"LP-ETH-CTP-01","layer-protocol-name":"ETH","granularity-period":"Period15Min","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":false,"performance-data":{"tx-ethernet-bytes-max-s":-1,"time-period":900,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","tx-ethernet-bytes-max-m":-1,"tx-ethernet-bytes-sum":0}},"_id":"robot_sim_2_equipment/LP-ETH-CTP-01/2017-03-01T09:00:00.0+00:00","_score":1},{"_index":"historicalperformance15min-v1","_type":"historicalperformance15min","_source":{"time-stamp":"2017-03-01T07:30:00.0+00:00","node-name":"robot_sim_1","scanner-id":"PM_ETH_CONTAINER_RADIO_15M_001","uuid-interface":"LP-ETH-CTP-ETH-CONTAINER","layer-protocol-name":"ETH","granularity-period":"Period15Min","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.PmdataEntity","suspect-interval-flag":true,"performance-data":{"tx-ethernet-bytes-max-s":-1,"time-period":900,"implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata.entity.PerformanceData","tx-ethernet-bytes-max-m":-1,"tx-ethernet-bytes-sum":0}},"_id":"robot_sim_1/LP-ETH-CTP-ETH-CONTAINER/2017-03-01T07:30:00.0+00:00","_score":1}],"mediator-server":[],"connectionlog":[{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55004","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:48.7Z","status":"Connected"},"_id":"Go1de3ABrQpvHi5ayley","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55005","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:48.8Z","status":"Connected"},"_id":"G41de3ABrQpvHi5aylfG","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55003","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:48.7Z","status":"Connected"},"_id":"HI1de3ABrQpvHi5aylfR","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"robot_sim_2_equipment","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:57.4Z","status":"Mounted"},"_id":"Io1de3ABrQpvHi5a61dF","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55009","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:58.8Z","status":"Connected"},"_id":"JY1de3ABrQpvHi5a8FfF","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"robot_sim_1","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:43.2Z","status":"Mounted"},"_id":"GI1de3ABrQpvHi5atFdZ","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"robot_ntsim_1","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:48.9Z","status":"Connected"},"_id":"HY1de3ABrQpvHi5ay1cd","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55000","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:49.1Z","status":"Connected"},"_id":"II1de3ABrQpvHi5ay1eR","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55001","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:49.1Z","status":"Connected"},"_id":"IY1de3ABrQpvHi5ay1e9","_score":1},{"_index":"connectionlog-v1","_type":"connectionlog","_source":{"node-id":"e13685991bfd_55007","implemented-interface":"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Connectionlog","timestamp":"2020-02-25T08:01:58.7Z","status":"Connected"},"_id":"I41de3ABrQpvHi5a8Fdp","_score":1}]},"release":"frankfurt-R1","created":"2020-02-25T14:17:04.6Z"} |