additional fix for netconf change 39/47439/5
authorMatej Perina <mperina@cisco.com>
Mon, 24 Oct 2016 22:23:35 +0000 (00:23 +0200)
committerTomas Cechvala <tcechval@cisco.com>
Wed, 26 Oct 2016 10:28:00 +0000 (10:28 +0000)
 - covers missing leaf in required capabilities
 - fix missing dependency on ClusteredSingletonService

Change-Id: I7de71b4775194dc55e1d38d929779103acef8034
Signed-off-by: Matej Perina <mperina@cisco.com>
renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java

index 50f1a65b1f3fefdb5b9b544088656d8adcd189ec..3602073807d06b8a345864e801c84b638c80b1f6 100644 (file)
@@ -15,6 +15,7 @@ import static org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topolog
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -38,7 +39,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev15
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.AvailableCapabilities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapabilityBuilder;
 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;
@@ -63,7 +63,7 @@ public class NodeManager {
     private static final Logger LOG = LoggerFactory.getLogger(NodeManager.class);
     private final DataBroker dataBroker;
     private final MountPointService mountService;
-    private final List<AvailableCapability> requiredCapabilities;
+    private final List<String> requiredCapabilities;
 
     public NodeManager(final DataBroker dataBroker, final BindingAwareBroker.ProviderContext session) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
@@ -246,12 +246,11 @@ public class NodeManager {
     }
 
     private boolean capabilityCheck(final List<AvailableCapability> capabilities) {
-        for (AvailableCapability requiredCapability : requiredCapabilities) {
-            if (!capabilities.contains(requiredCapability)) {
-                return false;
-            }
-        }
-        return true;
+        final List<String> availableCapabilities = capabilities.stream()
+                .map(AvailableCapability::getCapability)
+                .collect(Collectors.toList());
+        return requiredCapabilities.stream()
+                .allMatch(availableCapabilities::contains);
     }
 
     @Nullable
@@ -322,18 +321,12 @@ public class NodeManager {
 
     private static class RequiredCapabilities {
 
-        private static final AvailableCapability NED =
-                new AvailableCapabilityBuilder().setCapability("(urn:ios?revision=2016-03-08)ned").build();
-        private static final AvailableCapability TAILF_COMMON = new AvailableCapabilityBuilder()
-            .setCapability("(http://tail-f.com/yang/common?revision=2015-05-22)tailf-common").build();
-        private static final AvailableCapability TAILF_CLI_EXTENSION = new AvailableCapabilityBuilder()
-            .setCapability("(http://tail-f.com/yang/common?revision=2015-03-19)tailf-cli-extensions").build();
-        private static final AvailableCapability TAILF_META_EXTENSION = new AvailableCapabilityBuilder()
-            .setCapability("(http://tail-f.com/yang/common?revision=2013-11-07)tailf-meta-extensions").build();
-        private static final AvailableCapability IETF_YANG_TYPES = new AvailableCapabilityBuilder()
-            .setCapability("(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types").build();
-        private static final AvailableCapability IETF_INET_TYPES = new AvailableCapabilityBuilder()
-            .setCapability("(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types").build();
+        private static final String NED ="(urn:ios?revision=2016-03-08)ned";
+        private static final String TAILF_COMMON = "(http://tail-f.com/yang/common?revision=2015-05-22)tailf-common";
+        private static final String TAILF_CLI_EXTENSION = "(http://tail-f.com/yang/common?revision=2015-03-19)tailf-cli-extensions";
+        private static final String TAILF_META_EXTENSION = "(http://tail-f.com/yang/common?revision=2013-11-07)tailf-meta-extensions";
+        private static final String IETF_YANG_TYPES = "(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types";
+        private static final String IETF_INET_TYPES = "(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types";
 
         /**
          * Initialize all common capabilities required by IOS-XE renderer. Any connected node is examined whether it's
@@ -342,8 +335,8 @@ public class NodeManager {
          *
          * @return list of string representations of required capabilities
          */
-        List<AvailableCapability> initializeRequiredCapabilities() {
-            final AvailableCapability capabilityEntries[] = {NED, TAILF_COMMON, TAILF_CLI_EXTENSION, TAILF_META_EXTENSION,
+        List<String> initializeRequiredCapabilities() {
+            final String capabilityEntries[] = {NED, TAILF_COMMON, TAILF_CLI_EXTENSION, TAILF_META_EXTENSION,
                     IETF_YANG_TYPES, IETF_INET_TYPES};
             return Arrays.asList(capabilityEntries);
         }
index 256b96615fbc01a4cf72817fa5919e1b9631e212..d484d1f178ed5bbb03d2389a644ea11d9948b5fe 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.MountPoint;
@@ -27,7 +28,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.r
 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.NetconfNodeConnectionStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapabilityBuilder;
 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;
@@ -47,14 +47,12 @@ public class VppNodeManager {
     private static final TopologyId TOPOLOGY_ID = new TopologyId("topology-netconf");
     private static final Logger LOG = LoggerFactory.getLogger(VppNodeManager.class);
     private static final Map<InstanceIdentifier<Node>, DataBroker> netconfNodeCache = new HashMap<>();
-    private static final AvailableCapability V3PO_CAPABILITY = new AvailableCapabilityBuilder()
-            .setCapability("(urn:opendaylight:params:xml:ns:yang:v3po?revision=2016-12-14)v3po").build();
-    private static final AvailableCapability INTERFACES_CAPABILITY = new AvailableCapabilityBuilder()
-            .setCapability("(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)ietf-interfaces").build();
+    private static final String V3PO_CAPABILITY = "(urn:opendaylight:params:xml:ns:yang:v3po?revision=2016-12-14)v3po";
+    private static final String INTERFACES_CAPABILITY = "(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)ietf-interfaces";
     private static final NodeId CONTROLLER_CONFIG_NODE = new NodeId("controller-config");
     private final DataBroker dataBroker;
     private final MountPointService mountService;
-    private final List<AvailableCapability> requiredCapabilities;
+    private final List<String> requiredCapabilities;
 
     public VppNodeManager(DataBroker dataBroker, BindingAwareBroker.ProviderContext session) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
@@ -188,12 +186,11 @@ public class VppNodeManager {
     }
 
     private boolean capabilityCheck(final List<AvailableCapability> capabilities) {
-        for (AvailableCapability requiredCapability : requiredCapabilities) {
-            if (!capabilities.contains(requiredCapability)) {
-                return false;
-            }
-        }
-        return true;
+        final List<String> availableCapabilities = capabilities.stream()
+                .map(AvailableCapability::getCapability)
+                .collect(Collectors.toList());
+        return requiredCapabilities.stream()
+                .allMatch(availableCapabilities::contains);
     }
 
     private DataBroker getNodeMountPoint(InstanceIdentifier<Node> mountPointIid) {
@@ -233,10 +230,10 @@ public class VppNodeManager {
      *
      * @return list of string representations of required capabilities
      */
-    private List<AvailableCapability> initializeRequiredCapabilities() {
+    private List<String> initializeRequiredCapabilities() {
         // Required device capabilities
 
-        AvailableCapability[] capabilityEntries = {V3PO_CAPABILITY, INTERFACES_CAPABILITY};
+        String[] capabilityEntries = {V3PO_CAPABILITY, INTERFACES_CAPABILITY};
         return Arrays.asList(capabilityEntries);
     }