Add special handling for BGP RouteDistinguisher 04/105704/4
authorDan Timoney <dtimoney@att.com>
Thu, 9 Apr 2020 17:56:45 +0000 (13:56 -0400)
committerDan Timoney <dtimoney@att.com>
Mon, 13 Apr 2020 18:32:10 +0000 (14:32 -0400)
Add special case code in MdsalHelper for BGP RouteDistinguisher class -
a custom class implemented by OpenDaylight that does NOT follow
the pattern of data object classes generated from Yang models
by Yangtools

Note: this depends on the following ccsdk/parent change to add
OpenDaylight BGP dependencies to the dependencyManagement
section of our parent poms:
https://gerrit.onap.org/r/c/ccsdk/parent/+/105774

Change-Id: Ifebd03091d9ed9225e37c7242ecf7810abca1feb
Issue-ID: CCSDK-2307
Signed-off-by: Dan Timoney <dtimoney@att.com>
sli/provider/pom.xml
sli/provider/src/main/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelper.java

index 5dc327f..056d748 100755 (executable)
                <dependency>
                        <groupId>org.opendaylight.controller</groupId>
                        <artifactId>sal-binding-api</artifactId>
+                       <scope>provided</scope>
                </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991</artifactId>
-        </dependency>       
+                       <scope>provided</scope>
+        </dependency>
+               <dependency>
+                       <groupId>org.opendaylight.bgpcep</groupId>
+                       <artifactId>bgp-concepts</artifactId>
+                       <scope>provided</scope>
+               </dependency>
         <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>sal-core-api</artifactId>
+                       <scope>provided</scope>
         </dependency>
                <!-- Testing Dependencies -->
                <dependency>
index 122c886..d3ab6c3 100755 (executable)
@@ -43,6 +43,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.RouteDistinguisher;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.RouteDistinguisherBuilder;
 import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -678,7 +680,19 @@ public class MdsalHelper {
                                                 + "(" + paramValue + ")", e);
                                     }
                                 }
-                            } else {
+                            } else if ("RouteDistinguisher".equals(simpleName)) {
+                                if ((paramValue != null) && (paramValue.length() > 0)) {
+                                    try {
+                                        RouteDistinguisher routeDistinguisher = RouteDistinguisherBuilder.getDefaultInstance(paramValue);
+                                        m.invoke(toObj, routeDistinguisher);
+                                        foundValue = true;
+                                    } catch (Exception e) {
+                                        LOG.error("Caught exception calling " + toClass.getName() + "." + m.getName()
+                                                + "(" + paramValue + ")", e);
+                                    }
+                                }
+                            }
+                            else {
                                 // setter expects a yang-generated class. Need
                                 // to
                                 // create a builder to set it.