<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
+ <properties>
+ <ovsdb.version>1.2.1-SNAPSHOT</ovsdb.version>
+ </properties>
+
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-topology</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.model</groupId>
+ <artifactId>yang-ext</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>southbound-api</artifactId>
+ <version>${ovsdb.version}</version>
+ </dependency>
</dependencies>
</project>
namespace "urn:opendaylight:params:xml:ns:yang:unimgr";\r
prefix "unimgr";\r
\r
- import ietf-yang-types { prefix yang; revision-date 2013-07-15; }\r
- import ietf-inet-types { prefix inet; revision-date 2010-09-24; }\r
- import network-topology { prefix topo; revision-date 2013-10-21; }\r
+ import ietf-yang-types { prefix "yang"; revision-date 2013-07-15; }\r
+ import ietf-inet-types { prefix "inet"; revision-date 2010-09-24; }\r
+ import network-topology { prefix "topo"; revision-date 2013-10-21; }\r
+ import yang-ext { prefix "ext"; }\r
+ import ovsdb { prefix "ovsdb"; revision-date 2015-01-05;}\r
\r
- revision "2015-06-22" {\r
- description "Initial revision of unimgr model";\r
+ revision "2015-10-12" {\r
+ description "Updated revision of the unimgr model.";\r
+ }\r
+\r
+ typedef ovsdb-node-ref {\r
+ description "A reference to an ovsdb node";\r
+ type ovsdb:ovsdb-node-ref;\r
}\r
\r
grouping service-speed {\r
\r
// represent simplification of MEF Per Uni Attributes\r
grouping uni {\r
- leaf id {\r
- type topo:node-id;\r
- mandatory true;\r
- description "Uniquely identifies the uni";\r
- }\r
- leaf ovsdb-node-id {\r
- type topo:node-id;\r
- mandatory false;\r
- description "Uniquely identifies the uni and ovsdb";\r
+ leaf ovsdb-node-ref {\r
+ type ovsdb-node-ref;\r
+ description "A reference to the ovsdb node.";\r
}\r
leaf physical-medium {\r
type string;\r
\r
// Represents simplification of MEF EVC Per Uni Atrributes\r
grouping evc {\r
- leaf id {\r
- type topo:node-id;\r
- mandatory true;\r
- description "Uniquely identifies the evc";\r
- }\r
list uni-source {\r
key "order";\r
leaf order {\r
type uint8;\r
}\r
leaf uni {\r
- type topo:node-id;\r
+ type instance-identifier;\r
}\r
}\r
list uni-dest {\r
type uint8;\r
}\r
leaf uni {\r
- type topo:node-id;\r
+ type instance-identifier;\r
}\r
}\r
leaf cos-id {\r
}\r
}\r
\r
- container unis {\r
- list uni {\r
- key "id";\r
- uses uni;\r
- }\r
+ augment "/topo:network-topology/topo:topology/topo:node" {\r
+ description "Augmentation for UNI nodes under topology";\r
+ ext:augment-identifier "uni-augmentation";\r
+ uses uni;\r
}\r
\r
- container evcs {\r
- list evc {\r
- key "id";\r
- uses evc;\r
- }\r
+ augment "/topo:network-topology/topo:topology/topo:link" {\r
+ description "Augmentation for EVC Link under topology";\r
+ ext:augment-identifier "evc-augmentation";\r
+ uses evc;\r
}\r
+\r
}\r
import org.apache.karaf.shell.console.OsgiCommandSupport;
import org.opendaylight.unimgr.api.IUnimgrConsoleProvider;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.service.speed.speed.Speed100MBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.service.speed.speed.Speed10GBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.service.speed.speed.Speed10MBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.service.speed.speed.Speed1GBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.uni.Speed;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.UniBuilder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.service.speed.speed.Speed100MBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.service.speed.speed.Speed10GBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.service.speed.speed.Speed10MBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.service.speed.speed.Speed1GBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.uni.Speed;
@Command(name = "add",
scope = "uni",
Object speedObject = null;
if (speed.equals("10M")) {
- System.out.println("there");
speedObject = new Speed10MBuilder().build();
}
if (speed.equals("100M")) {
@Override
protected Object doExecute() throws Exception {
- Uni uni = new UniBuilder()
+ Uni uni = new UniAugmentationBuilder()
.setMacAddress(new MacAddress(macAddress))
.setMacLayer(macLayer)
.setMode(mode)
.setPhysicalMedium(physicalMedium)
.setSpeed((Speed) getSpeed())
.setType(type)
- .setId(new NodeId(uniId))
.build();
if (provider.addUni(uni)) {
- return String.format("Uni created (id: %s)", uni.getId());
+ return String.format("Uni created {}", uni.getIpAddress().getIpv4Address());
} else {
return new String("Error creating new uni");
}
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
import org.opendaylight.unimgr.api.IUnimgrConsoleProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
@Command(name = "list", scope = "uni", description = "Lists all uni in the controller.")
public class UniListShellCommand extends OsgiCommandSupport {
StringBuilder sb = new StringBuilder();
Integer counter = 1;
for (Uni uni : listUnis) {
- sb.append(String.format("#%d - id: %s\n", counter, uni.getId()));
+ // TODO
+ sb.append(String.format("#%d - id: %s\n", counter, uni.getIpAddress().getIpv4Address()));
counter++;
}
return sb.toString();
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.console.OsgiCommandSupport;
import org.opendaylight.unimgr.api.IUnimgrConsoleProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
@Command(name = "show", scope = "uni", description = "Shows detailed information about an uni.")
public class UniShowShellCommand extends OsgiCommandSupport {
Uni uni = provider.getUni(id);
if (uni != null) {
- sb.append(String.format("Uni Id: <%s>\n", uni.getId()));
+ //sb.append(String.format("Uni Id: <%s>\n", uni.getUniId()));
sb.append(String.format("Physical medium: <%s>\n", uni.getPhysicalMedium()));
sb.append(String.format("Mac address: <%s>\n", uni.getMacAddress()));
sb.append(String.format("Speed: " + uni.getSpeed() + "\n"));
<repository>mvn:org.opendaylight.ovsdb/southbound-features/{{VERSION}}/xml/features</repository>
<repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
- <feature name='odl-unimgr-api' version='${project.version}' description='OpenDaylight :: VCPE :: api'>
+ <feature name='odl-unimgr-api' version='${project.version}' description='OpenDaylight :: UniMgr :: api'>
<feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
+ <feature version='${ovsdb.version}'>odl-ovsdb-southbound-api</feature>
<bundle>mvn:org.opendaylight.unimgr/unimgr-api/${project.version}</bundle>
</feature>
- <feature name='odl-unimgr' version='${project.version}' description='OpenDaylight :: VCPE'>
+ <feature name='odl-unimgr' version='${project.version}' description='OpenDaylight :: UniMgr'>
<feature version='${mdsal.version}'>odl-mdsal-broker</feature>
<feature version='${ovsdb.version}'>odl-ovsdb-southbound-impl</feature>
<feature version='${project.version}'>odl-unimgr-api</feature>
<configfile finalname="${configfile.directory}/unimgr.xml">mvn:org.opendaylight.unimgr/unimgr-impl/{{VERSION}}/xml/config</configfile>
</feature>
- <feature name='odl-unimgr-console' version='${project.version}' description='OpenDaylight :: VCPE :: CLI'>
+ <feature name='odl-unimgr-console' version='${project.version}' description='OpenDaylight :: UniMgr :: CLI'>
<feature version="${project.version}">odl-unimgr</feature>
<bundle>mvn:org.opendaylight.unimgr/unimgr-cli/{{VERSION}}</bundle>
</feature>
- <feature name='odl-unimgr-rest' version='${project.version}' description='OpenDaylight :: VCPE :: REST'>
+ <feature name='odl-unimgr-rest' version='${project.version}' description='OpenDaylight :: UniMgr :: REST'>
<feature version="${project.version}">odl-unimgr</feature>
<feature version="${restconf.version}">odl-restconf</feature>
</feature>
- <feature name='odl-unimgr-ui' version='${project.version}' description='OpenDaylight :: VCPE :: UI'>
+ <feature name='odl-unimgr-ui' version='${project.version}' description='OpenDaylight :: UniMgr :: UI'>
<feature version="${project.version}">odl-unimgr-rest</feature>
<feature version="${project.version}">odl-unimgr-console</feature>
<feature version="${restconf.version}">odl-mdsal-apidocs</feature>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.model</groupId>
+ <artifactId>ietf-yang-types-20130715</artifactId>
+ </dependency>
</dependencies>
<build>
import java.util.List;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.evcs.Evc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Evc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
public interface IUnimgrConsoleProvider extends AutoCloseable {
import java.util.Map.Entry;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.unimgr.impl.UnimgrConstants;
-import org.opendaylight.unimgr.impl.UnimgrMapper;
-import org.opendaylight.unimgr.impl.UnimgrUtils;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.evcs.Evc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
-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.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.EvcAugmentation;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Optional;
-
public class EvcCreateCommand extends AbstractCreateCommand {
private static final Logger LOG = LoggerFactory.getLogger(EvcCreateCommand.class);
public void execute() {
for (Entry<InstanceIdentifier<?>, DataObject> created : changes
.entrySet()) {
- if (created.getValue() != null && created.getValue() instanceof Evc) {
- Evc evc = (Evc) created.getValue();
- LOG.info("New EVC created with id {}.", evc.getId());
- if (evc.getUniDest() == null || evc.getUniDest().isEmpty()) {
- LOG.error("Destination UNI cannot be null.");
- break;
- }
- if (evc.getUniSource() == null || evc.getUniSource().isEmpty()) {
- LOG.error("Source UNI cannot be null.");
- break;
- }
- // Get the destination UNI
- NodeId destUniNodeID = evc.getUniDest().get(0).getUni();
- InstanceIdentifier<Uni> destinationNodeIid = UnimgrMapper.getUniIid(destUniNodeID);
- Optional<Uni> optionalDestination = UnimgrUtils.readUniNode(dataBroker, destinationNodeIid);
- Uni destinationUni = optionalDestination.get();
- NodeId ovsdbDestinationNodeId = UnimgrMapper.createNodeId(destinationUni.getIpAddress());
- // Get the source UNI
- NodeId sourceUniNodeID = evc.getUniSource().get(0).getUni();
- InstanceIdentifier<Uni> sourceNodeIid = UnimgrMapper.getUniIid(sourceUniNodeID);
- Optional<Uni> optionalSource = UnimgrUtils.readUniNode(dataBroker, sourceNodeIid);
- Uni sourceUni = optionalSource.get();
- NodeId ovsdbSourceNodeId = UnimgrMapper.createNodeId(sourceUni.getIpAddress());
-
- // Set source
- Node sourceBr1 = UnimgrUtils.readNode(
- dataBroker,
- UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbSourceNodeId,
- UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
- UnimgrUtils.createTerminationPointNode(dataBroker,
- destinationUni, sourceBr1,
- UnimgrConstants.DEFAULT_BRIDGE_NAME,
- UnimgrConstants.DEFAULT_INTERNAL_IFACE, null);
- Node sourceBr2 = UnimgrUtils.readNode(
- dataBroker,
- UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbSourceNodeId,
- UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
- UnimgrUtils.createGreTunnel(dataBroker, sourceUni,
- destinationUni, sourceBr2,
- UnimgrConstants.DEFAULT_BRIDGE_NAME, "gre0");
-
- // Set destination
- Node destinationBr1 = UnimgrUtils.readNode(
- dataBroker,
- UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbDestinationNodeId,
- UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
- UnimgrUtils.createTerminationPointNode(dataBroker,
- destinationUni, destinationBr1,
- UnimgrConstants.DEFAULT_BRIDGE_NAME,
- UnimgrConstants.DEFAULT_INTERNAL_IFACE, null);
- Node destinationBr2 = UnimgrUtils.readNode(
- dataBroker,
- UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbDestinationNodeId,
- UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
- UnimgrUtils.createGreTunnel(dataBroker, destinationUni,
- sourceUni, destinationBr2,
- UnimgrConstants.DEFAULT_BRIDGE_NAME, "gre0");
+ if (created.getValue() != null && created.getValue() instanceof EvcAugmentation) {
+// EvcAugmentation evc = (EvcAugmentation) created.getValue();
+// LOG.info("New EVC created with id {}.", evc.getEvcId());
+// if (evc.getUniDest() == null || evc.getUniDest().isEmpty()) {
+// LOG.error("Destination UNI cannot be null.");
+// break;
+// }
+// if (evc.getUniSource() == null || evc.getUniSource().isEmpty()) {
+// LOG.error("Source UNI cannot be null.");
+// break;
+// }
+// // Get the destination UNI
+// InstanceIdentifier<Node> destinationNodeIid = (InstanceIdentifier<Node>) evc.getUniDest().iterator()
+// .next().getUni();
+// Uni destinationUni = UnimgrUtils.readNode(dataBroker, destinationNodeIid).get()
+// .getAugmentation(UniAugmentation.class);
+// NodeId ovsdbDestinationNodeId = UnimgrMapper.createNodeId(destinationUni.getIpAddress());
+// // Get the source UNI
+// InstanceIdentifier<Node> sourceIid = (InstanceIdentifier<Node>) evc.getUniSource().iterator().next()
+// .getUni();
+// Uni sourceUni = UnimgrUtils.readNode(dataBroker, sourceIid).get()
+// .getAugmentation(UniAugmentation.class);
+// NodeId ovsdbSourceNodeId = UnimgrMapper.createNodeId(sourceUni.getIpAddress());
+//
+// // Set source
+// Node sourceBr1 = UnimgrUtils.readNode(
+// dataBroker,
+// UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbSourceNodeId,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
+// UnimgrUtils.createTerminationPointNode(dataBroker,
+// destinationUni, sourceBr1,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME,
+// UnimgrConstants.DEFAULT_INTERNAL_IFACE, null);
+// Node sourceBr2 = UnimgrUtils.readNode(
+// dataBroker,
+// UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbSourceNodeId,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
+// UnimgrUtils.createGreTunnel(dataBroker, sourceUni,
+// destinationUni, sourceBr2,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME, "gre0");
+//
+// // Set destination
+// Node destinationBr1 = UnimgrUtils.readNode(
+// dataBroker,
+// UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbDestinationNodeId,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
+// UnimgrUtils.createTerminationPointNode(dataBroker,
+// destinationUni, destinationBr1,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME,
+// UnimgrConstants.DEFAULT_INTERNAL_IFACE, null);
+// Node destinationBr2 = UnimgrUtils.readNode(
+// dataBroker,
+// UnimgrMapper.getOvsdbBridgeNodeIID(ovsdbDestinationNodeId,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME)).get();
+// UnimgrUtils.createGreTunnel(dataBroker, destinationUni,
+// sourceUni, destinationBr2,
+// UnimgrConstants.DEFAULT_BRIDGE_NAME, "gre0");
}
}
}
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.unimgr.impl.UnimgrUtils;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Evc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Evc;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
for (Entry<InstanceIdentifier<Evc>, Evc> evc: originalEvcs.entrySet()) {
if (evc.getKey().equals(type)) {
Evc data = evc.getValue();
- LOG.info("Removed EVC {}", data.getId());
+ LOG.info("Removed EVC {}", data.getUniSource());
}
}
}
*/
package org.opendaylight.unimgr.command;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.opendaylight.unimgr.impl.UnimgrMapper;
import org.opendaylight.unimgr.impl.UnimgrUtils;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Unis;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
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.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
@Override
public void execute() {
for (Entry<InstanceIdentifier<?>, DataObject> created : changes.entrySet()) {
- if (created.getValue() != null && created.getValue() instanceof Uni) {
- Uni uni = (Uni) created.getValue();
- LOG.info("New UNI created with id {}.", uni.getId());
+ if (created.getValue() != null && created.getValue() instanceof UniAugmentation) {
+ UniAugmentation uni = (UniAugmentation) created.getValue();
+ InstanceIdentifier<?> uniKey = created.getKey();
+ LOG.info("New UNI created {}.", uni.getIpAddress().getIpv4Address());
/* We assume that when the user specifies the
- * ovsdb-node-id that the node already exists in
+ * ovsdb-node-ref that the node already exists in
* the controller and that the OVS instance is in
* active mode.
*
* in passive mode.
*
* Active mode (TCP): the UUID is in format ovsdb://UUID
- * Passwove mode (PTCP): the UUID is in format ovsdb://IP:6640
+ * Passive mode (PTCP): the UUID is in format ovsdb://IP:6640
*
*/
- NodeId ovsdbNodeId = uni.getOvsdbNodeId();
- if (ovsdbNodeId == null || ovsdbNodeId.getValue().isEmpty()) {
+ OvsdbNodeRef ovsdbNodeRef = uni.getOvsdbNodeRef();
+ if (ovsdbNodeRef != null || ovsdbNodeRef.getValue() != null) {
+ Optional<Node> optionalNode = UnimgrUtils.readNode(dataBroker, ovsdbNodeRef.getValue());
+ if (optionalNode.isPresent()) {
+ Node ovsdbNode = optionalNode.get();
+ UnimgrUtils.createBridgeNode(dataBroker,
+ ovsdbNode, uni,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME);
+ } else {
+ LOG.info("Invalid OVSDB node instance identifier specified, "
+ + "attempting to retrieve the node.");
+ Node ovsdbNode = UnimgrUtils.findOvsdbNode(dataBroker, uni);
+ if (ovsdbNode != null) {
+ LOG.info("Retrieved the OVSDB node {}", ovsdbNode.getNodeId());
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.CONFIGURATION,
+ uniKey,
+ uni,
+ ovsdbNode,
+ dataBroker);
+ UnimgrUtils.createBridgeNode(dataBroker,
+ ovsdbNode, uni,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME);
+ } else {
+ ovsdbNode = UnimgrUtils.createOvsdbNode(dataBroker, uni);
+ LOG.info("Could not retrieve the OVSDB node,"
+ + "created a new one: {}", ovsdbNode.getNodeId());
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.CONFIGURATION,
+ uniKey,
+ uni,
+ ovsdbNode,
+ dataBroker);
+ UnimgrUtils.createBridgeNode(dataBroker,
+ ovsdbNode,
+ uni,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME);
+ }
+ }
+ } else {
// We assume the ovs is in passive mode
- ovsdbNodeId = UnimgrMapper.createNodeId(uni.getIpAddress());
- }
- // We retrieve the node from the store
- Optional<Node> node = UnimgrUtils.readNode(dataBroker, UnimgrMapper.getOvsdbNodeIID(ovsdbNodeId));
- if (!node.isPresent()) {
- UnimgrUtils.createOvsdbNode(dataBroker, ovsdbNodeId, uni);
+ // Check if the ovsdb node exist
+ Node ovsdbNode = UnimgrUtils.findOvsdbNode(dataBroker, uni);
+ if (ovsdbNode != null) {
+ LOG.info("Retrieved the OVSDB node");
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.CONFIGURATION,
+ uniKey,
+ uni,
+ ovsdbNode,
+ dataBroker);
+ UnimgrUtils.createBridgeNode(dataBroker,
+ ovsdbNode,
+ uni,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME);
+ } else {
+ ovsdbNode = UnimgrUtils.createOvsdbNode(dataBroker, uni);
+ LOG.info("Could not retrieve the OVSDB node,"
+ + "created a new one: {}", ovsdbNode.getNodeId());
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.CONFIGURATION,
+ uniKey,
+ uni,
+ ovsdbNode,
+ dataBroker);
+ UnimgrUtils.createBridgeNode(dataBroker,
+ ovsdbNode,
+ uni,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME);
+ }
}
}
if (created.getValue() != null && created.getValue() instanceof OvsdbNodeAugmentation) {
OvsdbNodeAugmentation ovsdbNodeAugmentation = (OvsdbNodeAugmentation) created
.getValue();
+ InstanceIdentifier<Node> ovsdbIid = created.getKey().firstIdentifierOf(Node.class);
if (ovsdbNodeAugmentation != null) {
LOG.info("Received an OVSDB node create {}",
ovsdbNodeAugmentation.getConnectionInfo()
.getRemoteIp().getIpv4Address().getValue());
- Unis unis = UnimgrUtils.readUnisFromStore(dataBroker, LogicalDatastoreType.CONFIGURATION);
- if (unis != null && unis.getUni() != null) {
+ List<Node> uniNodes = UnimgrUtils.getUniNodes(dataBroker);
+ if (uniNodes != null && !uniNodes.isEmpty()) {
// This will not scale up very well when the UNI quantity gets to higher numbers.
- for (Uni uni: unis.getUni()) {
- if (uni.getOvsdbNodeId() != null && uni.getOvsdbNodeId().getValue() != null) {
+ for (Node node: uniNodes) {
+ UniAugmentation uniAugmentation = node.getAugmentation(UniAugmentation.class);
+ if (uniAugmentation.getOvsdbNodeRef() != null
+ && uniAugmentation.getOvsdbNodeRef().getValue() != null) {
// The OVS instance is in tcp mode.
- NodeKey key = created.getKey().firstKeyOf(Node.class, NodeKey.class);
- if (uni.getOvsdbNodeId().equals(key.getNodeId())) {
-
- UnimgrUtils.createBridgeNode(dataBroker,
- uni.getOvsdbNodeId(), uni,
+ InstanceIdentifier<Node> ovsdbNodeRefIid =
+ uniAugmentation.getOvsdbNodeRef().getValue().firstIdentifierOf(Node.class);
+ if (ovsdbNodeRefIid.equals(ovsdbIid)) {
+ UnimgrUtils.createBridgeNode(dataBroker, node, uniAugmentation,
UnimgrConstants.DEFAULT_BRIDGE_NAME);
-
- UnimgrUtils.copyUniToDataStore(dataBroker, uni, LogicalDatastoreType.OPERATIONAL);
+ Optional<Node> optionalOvsdbNode = UnimgrUtils.readNode(dataBroker, ovsdbIid);
+ if (optionalOvsdbNode.isPresent()) {
+ Node ovsdbNode = optionalOvsdbNode.get();
+ InstanceIdentifier<Node> uniIid = UnimgrMapper.createUniIid(dataBroker,
+ uniAugmentation.getIpAddress());
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.OPERATIONAL, uniIid,
+ uniAugmentation, ovsdbNode, dataBroker);
+ }
}
// The OVS instance is in ptcp mode.
- } else if (ovsdbNodeAugmentation
- .getConnectionInfo()
- .getRemoteIp()
- .equals(uni.getIpAddress())) {
- InstanceIdentifier<Node> ovsdbNodeIid = UnimgrMapper
- .getOvsdbNodeIID(uni.getIpAddress());
+ } else if (ovsdbNodeAugmentation.getConnectionInfo().getRemoteIp()
+ .equals(uniAugmentation.getIpAddress())) {
+ InstanceIdentifier<Node> ovsdbNodeIid = uniAugmentation.getOvsdbNodeRef().getValue()
+ .firstIdentifierOf(Node.class);
Optional<Node> ovsdbNode = UnimgrUtils.readNode(dataBroker, ovsdbNodeIid);
- NodeId ovsdbNodeId;
if (ovsdbNode.isPresent()) {
- ovsdbNodeId = ovsdbNode.get().getNodeId();
- UnimgrUtils.createBridgeNode(dataBroker,
- ovsdbNodeId, uni,
- UnimgrConstants.DEFAULT_BRIDGE_NAME);
-
- UnimgrUtils.copyUniToDataStore(dataBroker, uni, LogicalDatastoreType.OPERATIONAL);
+ InstanceIdentifier<Node> uniIid = UnimgrMapper.createUniIid(dataBroker,
+ uniAugmentation.getIpAddress());
+ UnimgrUtils.updateUniNode(LogicalDatastoreType.OPERATIONAL, uniIid, uniAugmentation,
+ ovsdbNode.get(), dataBroker);
} else {
LOG.error("Unable to read node with IID {}", ovsdbNodeIid);
}
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.unimgr.impl.UnimgrUtils;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
+++ /dev/null
-/*
- * Copyright (c) 2015 CableLabs and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.unimgr.impl;
-
-import java.util.Map;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.unimgr.api.IUnimgrDataChangeListener;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EvcDataChangeListener implements IUnimgrDataChangeListener {
-
- private static final Logger LOG = LoggerFactory.getLogger(EvcDataChangeListener.class);
-
- private DataBroker dataBroker;
- private ListenerRegistration<DataChangeListener> evcListener = null;
-
- public EvcDataChangeListener(DataBroker dataBroker) {
- this.dataBroker = dataBroker;
- evcListener = dataBroker.registerDataChangeListener(
- LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getEvcsIid(),
- this, DataChangeScope.SUBTREE);
- }
-
- @Override
- public void onDataChanged(
- AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
- create(changes.getCreatedData());
- update(changes.getUpdatedData());
- delete(changes);
- }
-
- @Override
- public void create(Map<InstanceIdentifier<?>, DataObject> changes) {
- }
-
- @Override
- public void update(Map<InstanceIdentifier<?>, DataObject> changes) {
- // TODO Auto-generated method stub
- }
-
- @Override
- public void delete(
- AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
- // TODO Auto-generated method stub
- }
-
- @Override
- public void close() throws Exception {
- if (evcListener != null) {
- evcListener.close();
- }
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 CableLabs and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.unimgr.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.unimgr.api.IUnimgrDataChangeListener;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UniDataChangeListener implements IUnimgrDataChangeListener {
-
- private static final Logger LOG = LoggerFactory.getLogger(UniDataChangeListener.class);
-
- private Map<String, ListenerRegistration<DataChangeListener>> listeners;
- private DataBroker dataBroker;
-
- public UniDataChangeListener(DataBroker dataBroker) {
- this.dataBroker = dataBroker;
- listeners = new HashMap<String, ListenerRegistration<DataChangeListener>>();
- ListenerRegistration<DataChangeListener> uniListener = dataBroker.registerDataChangeListener(
- LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getUnisIid()
- , this, DataChangeScope.SUBTREE);
- // We want to listen for operational store changes on the ovsdb:1 network topology
- // because this is when we know Southbound has successfully connected to the
- // OVS instance.
- ListenerRegistration<DataChangeListener> ovsdbListener = dataBroker.registerDataChangeListener(
- LogicalDatastoreType.OPERATIONAL, UnimgrMapper.getOvsdbTopologyIdentifier()
- , this, DataChangeScope.SUBTREE);
- listeners.put("uni", uniListener);
- listeners.put("ovsdb", ovsdbListener);
-
- }
-
- @Override
- public void onDataChanged(
- AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
- create(changes.getCreatedData());
- update(changes.getUpdatedData());
- delete(changes);
- }
-
- @Override
- public void create(Map<InstanceIdentifier<?>, DataObject> changes) {
- }
-
- @Override
- public void update(Map<InstanceIdentifier<?>, DataObject> changes) {
- }
-
- @Override
- public void delete(
- AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
- // TODO implement delete, verify old data versus new data
- }
-
- @Override
- public void close() throws Exception {
- for (Map.Entry<String, ListenerRegistration<DataChangeListener>> entry : listeners.entrySet()) {
- ListenerRegistration<DataChangeListener> value = entry.getValue();
- if (value != null) {
- value.close();
- }
- }
- }
-}
public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1"));
+ public static final TopologyId UNI_TOPOLOGY_ID = new TopologyId(new Uri("unimgr:uni"));
+
+ public static final TopologyId EVC_TOPOLOGY_ID = new TopologyId(new Uri("unimgr:evc"));
+
public static final String OVSDB_PREFIX = "ovsdb://";
public static final Integer OVSDB_PORT = new Integer(6640);
this.invoker = invoker;
listeners = new HashMap<String, ListenerRegistration<DataChangeListener>>();
ListenerRegistration<DataChangeListener> uniListener = dataBroker.registerDataChangeListener(
- LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getUnisIid()
+ LogicalDatastoreType.CONFIGURATION, UnimgrMapper.createUniIid()
, this, DataChangeScope.SUBTREE);
ListenerRegistration<DataChangeListener> evcListener = dataBroker.registerDataChangeListener(
- LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getEvcIid()
+ LogicalDatastoreType.CONFIGURATION, UnimgrMapper.createEvcIid()
, this, DataChangeScope.SUBTREE);
ListenerRegistration<DataChangeListener> ovsdbListener = dataBroker.registerDataChangeListener(
LogicalDatastoreType.OPERATIONAL, UnimgrMapper.getOvsdbTopologyIdentifier()
@Override
public void close() throws Exception {
- LOG.info("VcpeDataChangeListener stopped.");
+ LOG.info("UnimgrDataChangeListener stopped.");
for (Map.Entry<String, ListenerRegistration<DataChangeListener>> entry : listeners.entrySet()) {
ListenerRegistration<DataChangeListener> value = entry.getValue();
if (value != null) {
*/
package org.opendaylight.unimgr.impl;
+import java.util.List;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Evcs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Unis;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.evcs.Evc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.evcs.EvcKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.UniKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId;
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.TpId;
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.Link;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey;
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.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
private static final Logger LOG = LoggerFactory.getLogger(UnimgrMapper.class);
- public static InstanceIdentifier<Unis> getUnisIid() {
- return InstanceIdentifier.builder(Unis.class)
- .build();
- }
-
- public static InstanceIdentifier<Uni> getUniIid() {
- return InstanceIdentifier.builder(Unis.class)
- .child(Uni.class)
- .build();
- }
-
- public static InstanceIdentifier<Uni> getUniIid(String id) {
- return InstanceIdentifier.builder(Unis.class)
- .child(Uni.class, new UniKey(new NodeId(id)))
- .build();
- }
-
- public static InstanceIdentifier<Uni> getUniIid(UniKey uniKey) {
- return InstanceIdentifier.builder(Unis.class)
- .child(Uni.class, uniKey)
- .build();
- }
-
- public static InstanceIdentifier<Uni> getUniIid(NodeId uniNodeId) {
- return InstanceIdentifier.builder(Unis.class)
- .child(Uni.class, new UniKey(uniNodeId))
- .build();
- }
-
- public static InstanceIdentifier<Uni> getUniIid(Uni uni) {
- return InstanceIdentifier.builder(Unis.class)
- .child(Uni.class, uni.getKey())
- .build();
- }
-
- public static InstanceIdentifier<Evcs> getEvcsIid() {
- return InstanceIdentifier.builder(Evcs.class)
- .build();
- }
-
- public static InstanceIdentifier<Evc> getEvcIid() {
- return InstanceIdentifier.builder(Evcs.class)
- .child(Evc.class)
- .build();
- }
-
- public static InstanceIdentifier<Evc> getEvcIid(String id) {
- return InstanceIdentifier.builder(Evcs.class)
- .child(Evc.class, new EvcKey(new NodeId(id)))
- .build();
- }
-
public static InstanceIdentifier<Node> getOvsdbNodeIID(NodeId nodeId) {
InstanceIdentifier<Node> nodePath = InstanceIdentifier
.create(NetworkTopology.class)
return nodePath;
}
- public static NodeId createNodeId(IpAddress ipAddress) {
- String nodeId = UnimgrConstants.OVSDB_PREFIX
- + ipAddress.getIpv4Address().getValue().toString()
- + ":"
- + UnimgrConstants.OVSDB_PORT;
- return new NodeId(nodeId);
- }
-
public static InstanceIdentifier<Node> getOvsdbTopologyIdentifier() {
InstanceIdentifier<Node> path = InstanceIdentifier
.create(NetworkTopology.class)
LOG.debug("Termination point InstanceIdentifier generated : {}",terminationPointPath);
return terminationPointPath;
}
+
+ public static InstanceIdentifier<Node> createUniIid() {
+ InstanceIdentifier<Node> iid = InstanceIdentifier.create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.UNI_TOPOLOGY_ID))
+ .child(Node.class);
+ return iid;
+ }
+
+ public static InstanceIdentifier<Node> createUniIid(DataBroker dataBroker, IpAddress ip) {
+ List<Node> uniNodes = UnimgrUtils.getUniNodes(dataBroker);
+ for (Node node: uniNodes) {
+ UniAugmentation uniAugmentation = node.getAugmentation(UniAugmentation.class);
+ if (uniAugmentation.getIpAddress().equals(ip)) {
+ InstanceIdentifier<Node> uniNode = InstanceIdentifier
+ .create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.UNI_TOPOLOGY_ID))
+ .child(Node.class, new NodeKey(node.getKey()));
+ return uniNode;
+ }
+ }
+ return null;
+ }
+
+ public static InstanceIdentifier<Node> createEvcIid() {
+ InstanceIdentifier<Node> iid = InstanceIdentifier.create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.EVC_TOPOLOGY_ID))
+ .child(Node.class);
+ return iid;
+ }
+
+ public static InstanceIdentifier<Topology> createTopologyIid() {
+ InstanceIdentifier<Topology> iid = InstanceIdentifier.create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.UNI_TOPOLOGY_ID));
+ return iid;
+ }
+
+ public static InstanceIdentifier<Link> getEvcLinkIID(LinkId id) {
+ InstanceIdentifier<Link> linkPath = InstanceIdentifier
+ .create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(UnimgrConstants.EVC_TOPOLOGY_ID))
+ .child(Link.class,new LinkKey(id));
+ return linkPath;
+ }
}
*/
package org.opendaylight.unimgr.impl;
-import java.util.ArrayList;
+
import java.util.List;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
import org.opendaylight.unimgr.api.IUnimgrConsoleProvider;
import org.opendaylight.unimgr.command.TransactionInvoker;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Evcs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.EvcsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Unis;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.UnisBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.evcs.Evc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Evc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
+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.NetworkTopologyBuilder;
+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.TopologyBuilder;
+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.TopologyId;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
public class UnimgrProvider implements BindingAwareProvider, AutoCloseable, IUnimgrConsoleProvider {
private static final Logger LOG = LoggerFactory.getLogger(UnimgrProvider.class);
- private UniDataChangeListener unimgrDataChangeListener;
- private EvcDataChangeListener evcDataChangeListener;
private UnimgrDataChangeListener listener;
private TransactionInvoker invoker;
@Override
public void onSessionInitiated(ProviderContext session) {
- LOG.info("VcpeProvider Session Initiated");
+ LOG.info("UnimgrProvider Session Initiated");
dataBroker = session.getSALService(DataBroker.class);
invoker = new TransactionInvoker();
- // Initialize operational and default config data in MD-SAL data store
+
BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
unimgrConsoleRegistration = context.registerService(IUnimgrConsoleProvider.class, this, null);
- unimgrDataChangeListener = new UniDataChangeListener(dataBroker);
- evcDataChangeListener = new EvcDataChangeListener(dataBroker);
listener = new UnimgrDataChangeListener(dataBroker, invoker);
- // Init UNI Config & Operational stores
- Unis unis = new UnisBuilder().build();
- initDatastore(LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getUnisIid(), unis);
- initDatastore(LogicalDatastoreType.OPERATIONAL, UnimgrMapper.getUnisIid(), unis);
- // Init EVC Config & Operational stores
- Evcs evcs = new EvcsBuilder().build();
- initDatastore(LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getEvcsIid(), evcs);
- initDatastore(LogicalDatastoreType.OPERATIONAL, UnimgrMapper.getEvcsIid(), evcs);
+ // Initialize operational and default config data in MD-SAL data store
+ initDatastore(LogicalDatastoreType.CONFIGURATION, UnimgrConstants.UNI_TOPOLOGY_ID);
+ initDatastore(LogicalDatastoreType.OPERATIONAL, UnimgrConstants.UNI_TOPOLOGY_ID);
+ initDatastore(LogicalDatastoreType.CONFIGURATION, UnimgrConstants.EVC_TOPOLOGY_ID);
+ initDatastore(LogicalDatastoreType.OPERATIONAL, UnimgrConstants.EVC_TOPOLOGY_ID);
}
@Override
public void close() throws Exception {
- LOG.info("VcpeProvider Closed");
+ LOG.info("UnimgrProvider Closed");
unimgrConsoleRegistration.unregister();
- unimgrDataChangeListener.close();
- evcDataChangeListener.close();
listener.close();
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
- protected void initDatastore(final LogicalDatastoreType store, InstanceIdentifier iid, final DataObject object) {
- WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- tx.put(store, iid, object);
-
- // Perform the tx.submit asynchronously
- Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
- @Override
- public void onSuccess(final Void result) {
- LOG.info("initStore {} with object {} succeeded", store, object);
- }
- @Override
- public void onFailure(final Throwable throwable) {
- LOG.error("initStore {} with object {} failed", store, object);
+ protected void initDatastore(final LogicalDatastoreType type, TopologyId topoId) {
+ InstanceIdentifier<Topology> path = InstanceIdentifier
+ .create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(topoId));
+ initializeTopology(type);
+ ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+ CheckedFuture<Optional<Topology>, ReadFailedException> unimgrTp = transaction.read(type, path);
+ try {
+ if (!unimgrTp.get().isPresent()) {
+ TopologyBuilder tpb = new TopologyBuilder();
+ tpb.setTopologyId(topoId);
+ transaction.put(type, path, tpb.build());
+ transaction.submit();
+ } else {
+ transaction.cancel();
}
- });
+ } catch (Exception e) {
+ LOG.error("Error initializing unimgr topology", e);
+ }
}
- @Override
- public boolean addUni(Uni uni) {
- Unis unis;
- List<Uni> listOfUnis = listUnis(true);
-
+ private void initializeTopology(LogicalDatastoreType type) {
+ ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+ InstanceIdentifier<NetworkTopology> path = InstanceIdentifier.create(NetworkTopology.class);
+ CheckedFuture<Optional<NetworkTopology>, ReadFailedException> topology = transaction.read(type,path);
try {
- listOfUnis.add(uni);
- unis = new UnisBuilder().setUni(listOfUnis).build();
-
- // Place default config data in data store tree
- WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- tx.put(LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getUnisIid(), unis);
-
- // Perform the tx.submit synchronously
- tx.submit();
+ if (!topology.get().isPresent()) {
+ NetworkTopologyBuilder ntb = new NetworkTopologyBuilder();
+ transaction.put(type,path,ntb.build());
+ transaction.submit();
+ } else {
+ transaction.cancel();
+ }
} catch (Exception e) {
- LOG.error("addUni: failed: {}", e);
- return false;
+ LOG.error("Error initializing unimgr topology {}",e);
}
- return true;
}
@Override
- public boolean removeUni(String id) {
- try {
- // Removes default config data in data store tree
- WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- tx.delete(LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getUniIid(id));
- System.out.println(UnimgrMapper.getUniIid(id));
- // Perform the tx.submit synchronously
- tx.submit();
- } catch (Exception e) {
- LOG.info("RemoveUni: failed: {}", e);
+ public boolean addUni(Uni uni) {
+ //TODO Uncomment
+ if (uni.getIpAddress() == null || uni.getMacAddress() == null) {
return false;
}
+// UniAugmentation uniAugmentation = new UniAugmentationBuilder()
+// .setIpAddress(uni.getIpAddress())
+// .setMacAddress(uni.getMacAddress())
+// .build();
+// ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+// InstanceIdentifier<Node> path = UnimgrMapper.getUniAugmentationIidByMac(uni.getMacAddress());
return true;
}
@Override
- public List<Uni> listUnis(boolean isConfigurationDatastore) {
- List<Uni> listOfUnis = null;
-
- try {
- ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction();
- listOfUnis = tx.read((isConfigurationDatastore) ? LogicalDatastoreType.CONFIGURATION
- : LogicalDatastoreType.OPERATIONAL, UnimgrMapper.getUnisIid()).checkedGet().get().getUni();
- } catch (Exception e) {
- LOG.error("ListIntents: failed: {}", e);
- }
-
- if (listOfUnis == null) {
- listOfUnis = new ArrayList<Uni>();
- }
- LOG.info("ListUnisConfiguration: list of unis retrieved sucessfully");
- return listOfUnis;
+ public boolean removeUni(String uuid) {
+ // TODO Auto-generated method stub
+ return false;
}
@Override
- public Uni getUni(String id) {
- Uni uni = null;
-
- try {
- InstanceIdentifier<Uni> iid = UnimgrMapper.getUniIid(id);
- System.out.println(UnimgrMapper.getUniIid(id));
-
- ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction();
- uni = tx.read(LogicalDatastoreType.CONFIGURATION, iid).checkedGet().get();
+ public List<Uni> listUnis(boolean isConfigurationDatastore) {
+ // TODO Auto-generated method stub
+ return null;
+ }
- if (uni == null) {
- uni = tx.read(LogicalDatastoreType.OPERATIONAL, iid).checkedGet().get();
- }
- } catch (Exception e) {
- LOG.error("getUni: failed: {}", e);
- return null;
- }
- LOG.info("getUni: Uni retrieved sucessfully");
- return uni;
+ @Override
+ public Uni getUni(String uuid) {
+ // TODO Auto-generated method stub
+ return null;
}
@Override
public boolean removeEvc(String uuid) {
- try {
- WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- tx.delete(LogicalDatastoreType.CONFIGURATION, UnimgrMapper.getEvcIid(uuid));
- System.out.println(UnimgrMapper.getEvcIid(uuid));
- tx.submit();
- } catch (Exception e) {
- LOG.info("Remove Evc: failed: {}", e);
- return false;
- }
- return true;
+ // TODO Auto-generated method stub
+ return false;
}
@Override
// TODO Auto-generated method stub
return null;
}
+
}
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
-import java.util.Map.Entry;
import java.util.concurrent.ExecutionException;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.CheckedFuture;
-
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.Unis;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev150622.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.EvcAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.Uni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentationBuilder;
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.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
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.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableBiMap;
+import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.CheckedFuture;
+
public class UnimgrUtils {
private static final Logger LOG = LoggerFactory.getLogger(UnimgrUtils.class);
public static final Optional<Node> readNode(DataBroker dataBroker,
- InstanceIdentifier<Node> nodeIid) {
+ InstanceIdentifier<?> genericNode) {
ReadTransaction read = dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<Node> nodeIid = genericNode.firstIdentifierOf(Node.class);
CheckedFuture<Optional<Node>, ReadFailedException> nodeFuture = read
.read(LogicalDatastoreType.OPERATIONAL, nodeIid);
Optional<Node> nodeOptional;
}
}
- public static final Optional<Uni> readUniNode(DataBroker dataBroker,
- InstanceIdentifier<Uni> nodeIid) {
- ReadTransaction read = dataBroker.newReadOnlyTransaction();
- CheckedFuture<Optional<Uni>, ReadFailedException> nodeFuture = read
- .read(LogicalDatastoreType.OPERATIONAL, nodeIid);
- Optional<Uni> nodeOptional;
- try {
- nodeOptional = nodeFuture.get();
- return nodeOptional;
- } catch (InterruptedException e) {
- return Optional.absent();
- } catch (ExecutionException e) {
- return Optional.absent();
- }
- }
-
- // This might not scale up.
- public static final Unis readUnisFromStore(DataBroker dataBroker,
- LogicalDatastoreType storetype) {
- ReadOnlyTransaction read = dataBroker.newReadOnlyTransaction();
- Optional<Unis> dataObject = null;
+ public static <D extends org.opendaylight.yangtools.yang.binding.DataObject> D read(
+ DataBroker dataBroker,
+ final LogicalDatastoreType store,
+ final InstanceIdentifier<D> path) {
+ D result = null;
+ final ReadOnlyTransaction transaction = dataBroker.newReadOnlyTransaction();
+ Optional<D> optionalDataObject;
+ CheckedFuture<Optional<D>, ReadFailedException> future = transaction.read(store, path);
try {
- dataObject = read.read(storetype,
- UnimgrMapper.getUnisIid()).get();
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Error retrieving the UNIs from the Configuration tree.");
- }
- if ((dataObject != null) && (dataObject.get() != null)) {
- read.close();
- return dataObject.get();
- } else {
- read.close();
- return null;
+ optionalDataObject = future.checkedGet();
+ if (optionalDataObject.isPresent()) {
+ result = optionalDataObject.get();
+ } else {
+ LOG.debug("{}: Failed to read {}",
+ Thread.currentThread().getStackTrace()[1], path);
+ }
+ } catch (ReadFailedException e) {
+ LOG.warn("Failed to read {} ", path, e);
}
+ transaction.close();
+ return result;
}
- public static void copyUniToDataStore(DataBroker dataBroker, Uni uni,
- LogicalDatastoreType dataStoreType) {
- WriteTransaction write = dataBroker.newWriteOnlyTransaction();
- write.put(dataStoreType, UnimgrMapper.getUniIid(uni), uni);
- write.submit();
- }
-
- public static OvsdbBridgeAugmentation createOvsdbBridgeAugmentation(Uni uni) {
- NodeId ovsdbNodeId = uni.getOvsdbNodeId();
- InstanceIdentifier<Node> ovsdbNodeIid;
- if (ovsdbNodeId == null || ovsdbNodeId.getValue().isEmpty()) {
- ovsdbNodeIid = UnimgrMapper.getOvsdbNodeIID(uni.getIpAddress());
+ public static OvsdbBridgeAugmentation createOvsdbBridgeAugmentation(Uni uni) throws Exception {
+ OvsdbNodeRef ovsdbNodeRef = uni.getOvsdbNodeRef();
+ if (ovsdbNodeRef != null && ovsdbNodeRef.getValue() != null) {
+ UUID bridgeUuid = UUID.randomUUID();
+ OvsdbBridgeAugmentation ovsdbBridge = new OvsdbBridgeAugmentationBuilder()
+ .setBridgeName(new OvsdbBridgeName(UnimgrConstants.DEFAULT_BRIDGE_NAME))
+ .setManagedBy(ovsdbNodeRef)
+ .setBridgeUuid(new Uuid(bridgeUuid.toString()))
+ .build();
+ return ovsdbBridge;
} else {
- ovsdbNodeIid = UnimgrMapper.getOvsdbNodeIID(ovsdbNodeId);
+ throw new Exception("Ovsdb Node Reference does not exist !");
}
- OvsdbNodeRef ovsdbNodeRef = new OvsdbNodeRef(ovsdbNodeIid);
- UUID bridgeUuid = UUID.randomUUID();
- OvsdbBridgeAugmentation ovsdbBridge = new OvsdbBridgeAugmentationBuilder()
- .setBridgeName(new OvsdbBridgeName(UnimgrConstants.DEFAULT_BRIDGE_NAME))
- .setManagedBy(ovsdbNodeRef)
- .setBridgeUuid(new Uuid(bridgeUuid.toString()))
- .build();
- return ovsdbBridge;
}
public static OvsdbNodeAugmentation createOvsdbNodeAugmentation(Uni uni) {
}
}
+ public static Node createOvsdbNode(DataBroker dataBroker, UniAugmentation uni) {
+ List<Node> ovsdbNodes = getOvsdbNodes(dataBroker);
+ if (!ovsdbNodes.isEmpty()) {
+ for (Node ovsdbNode: ovsdbNodes) {
+ OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode
+ .getAugmentation(OvsdbNodeAugmentation.class);
+ if (ovsdbNodeAugmentation.getConnectionInfo()
+ .getRemoteIp().getIpv4Address()
+ .equals(uni.getIpAddress().getIpv4Address())) {
+ LOG.info("Found ovsdb node");
+ return ovsdbNode;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static Node findOvsdbNode(DataBroker dataBroker, UniAugmentation uni) {
+ List<Node> ovsdbNodes = getOvsdbNodes(dataBroker);
+ if (!ovsdbNodes.isEmpty()) {
+ for (Node ovsdbNode: ovsdbNodes) {
+ OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode
+ .getAugmentation(OvsdbNodeAugmentation.class);
+ if (ovsdbNodeAugmentation.getConnectionInfo()
+ .getRemoteIp().getIpv4Address()
+ .equals(uni.getIpAddress().getIpv4Address())) {
+ LOG.info("Found ovsdb node");
+ return ovsdbNode;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static void updateUniNode(LogicalDatastoreType dataStore,
+ InstanceIdentifier<?> uniKey,
+ UniAugmentation uni,
+ Node ovsdbNode,
+ DataBroker dataBroker) {
+ WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
+ UniAugmentationBuilder updatedUniBuilder = new UniAugmentationBuilder(uni);
+ Optional<Node> optionalNode = UnimgrUtils.readNode(dataBroker, uniKey);
+ if (optionalNode.isPresent()) {
+ Node node = optionalNode.get();
+ NodeBuilder nodeBuilder = new NodeBuilder();
+ nodeBuilder.setKey(node.getKey());
+ nodeBuilder.setNodeId(node.getNodeId());
+ nodeBuilder.addAugmentation(UniAugmentation.class, updatedUniBuilder.build());
+ transaction.put(dataStore, uniKey.firstIdentifierOf(Node.class), nodeBuilder.build());
+ }
+ }
+
+ @Deprecated
public static void createBridgeNode(DataBroker dataBroker, NodeId ovsdbNodeId, Uni uni, String bridgeName) {
LOG.info("Creating a bridge on node {}", ovsdbNodeId);
InstanceIdentifier<Node> ovsdbNodeIid = UnimgrMapper
+ UnimgrConstants.DEFAULT_BRIDGE_NODE_ID_SUFFIX + bridgeName);
bridgeNodeBuilder.setNodeId(bridgeNodeId);
OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
- // String target = VcpeUtils.getLocalIp().toString();
- // ovsdbBridgeAugmentationBuilder.setControllerEntry(VcpeUtils.createControllerEntries(target));
ovsdbBridgeAugmentationBuilder.setBridgeName(new OvsdbBridgeName(
bridgeName));
ovsdbBridgeAugmentationBuilder.setProtocolEntry(UnimgrUtils
}
}
+ public static NodeId createOvsdbNodeId(IpAddress ipAddress) {
+ String nodeId = UnimgrConstants.OVSDB_PREFIX
+ + ipAddress.getIpv4Address().getValue().toString()
+ + ":"
+ + UnimgrConstants.OVSDB_PORT;
+ return new NodeId(nodeId);
+ }
+
+ public static List<Node> getOvsdbNodes(DataBroker dataBroker) {
+ List<Node> ovsdbNodes = new ArrayList<>();
+ InstanceIdentifier<Topology> topologyInstanceIdentifier = UnimgrMapper.createTopologyIid();
+ Topology topology = UnimgrUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, topologyInstanceIdentifier);
+ if (topology != null && topology.getNode() != null) {
+ for (Node node : topology.getNode()) {
+ OvsdbNodeAugmentation ovsdbNodeAugmentation = node.getAugmentation(OvsdbNodeAugmentation.class);
+ if (ovsdbNodeAugmentation != null) {
+ ovsdbNodes.add(node);
+ }
+ }
+ }
+ return ovsdbNodes;
+ }
+
+ public static List<Node> getUniNodes(DataBroker dataBroker) {
+ List<Node> uniNodes = new ArrayList<>();
+ InstanceIdentifier<Topology> topologyInstanceIdentifier = UnimgrMapper.createTopologyIid();
+ Topology topology = UnimgrUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, topologyInstanceIdentifier);
+ if (topology != null && topology.getNode() != null) {
+ for (Node node : topology.getNode()) {
+ UniAugmentation uniAugmentation = node.getAugmentation(UniAugmentation.class);
+ if (uniAugmentation != null) {
+ uniNodes.add(node);
+ }
+ }
+ }
+ return uniNodes;
+ }
+
+ public static List<Link> getEvcLinks(DataBroker dataBroker, IpAddress ipAddress) {
+ List<Link> evcLinks = new ArrayList<>();
+ InstanceIdentifier<Topology> topologyInstanceIdentifier = UnimgrMapper.createTopologyIid();
+ Topology topology = UnimgrUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, topologyInstanceIdentifier);
+ if (topology != null && topology.getNode() != null) {
+ for (Link link : topology.getLink()) {
+ EvcAugmentation evcAugmentation = link.getAugmentation(EvcAugmentation.class);
+ if (evcAugmentation != null) {
+ evcLinks.add(link);
+ }
+ }
+ }
+ return evcLinks;
+ }
+
+ public static void createBridgeNode(DataBroker dataBroker, Node ovsdbNode, UniAugmentation uni, String bridgeName) {
+ LOG.info("Creating a bridge on node {}", ovsdbNode.getNodeId());
+ InstanceIdentifier<Node> ovsdbNodeIid = UnimgrMapper
+ .getOvsdbNodeIID(uni.getIpAddress());
+ ConnectionInfo connectionInfo = UnimgrUtils.getConnectionInfo(dataBroker, ovsdbNode.getNodeId());
+ if (connectionInfo != null) {
+ NodeBuilder bridgeNodeBuilder = new NodeBuilder();
+ InstanceIdentifier<Node> bridgeIid = UnimgrMapper
+ .getOvsdbBridgeNodeIID(ovsdbNode.getNodeId(), bridgeName);
+ NodeId bridgeNodeId = new NodeId(ovsdbNode.getNodeId()
+ + UnimgrConstants.DEFAULT_BRIDGE_NODE_ID_SUFFIX + bridgeName);
+ bridgeNodeBuilder.setNodeId(bridgeNodeId);
+ OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
+ ovsdbBridgeAugmentationBuilder.setBridgeName(new OvsdbBridgeName(
+ bridgeName));
+ ovsdbBridgeAugmentationBuilder.setProtocolEntry(UnimgrUtils
+ .createMdsalProtocols());
+ OvsdbNodeRef ovsdbNodeRef = new OvsdbNodeRef(ovsdbNodeIid);
+ ovsdbBridgeAugmentationBuilder.setManagedBy(ovsdbNodeRef);
+ bridgeNodeBuilder.addAugmentation(OvsdbBridgeAugmentation.class,
+ ovsdbBridgeAugmentationBuilder.build());
+ WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
+ transaction.put(LogicalDatastoreType.CONFIGURATION, bridgeIid,
+ bridgeNodeBuilder.build());
+ transaction.submit();
+ } else {
+ LOG.error("The OVSDB node is not connected {}", ovsdbNode.getNodeId());
+ }
+ }
+
public static void createTerminationPointNode(DataBroker dataBroker, Uni uni,
Node bridgeNode, String bridgeName, String portName, String type) {
InstanceIdentifier<TerminationPoint> tpIid = UnimgrMapper
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev150622;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev151012;
import org.opendaylight.unimgr.impl.UnimgrProvider;
-public class UnimgrModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev150622.AbstractUnimgrModule {
+public class UnimgrModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev151012.AbstractUnimgrModule {
public UnimgrModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
super(identifier, dependencyResolver);
}
- public UnimgrModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev150622.UnimgrModule oldModule, java.lang.AutoCloseable oldInstance) {
+ public UnimgrModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev151012.UnimgrModule oldModule, java.lang.AutoCloseable oldInstance) {
super(identifier, dependencyResolver, oldModule, oldInstance);
}
*
* Do not modify this file unless it is present under src/main directory
*/
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev150622;
-public class UnimgrModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev150622.AbstractUnimgrModuleFactory {
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev151012;
+public class UnimgrModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.impl.rev151012.AbstractUnimgrModuleFactory{
}
description
"Service definition for unimgr project";
- revision "2015-06-22" {
+ revision "2015-10-12" {
description
- "Initial revision";
+ "Updated revision.";
}
identity unimgr {
@PrepareForTest({FrameworkUtil.class})
public class UnimgrProviderTest {
- @Mock private UniDataChangeListener unimgrDataChangeListener;
- @Mock private EvcDataChangeListener evcDataChangeListener;
@Mock private UnimgrDataChangeListener listener;
@Mock private TransactionInvoker invoker;
@Mock private DataBroker dataBroker;