X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Fcli%2Fl2gw%2FNetworkL2gwDeviceInfoCli.java;h=1d01daf745aba19b09a4bc49af768c3bb732a326;hb=aa420ee1b2afb2ae4b52b97399fba8a502baa6cc;hp=257da6de9f11492b27654b6b15a2526af3749857;hpb=e19a17366cd51fe59dbb8d450e75250d2837efa1;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/cli/l2gw/NetworkL2gwDeviceInfoCli.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/cli/l2gw/NetworkL2gwDeviceInfoCli.java index 257da6de9f..1d01daf745 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/cli/l2gw/NetworkL2gwDeviceInfoCli.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/cli/l2gw/NetworkL2gwDeviceInfoCli.java @@ -8,6 +8,8 @@ package org.opendaylight.netvirt.elan.cli.l2gw; +import static org.opendaylight.mdsal.binding.util.Datastore.OPERATIONAL; + import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -20,15 +22,16 @@ import org.apache.karaf.shell.commands.Command; import org.apache.karaf.shell.commands.Option; import org.apache.karaf.shell.console.OsgiCommandSupport; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; +import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants; import org.opendaylight.genius.utils.hwvtep.HwvtepUtils; import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner; +import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanInstances; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstanceKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepLogicalSwitchRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef; @@ -43,7 +46,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hw import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacsKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.Switches; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.SwitchesKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes.VlanBindings; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; @@ -84,7 +86,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { private static InstanceIdentifier createInstanceIdentifier(NodeId nodeId) { return InstanceIdentifier.create(NetworkTopology.class).child(Topology.class, - new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID)).child(Node.class, new NodeKey(nodeId)); + new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID)).child(Node.class, new NodeKey(nodeId)); } Map opNodes = new HashMap<>(); @@ -100,77 +102,85 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { @Override @Nullable + @SuppressWarnings("illegalcatch") protected Object doExecute() { - List nodes = new ArrayList<>(); - Set networks = new HashSet<>(); + ManagedNewTransactionRunner txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); + try { - if (nodeId == null) { - Optional topologyOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, - LogicalDatastoreType.OPERATIONAL, createHwvtepTopologyInstanceIdentifier()); - if (topologyOptional.isPresent()) { - nodes.addAll(topologyOptional.get().nonnullNode().values()); - } - } else { - Optional nodeOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, - LogicalDatastoreType.OPERATIONAL, createInstanceIdentifier(new NodeId(new Uri(nodeId)))); - if (nodeOptional.isPresent()) { - nodes.add(nodeOptional.get()); + txRunner.callWithNewReadOnlyTransactionAndClose(OPERATIONAL, operTx -> { + List nodes = new ArrayList<>(); + Set networks = new HashSet<>(); + if (nodeId == null) { + Optional topologyOptional = operTx.read(createHwvtepTopologyInstanceIdentifier()).get(); + if (topologyOptional.isPresent()) { + nodes = new ArrayList<>(topologyOptional.get().getNode().values()); + } + } else { + Optional nodeOptional = operTx + .read(createInstanceIdentifier(new NodeId(new Uri(nodeId)))).get(); + if (nodeOptional.isPresent()) { + nodes.add(nodeOptional.get()); + } } - } - if (elanName == null) { - //get all elan instance - //get all device node id - //print result - Optional elanInstancesOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, + if (elanName == null) { + //get all elan instance + //get all device node id + //print result + Optional elanInstancesOptional = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.builder(ElanInstances.class).build()); - if (elanInstancesOptional.isPresent()) { - Map elans = elanInstancesOptional.get().nonnullElanInstance(); - if (elans != null) { - for (ElanInstance elan : elans.values()) { - networks.add(elan.getElanInstanceName()); + if (elanInstancesOptional.isPresent()) { + List elans = new ArrayList<>(elanInstancesOptional.get() + .getElanInstance().values()); + if (elans != null) { + for (ElanInstance elan : elans) { + networks.add(elan.getElanInstanceName()); + } } } + } else { + networks.add(elanName); } - } else { - networks.add(elanName); - } - if (nodes != null) { - for (Node node : nodes) { - if (node.getNodeId().getValue().contains("physicalswitch")) { - continue; - } - Node hwvtepConfigNode = - HwvtepUtils.getHwVtepNode(dataBroker, LogicalDatastoreType.CONFIGURATION, node.getNodeId()); - Node hwvtepOpPsNode = getPSnode(node, LogicalDatastoreType.OPERATIONAL); - Node hwvtepConfigPsNode = null; - if (hwvtepOpPsNode != null) { - hwvtepConfigPsNode = HwvtepUtils.getHwVtepNode(dataBroker, LogicalDatastoreType.CONFIGURATION, - hwvtepOpPsNode.getNodeId()); - opPSNodes.put(node.getNodeId(), hwvtepOpPsNode); - } - opNodes.put(node.getNodeId(), node); - configNodes.put(node.getNodeId(), hwvtepConfigNode); - - if (hwvtepConfigPsNode != null) { - configPSNodes.put(node.getNodeId(), hwvtepConfigPsNode); - } - } - } - if (!networks.isEmpty()) { - for (String network : networks) { - session.getConsole().println("Network info for " + network); + if (nodes != null) { for (Node node : nodes) { if (node.getNodeId().getValue().contains("physicalswitch")) { continue; } - session.getConsole().println("Printing for node " + node.getNodeId().getValue()); - process(node.getNodeId(), network); + Node hwvtepConfigNode = + HwvtepUtils.getHwVtepNode(dataBroker, + LogicalDatastoreType.CONFIGURATION, node.getNodeId()); + Node hwvtepOpPsNode = getPSnode(node, LogicalDatastoreType.OPERATIONAL); + Node hwvtepConfigPsNode = null; + if (hwvtepOpPsNode != null) { + hwvtepConfigPsNode = HwvtepUtils.getHwVtepNode(dataBroker, + LogicalDatastoreType.CONFIGURATION, hwvtepOpPsNode.getNodeId()); + opPSNodes.put(node.getNodeId(), hwvtepOpPsNode); + } + opNodes.put(node.getNodeId(), node); + configNodes.put(node.getNodeId(), hwvtepConfigNode); + + if (hwvtepConfigPsNode != null) { + configPSNodes.put(node.getNodeId(), hwvtepConfigPsNode); + } } } - } - } catch (ExecutionException | InterruptedException e) { + if (!networks.isEmpty()) { + for (String network : networks) { + session.getConsole().println("Network info for " + network); + if (nodes != null) { + for (Node node : nodes) { + if (node.getNodeId().getValue().contains("physicalswitch")) { + continue; + } + session.getConsole().println("Printing for node " + node.getNodeId().getValue()); + process(node.getNodeId(), network); + } + } + } + } + }); + } catch (Exception e) { session.getConsole().println("Failed with error " + e.getMessage()); } return null; @@ -212,7 +222,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return; } Map remoteUcastMacs = - hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullRemoteUcastMacs(); + hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullRemoteUcastMacs(); if (remoteUcastMacs == null || remoteUcastMacs.isEmpty()) { return; } @@ -236,7 +246,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return; } Map localUcastMacs = - hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullLocalUcastMacs(); + hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullLocalUcastMacs(); if (localUcastMacs == null || localUcastMacs.isEmpty()) { return; } @@ -260,7 +270,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return; } Map localMcastMacs = - hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullLocalMcastMacs(); + hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullLocalMcastMacs(); if (localMcastMacs == null || localMcastMacs.isEmpty()) { return; } @@ -287,7 +297,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return; } Map remoteMcastMacs = - hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullRemoteMcastMacs(); + hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).nonnullRemoteMcastMacs(); if (remoteMcastMacs == null || remoteMcastMacs.isEmpty()) { return; } @@ -319,11 +329,11 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { } for (TerminationPoint terminationPoint : terminationPoints.values()) { HwvtepPhysicalPortAugmentation aug = - terminationPoint.augmentation(HwvtepPhysicalPortAugmentation.class); + terminationPoint.augmentation(HwvtepPhysicalPortAugmentation.class); if (aug == null || aug.getVlanBindings() == null) { continue; } - for (VlanBindings vlanBindings : aug.getVlanBindings().values()) { + for (VlanBindings vlanBindings : aug.nonnullVlanBindings().values()) { String lsFromremoteMac = getLogicalSwitchValue(vlanBindings.getLogicalSwitchRef()); if (elanName.equals(lsFromremoteMac)) { session.getConsole().println(terminationPoint.getTpId().getValue() @@ -331,8 +341,6 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { } } } - - } @Nullable @@ -341,7 +349,7 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return null; } return locatorRef.getValue() - .firstKeyOf(TerminationPoint.class).getTpId().getValue(); + .firstKeyOf(TerminationPoint.class).getTpId().getValue(); } @Nullable @@ -350,18 +358,18 @@ public class NetworkL2gwDeviceInfoCli extends OsgiCommandSupport { return null; } return logicalSwitchRef.getValue() - .firstKeyOf(LogicalSwitches.class).getHwvtepNodeName().getValue(); + .firstKeyOf(LogicalSwitches.class).getHwvtepNodeName().getValue(); } @Nullable - Node getPSnode(Node hwvtepNode, LogicalDatastoreType datastoreType) throws ExecutionException, - InterruptedException { - if (hwvtepNode.augmentation(HwvtepGlobalAugmentation.class) != null) { - Map switches = hwvtepNode.augmentation(HwvtepGlobalAugmentation.class) - .nonnullSwitches(); - if (switches != null) { - return HwvtepUtils.getHwVtepNode(dataBroker, datastoreType, - switches.values().iterator().next().getSwitchRef().getValue().firstKeyOf(Node.class).getNodeId()); + Node getPSnode(Node hwvtepNode, LogicalDatastoreType datastoreType) + throws ExecutionException, InterruptedException { + if (hwvtepNode.augmentation(HwvtepGlobalAugmentation.class) != null + && hwvtepNode.augmentation(HwvtepGlobalAugmentation.class).getSwitches() != null) { + for (Switches switches : hwvtepNode.augmentation(HwvtepGlobalAugmentation.class) + .nonnullSwitches().values()) { + NodeId psNodeId = switches.getSwitchRef().getValue().firstKeyOf(Node.class).getNodeId(); + return HwvtepUtils.getHwVtepNode(dataBroker, datastoreType, psNodeId); } } return null;