diff options
author | a.sreekumar <ajith.sreekumar@ericsson.com> | 2018-10-24 16:07:36 +0100 |
---|---|---|
committer | a.sreekumar <ajith.sreekumar@ericsson.com> | 2018-10-24 16:08:17 +0100 |
commit | f46c20006c23d119ffc1c83117d203ed649f687c (patch) | |
tree | a04482e2a418f557e7423f7cacd375db7c318687 /vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java | |
parent | 2233d21abae761e91d7b056644c6ac972e662d57 (diff) |
Adding TestVNF netconf server
TestVNF netconf server is a partial implementation of a netconfserver for netconf termination.
TestVNF is configurable and can be used for testing purposes.
Issue-ID: INT-355
Change-Id: I98594d7df57ca14582159bb006d8df51dca74ec7
Signed-off-by: a.sreekumar <ajith.sreekumar@ericsson.com>
Diffstat (limited to 'vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java')
-rw-r--r-- | vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java b/vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java new file mode 100644 index 00000000..a6022bea --- /dev/null +++ b/vnfs/TestVNF/netconfserver/src/main/java/com/ericsson/testvnf/server/netconf/NetconfSubsystem.java @@ -0,0 +1,120 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package com.ericsson.testvnf.server.netconf; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.sshd.common.NamedFactory; +import org.apache.sshd.server.Environment; +import org.apache.sshd.server.ExitCallback; +import org.apache.sshd.server.command.Command; + +/* + * NetconfSubsystem class + */ +public class NetconfSubsystem implements Command { + + private static final Log log = LogFactory.getLog(Factory.class); + private InputStream in; + private OutputStream out; + private OutputStream error; + private Thread netconfHandlerThread; + private Map<String, Boolean> connectionResetMap; + private NetconfHandler netconfHandler; + + public NetconfSubsystem(Map<String, Boolean> connectionResetMap) { + this.connectionResetMap = connectionResetMap; + } + + public void start(Environment env) throws IOException { + // initialize netconf handler + netconfHandler = new NetconfHandler(in, out, connectionResetMap); + netconfHandlerThread = new Thread(netconfHandler, "netconfHandler thread"); + netconfHandlerThread.start(); + } + + public void destroy() { + netconfHandler.interruptThreads(); + try { + netconfHandlerThread.join(2000); + } catch (InterruptedException e) { + log.info("netconfHandler thread joining failed." + e.getMessage()); + Thread.currentThread().interrupt(); + } + netconfHandlerThread.interrupt(); + log.info("Netconf Subsystem destroyed"); + } + + public static class Factory implements NamedFactory<Command> { + + // a connectionResetMap is maintained for each running instance of a netconf system. + // this is a simple data structure to determine when sending events to a target needs to be terminated. + private static Map<String, Boolean> connectionResetMap = new HashMap<>(); + + public static Factory createFactory() { + return new Factory(); + } + + public String getName() { + return "netconf"; + } + + public Command create() { + log.info("Creating subsystem for netconf"); + return new NetconfSubsystem(connectionResetMap); + } + + } + + public InputStream getInputStream() { + return in; + } + + public void setInputStream(InputStream in) { + this.in = in; + } + + public OutputStream getOutputStream() { + return out; + } + + public void setOutputStream(OutputStream out) { + this.out = out; + } + + public OutputStream getErrorStream() { + return error; + } + + public void setErrorStream(OutputStream error) { + this.error = error; + } + + public void setExitCallback(ExitCallback callback) { + //Set the callback that the shell has to call when it is closed. + } +}
\ No newline at end of file |