From 8d39a39c646154b3e746564536b890a0200bc37b Mon Sep 17 00:00:00 2001 From: Herbert Eiselt Date: Wed, 30 Jan 2019 09:45:54 +0100 Subject: [PATCH] Add sdnr wt helpserver Add complete sdnr wireless transport app helpserver Change-Id: I01ba5a2a4b6dbd8fbfd91bbb5a1ae5db7b181f2d Issue-ID: SDNC-577 Signed-off-by: Herbert Eiselt --- sdnr/wt/helpserver/feature/pom.xml | 52 ++++ sdnr/wt/helpserver/installer/pom.xml | 115 ++++++++ .../src/assembly/assemble_mvnrepo_zip.xml | 49 ++++ sdnr/wt/helpserver/pom.xml | 52 ++++ sdnr/wt/helpserver/provider/pom.xml | 75 ++++++ .../features/sdnr/wt/helpserver/HelpServlet.java | 291 +++++++++++++++++++++ .../sdnr/wt/helpserver/data/Environment.java | 41 +++ .../wt/helpserver/data/ExtactBundleResource.java | 115 ++++++++ .../helpserver/data/HelpInfrastructureObject.java | 201 ++++++++++++++ .../resources/OSGI-INF/blueprint/blueprint.xml | 32 +++ .../resources/help/mediatorserver/0.4.0/README.md | 144 ++++++++++ .../mediatorserver/installation/0.4.0/README.md | 246 +++++++++++++++++ .../help/mediatorserver/mediator/0.4.0/README.md | 66 +++++ .../provider/src/main/resources/help/meta.json | 222 ++++++++++++++++ .../main/resources/help/sdnr/0.4.0/ONAP-SDN-R.png | Bin 0 -> 210224 bytes .../src/main/resources/help/sdnr/0.4.0/README.md | 7 + .../resources/help/sdnr/0.4.0/abbreviations.md | 15 ++ .../src/main/resources/help/sdnr/0.4.0/about.md | 1 + .../src/main/resources/help/sdnr/0.4.0/faq.md | 52 ++++ .../resources/help/sdnr/connect/0.4.0/README.md | 30 +++ .../resources/help/sdnr/mwtnLog/0.4.0/README.md | 3 + .../resources/help/sdnr/mwtnTest/0.4.0/README.md | 3 + .../resources/help/sdnr/pnfConfig/0.4.0/README.md | 15 ++ .../resources/help/sdnr/pnfFault/0.4.0/README.md | 33 +++ .../help/sdnr/pnfInventory/0.4.0/README.md | 9 + .../help/sdnr/pnfMaintenance/0.4.0/README.md | 10 + .../help/sdnr/pnfMediator/0.4.0/README.md | 3 + .../help/sdnr/pnfPerformance/0.4.0/README.md | 19 ++ .../sdnr/wt/helpserver/test/TestHelpServer.java | 35 +++ .../provider/src/test/resources/log4j.properties | 12 + sdnr/wt/pom.xml | 1 + 31 files changed, 1949 insertions(+) create mode 100644 sdnr/wt/helpserver/feature/pom.xml create mode 100755 sdnr/wt/helpserver/installer/pom.xml create mode 100644 sdnr/wt/helpserver/installer/src/assembly/assemble_mvnrepo_zip.xml create mode 100755 sdnr/wt/helpserver/pom.xml create mode 100644 sdnr/wt/helpserver/provider/pom.xml create mode 100644 sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/HelpServlet.java create mode 100644 sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/Environment.java create mode 100644 sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/ExtactBundleResource.java create mode 100644 sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/HelpInfrastructureObject.java create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/installation/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/mediator/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/meta.json create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/ONAP-SDN-R.png create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/abbreviations.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/about.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/faq.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/connect/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnLog/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnTest/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfConfig/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfFault/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfInventory/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMaintenance/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMediator/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfPerformance/0.4.0/README.md create mode 100644 sdnr/wt/helpserver/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/helpserver/test/TestHelpServer.java create mode 100644 sdnr/wt/helpserver/provider/src/test/resources/log4j.properties diff --git a/sdnr/wt/helpserver/feature/pom.xml b/sdnr/wt/helpserver/feature/pom.xml new file mode 100644 index 000000000..95e830c0e --- /dev/null +++ b/sdnr/wt/helpserver/feature/pom.xml @@ -0,0 +1,52 @@ + + + + + 4.0.0 + + org.onap.ccsdk.features.sdnr.wt + sdnr-wt-helpserver-feature + 0.4.1-SNAPSHOT + feature + ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature + + + org.onap.ccsdk.parent + single-feature-parent + 1.2.1-SNAPSHOT + + + + + + + + ${project.groupId} + sdnr-wt-helpserver-provider + ${project.version} + + + + diff --git a/sdnr/wt/helpserver/installer/pom.xml b/sdnr/wt/helpserver/installer/pom.xml new file mode 100755 index 000000000..7051ce984 --- /dev/null +++ b/sdnr/wt/helpserver/installer/pom.xml @@ -0,0 +1,115 @@ + + + 4.0.0 + + org.onap.ccsdk.features.sdnr.wt + sdnr-wt-helpserver-installer + 0.4.1-SNAPSHOT + pom + ccsdk-features-sdnr-wt :: ${project.artifactId} + + + org.onap.ccsdk.parent + odlparent-lite + 1.2.1-SNAPSHOT + + + + + sdnr-wt-helpserver + false + + + + + + org.onap.ccsdk.features.sdnr.wt + ${application.name}-feature + ${project.version} + xml + features + + + * + * + + + + + org.onap.ccsdk.features.sdnr.wt + ${application.name}-provider + ${project.version} + + + + + + + maven-assembly-plugin + + + maven-repo-zip + + single + + package + + true + stage/${application.name}-${project.version} + + src/assembly/assemble_mvnrepo_zip.xml + + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + + + + + + + + + + + + + + + + + + + copy-nested-dependencies + + copy-dependencies + + prepare-package + + true + ${project.build.directory}/assembly/system + false + true + true + true + false + false + + + + + + + + + diff --git a/sdnr/wt/helpserver/installer/src/assembly/assemble_mvnrepo_zip.xml b/sdnr/wt/helpserver/installer/src/assembly/assemble_mvnrepo_zip.xml new file mode 100644 index 000000000..c4eb9aa25 --- /dev/null +++ b/sdnr/wt/helpserver/installer/src/assembly/assemble_mvnrepo_zip.xml @@ -0,0 +1,49 @@ + + + + + + repo + + zip + + + + false + + + + target/assembly/ + . + + + + + + + + diff --git a/sdnr/wt/helpserver/pom.xml b/sdnr/wt/helpserver/pom.xml new file mode 100755 index 000000000..90d27bfd1 --- /dev/null +++ b/sdnr/wt/helpserver/pom.xml @@ -0,0 +1,52 @@ + + + + + 4.0.0 + + org.onap.ccsdk.features.sdnr.wt + sdnr-wt-helpserver-top + 0.4.1-SNAPSHOT + pom + ccsdk-features-sdnr-wt :: ${project.artifactId} + + + org.onap.ccsdk.parent + odlparent-lite + 1.2.1-SNAPSHOT + + + + + + feature + provider + installer + + + + sdnr-wt-helpserver + + \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/pom.xml b/sdnr/wt/helpserver/provider/pom.xml new file mode 100644 index 000000000..fff54d281 --- /dev/null +++ b/sdnr/wt/helpserver/provider/pom.xml @@ -0,0 +1,75 @@ + + + + + 4.0.0 + + org.onap.ccsdk.features.sdnr.wt + sdnr-wt-helpserver-provider + 0.4.1-SNAPSHOT + ccsdk-features-sdnr-wt :: ${project.artifactId} + bundle + + true + + + org.onap.ccsdk.parent + binding-parent + 1.2.1-SNAPSHOT + + + + + javax.servlet + servlet-api + 2.5 + + + org.slf4j + slf4j-simple + + + org.json + json + + + org.osgi + org.osgi.core + + + org.osgi + org.osgi.compendium + + + org.mockito + mockito-core + test + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + + + + + diff --git a/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/HelpServlet.java b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/HelpServlet.java new file mode 100644 index 000000000..76ac17bb6 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/HelpServlet.java @@ -0,0 +1,291 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.helpserver; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLDecoder; +import java.nio.file.Path; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.onap.ccsdk.features.sdnr.wt.helpserver.data.HelpInfrastructureObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HelpServlet extends HttpServlet implements AutoCloseable { + + private static Logger LOG = LoggerFactory.getLogger(HelpServlet.class); + private static final long serialVersionUID = -4285072760648493461L; + + private static final boolean USE_FILESYSTEM = true; + private static final boolean USE_RESSOURCES = !USE_FILESYSTEM; + private static final String BASEURI = "/help"; + + private static final boolean REDIRECT_LINKS = true; + + private final Path basePath; + + public HelpServlet() { + LOG.info("Starting HelpServlet instance {}", this.hashCode()); + HelpInfrastructureObject.createFilesFromResources(); + this.basePath = HelpInfrastructureObject.getHelpDirectoryBase(); + } + + @Override + protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.addHeader("Access-Control-Allow-Origin", "*"); + resp.addHeader("Access-Control-Allow-Methods", "OPTIONS, HEAD, GET, POST, PUT, DELETE"); + resp.addHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Content-Length"); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) Handle Get Request: if query=?meta=send json + * infrastructure for README.md else if file exist send file + */ + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String query = req.getQueryString(); + resp.addHeader("Access-Control-Allow-Origin", "*"); + resp.addHeader("Access-Control-Allow-Methods", "OPTIONS, HEAD, GET, POST, PUT, DELETE"); + resp.addHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Content-Length"); + if (query != null && query.contains("meta")) { + /* + * LOG.debug("received post with uri="+req.getRequestURI()); String + * uri=req.getRequestURI().substring(BASEURI.length()); if(uri.startsWith("/")) + * uri=uri.substring(1); + */ + File f = new File(HelpInfrastructureObject.KARAFHELPDIRECTORY, "meta.json"); + if (f.exists()) { + LOG.debug("found local meta file"); + try (BufferedReader rd = new BufferedReader(new FileReader(f));) { + String line = rd.readLine(); + while (line != null) { + resp.getOutputStream().println(line); + line = rd.readLine(); + } + rd.close(); + } catch (IOException e) { + LOG.debug("Can not read meta file", e); + } + } else { + LOG.debug("start walking from path=" + basePath.toAbsolutePath().toString()); + HelpInfrastructureObject o = null; + if (USE_FILESYSTEM) { + try { + o = new HelpInfrastructureObject(this.basePath); + } catch (URISyntaxException e) { + LOG.debug("Can not relsolve URI. ", e); + } + } else if (USE_RESSOURCES) { + // o=new HelpInfrastructureObject() + } + resp.getOutputStream().println(o != null ? o.toString() : ""); + } + resp.setHeader("Content-Type", "application/json"); + } else { + LOG.debug("received get with uri=" + req.getRequestURI()); + String uri = URLDecoder.decode(req.getRequestURI().substring(BASEURI.length()), "UTF-8"); + if (uri.startsWith("/")) { + uri = uri.substring(1); + } + Path p = basePath.resolve(uri); + if (USE_FILESYSTEM) { + File f = p.toFile(); + if (f.isFile() && f.exists()) { + LOG.debug("found file for request"); + if (this.isTextFile(f)) { + resp.setHeader("Content-Type", "application/text"); + resp.setHeader("charset", "utf-8"); + } else if (this.isImageFile(f)) { + resp.setHeader("Content-Type", "image/*"); + } else if (this.ispdf(f)) { + resp.setHeader("Content-Type", "application/pdf"); + } else { + LOG.debug("file is not allowed to deliver"); + resp.setStatus(404); + return; + } + LOG.debug("delivering file"); + OutputStream out = resp.getOutputStream(); + String version = null; + if (REDIRECT_LINKS) { + version = getVersionFromRequestedUri(uri); + } + if (this.isTextFile(f) && REDIRECT_LINKS && version != null) { + final String regex = + "(!?\\[[^\\]]*?\\])\\(((?:(?!http|www\\.|\\#|\\.com|\\.net|\\.info|\\.org|\\.svg|\\.png|\\.jpg|\\.gif|\\.jpeg|\\.pdf).)*?)\\)"; + final Pattern pattern = Pattern.compile(regex); + Matcher matcher; + String line; + try (BufferedReader br = new BufferedReader(new FileReader(f))) { + line = br.readLine(); + while (line != null) { + // check line for internal link + matcher = pattern.matcher(line); + if (matcher.find()) { + // extend link with specific version + line = line.replace(matcher.group(2), + "../" + matcher.group(2) + version + "/README.md"); + } + out.write((line + "\n").getBytes()); + line = br.readLine(); + + } + out.flush(); + out.close(); + br.close(); + } + + } else { + try (FileInputStream in = new FileInputStream(f)) { + + byte[] buffer = new byte[1024]; + int len; + while ((len = in.read(buffer)) != -1) { + out.write(buffer, 0, len); + } + in.close(); + out.flush(); + out.close(); + } + } + } else { + LOG.debug("found not file for request"); + resp.setStatus(404); + } + } else if (USE_RESSOURCES) { + URL resurl = this.getClass().getResource(p.toString()); + if (resurl != null)// resource file found + { + if (this.isTextFile(resurl)) { + resp.setHeader("Content-Type", "application/text"); + resp.setHeader("charset", "utf-8"); + } else if (this.isImageFile(resurl)) { + resp.setHeader("Content-Type", "image/*"); + } else if (this.ispdf(resurl)) { + resp.setHeader("Content-Type", "application/pdf"); + } else { + resp.setStatus(404); + return; + } + try (InputStream in = this.getClass().getResourceAsStream(p.toString())) { + OutputStream out = resp.getOutputStream(); + byte[] buffer = new byte[1024]; + int len; + while ((len = in.read(buffer)) != -1) { + out.write(buffer, 0, len); + } + in.close(); + out.flush(); + out.close(); + } + + } else // resource file not found + { + resp.setStatus(404); + } + } + } + } + + /* + * + * uri = "help/folder1/folder2/version/README.md" + */ + private static String getVersionFromRequestedUri(String uri) { + if (uri == null) { + return null; + } + int lastidx = uri.lastIndexOf("/"); + if (lastidx < 0) { + return null; + } + int slastidx = uri.lastIndexOf("/", lastidx - 1); + if (slastidx < 0) { + return null; + } + return uri.substring(slastidx + 1, lastidx); + + } + + private boolean isTextFile(URL url) { + return url != null ? this.isTextFile(url.toString()) : false; + } + + private boolean ispdf(URL url) { + return url != null ? this.ispdf(url.toString()) : false; + } + + private boolean isImageFile(URL url) { + return url != null ? this.isImageFile(url.toString()) : false; + } + + private boolean ispdf(File f) { + return f != null ? this.ispdf(f.getName()) : false; + } + + private boolean ispdf(String name) { + return name != null ? name.toLowerCase().endsWith("pdf") : false; + } + + private boolean isImageFile(File f) { + return f != null ? this.isImageFile(f.getName()) : false; + } + + private boolean isImageFile(String name) { + + return name != null + ? name.toLowerCase().endsWith("png") || name.toLowerCase().endsWith("jpg") + || name.toLowerCase().endsWith("jpeg") || name.toLowerCase().endsWith("svg") + || name.toLowerCase().endsWith("eps") + : false; + } + + private boolean isTextFile(File f) { + return f != null ? this.isTextFile(f.getName()) : false; + + } + + private boolean isTextFile(String name) { + return name != null + ? name.toLowerCase().endsWith("md") || name.toLowerCase().endsWith("txt") + || name.toLowerCase().endsWith("html") || name.toLowerCase().endsWith("htm") + || name.toLowerCase().endsWith("js") || name.toLowerCase().endsWith("css") + : false; + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} + + @Override + public void close() throws Exception {} +} diff --git a/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/Environment.java b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/Environment.java new file mode 100644 index 000000000..bbbccdb10 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/Environment.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.helpserver.data; + +import java.net.Inet4Address; +import java.net.UnknownHostException; +import java.util.Map; + +public class Environment { + + public static String getVar(String v) + { + if(v.equals("$HOSTNAME")) + try { + return Inet4Address.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + + } + Map env = System.getenv(); + for (String envName : env.keySet()) { + if(envName!=null && envName.equals(v)) + return env.get(envName); + } + return null; + } +} diff --git a/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/ExtactBundleResource.java b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/ExtactBundleResource.java new file mode 100644 index 000000000..ac99849dc --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/ExtactBundleResource.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.helpserver.data; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Enumeration; + +import org.osgi.framework.Bundle; + +/** + * Extract subtree with resources from Opendaylight/Karaf/OSGi bundle into Karaf directory
+ * + * Reference: Eclipsezone @see https://www.eclipszone.com + *

+ * Example for resource and directory path from karaf log. + * write resource: help/FAQ/0.4.0/README.md + * Create directories for: data/cache/com.highstreet.technologies.help/help/FAQ/0.4.0/README.md + * Open the file: data/cache/com.highstreet.technologies.help/help/FAQ/0.4.0/README.md + * Problem: Binary, JPG files => do not use buffer related functions + * + * Hint: Werify with file manager the content of the bundle.jar file to see the location of the resources. + * There is no need to mark them via the classpath. + */ + +public class ExtactBundleResource { + + /** + * Extract resources from Karaf/OSGi bundle into karaf directory structure. + * @param bundle Karaf/OSGi bundle with resources + * @param filePrefix prefix in karaf file system for destination e.g. "data/cache/com.highstreet.technologies." + * @param ressoureRoot root name of ressources, with leading "/". e.g. "/help" + * @throws IOException In case of problems. + */ + public static void copyBundleResoucesRecursively(Bundle bundle, String filePrefix, String ressoureRoot) throws IOException { + copyResourceTreeRecurse(bundle, filePrefix, bundle.getEntryPaths(ressoureRoot)); + } + + /** + * Delete a file or a directory and its children. + * @param file The directory to delete. + * @throws IOException Exception when problem occurs during deleting the directory. + */ + public static void deleteRecursively(File file) throws IOException { + + if (file.isDirectory()) { + for (File childFile : file.listFiles()) { + if (childFile.isDirectory()) { + deleteRecursively(childFile); + } else { + if (!childFile.delete()) { + throw new IOException(); + } + } + } + } + + if (!file.delete()) { + throw new IOException(); + } + } + + // ------------- Private functions + + /** + * Recurse function to steps through the resource element tree + * @param b Bundle index for bundle with resourcs + * @param filePrefix + * @param resource + * @throws IOException + */ + private static void copyResourceTreeRecurse(Bundle b, String filePrefix, Enumeration resource) throws IOException { + while (resource.hasMoreElements()) { + String name = resource.nextElement(); + Enumeration list = b.getEntryPaths(name); + if (list != null) { + copyResourceTreeRecurse(b, filePrefix, list); + } else { + //Read + File targetFile = new File(filePrefix+name); + targetFile.getParentFile().mkdirs(); + + try(InputStream in = b.getEntry(name).openStream(); + OutputStream outStream = new FileOutputStream(targetFile);) { + + int theInt; + while ((theInt = in.read()) >= 0) { + outStream.write(theInt); + } + in.close(); + outStream.flush(); + outStream.close(); + } + } + } + } +} diff --git a/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/HelpInfrastructureObject.java b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/HelpInfrastructureObject.java new file mode 100644 index 000000000..11042d13a --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/helpserver/data/HelpInfrastructureObject.java @@ -0,0 +1,201 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.helpserver.data; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import org.json.JSONObject; +import org.osgi.framework.Bundle; +import org.osgi.framework.FrameworkUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HelpInfrastructureObject extends JSONObject { + + private static final Logger LOG = LoggerFactory.getLogger(HelpInfrastructureObject.class); + private static String HELPBASE = "help"; + private static String KARAFBUNDLERESOURCEHELPROOT = "/" + HELPBASE; + private static String KARAFHELPDIRPREFIX = "data/cache/com.highstreet.technologies."; + public static File KARAFHELPDIRECTORY = new File(KARAFHELPDIRPREFIX + HELPBASE); + + public static class VersionObject extends JSONObject { + private static Comparator comp; + private final String mVersion; + + public String getVersion() { + return this.mVersion; + } + + public VersionObject(String path, String date, String label, String version) { + this.mVersion = version; + this.put("path", path); + this.put("date", date); + this.put("label", label); + } + + public static Comparator getComparer() { + if (comp == null) { + comp = (o1, o2) -> o1.getVersion().compareTo(o2.getVersion()); + } + return comp; + } + + public VersionObject cloneAsLatest() { + return new VersionObject(this.getString("path"), this.getString("date"), this.getString("label"), "latest"); + } + + public VersionObject cloneAsCurrent() { + return new VersionObject(this.getString("path"), this.getString("date"), this.getString("label"), + "current"); + } + } + public static class NodeObject extends JSONObject { + public NodeObject(Path base, File dir, String label, ArrayList versions) { + this.put("label", label); + if (versions != null && versions.size() > 0) { + JSONObject o = new JSONObject(); + this.put("versions", o); + for (VersionObject version : versions) { + o.put(version.getVersion(), version); + } + + } + File[] list = dir.listFiles(); + if (list == null) { + return; + } + for (File f : list) { + if (f.isDirectory()) { + ArrayList versions2 = findReadmeVersionFolders(base, f.toPath(), true); + if (versions2 != null && versions2.size() > 0) { + JSONObject nodes; + if (!this.has("nodes")) { + this.put("nodes", new JSONObject()); + } + nodes = this.getJSONObject("nodes"); + + NodeObject o = new NodeObject(base, f, f.getName(), versions2); + nodes.put(o.getString("label").toLowerCase(), o); + } + } + } + } + + } + + public HelpInfrastructureObject(Path proot) throws URISyntaxException { + File root = proot.toFile(); + File[] list = root.listFiles(); + if (list == null) { + return; + } + for (File f : list) { + if (f.isDirectory()) { + ArrayList versions = findReadmeVersionFolders(root.toPath(), f.toPath(), true); + if (versions != null && versions.size() > 0) { + NodeObject o = new NodeObject(proot, f, f.getName(), versions); + this.put(o.getString("label").toLowerCase(), o); + } + } + } + + + } + + public static void walk(ArrayList results, String path) { + + File root = new File(path); + File[] list = root.listFiles(); + + if (list == null) { + return; + } + + for (File f : list) { + if (f.isDirectory()) { + walk(results, f.getAbsolutePath()); + // System.out.println( "Dir:" + f.getAbsoluteFile() ); + } else { + // System.out.println( "File:" + f.getAbsoluteFile() ); + if (f.isFile() && f.getName().endsWith(".md")) { + results.add(f); + } + } + } + } + + private static ArrayList findReadmeVersionFolders(Path base, Path root, boolean appendCurrent) { + ArrayList list = new ArrayList<>(); + File[] files = root.toFile().listFiles(); + int baselen = base.toFile().getAbsolutePath().length(); + if (files != null) { + for (File f : files) { + if (f.isDirectory() && new File(f.getAbsolutePath() + "/README.md").exists()) { + list.add(new VersionObject(f.getAbsolutePath().substring(baselen + 1) + "/README.md", "", "", + f.getName())); + } + } + } + Collections.sort(list, VersionObject.getComparer()); + Collections.reverse(list); + if (list.size() > 0 && appendCurrent) { + list.add(list.get(0).cloneAsCurrent()); + } + return list; + } + + + public static void createFilesFromResources() { + + if (KARAFHELPDIRECTORY.exists()) { + LOG.info("Delete existing directory"); + try { + ExtactBundleResource.deleteRecursively(KARAFHELPDIRECTORY); + } catch (IOException e1) { + LOG.warn(e1.toString()); + } + } + + LOG.info("Extract"); + try { + Bundle b = FrameworkUtil.getBundle(HelpInfrastructureObject.class); + if (b == null) { + LOG.info("No bundlereference: Use target in filesystem."); + // URL helpRessource = + // JarFileUtils.stringToJarURL("target/helpserver-impl-0.4.0-SNAPSHOT.jar",KARAFBUNDLERESOURCEHELPROOT); + + } else { + LOG.info("Bundle location:{} State:{}", b.getLocation(), b.getState()); + LOG.info("Write files from Resource"); + ExtactBundleResource.copyBundleResoucesRecursively(b, "data/cache/com.highstreet.technologies.", + KARAFBUNDLERESOURCEHELPROOT); + } + } catch (IOException e) { + LOG.warn("No help files available. Exception: " + e.toString()); + } + } + + public static Path getHelpDirectoryBase() { + return KARAFHELPDIRECTORY.toPath(); + } +} diff --git a/sdnr/wt/helpserver/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/helpserver/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 000000000..8c614c4af --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/0.4.0/README.md new file mode 100644 index 000000000..c03217d14 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/0.4.0/README.md @@ -0,0 +1,144 @@ +# MediatorServer + +## Description +The mediator server is the physical device on which multiple instances of the [mediators](mediator/) are running. Additionally a small webserver provides an API to control and create the mediators via HTTP-API. These mediators are translating the requests and responses between the SDN-Controller(netconf) and the device(snmp). Because of the restricted snmp protocol (port 162 only) we have to implement a prerouting automatism that forwards the alarms sent by the devices to another local port so that each mediator only gets the alarms of its device. + + + +## Config-File + +``` +/etc/mediatorserver.conf +``` + +``` +#global config file for mediatorserver + +#Home Directory +home=/opt/snmp + +#HOST IP +host=192.168.178.89 +port=7071 + +#Port range for Netconf +ncrangemin=4000 +ncrangemax=6000 + +#Port Range for SNMP +snmprangemin=10000 +snmprangemax=12000 + +#PortRange for JMX +jmxrangemin=6001 +jmxrangemax=7000 + +#Log (ERROR | WARN | DEBUG | INFO | TRACE ) +loglevel=DEBUG +logfile=/var/log/mediatorserver.log + +#===================================== +#global MediatorConfig + +#set LogLevel (ERROR | WARN | DEBUG | INFO | TRACE ) +MediatorLogLevel=DEBUG + +#set ping timeout in milliseconds +MediatorDevicePingTimeout=2000 + +#set latency for snmp requests +MediatorSnmpLatency=2000 + +#set java memory for mediator instance +MediatorMemory="-Xmx256m -Xms128m" +``` + +## HTTP-API + +``` +http://:/api/?task= +``` + +| Task | additional Parameters | Description | Response (Success) | +| ---- | --------------------- | ----------- | ------------------ | +| create | config=<config-object> | create new mediator instance | {"code":1,"data":"<string>"}| +| delete | name=<name> | delete mediator instance | \{"code":1,"data":<string>"} | +| start | name=<name> | start mediator instance | \{"code":1,"data":"<string>"} | +| stop | name=<name> | stop mediator instance | \{"code":1,"data":"<string>"} | +| getconfig | name=<name>(optional) | Get current Config for all instances / named mediator instance | \{"code":1,"data":[<config-objects>]}| +| getlog | name=<name>(optional) | Get LogEntries for all instances / named mediator instance | \{"code":1,"data":[]} | +| clearlock | name=<name> | Clear Mediator Lock File | \{"code":1,"data":"<string>"} | +| getnemodels | - | get all Network Element Template Filenames | \{"code":1,"data":[<string-array>]} | +| getncports | limit=<limit>(optional) | get next free ports for Netconf Connections | \{"code":1,"data":[<int-array>]} | +| getsnmpports | limit=<limit>(optional) | get next free ports for SNMP Traps | \{"code":1,"data":[<int-array>]} | +| version | - | get version info of server and mediator | \{"code":1,"data":\{"server":"0.1.0","mediator":"0.1.1"\}\}| +| repair | - | try to fix corrupted configs | \{"code":1,"data":[<config-status-objects>]}| + +HTTP-Response is always a json-formatted String with 2 Elements: + +* code ... 1:success 0:failure +* data ... if code==0: <string> else <string | object> + + +### JSON-Objects + +Config-Object +``` +{ + Name:, + DeviceType:, + DeviceIp:, + DevicePort: , + TrapsPort:, + NeModel:, + NcPort:, + ODLConfig:[ + { + Server:, + Port:, + User:, + Password: + } + ], + PID:, + IsLocked:, + AutoRun:, + FwActive:, + IsNetconfConnected:, + IsNeConnected: +} +``` + +Log-Object +``` +{ + ts:"", + lvl:"", + src:"", + msg:"> /var/log/firewall.log +*/2 * * * * /bin/bash /opt/snmp/bin/clean_all.sh > /dev/null 2>&1 +``` + +### Test Accessibility of the HTTP-API with console +``` +curl http://localhost:7070/api/?task=version +``` +or directly in your browser +``` +http://:7070/api/?task=version +``` +should respond with something like this: +``` +{"code":1,"data":{"server":"0.1.0","mediator":"0.1.1"}} +``` + diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/mediator/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/mediator/0.4.0/README.md new file mode 100644 index 000000000..9fa43a436 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/mediatorserver/mediator/0.4.0/README.md @@ -0,0 +1,66 @@ +# Mediator + +## Description + + +The mediator is a piece of software to translate get and set requests between the SDN-Controller and the device. In our case we translate from netconf to snmp and back. Additionally the mediator is listening for snmp traps to push them forward to the SDN-Controller. + +## Usage + +Standalone: +``` +./Netconf2SNMPMediator.sh [--cli] ../test.config ../yang/yangNeModel +``` +[MediatorServer](../../mediatorserver/): +``` +./mediators//start.sh +``` + +## Config-File +``` +{ + "Name":"", + "DeviceType":, + "DeviceIP":"", + "TrapPort":, + "NeXMLFile":"", + "NcPort":, + "ODLConfig":[{"Server":"","Port":,"User":"","Password":""}], + "IsNCConnected":false +} +``` + +## XML Ne File + +The xml network element file is the central element of the mediator. It contains all information about the interfaces, their capabilities and everything else of information which get requested through netconf. To connect specific netconf values to device specific snmp values we use the xml attributes of the node element. + +Attributes: + +|Name | Value | Description | +| ----| ---- | ---------- | +|oid | <oid dotted string> | Attribute with SNMP mapping for given oid. For NETCONF-get, request content from Device| +|access | read-only / read-write | decides if only snmp-get or get and set-requests are allowed| +|conversion | <conv-method> | Convert the snmp-value to netconf-value and back| +|default | <any value> | the default netconf value if there is no response from the device | +|validator | regex | to validate the netconf value to avoid protocol errors | + + +Conversion methods: + +Hint: All conversations shown here are the snmp-to-netconf value conversations. Some of these are working in both directions, some not. + + +| Conversion | bi-directional | Description | Example | +| ---------- |: -------------- :| ----------- | ------- | +|int-to-boolean | yes | Convert 1-true and not 1-false between boolean and int| 1=\>true, 0=\>false | +|int-to-boolean-dd,dd,dd-true | no | Convert listed numbers to true | | +|int-to-boolean-dd,dd,dd-false | no | Convert listed numbers to false| | +|if-dd,dd,dd-term1-term2 | no | if value listed, result is *term1*, if not *term2*| | +|map-dd1,dd2,dd3-term1-term2 | yes | Bidirectional map dd1 to term1, dd2 to term2 and soon | | +|divide-dd1 | yes | Divide value by dd1| divide-10: 99 =\> 9.9 =\> 10| +|dividen-dd1 | yes | Divide value by (-1*dd1)| dividen-10: 99 =\> -9.9 =\> -10| +|internal | yes | use inernally hardcoded conversion method | qpsk =\> 4, 16qam =\> 16 | + + +## Alarms + diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/meta.json b/sdnr/wt/helpserver/provider/src/main/resources/help/meta.json new file mode 100644 index 000000000..b23e8d9d0 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/meta.json @@ -0,0 +1,222 @@ +{ + "sdnr": { + "nodes": { + "connect": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/connect/0.4.0/README.md", + "label": "Connect" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/connect/0.4.0/README.md", + "label": "Connect" + } + }, + "label": "Connect" + }, + "pnfFault": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/pnfFault/0.4.0/README.md", + "label": "pnf Fault" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/pnfFault/0.4.0/README.md", + "label": "pnf Fault" + } + }, + "label": "pnf Fault" + }, + "pnfMaintenance": { + "versions": { + "0.4.0": { + "date": "2018-09-13", + "path": "sdnr/pnfMaintenance/0.4.0/README.md", + "label": "pnf Maintenance" + }, + "current": { + "date": "2018-09-13", + "path": "sdnr/pnfMaintenance/0.4.0/README.md", + "label": "pnf Maintenance" + } + }, + "label": "pnf Maintenance" + }, + "pnfConfig": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/pnfConfig/0.4.0/README.md", + "label": "pnf Config" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/pnfConfig/0.4.0/README.md", + "label": "pnf Config" + } + }, + "label": "pnf Config" + }, + "pnfPerformance": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/pnfPerformance/0.4.0/README.md", + "label": "pnf Performance" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/pnfPerformance/0.4.0/README.md", + "label": "pnf Performance" + } + }, + "label": "pnf Performance" + }, + "pnfInventory": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/pnfInventory/0.4.0/README.md", + "label": "pnf Inventory" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/pnfInventory/0.4.0/README.md", + "label": "pnf Inventory" + } + }, + "label": "pnf Inventory" + }, + "pnfMediator": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/pnfMediator/0.4.0/README.md", + "label": "pnf Mediator" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/pnfMediator/0.4.0/README.md", + "label": "pnf Mediator" + } + }, + "label": "pnf Mediator" + }, + "mwtnTest": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/mwtnTest/0.4.0/README.md", + "label": "LTE RAN Test" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/mwtnTest/0.4.0/README.md", + "label": "LTE RAN Test" + } + }, + "label": "LTE RAN Test" + }, + "mwtnLog": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/mwtnLog/0.4.0/README.md", + "label": "Logs" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/mwtnLog/0.4.0/README.md", + "label": "Logs" + } + }, + "label": "Logs" + } + }, + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/README.md", + "label": "SDN-R" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/README.md", + "label": "SDN-R" + } + }, + "label": "SDN-R" + }, + "mediatorserver":{ + "nodes":{ + "installation":{ + "versions":{ + "0.4.0":{"date":"","path":"mediatorserver/installation/0.4.0/README.md","label":""}, + "current":{"date":"","path":"mediatorserver/installation/0.4.0/README.md","label":""} + }, + "label":"Installation" + }, + "mediator":{ + "versions":{ + "0.4.0":{"date":"","path":"mediatorserver/mediator/0.4.0/README.md","label":""}, + "current":{"date":"","path":"mediatorserver/mediator/0.4.0/README.md","label":""} + }, + "label":"Mediator" + } + }, + "versions":{ + "0.4.0":{"date":"","path":"mediatorserver/0.4.0/README.md","label":""}, + "current":{"date":"","path":"mediatorserver/0.4.0/README.md","label":""} + }, + "label":"MediatorServer" + }, + "faq": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/faq.md", + "label": "FAQ" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/faq.md", + "label": "FAQ" + } + }, + "label": "FAQ" + }, + "abbreviations": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/abbreviations.md", + "label": "Abbreviations" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/abbreviations.md", + "label": "Abbreviations" + } + }, + "label": "Abbreviations" + }, + "about": { + "versions": { + "0.4.0": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/about.md", + "label": "About" + }, + "current": { + "date": "2018-02-24", + "path": "sdnr/0.4.0/about.md", + "label": "About" + } + }, + "label": "About" + } +} diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/ONAP-SDN-R.png b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/ONAP-SDN-R.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7bd8a2aedd424d5fff0d339e8a27d783e45b15 GIT binary patch literal 210224 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
~Wd2r#GIV8i?uTKg$g4XM!$j_HJJ+gQLu25k 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%0DV=PD#6 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%0DfuDvx{QQVidyf(eJD3Y#uXV^-pLkIl-V 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 M6IREIj{P3_f7>Q1Bme*a literal 0 HcmV?d00001 diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/README.md new file mode 100644 index 000000000..c0871102b --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/README.md @@ -0,0 +1,7 @@ +# SDN controller for 'Radio' (SDN-R) + +SDN-R adds features and functionality to the OpenDaylight-based ONAP controller 'SDN-C'. It is built on the Common Controller Framework to control and manage wireless resources. Wireless resources are virtual network functions (e.g. vBBU, vEPC) or physical network functions (e.g. microwave and millimeter wave radios, eNodeB, RRH, DAS equipment). + +SDN-R is integrated into ONAP. Therefore it is interfacing with PNFs and VNFs and with other ONAP components, such as A&AI, DCAE and SO. + +![SDN-R in ONAP](./ONAP-SDN-R.png "SDN-R in ONAP") \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/abbreviations.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/abbreviations.md new file mode 100644 index 000000000..3704796b4 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/abbreviations.md @@ -0,0 +1,15 @@ +# Abbreviations + +| **Abbreviation** | **Description** | +| ---------------: | ---------------- | +| A&AI | [Active and Available Inventory](https://wiki.onap.org/display/DW/Active+and+Available+Inventory+Project) | +| AAA | [Authentication, Authorization and Accounting](https://en.wikipedia.org/wiki/AAA_(computer_security)) | +| DCAE | [Data Collection Analytics & Events](https://wiki.onap.org/pages/viewpage.action?pageId=6592895) | +| GUI | [Graphical User Interface](https://en.wikipedia.org/wiki/Graphical_user_interface) | +| MSO | [Master Service Orchestrator](https://wiki.onap.org/pages/viewpage.action?pageId=1015834) | +| ONAP | [Open Network Automation Platform](https://wiki.onap.org/pages/viewpage.action?pageId=1015843) | +| SDN | [Software-defined networking](https://en.wikipedia.org/wiki/Software-defined_networking) | +| SDN-C | [SDN-Controller](https://wiki.onap.org/display/DW/SDN+Controller+Development+Guide) | +| SDN-R | [SDN-Radio](https://wiki.onap.org/display/DW/SDN-R) | +| UI | [User Interface](https://en.wikipedia.org/wiki/User_interface) | +| UX | [User Experience](https://en.wikipedia.org/wiki/User_experience) | diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/about.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/about.md new file mode 100644 index 000000000..856d69aa5 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/about.md @@ -0,0 +1 @@ +Version: @buildtime@ \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/faq.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/faq.md new file mode 100644 index 000000000..d81574640 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/0.4.0/faq.md @@ -0,0 +1,52 @@ +# Frequently asked questions + +- - - + +## Which browser should I use to operate Opendaylight SDN-R User interface? + +An actual version of [Google Chromium](https://www.chromium.org/getting-involved/download-chromium "Download Chromium") or +[Google Chrome](https://www.google.de/search?q=chrome+download&oq=chrome+download&aqs=chrome..69i57j0l5.2718j0j4&sourceid=chrome&ie=UTF-8 "Download Chrome") is recommended. + +- - - + + +## How to enable detailed logs in karaf for SDN-R applications + +If you like to see more details in karaf logs for the NetConf communication between ODL and NetConf servers (mediators/devices) please invoke the following commands in the karaf console. + +``` +# Logging settings (on) +log:set DEBUG org.opendaylight.mwtn +log:set TRACE org.opendaylight.netconf +log:set TRACE com.highstreet.technologies.odl.app +``` + +Please note, setting the debug level to 'TRACE' may impact the performance on the controller. In production environment make sure to set back the debug level to 'INFO' as soon possible. + + +``` +# Logging settings (off) +log:set INFO org.opendaylight.mwtn +log:set INFO org.opendaylight.netconf +log:set INFO com.highstreet.technologies.odl.app +``` + +- - - + +## Which commands should be used to analyse karaf logs? + +``` +cd $ODL_KARAF_HOME/data/log +rm *.txt +grep -anr --include=*.log* "| ERROR |" . | grep 2018 >> 01-error.txt +grep -anr --include=*.log* "RemoteDevice{" . | grep 2018 >> 02-devices.txt +grep -anr --include=*.log* "RemoteDevice{" . | grep "Unable to build schema context, unsatisfied imports" | grep 2018 >> 03-schema-issue.txt +grep -anr --include=*.log* "Matched request:" . | grep 2018 >> 04-matched-request.txt +grep -anr --include=*.log* "network-element" . | grep 2018 >> 05-network-element.txt +grep -anr --include=*.log* "urn:onf:params:xml:ns:yang:core-model" . | grep 2018 >> 06-core-module.txt +grep -anr --include=*.log* "PerformanceManagerTask" . | grep 2018 >> 07-pm-tick.txt +grep -anr --include=*.log* "Unable to read NE data for mountpoint" . | grep 2018 >> 08-unable-to-read.txt +grep -anr --include=*.log* "LKCYFL79Q01M01MSS801" . | grep 2018 >> 09-LKCYFL79Q01M01MSS801.txt +``` + +- - - diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/connect/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/connect/0.4.0/README.md new file mode 100644 index 000000000..12e4dbe63 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/connect/0.4.0/README.md @@ -0,0 +1,30 @@ +# Connect + +The 'Connect' application on OpenDaylight provides up-to-date connectivity information about the wireless devices in the network. It automatically displays new network elements and their connection status. Despite the network elements usually automatically mount themselves, an additional small window allows manually mounting devices/mediators. For better understanding alarms and status, a connection status log lists all the connection status changes of OpenDaylight mount points. + +## Views + +The graphical user interfaces is divided in four sections. + +### Required Network Elements + +Required Network Elements are physical network functions, which are planned or expected in the network. This means the identifier, IP addresses and its required configuration is well-known and available in a planning database or in ONAP A&AI. + +### Unknown Network Elements + +Most of the physical network function support an automatic registration procedure to the SDN controller. It may happen, that devices are connected to the SDN Controller but not available in planning data. + +It might be a normal occurrence for very cheap devices, where an entire planning process to too expensive. But is may also happen that the identifier used in planning process differ from the identifier currently configured in the device. + +### Mount NetConf Server + +The view offer manually configuration of a device. The SDN controller will then start connecting the NetConf server. + +### Connection Status Log + +The log lists the connections status changes between SDN Controller and NetConf servers (devices). + + +## Video + +https://youtu.be/QhchzRV2tac \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnLog/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnLog/0.4.0/README.md new file mode 100644 index 000000000..0096ce831 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnLog/0.4.0/README.md @@ -0,0 +1,3 @@ +# Log + +The application displays (UX) application logs. SDN-R offer a common log server, so that PNFs or other ONAP/ECOMP components could log there data in a common way. \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnTest/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnTest/0.4.0/README.md new file mode 100644 index 000000000..6bd3609c2 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/mwtnTest/0.4.0/README.md @@ -0,0 +1,3 @@ +# Test + +The view offers in a generic way data fetched from ONF-TR-532 devices for test and debug purposes. \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfConfig/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfConfig/0.4.0/README.md new file mode 100644 index 000000000..d398a8e70 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfConfig/0.4.0/README.md @@ -0,0 +1,15 @@ +# Configuration + +The application shows the actual values of all attributes of the ONF-TR-532 for a selected physical network function (PNF). Each view of a functional element is divide into capabilities, configuration, status, current problem, current performance and history performance information according to TR-532. + +A separate window is available for modifying the configuration. All changes made are sent to the device in a single NetConf bulk request. The operator is notified about successfully configuring the device. + +## Implementation + +The applications are implemented as OpenDaylight-DLUX web application using the RestConf northbound interface of the SDN controller. The key frameworks are: Maven, Angular.js, Bootstrap and UI-Grid. + +Connections status information are updated automatically due to a web socket for notifications from OpenDaylight to the browser. + +## Video + +https://youtu.be/QhchzRV2tac \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfFault/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfFault/0.4.0/README.md new file mode 100644 index 000000000..bfe1774d0 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfFault/0.4.0/README.md @@ -0,0 +1,33 @@ +# Fault Management + +To operate a network, it is important to get an overview about the currently raised alarms. The application offers basic fault management of devices supporting ONF-TR-532. The alarms are classified according to the severity level (warning, minor, major, critical). + +## Views + +The graphical user interface is separated in three views. + +### Current Alarms + +It list all current active faults in the network. In addition is also list alarms send by the SDN controller itself, which detects connections losses to the NetConf server (connectionLossOAM) or which detects connection loss to a devices via a mediator to a device (connectionLossNeOAM). + +### Alarm Notifications + +As long as the view is open, it lists all alarm notification reached by the SDN Controller. Please note that refreshing the view will start the collection again. Previous alarm notification can be viewed in the alarm log. + +### Alarm Log + +Next to the current active alarms an alarm log list all alarm notifications of the past. + +## Implementation + +The application has two parts. While the server is listening for NetConf notifications to store them in the data base the client retrieves the information from the data base and displays them in a grid view. + +The server synchronizes with the current alarm lists of the devices and calculates based on raise and clear notifications the current alarm status of the network. The current alarms are stored in a data base. In addition all Problem Notifications received by the SDN controller are stored. There is no logic implemented on the client. + +An alarm status bar on top of each graphical user interface informs the operator about the health status of the network. + +The OpenDaylight DLUX web application uses web sockets for updating the graphical user interface in case of Problem Notification (devices) and Connection Status Notifications (ODL). + +## Video + +https://youtu.be/vONKAtFZ8wc \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfInventory/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfInventory/0.4.0/README.md new file mode 100644 index 000000000..436280855 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfInventory/0.4.0/README.md @@ -0,0 +1,9 @@ +# Inventory + +The application offers basic inventory management of devices supporting ONF-TR-512. + +After selection of a currently connected physical network function, the inventory data - basically serial-numbers and part-numbers are displaced accroding to the containment of the equipment. + +## Video + +[ONAP / ONF proof of concept](https://cloud-highstreet-technologies.com/nextcloud/index.php/s/m4wFfqkQ1qK3hHe "ONAP / ONF proof of concept") diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMaintenance/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMaintenance/0.4.0/README.md new file mode 100644 index 000000000..6f5ab5420 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMaintenance/0.4.0/README.md @@ -0,0 +1,10 @@ +# Maintenance Mode + +The 'Maintenance' application on the OpenDaylight provides the information of the Network Elements which are set for Maintenance, currently or in the future. + +When a Network Element is mounted with the maintenance mode it automatically shows on this application with the Information like when maintenance will be started or ended. + +Maintenance Mode field in this application shows if the Network Element is in maintenance mode currently or not. +If it is True it means the Network Element is currently undergoing maintenance, If false it means maintenance might have been set for future or maintenance is already completed. + +Users have access to disable the Maintenance mode or change the maintenance start and end dates at any point of time by clicking on the Manage checkbox available. \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMediator/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMediator/0.4.0/README.md new file mode 100644 index 000000000..246e77b70 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfMediator/0.4.0/README.md @@ -0,0 +1,3 @@ +# Mediator + +Some device vendors (Altiostar, CommScope, Dragonwave-X) uses the [generic mediator framework](https://github.com/Melacon/NetConf2SNMP). Such mediator offers an API to create, delete, start and stop mediator instances. \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfPerformance/0.4.0/README.md b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfPerformance/0.4.0/README.md new file mode 100644 index 000000000..a1d39186a --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/main/resources/help/sdnr/pnfPerformance/0.4.0/README.md @@ -0,0 +1,19 @@ +# Performance Monitoring + +Performance Monitoring values measured by the devices are necessary to analyze and optimize the network. Therefore the application automatically retrieves all historical performance values from the devices and stores them in a data base. The client part just retrieves the values from the database and displays them in graphical and/or grid views. + +## Current performance values + +After selection of a connected PNF supporting ONF-TR-532 and an physical interface, the application collects the current performance values directly from the device and displays then in table views. + +## Performance history values + +After selection of a connected PNF supporting ONF-TR-532 and an physical interface, the application collects the received and centralized stored performance values for this interface and displays then in table views. + +## Performance link values + +After selection of two air-interface creating an air-interface-link, the application collects the received and centralized stored performance values for this link and displays the data in diagrams and table views. + +## Video + +https://youtu.be/fgwbKFt9cos \ No newline at end of file diff --git a/sdnr/wt/helpserver/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/helpserver/test/TestHelpServer.java b/sdnr/wt/helpserver/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/helpserver/test/TestHelpServer.java new file mode 100644 index 000000000..db6d783b9 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/helpserver/test/TestHelpServer.java @@ -0,0 +1,35 @@ +package org.onap.ccsdk.features.sdnr.wt.helpserver.test; +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +import static org.junit.Assert.assertNotNull; +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.helpserver.HelpServlet; + +public class TestHelpServer { + + @Test + public void test() throws Exception { + + HelpServlet helpServelet = new HelpServlet(); + + assertNotNull("Helpservelet created", helpServelet); + + helpServelet.close(); + } + +} diff --git a/sdnr/wt/helpserver/provider/src/test/resources/log4j.properties b/sdnr/wt/helpserver/provider/src/test/resources/log4j.properties new file mode 100644 index 000000000..142663bd2 --- /dev/null +++ b/sdnr/wt/helpserver/provider/src/test/resources/log4j.properties @@ -0,0 +1,12 @@ +log4j.rootLogger=INFO, out + +log4j.logger.org.apache.camel.impl.converter=WARN +log4j.logger.org.apache.camel.management=WARN +log4j.logger.org.apache.camel.impl.DefaultPackageScanClassResolver=WARN +log4j.logger.org.springframework=ERROR + +# CONSOLE appender not used by default +log4j.appender.out=org.apache.log4j.ConsoleAppender +log4j.appender.out.layout=org.apache.log4j.PatternLayout +log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n + diff --git a/sdnr/wt/pom.xml b/sdnr/wt/pom.xml index 59e23b3ae..922ac4f9d 100644 --- a/sdnr/wt/pom.xml +++ b/sdnr/wt/pom.xml @@ -39,6 +39,7 @@ apigateway devicemodel websocketmanager2 + helpserver -- 2.16.6