X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Futil%2FInventoryDataServiceUtil.java;h=e4cb1c0c85afb33e433384a4f49f9385acad6e2b;hb=11c57c751eb8c0be5af54cb2a4361f262aef32cd;hp=907152686a2dd053be5d010cc177dae95ff43603;hpb=1386627cfa2ac840c46bb7f01118b62a6aefe8a2;p=openflowplugin.git diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/InventoryDataServiceUtil.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/InventoryDataServiceUtil.java index 907152686a..e4cb1c0c85 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/InventoryDataServiceUtil.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/InventoryDataServiceUtil.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.concurrent.ExecutionException; import org.apache.commons.lang3.StringUtils; import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; @@ -31,24 +31,25 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class InventoryDataServiceUtil { + public static final String OF_URI_PREFIX = "openflow:"; private static final Logger LOG = LoggerFactory.getLogger(InventoryDataServiceUtil.class); - public final static String OF_URI_PREFIX = "openflow:"; /* * Get an InstanceIdentifier for the Nodes class that is the root of the * inventory tree We use this alot, so its worth keeping around */ - private static InstanceIdentifier nodesIdentifier = InstanceIdentifier.create(Nodes.class); + private static final InstanceIdentifier NODES_IDENTIFIER = InstanceIdentifier.create(Nodes.class); public static Nodes checkForNodes() { Nodes nodes = null; LOG.error("Before Nodes - nodes: " + nodes); try { - nodes = getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), nodesIdentifier); + nodes = getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), NODES_IDENTIFIER); } catch (Exception e) { LOG.error( "Caught exception from OFSessionUtil.getSessionManager().getDataBroker().newReadWriteTransaction()", @@ -59,78 +60,78 @@ public abstract class InventoryDataServiceUtil { } public static List readAllNodes() { - Nodes nodes = getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), nodesIdentifier); + Nodes nodes = getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), NODES_IDENTIFIER); return nodes.getNode(); } - public static Node readNode(InstanceIdentifier instance) { - return (Node) getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), instance); + public static Node readNode(final InstanceIdentifier instance) { + return getDataObject(OFSessionUtil.getSessionManager().getDataBroker().newReadOnlyTransaction(), instance); } - public static void putNodeConnector(InstanceIdentifier instance, NodeConnector nodeConnector) { - ReadWriteTransaction transaction = OFSessionUtil.getSessionManager().getDataBroker().newReadWriteTransaction(); + public static void putNodeConnector(final InstanceIdentifier instance, final NodeConnector nodeConnector) { + WriteTransaction transaction = OFSessionUtil.getSessionManager().getDataBroker().newWriteOnlyTransaction(); InstanceIdentifier nodeConnectorID = instance.child(NodeConnector.class, nodeConnector.getKey()); transaction.merge(LogicalDatastoreType.OPERATIONAL, nodeConnectorID, nodeConnector); transaction.submit(); } - public static void putNodeConnector(NodeKey nodeKey, NodeConnector nodeConnector) { + public static void putNodeConnector(final NodeKey nodeKey, final NodeConnector nodeConnector) { InstanceIdentifier instance = nodeKeyToInstanceIdentifier(nodeKey); putNodeConnector(instance, nodeConnector); } - public static void putNodeConnector(NodeId nodeId, NodeConnector nodeConnector) { + public static void putNodeConnector(final NodeId nodeId, final NodeConnector nodeConnector) { putNodeConnector(new NodeKey(nodeId), nodeConnector); } - public static InstanceIdentifier identifierFromDatapathId(BigInteger datapathId) { + public static InstanceIdentifier identifierFromDatapathId(final BigInteger datapathId) { NodeKey nodeKey = nodeKeyFromDatapathId(datapathId); - return InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).build(); + return NODES_IDENTIFIER.child(Node.class, nodeKey); } - public static NodeKey nodeKeyFromDatapathId(BigInteger datapathId) { + public static NodeKey nodeKeyFromDatapathId(final BigInteger datapathId) { return new NodeKey(nodeIdFromDatapathId(datapathId)); } - public static NodeUpdatedBuilder nodeUpdatedBuilderFromDataPathId(BigInteger datapathId) { + public static NodeUpdatedBuilder nodeUpdatedBuilderFromDataPathId(final BigInteger datapathId) { NodeUpdatedBuilder builder = new NodeUpdatedBuilder(); builder.setId(nodeIdFromDatapathId(datapathId)); builder.setNodeRef(nodeRefFromNodeKey(new NodeKey(builder.getId()))); return builder; } - public static NodeId nodeIdFromDatapathId(BigInteger datapathId) { + public static NodeId nodeIdFromDatapathId(final BigInteger datapathId) { // FIXME: Convert to textual representation of datapathID String current = datapathId.toString(); return new NodeId(OF_URI_PREFIX + current); } - public static BigInteger dataPathIdFromNodeId(NodeId nodeId) { + public static BigInteger dataPathIdFromNodeId(final NodeId nodeId) { String dpids = nodeId.getValue().replace(OF_URI_PREFIX, ""); BigInteger dpid = new BigInteger(dpids); return dpid; } - public static NodeRef nodeRefFromNodeKey(NodeKey nodeKey) { + public static NodeRef nodeRefFromNodeKey(final NodeKey nodeKey) { return new NodeRef(nodeKeyToInstanceIdentifier(nodeKey)); } - public static InstanceIdentifier nodeKeyToInstanceIdentifier(NodeKey nodeKey) { - return InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).build(); + public static InstanceIdentifier nodeKeyToInstanceIdentifier(final NodeKey nodeKey) { + return NODES_IDENTIFIER.child(Node.class, nodeKey); } - public static NodeConnectorId nodeConnectorIdfromDatapathPortNo(BigInteger datapathid, Long portNo, - OpenflowVersion ofVersion) { + public static NodeConnectorId nodeConnectorIdfromDatapathPortNo(final BigInteger datapathid, final Long portNo, + final OpenflowVersion ofVersion) { String logicalName = OpenflowPortsUtil.getPortLogicalName(ofVersion, portNo); return new NodeConnectorId(OF_URI_PREFIX + datapathid + ":" + (logicalName == null ? portNo : logicalName)); } - public static Long portNumberfromNodeConnectorId(OpenflowVersion ofVersion, NodeConnectorId ncId) { + public static Long portNumberfromNodeConnectorId(final OpenflowVersion ofVersion, final NodeConnectorId ncId) { return portNumberfromNodeConnectorId(ofVersion, ncId.getValue()); } - public static String portNoStringfromNodeConnectorID(String ncID) { + public static String portNoStringfromNodeConnectorID(final String ncID) { String[] split = ncID.split(":"); // It can happen that token length will be just 1 i.e 2 or CONTROLLER @@ -140,51 +141,61 @@ public abstract class InventoryDataServiceUtil { return split[split.length - 1]; } - public static Long portNumberfromNodeConnectorId(OpenflowVersion ofVersion, String ncId) { + public static Long portNumberfromNodeConnectorId(final OpenflowVersion ofVersion, final String ncId) { String portNoString = portNoStringfromNodeConnectorID(ncId); Long portNo = OpenflowPortsUtil.getPortFromLogicalName(ofVersion, portNoString); return portNo; } - public static NodeConnectorRef nodeConnectorRefFromDatapathIdPortno(BigInteger datapathId, Long portNo, OpenflowVersion ofVersion) { + public static NodeConnectorRef nodeConnectorRefFromDatapathIdPortno(final BigInteger datapathId, final Long portNo, final OpenflowVersion ofVersion) { return new NodeConnectorRef(nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion)); } + public static NodeConnectorRef nodeConnectorRefFromDatapathIdPortno(final BigInteger datapathId, final Long portNo, + final OpenflowVersion ofVersion, + final KeyedInstanceIdentifier nodePath) { + return new NodeConnectorRef(nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion, nodePath)); + } + public static InstanceIdentifier nodeConnectorInstanceIdentifierFromDatapathIdPortno( - BigInteger datapathId, Long portNo, OpenflowVersion ofVersion) { + final BigInteger datapathId, final Long portNo, final OpenflowVersion ofVersion) { NodeId nodeId = nodeIdFromDatapathId(datapathId); + KeyedInstanceIdentifier nodePath = NODES_IDENTIFIER.child(Node.class, new NodeKey(nodeId)); + return nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion, nodePath); + } + + public static InstanceIdentifier nodeConnectorInstanceIdentifierFromDatapathIdPortno( + final BigInteger datapathId, final Long portNo, final OpenflowVersion ofVersion, final KeyedInstanceIdentifier nodePath) { NodeConnectorId nodeConnectorId = nodeConnectorIdfromDatapathPortNo(datapathId, portNo, ofVersion); - return InstanceIdentifier.builder(Nodes.class) // - .child(Node.class, new NodeKey(nodeId)) // - .child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)).build(); + return nodePath.child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)); } - public static NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilderFromDatapathIdPortNo(BigInteger datapathId, - Long portNo, OpenflowVersion ofVersion) { + public static NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilderFromDatapathIdPortNo(final BigInteger datapathId, + final Long portNo, final OpenflowVersion ofVersion) { NodeConnectorUpdatedBuilder builder = new NodeConnectorUpdatedBuilder(); builder.setId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathId, portNo, ofVersion)); builder.setNodeConnectorRef(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId, portNo, ofVersion)); return builder; } - public static NodeConnectorBuilder nodeConnectorBuilderFromDatapathIdPortNo(BigInteger datapathId, - Long portNo, OpenflowVersion ofVersion) { + public static NodeConnectorBuilder nodeConnectorBuilderFromDatapathIdPortNo(final BigInteger datapathId, + final Long portNo, final OpenflowVersion ofVersion) { NodeConnectorBuilder builder = new NodeConnectorBuilder(); builder.setId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathId, portNo, ofVersion)); return builder; } /** - * @param dataPathId + * @param dataPathId datapath id in big interger value * @return string of size 16, padded with '0' */ - public static String bigIntegerToPaddedHex(BigInteger dataPathId) { + public static String bigIntegerToPaddedHex(final BigInteger dataPathId) { return StringUtils.leftPad(dataPathId.toString(16), 16, "0"); } //TODO : create new module openflowplugin-util, move there this method along with TestProviderTransactionUtil#getDataObject - private static T getDataObject(ReadTransaction readOnlyTransaction, InstanceIdentifier identifier) { + private static T getDataObject(final ReadTransaction readOnlyTransaction, final InstanceIdentifier identifier) { Optional optionalData = null; try { optionalData = readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, identifier).get();