From 114c21c9ff09fd80851e8419b575ea75f5e0a206 Mon Sep 17 00:00:00 2001 From: TamasBakai Date: Tue, 19 Mar 2019 09:56:28 +0000 Subject: ROP file processing in mass-pnf-simulator Change-Id: I66203ff66e9d91865f8eee06bef01e55bcd6c39c Issue-ID: DCAEGEN2-1225 Signed-off-by: TamasBakai --- .../NetconfConfigurationCheckingTask.java | 62 +++++++++++ .../netconfmonitor/NetconfMonitorService.java | 71 +++++++++++++ .../NetconfMonitorServiceConfiguration.java | 114 +++++++++++++++++++++ .../netconf/NetconfConfigurationCache.java | 34 ++++++ .../netconf/NetconfConfigurationReader.java | 42 ++++++++ .../netconf/NetconfConfigurationWriter.java | 51 +++++++++ .../netconf/NetconfConnectionParams.java | 45 ++++++++ 7 files changed, 419 insertions(+) create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfConfigurationCheckingTask.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorService.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorServiceConfiguration.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationCache.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationReader.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationWriter.java create mode 100644 test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConnectionParams.java (limited to 'test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor') diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfConfigurationCheckingTask.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfConfigurationCheckingTask.java new file mode 100644 index 000000000..bb173aef2 --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfConfigurationCheckingTask.java @@ -0,0 +1,62 @@ +/// * +// * ============LICENSE_START======================================================= +// * PNF-REGISTRATION-HANDLER +// * ================================================================================ +// * Copyright (C) 2018 NOKIA 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.pnfsimulator.netconfmonitor; +// +// import com.tailf.jnc.JNCException; +// import java.io.IOException; +// import java.util.TimerTask; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationCache; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationReader; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationWriter; +// import org.slf4j.Logger; +// import org.slf4j.LoggerFactory; +// +// public class NetconfConfigurationCheckingTask extends TimerTask { +// +// private static final Logger LOGGER = +/// LoggerFactory.getLogger(NetconfConfigurationCheckingTask.class); +// +// private final NetconfConfigurationReader reader; +// private final NetconfConfigurationWriter writer; +// private final NetconfConfigurationCache cache; +// +// public NetconfConfigurationCheckingTask(NetconfConfigurationReader reader, +// NetconfConfigurationWriter writer, +// NetconfConfigurationCache cache) { +// this.reader = reader; +// this.writer = writer; +// this.cache = cache; +// } +// +// @Override +// public void run() { +// try { +// String currentConfiguration = reader.read(); +// if (!currentConfiguration.equals(cache.getConfiguration())) { +// LOGGER.info("Configuration has changed, new configuration:\n\n{}", currentConfiguration); +// writer.writeToFile(currentConfiguration); +// cache.update(currentConfiguration); +// } +// } catch (IOException | JNCException e) { +// LOGGER.warn("Error during configuration reading: {}", e.getMessage()); +// } +// } +// } diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorService.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorService.java new file mode 100644 index 000000000..4e484b9d9 --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorService.java @@ -0,0 +1,71 @@ +/// * +// * ============LICENSE_START======================================================= +// * PNF-REGISTRATION-HANDLER +// * ================================================================================ Copyright (C) +// * 2018 NOKIA 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.pnfsimulator.netconfmonitor; +// +// import com.tailf.jnc.JNCException; +// import java.io.IOException; +// import java.util.Timer; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationCache; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationReader; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationWriter; +// import org.slf4j.Logger; +// import org.slf4j.LoggerFactory; +// import org.springframework.beans.factory.annotation.Autowired; +// +//// @Service +// public class NetconfMonitorService { +// private static final Logger LOGGER = LoggerFactory.getLogger(NetconfMonitorService.class); +// private static final long timePeriod = 1000L; +// private static final long startDelay = 0; +// +// private Timer timer; +// private NetconfConfigurationReader reader; +// private NetconfConfigurationWriter writer; +// private NetconfConfigurationCache cache; +// +// @Autowired +// public NetconfMonitorService(Timer timer, NetconfConfigurationReader reader, +/// NetconfConfigurationWriter writer, +// NetconfConfigurationCache cache) { +// this.timer = timer; +// this.reader = reader; +// this.writer = writer; +// this.cache = cache; +// } +// +// // @PostConstruct +// public void start() { +// setStartConfiguration(); +// NetconfConfigurationCheckingTask task = new NetconfConfigurationCheckingTask(reader, writer, +/// cache); +// timer.scheduleAtFixedRate(task, startDelay, timePeriod); +// } +// +// private void setStartConfiguration() { +// try { +// String configuration = reader.read(); +// writer.writeToFile(configuration); +// cache.update(configuration); +// } catch (IOException | JNCException e) { +// LOGGER.warn("Error during configuration reading: {}", e.getMessage()); +// } +// } +// } diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorServiceConfiguration.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorServiceConfiguration.java new file mode 100644 index 000000000..d97315ba4 --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/NetconfMonitorServiceConfiguration.java @@ -0,0 +1,114 @@ +/// * +// * ============LICENSE_START======================================================= +// * PNF-REGISTRATION-HANDLER +// * ================================================================================ +// * Copyright (C) 2018 NOKIA 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.pnfsimulator.netconfmonitor; +// +// import com.tailf.jnc.JNCException; +// import com.tailf.jnc.NetconfSession; +// import com.tailf.jnc.SSHConnection; +// import com.tailf.jnc.SSHSession; +// import java.io.IOException; +// import java.util.Map; +// import java.util.Timer; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationCache; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationReader; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConfigurationWriter; +// import org.onap.pnfsimulator.netconfmonitor.netconf.NetconfConnectionParams; +// import org.slf4j.Logger; +// import org.slf4j.LoggerFactory; +// import org.springframework.context.annotation.Bean; +// import org.springframework.context.annotation.Configuration; +// +// @Configuration +// public class NetconfMonitorServiceConfiguration { +// +// private static final Logger LOGGER = +/// LoggerFactory.getLogger(NetconfMonitorServiceConfiguration.class); +// private static final Map enviroment = System.getenv(); +// +// private static final String LOG_PATH = "/var/log"; +// +// private static final String NETCONF_ADDRESS = "NETCONF_ADDRESS"; +// private static final String NETCONF_PORT = "NETCONF_PORT"; +// private static final String NETCONF_MODEL = "NETCONF_MODEL"; +// private static final String NETCONF_MAIN_CONTAINER = "NETCONF_MAIN_CONTAINER"; +// +// private static final String DEFAULT_NETCONF_ADDRESS = "localhost"; +// private static final int DEFAULT_NETCONF_PORT = 830; +// private static final String DEFAULT_NETCONF_MODEL = "pnf-simulator"; +// private static final String DEFAULT_NETCONF_MAIN_CONTAINER = "config"; +// +// private static final String DEFAULT_NETCONF_USER = "netconf"; +// private static final String DEFAULT_NETCONF_PASSWORD = "netconf"; +// +// @Bean +// public Timer timer() { +// return new Timer("NetconfMonitorServiceTimer"); +// } +// +// @Bean +// public NetconfConfigurationCache configurationCache() { +// return new NetconfConfigurationCache(); +// } +// +// @Bean +// public NetconfConfigurationReader configurationReader() throws IOException, JNCException { +// NetconfConnectionParams params = resolveConnectionParams(); +// LOGGER.info("Configuration params are : {}", params); +// NetconfSession session = createNetconfSession(params); +// return new NetconfConfigurationReader(session, buildModelPath()); +// } +// +// NetconfSession createNetconfSession(NetconfConnectionParams params) throws IOException, +/// JNCException { +// SSHConnection sshConnection = new SSHConnection(params.address, params.port); +// sshConnection.authenticateWithPassword(params.user, params.password); +// return new NetconfSession( new SSHSession(sshConnection)); +// } +// +// @Bean +// public NetconfConfigurationWriter netconfConfigurationWriter() { +// return new NetconfConfigurationWriter(LOG_PATH); +// } +// +// private String buildModelPath() { +// return String.format("/%s:%s", +// enviroment.getOrDefault(NETCONF_MODEL, DEFAULT_NETCONF_MODEL), +// enviroment.getOrDefault(NETCONF_MAIN_CONTAINER, DEFAULT_NETCONF_MAIN_CONTAINER)); +// } +// +// NetconfConnectionParams resolveConnectionParams() { +// return new NetconfConnectionParams( +// enviroment.getOrDefault(NETCONF_ADDRESS, DEFAULT_NETCONF_ADDRESS), +// resolveNetconfPort(), +// DEFAULT_NETCONF_USER, +// DEFAULT_NETCONF_PASSWORD); +// } +// +// private int resolveNetconfPort() { +// try { +// return Integer.parseInt(enviroment.get(NETCONF_PORT)); +// } catch (NumberFormatException e) { +// LOGGER.warn("Invalid netconf port: {}. Default netconf port {} is set.", e.getMessage(), +// DEFAULT_NETCONF_PORT); +// return DEFAULT_NETCONF_PORT; +// } +// } +// } diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationCache.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationCache.java new file mode 100644 index 000000000..39721841b --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationCache.java @@ -0,0 +1,34 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA 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.pnfsimulator.netconfmonitor.netconf; + +public class NetconfConfigurationCache { + + private String configuration = ""; + + public String getConfiguration() { + return configuration; + } + + public void update(String configuration) { + this.configuration = configuration; + } +} diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationReader.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationReader.java new file mode 100644 index 000000000..e41e58f78 --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationReader.java @@ -0,0 +1,42 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ Copyright (C) + * 2018 NOKIA 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.pnfsimulator.netconfmonitor.netconf; + +import com.tailf.jnc.JNCException; +import com.tailf.jnc.NetconfSession; +import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class NetconfConfigurationReader { + + private static final Logger LOGGER = LoggerFactory.getLogger(NetconfConfigurationReader.class); + private final NetconfSession session; + private final String netconfModelPath; + + public NetconfConfigurationReader(NetconfSession session, String netconfModelPath) { + LOGGER.warn("netconfModelPath: {}", netconfModelPath); + this.session = session; + this.netconfModelPath = netconfModelPath; + } + + public String read() throws IOException, JNCException { + return session.getConfig(netconfModelPath).first().toXMLString(); + } +} diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationWriter.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationWriter.java new file mode 100644 index 000000000..40030796f --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConfigurationWriter.java @@ -0,0 +1,51 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA 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.pnfsimulator.netconfmonitor.netconf; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import org.onap.pnfsimulator.rest.util.DateUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NetconfConfigurationWriter { + + private static final Logger LOGGER = LoggerFactory.getLogger(NetconfConfigurationWriter.class); + private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); + private String pathToLog; + + public NetconfConfigurationWriter(String pathToLog) { + this.pathToLog = pathToLog; + } + + public void writeToFile(String configuration) { + String fileName = String.format("%s/config[%s].xml", pathToLog, DateUtil.getTimestamp(dateFormat)); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) { + writer.write(configuration); + LOGGER.info("Configuration wrote to file {}/{} ", pathToLog, fileName); + } catch (IOException e) { + LOGGER.warn("Failed to write configuration to file: {}", e.getMessage()); + } + } +} diff --git a/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConnectionParams.java b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConnectionParams.java new file mode 100644 index 000000000..1d6eb89bf --- /dev/null +++ b/test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/netconfmonitor/netconf/NetconfConnectionParams.java @@ -0,0 +1,45 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA 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.pnfsimulator.netconfmonitor.netconf; + +public class NetconfConnectionParams { + + public final String address; + public final int port; + public final String user; + public final String password; + + public NetconfConnectionParams(String address, int port, String user, String password) { + this.address = address; + this.port = port; + this.user = user; + this.password = password; + } + + @Override + public String toString() { + return String.format("NetconfConnectionParams{address=%s, port=%d, user=%s, password=%s}", + address, + port, + user, + password); + } +} \ No newline at end of file -- cgit 1.2.3-korg