Modify cm-handle feature 85/124285/6
authorNiranjana <niranjana.y60@wipro.com>
Thu, 16 Sep 2021 09:05:06 +0000 (09:05 +0000)
committerKAPIL SINGAL <ks220y@att.com>
Thu, 16 Sep 2021 14:03:26 +0000 (14:03 +0000)
Issue-ID: CCSDK-3342
Signed-off-by: Niranjana <niranjana.y60@wipro.com>
Change-Id: Id25c420ee7a0020c634d37f7afc354bed8dfcf6b

sdnr/northbound/addCMHandle/feature/pom.xml
sdnr/northbound/addCMHandle/installer/pom.xml
sdnr/northbound/addCMHandle/installer/src/assembly/assemble_mvnrepo_zip.xml
sdnr/northbound/addCMHandle/model/pom.xml
sdnr/northbound/addCMHandle/pom.xml
sdnr/northbound/addCMHandle/provider/pom.xml
sdnr/northbound/addCMHandle/provider/src/main/java/org/onap/ccsdk/features/sdnr/northbound/addCMHandle/AddCMHandleProvider.java
sdnr/northbound/addCMHandle/provider/src/main/java/org/onap/ccsdk/features/sdnr/northbound/impl/AddCMHandleProvider.java [deleted file]
sdnr/northbound/addCMHandle/provider/src/main/resources/cm-handle.properties
sdnr/northbound/addCMHandle/provider/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml
sdnr/northbound/addCMHandle/provider/src/test/java/org/onap/ccsdk/features/sdnr/northbound/addCMHandle/AddCMHandleProviderTest.java

index 2bae14a..1e10acd 100644 (file)
   ~ ============LICENSE_END=======================================================
   ~
   -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>feature-repo-parent</artifactId>
+        <artifactId>single-feature-parent</artifactId>
         <version>2.2.1</version>
         <relativePath/>
     </parent>
 
     <name>ccsdk-features :: sdnr-northbound :: ${project.artifactId}</name>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.opendaylight.controller</groupId>
-                <artifactId>mdsal-artifacts</artifactId>
-                <version>1.6.1</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
     <dependencies>
         <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
-            <artifactId>addCMHandle-model</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>addCMHandle-provider</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.sli.core</groupId>
-            <artifactId>sli-common</artifactId>
-            <version>${ccsdk.sli.version}</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.sli.core</groupId>
-            <artifactId>sli-provider</artifactId>
-            <version>${ccsdk.sli.version}</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.sli.core</groupId>
-            <artifactId>utils-provider</artifactId>
-            <version>${ccsdk.sli.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.velocity</groupId>
-            <artifactId>velocity-engine-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-        </dependency>
     </dependencies>
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.eclipse.m2e</groupId>
-                    <artifactId>lifecycle-mapping</artifactId>
-                    <version>1.0.0</version>
-                    <configuration>
-                        <lifecycleMappingMetadata>
-                            <pluginExecutions>
-                                <pluginExecution>
-                                    <pluginExecutionFilter>
-                                        <groupId>org.codehaus.mojo</groupId>
-                                        <artifactId>properties-maven-plugin</artifactId>
-                                        <versionRange>[1.0.0,)</versionRange>
-                                        <goals>
-                                            <goal>set-system-properties</goal>
-                                        </goals>
-                                    </pluginExecutionFilter>
-                                    <action>
-                                        <execute/>
-                                    </action>
-                                </pluginExecution>
-                                <pluginExecution>
-                                    <pluginExecutionFilter>
-                                        <groupId>org.apache.karaf.tooling</groupId>
-                                        <artifactId>karaf-maven-plugin</artifactId>
-                                        <versionRange>[4.0.0,)</versionRange>
-                                        <goals>
-                                            <goal>features-generate-descriptor</goal>
-                                        </goals>
-                                    </pluginExecutionFilter>
-                                    <action>
-                                        <execute/>
-                                    </action>
-                                </pluginExecution>
-                            </pluginExecutions>
-                        </lifecycleMappingMetadata>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
 </project>
index 4ea1e5e..41c14d0 100755 (executable)
@@ -19,7 +19,8 @@
   ~ ============LICENSE_END=======================================================
   ~
   -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-broker-impl</artifactId>
-            <version>1.11.3</version>
-            <scope>test</scope>
-        </dependency>
+
         <dependency>
             <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
-            <artifactId>addCMHandle-feature</artifactId>
+            <artifactId>${application.name}-feature</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
index fcfb7aa..c0eacf9 100644 (file)
@@ -2,7 +2,7 @@
   ~ ============LICENSE_START=======================================================
   ~ ONAP : ccsdk features
   ~ ================================================================================
-  ~  Copyright (C) 2021 Wipro Limited.
+  ~ Copyright (C) 2021 Wipro Limited.
   ~ ================================================================================
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
   ~
   -->
 
+<!-- Defines how we build the .zip file which is our distribution. -->
 
 <assembly
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
-    <id>bin</id>
+    <id>repo</id>
     <formats>
         <format>zip</format>
     </formats>
 
+    <!--  we want "system" and related files right at the root level
+          as this file is suppose to be unzip on top of a karaf
+          distro. -->
     <includeBaseDirectory>false</includeBaseDirectory>
 
     <fileSets>
index b472dbd..57a70e3 100644 (file)
@@ -19,7 +19,8 @@
   ~ ============LICENSE_END=======================================================
   ~
   -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
 
     <dependencies>
         <dependency>
-            <groupId>org.opendaylight.mdsal.model</groupId>
-            <artifactId>ietf-inet-types</artifactId>
-            <version>2010.09.24.12.4</version>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991</artifactId>
+       </dependency>
+       <dependency>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991-ietf-inet-types</artifactId>
+       </dependency>
+       <dependency>
+            <groupId>org.opendaylight.netconf</groupId>
+            <artifactId>sal-netconf-connector</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.opendaylight.mdsal.model</groupId>
-            <artifactId>ietf-yang-types</artifactId>
-            <version>2010.09.24.12.4</version>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991-ietf-yang-types</artifactId>
+            <scope>provided</scope>
         </dependency>
-    </dependencies>
+   </dependencies>
+
+
     <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.eclipse.m2e</groupId>
-                    <artifactId>lifecycle-mapping</artifactId>
-                    <version>1.0.0</version>
-                    <configuration>
-                        <lifecycleMappingMetadata>
-                            <pluginExecutions>
-                                <pluginExecution>
-                                    <pluginExecutionFilter>
-                                        <groupId>org.codehaus.mojo</groupId>
-                                        <artifactId>properties-maven-plugin</artifactId>
-                                        <versionRange>[1.0.0,)</versionRange>
-                                        <goals>
-                                            <goal>set-system-properties</goal>
-                                        </goals>
-                                    </pluginExecutionFilter>
-                                    <action>
-                                        <execute/>
-                                    </action>
-                                </pluginExecution>
-                            </pluginExecutions>
-                        </lifecycleMappingMetadata>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/gen/**</exclude>
+                        <exclude>**/generated-sources/**</exclude>
+                        <exclude>**/yang-gen-sal/**</exclude>
+                        <exclude>**/pax/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
     </build>
 </project>
index 9c33e67..9e25b91 100644 (file)
@@ -19,7 +19,8 @@
   ~ ============LICENSE_END=======================================================
   ~
   -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -34,7 +35,7 @@
     <version>1.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
-    <name>ccsdk-features :: sdnr-northbound :: addCMHandle</name>
+    <name>ccsdk-features :: sdnr-northbound :: ${project.artifactId}</name>
 
     <modules>
         <module>model</module>
@@ -44,7 +45,6 @@
     </modules>
 
     <properties>
-        <feature-name>addCMHandle-features</feature-name>
+        <feature-name>addCMHandle</feature-name>
     </properties>
-
 </project>
index 242aeca..c0bc47f 100644 (file)
@@ -19,7 +19,8 @@
   ~ ============LICENSE_END=======================================================
   ~
   -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
 
     <name>ccsdk-features :: sdnr-northbound :: ${project.artifactId}</name>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.opendaylight.controller</groupId>
-                <artifactId>mdsal-artifacts</artifactId>
-                <version>1.6.1</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
     <dependencies>
         <dependency>
             <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-api</artifactId>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-common-util</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-core-api</artifactId>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-dom-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <!-- <version>${junit.version}</version> -->
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-client</artifactId>
-            <version>1.19.4</version>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-common</artifactId>
+            <version>${ccsdk.sli.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-provider</artifactId>
+            <version>${ccsdk.sli.version}</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>utils-provider</artifactId>
+            <version>${ccsdk.sli.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-provider-base</artifactId>
+            <version>${ccsdk.sli.version}</version>
+            <scope>provided</scope>
+       </dependency>
+       <dependency>
+            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <artifactId>sdnr-wt-netconfnode-state-service-model</artifactId>
+            <version>1.2.0</version>
+       </dependency>
+       <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+       </dependency>
+       <dependency>
             <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-core</artifactId>
+            <artifactId>jersey-bundle</artifactId>
             <version>1.19.4</version>
+       </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>ietf-topology</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.netconf</groupId>
+            <artifactId>sal-netconf-connector</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991-ietf-yang-types</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>yang-binding</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-singleton-common-api</artifactId>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 
                             </pluginExecutions>
                         </lifecycleMappingMetadata>
                     </configuration>
-               </plugin>
-           </plugins>
+                </plugin>
+            </plugins>
         </pluginManagement>
     </build>
-
 </project>
index 013e714..1756615 100644 (file)
 
 package org.onap.ccsdk.features.sdnr.northbound.addCMHandle;
 
+import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
+
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ListenableFuture;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.config.ClientConfig;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.core.MediaType;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.json.JSONObject;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfNodeStateListener;
+import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.DataObjectModification;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.DataTreeModification;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.AddCMHandleInput;
 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.AddCMHandleOutput;
 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.CMHandleAPIService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class AddCMHandleProvider implements CMHandleAPIService {
+public class AddCMHandleProvider implements CMHandleAPIService, NetconfNodeStateListener, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(AddCMHandleProvider.class);
-
-    private final String appName = "addCMHandle";
-
-    private final DataBroker dataBroker;
-    private final RpcProviderRegistry rpcProviderRegistry;
-    private RpcRegistration<CMHandleAPIService> serviceRegistration;
-
+    private final String APPLICATION_NAME = "addCMHandle";
     private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";
     private static final String PROPERTIES_FILE_NAME = "cm-handle.properties";
     private static final String PARSING_ERROR =
             "Could not create the request message to send to the server; no message will be sent";
+    private final ExecutorService executor;
+    protected DataBroker dataBroker;
+    protected DOMDataBroker domDataBroker;
+    protected NotificationPublishService notificationService;
+    protected RpcProviderService rpcProviderRegistry;
+    private ObjectRegistration<CMHandleAPIService> rpcRegistration;
+    public static final InstanceIdentifier<Topology> NETCONF_TOPO_IID = InstanceIdentifier.create(NetworkTopology.class)
+            .child(Topology.class, new TopologyKey(new TopologyId(TopologyNetconf.QNAME.getLocalName())));
+    private static HashMap<String, String> config;
+
+    public AddCMHandleProvider() {
+
+        LOG.info("Creating provider for {}", APPLICATION_NAME);
+        executor = Executors.newFixedThreadPool(1);
+        this.dataBroker = null;
+        this.domDataBroker = null;
+        this.notificationService = null;
+        this.rpcProviderRegistry = null;
+        this.rpcRegistration = null;
+    }
 
-    public AddCMHandleProvider(final DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry) {
+    public void setDataBroker(DataBroker dataBroker) {
         this.dataBroker = dataBroker;
-        this.rpcProviderRegistry = rpcProviderRegistry;
     }
 
-    /**
-     * Method called when the blueprint container is created.
-     */
-    public void init() {
-        serviceRegistration = rpcProviderRegistry.addRpcImplementation(CMHandleAPIService.class, this);
+    public void setDomDataBroker(DOMDataBroker domDataBroker) {
+        this.domDataBroker = domDataBroker;
+    }
 
-        LOG.debug("Initializing provider for " + appName);
+    public void setRpcProviderRegistry(RpcProviderService rpcProviderRegistry) {
+        this.rpcProviderRegistry = rpcProviderRegistry;
+    }
 
-        Preconditions.checkNotNull(dataBroker, "dataBroker must be set");
+    public void setNotificationPublishService(NotificationPublishService notificationPublishService) {
+        this.notificationService = notificationPublishService;
+    }
+
+    public void init() {
+        LOG.info("Initializing {} for {}", this.getClass().getName(), APPLICATION_NAME);
+
+        if (rpcRegistration == null) {
+            if (rpcProviderRegistry != null) {
+                rpcRegistration = rpcProviderRegistry.registerRpcImplementation(CMHandleAPIService.class, this);
+                LOG.info("Initialization complete for {}", APPLICATION_NAME);
+            } else {
+                LOG.warn("Error initializing {} : rpcRegistry unset", APPLICATION_NAME);
+            }
+        }
 
         String propDir = System.getenv(SDNC_CONFIG_DIR);
         if (propDir == null) {
@@ -72,13 +143,74 @@ public class AddCMHandleProvider implements CMHandleAPIService {
             propDir = propDir + "/";
         }
 
-        LOG.debug("Initialization complete for " + appName);
+        // GET configuration from properties file
+        config = new HashMap<String, String>();
+
+        try {
+            FileInputStream fileInput = new FileInputStream(propDir + PROPERTIES_FILE_NAME);
+            Properties properties = new Properties();
+            properties.load(fileInput);
+            fileInput.close();
+
+            for (String param : new String[] {"url", "user", "password",
+                    "authentication, dmi-service-name"}) {
+                config.put(param, properties.getProperty(param));
+            }
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        LOG.info("addCMHandle Session Initiated");
+    }
+
+    @Override
+    public void onCreated(NodeId nNodeId, NetconfNode netconfNode) {
+        LOG.info("NetConf device connected ", nNodeId.getValue());
+        JSONObject obj = new JSONObject();
+        obj.put("cm-handle-id", nNodeId.getValue());
+        obj.put("dmi-service-name", config.get("dmi-service-name"));
+        ClientConfig dmaapClientConfig = new DefaultClientConfig();
+        dmaapClientConfig.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT, 180000);
+        dmaapClientConfig.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 60000);
+        Client dmaapClient = Client.create(dmaapClientConfig);
+        String authenticationMethod = config.get("authentication");
+        ClientResponse response = null;
+        try {
+            if (authenticationMethod.equals("basic")) {
+                LOG.debug("Sending message to dmaap-message-router: {}", obj.toString());
+                dmaapClient.addFilter(new HTTPBasicAuthFilter(config.get("user"), config.get("password")));
+
+                response = dmaapClient.resource(config.get("url")).type(MediaType.APPLICATION_JSON)
+                        .accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, obj);
+            } else {
+                response = dmaapClient.resource(config.get("url")).type(MediaType.APPLICATION_JSON)
+                        .accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, obj);
+            }
+        } catch (Exception e) {
+            LOG.error("Error while posting message to CM_HANDLE topic: {}", e);
+        }
+
+        LOG.info("Received response from dmaap-message-router: \n {}", response.toString());
+    }
+
+    @Override
+    public void onRemoved(NodeId nNodeId) {
+
+        LOG.info("NetConf device removed - nNodeId = {}", nNodeId);
+    }
+
+    @Override
+    public void onStateChange(NodeId nNodeId, NetconfNode netconfNode) {
+        LOG.info("NetConf device state changed nNodeId = {}}", nNodeId);
     }
 
     /**
      * Method called when the blueprint container is destroyed.
      */
     public void close() {
+        rpcRegistration.close();
         LOG.debug("AddCMHandleProvider Closed");
     }
 
diff --git a/sdnr/northbound/addCMHandle/provider/src/main/java/org/onap/ccsdk/features/sdnr/northbound/impl/AddCMHandleProvider.java b/sdnr/northbound/addCMHandle/provider/src/main/java/org/onap/ccsdk/features/sdnr/northbound/impl/AddCMHandleProvider.java
deleted file mode 100644 (file)
index 6e59e07..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : CCSDK
- * ================================================================================
- * Copyright (C) 2021 Wipro Limited.
- * ================================================================================
- * 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.northbound.impl;
-
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListenableFuture;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.AddCMHandleInput;
-import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.AddCMHandleOutput;
-import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev210615.CMHandleAPIService;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AddCMHandleProvider implements CMHandleAPIService {
-
-    private static final Logger LOG = LoggerFactory.getLogger(AddCMHandleProvider.class);
-
-    private final String appName = "addCMHandle";
-
-    private final DataBroker dataBroker;
-    private final RpcProviderRegistry rpcProviderRegistry;
-    private RpcRegistration<CMHandleAPIService> serviceRegistration;
-
-    private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";
-    private static final String PROPERTIES_FILE_NAME = "cm-handle.properties";
-    private static final String PARSING_ERROR =
-            "Could not create the request message to send to the server; no message will be sent";
-
-    public AddCMHandleProvider(final DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry) {
-        this.dataBroker = dataBroker;
-        this.rpcProviderRegistry = rpcProviderRegistry;
-    }
-
-    /**
-     * Method called when the blueprint container is created.
-     */
-    public void init() {
-        serviceRegistration = rpcProviderRegistry.addRpcImplementation(CMHandleAPIService.class, this);
-
-        LOG.debug("Initializing provider for " + appName);
-
-        Preconditions.checkNotNull(dataBroker, "dataBroker must be set");
-
-        String propDir = System.getenv(SDNC_CONFIG_DIR);
-        if (propDir == null) {
-            LOG.error("Environment variable SDNC_CONFIG_DIR is not set");
-            propDir = "/opt/onap/ccsdk/data/properties/";
-        } else if (!propDir.endsWith("/")) {
-            propDir = propDir + "/";
-        }
-
-        LOG.debug("Initialization complete for " + appName);
-    }
-
-    /**
-     * Method called when the blueprint container is destroyed.
-     */
-    public void close() {
-        LOG.debug("AddCMHandleProvider Closed");
-    }
-
-    @Override
-    public ListenableFuture<RpcResult<AddCMHandleOutput>> addCMHandle(AddCMHandleInput input) {
-
-        return null;
-    }
-
-}
index ed3db00..f027f59 100644 (file)
@@ -20,4 +20,8 @@
 #
 
 
-dmaap.url              = https://dmaap-message-router/events
+url              = https://dmaap-message-router/events/CM_HANDLE
+user             = user
+password         = password
+authentication   = basic
+dmi-service-name = dmi-service-name
index 8e543d4..9cc6c39 100644 (file)
   ~
   -->
 
-<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">
+<blueprint xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+           xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" odl:use-default-for-reference-types="true">
+
+    <reference id="svcLogicService"
+               interface="org.onap.ccsdk.sli.core.sli.provider.SvcLogicService"/>
+
+    <bean id="client" class="org.onap.ccsdk.features.sdnr.northbound.ranSlice.RANSliceClient">
+        <argument ref="svcLogicService"/>
+    </bean>
 
     <reference id="dataBroker"
-               interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
-               odl:type="default"/>
+               interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
+
+    <reference id="domDataBroker"
+               interface="org.opendaylight.mdsal.dom.api.DOMDataBroker"/>
 
-    <bean id="provider"
-          class="org.onap.sdnc.northbound.sdnr.impl.AddCMHandleProvider"
-          init-method="init" destroy-method="close">
-        <argument ref="dataBroker"/>
+    <reference id="notificationPublishService"
+               interface="org.opendaylight.mdsal.binding.api.NotificationPublishService" />
+
+    <reference id="rpcProviderRegistry"
+               interface="org.opendaylight.mdsal.binding.api.RpcProviderService" />
+
+    <bean id="provider" class="org.onap.ccsdk.features.sdnr.northbound.ranSlice.RANSliceProvider"
+        init-method="init" destroy-method="close">
+        <property name="dataBroker"  ref="dataBroker"/>
+        <property name="domDataBroker" ref="domDataBroker"/>
+        <property name="rpcProviderRegistry" ref="rpcProviderRegistry"/>
+        <property name="notificationPublishService" ref="notificationPublishService"/>
+        <property name="client" ref="client"/>
     </bean>
 
+    <odl:rpc-implementation ref="provider"/>
+
 </blueprint>
index 37711c6..0dfe88c 100644 (file)
@@ -11,10 +11,10 @@ import java.util.concurrent.Future;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-
+import org.onap.ccsdk.features.sdnr.northbound.addCMHandle.AddCMHandleProvider;
 public class AddCMHandleProviderTest {
 
     private AddCMHandleProvider esProvider;
@@ -22,8 +22,8 @@ public class AddCMHandleProviderTest {
     @Before
     public void setUp() throws Exception {
         DataBroker dataBroker = mock(DataBroker.class);
-        RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class);
-        esProvider = new AddCMHandleProvider(dataBroker, rpcRegistry);
+        RpcProviderService rpcRegistry = mock(RpcProviderService.class);
+        esProvider = new AddCMHandleProvider();
     }
 
     @After