diff options
Diffstat (limited to 'fabric-discovery-plugin/provider/src/main')
7 files changed, 0 insertions, 398 deletions
diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/ClientMessageCallback.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/ClientMessageCallback.java deleted file mode 100644 index 0a8ba9e7..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/ClientMessageCallback.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; - -/** - * Created by arun on 9/9/17. - */ -public class ClientMessageCallback implements IClientMessageCallback { - private static final Logger LOG = LoggerFactory.getLogger(ClientMessageCallback.class); - - @Override - public void onMessageReceived(final Object message) { - if (message instanceof TextWebSocketFrame) { - LOG.info("received message {}" + ((TextWebSocketFrame) message).text()); - } - } - -} diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/FabricDiscoveryPlugin.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/FabricDiscoveryPlugin.java deleted file mode 100644 index 99e171f6..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/FabricDiscoveryPlugin.java +++ /dev/null @@ -1,150 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 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========================================================= - */ - -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -public class FabricDiscoveryPlugin implements SvcLogicJavaPlugin, IFabricDiscoveryService { - - private ExecutorService service; - private Map<String, WebSocketClient> streamMap; - private static final Logger LOG = LoggerFactory.getLogger(FabricDiscoveryPlugin.class); - private static final String STREAM_PREFIX = "ws://"; - private static final String FB_DISCOVERY_STATUS = "fb-response"; - - public FabricDiscoveryPlugin() { - service = Executors.newFixedThreadPool(10); - streamMap = new ConcurrentHashMap<>(); - } - - @Override - public void processDcNotificationStream (Map<String, String> paramMap, SvcLogicContext ctx) throws SvcLogicException { - boolean enable; - String stream = parseParam(paramMap, "stream", true, null); - String prefix = parseParam(paramMap, "contextPrefix", false, null); - String enableStr = parseParam(paramMap, "enable", true, null); - - // Validate the input parameters - String pfx = (prefix != null) ? prefix + '.' : ""; - if ("true".equalsIgnoreCase(enableStr)) { - enable = true; - } else if ("false".equalsIgnoreCase(enableStr)) { - enable = false; - } else { - ctx.setAttribute(pfx + FB_DISCOVERY_STATUS, "Failure"); - throw new SvcLogicException("Incorrect parameter: enable. Valid values are ['true', 'false']"); - } - if (!STREAM_PREFIX.equalsIgnoreCase(stream.substring(0, 5))) { - ctx.setAttribute(pfx + FB_DISCOVERY_STATUS, "Failure"); - throw new SvcLogicException("Incorrect parameter: stream, Input is not a web socket address"); - } - - ctx.setAttribute(pfx + FB_DISCOVERY_STATUS, "Success"); - LOG.info("{} monitoring notification stream: {}", enable ? "START" : "STOP", stream); - - try { - service.execute(new Runnable () { - public void run () { - try { - URI uri = new URI(stream); - if (enable) { - if (streamMap.get(stream) != null) { - LOG.info("Notification Stream: {} is already being monitoried", stream); - return; - } - IClientMessageCallback messageCallback = new ClientMessageCallback(); - WebSocketClient wcClient = new WebSocketClient(uri, messageCallback); - streamMap.put(stream, wcClient); - wcClient.initialize(); - try { - wcClient.connect(); - } catch (InterruptedException e) { - LOG.info("Web Socket Client throws Exception: ", e.getMessage()); - } - } else { - WebSocketClient wc = streamMap.get(stream); - if (wc != null) { - try { - wc.close("Closing"); - } catch (InterruptedException e) { - LOG.info("Web Socket Client throws Exception: ", e.getMessage()); - } - } - } - } catch (URISyntaxException e) { - LOG.info("Exception converting stream to URI with: ", e.getMessage()); - } - } - }); - } catch (Exception e) { - LOG.info("Web Socket client connection throws an exception: ", e.getMessage()); - } - } - - private String parseParam(Map<String, String> paramMap, String name, boolean required, String def) - throws SvcLogicException { - String s = paramMap.get(name); - - if (s == null || s.trim().length() == 0) { - if (!required) - return def; - throw new SvcLogicException("Parameter " + name + " is required in PropertiesNode"); - } - - s = s.trim(); - String value = ""; - int i = 0; - int i1 = s.indexOf('%'); - while (i1 >= 0) { - int i2 = s.indexOf('%', i1 + 1); - if (i2 < 0) - throw new SvcLogicException("Cannot parse parameter " + name + ": " + s + ": no matching %"); - - String varName = s.substring(i1 + 1, i2); - String varValue = System.getenv(varName); - if (varValue == null) - varValue = ""; - - value = (new StringBuilder()).append(value) - .append(s.substring(i, i1)) - .append(varValue).toString(); - i = i2 + 1; - i1 = s.indexOf('%', i); - } - value = (new StringBuilder()).append(value) - .append(s.substring(i)).toString(); - - LOG.info("Parameter {}: {}", name, value); - return value; - } -} diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IClientMessageCallback.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IClientMessageCallback.java deleted file mode 100644 index e555d338..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IClientMessageCallback.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -/** - * Created by mbobak on 1/22/14. - */ -public interface IClientMessageCallback { - - void onMessageReceived(Object message); -} diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IFabricDiscoveryService.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IFabricDiscoveryService.java deleted file mode 100644 index 857d75a9..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/IFabricDiscoveryService.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -import java.util.Map; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; - -/** - * Created by arun on 9/10/17. - */ -public interface IFabricDiscoveryService { - - /* (non-Javadoc) - * @see void#processDcNotificationStream(java.lang.String, java.lang.Integer, java.lang.String, java.lang.Boolean) - */ - void processDcNotificationStream (Map<String, String> paramMap, SvcLogicContext ctx) throws SvcLogicException; - -} diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClient.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClient.java deleted file mode 100644 index d5bab386..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClient.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -import io.netty.bootstrap.Bootstrap; -import io.netty.buffer.Unpooled; -import io.netty.channel.Channel; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.http.HttpClientCodec; -import io.netty.handler.codec.http.HttpObjectAggregator; -import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame; -import io.netty.handler.codec.http.websocketx.PingWebSocketFrame; -import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; -import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory; -import io.netty.handler.codec.http.websocketx.WebSocketVersion; -import java.net.URI; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class WebSocketClient { - - private static final Logger LOG = LoggerFactory.getLogger(WebSocketClient.class); - - private final URI uri; - private final Bootstrap bootstrap = new Bootstrap(); - private final WebSocketClientHandler clientHandler; - private Channel clientChannel; - private final EventLoopGroup group = new NioEventLoopGroup(); - - public WebSocketClient(final URI uri, final IClientMessageCallback clientMessageCallback) { - this.uri = uri; - clientHandler = new WebSocketClientHandler(WebSocketClientHandshakerFactory.newHandshaker(uri, - WebSocketVersion.V13, null, false, null), clientMessageCallback); - // last null could be replaced with DefaultHttpHeaders - initialize(); - } - - public void initialize() { - - String protocol = uri.getScheme(); - if (!"ws".equals(protocol)) { - throw new IllegalArgumentException("Unsupported protocol: " + protocol); - } - - bootstrap.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer<SocketChannel>() { - @Override - public void initChannel(final SocketChannel ch) throws Exception { - ChannelPipeline pipeline = ch.pipeline(); - pipeline.addLast("http-codec", new HttpClientCodec()); - pipeline.addLast("aggregator", new HttpObjectAggregator(8192)); - pipeline.addLast("ws-handler", clientHandler); - } - }); - } - - public void connect() throws InterruptedException { - LOG.info("WebSocket Client connecting"); - clientChannel = bootstrap.connect(uri.getHost(), uri.getPort()).sync().channel(); - clientHandler.handshakeFuture().sync(); - } - - public void writeAndFlush(final String message) { - clientChannel.writeAndFlush(new TextWebSocketFrame(message)); - } - - public void writeAndFlush(final Object message) { - clientChannel.writeAndFlush(message); - } - - public void ping() { - clientChannel.writeAndFlush(new PingWebSocketFrame(Unpooled.copiedBuffer(new byte[] { 1, 2, 3, 4, 5, 6 }))); - } - - public void close(final String reasonText) throws InterruptedException { - CloseWebSocketFrame closeWebSocketFrame = new CloseWebSocketFrame(1000, reasonText); - clientChannel.writeAndFlush(closeWebSocketFrame); - - // WebSocketClientHandler will close the connection when the server - // responds to the CloseWebSocketFrame. - clientChannel.closeFuture().sync(); - group.shutdownGracefully(); - } -} diff --git a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClientHandler.java b/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClientHandler.java deleted file mode 100644 index c1c5dc30..00000000 --- a/fabric-discovery-plugin/provider/src/main/java/org/onap/ccsdk/sli/plugins/fabricdiscovery/WebSocketClientHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.onap.ccsdk.sli.plugins.fabricdiscovery; - -import io.netty.channel.Channel; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelPromise; -import io.netty.channel.SimpleChannelInboundHandler; -import io.netty.handler.codec.http.FullHttpResponse; -import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame; -import io.netty.handler.codec.http.websocketx.PongWebSocketFrame; -import io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker; -import io.netty.handler.codec.http.websocketx.WebSocketFrame; -import io.netty.util.CharsetUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class WebSocketClientHandler extends SimpleChannelInboundHandler<Object> { - - private static final Logger LOG = LoggerFactory.getLogger(WebSocketClientHandler.class.toString()); - private final WebSocketClientHandshaker handshaker; - private ChannelPromise handshakeFuture; - private final IClientMessageCallback messageListener; - - public WebSocketClientHandler(WebSocketClientHandshaker handshaker, IClientMessageCallback listener) { - this.handshaker = handshaker; - this.messageListener = listener; - } - - public ChannelFuture handshakeFuture() { - return handshakeFuture; - } - - @Override - public void handlerAdded(ChannelHandlerContext ctx) throws Exception { - handshakeFuture = ctx.newPromise(); - } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - handshaker.handshake(ctx.channel()); - } - - @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - LOG.info("WebSocket Client disconnected!"); - } - - @Override - public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { - Channel ch = ctx.channel(); - if (!handshaker.isHandshakeComplete()) { - handshaker.finishHandshake(ch, (FullHttpResponse) msg); - LOG.info("WebSocket Client connected!"); - handshakeFuture.setSuccess(); - return; - } - - if (msg instanceof FullHttpResponse) { - FullHttpResponse response = (FullHttpResponse) msg; - throw new Exception("Unexpected FullHttpResponse (getStatus=" + response.getStatus() + ", content=" - + response.content().toString(CharsetUtil.UTF_8) + ')'); - } - - messageListener.onMessageReceived(msg); - WebSocketFrame frame = (WebSocketFrame) msg; - - if (frame instanceof PongWebSocketFrame) { - LOG.info("WebSocket Client received pong"); - } else if (frame instanceof CloseWebSocketFrame) { - LOG.info("WebSocket Client received closing"); - ch.close(); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - LOG.info("Cause: {} .", cause.toString()); - - if (!handshakeFuture.isDone()) { - handshakeFuture.setFailure(cause); - } - - ctx.close(); - } -} diff --git a/fabric-discovery-plugin/provider/src/main/resources/org/opendaylight/blueprint/fabricdiscoveryplugin-blueprint.xml b/fabric-discovery-plugin/provider/src/main/resources/org/opendaylight/blueprint/fabricdiscoveryplugin-blueprint.xml deleted file mode 100644 index 43137bb8..00000000 --- a/fabric-discovery-plugin/provider/src/main/resources/org/opendaylight/blueprint/fabricdiscoveryplugin-blueprint.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" - xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" - odl:use-default-for-reference-types="true"> - - - <bean id="fabricDiscoveryPlugin" class="org.onap.ccsdk.sli.plugins.fabricdiscovery.FabricDiscoveryPlugin" /> - <service ref="fabricDiscoveryPlugin" interface="org.onap.ccsdk.sli.plugins.fabricdiscovery.FabricDiscoveryPlugin" /> - -</blueprint> |