Change for device discovery on new-data model.
RcDevice is not implemented completely.
It is temporary implementation until all device archtecture is decicded.
Change-Id: Iea73bddbf859b869312d2590e0f31a18bd31aaf5
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
index 30b2f73..63f37d8 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
@@ -1,21 +1,27 @@
package net.onrc.onos.ofcontroller.networkgraph;
+import java.net.Inet4Address;
+import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
import net.onrc.onos.datastore.DataStoreClient;
import net.onrc.onos.datastore.IKVClient;
+import net.onrc.onos.datastore.topology.KVDevice;
import net.onrc.onos.datastore.topology.KVLink;
import net.onrc.onos.datastore.topology.KVPort;
import net.onrc.onos.datastore.topology.KVPort.STATUS;
import net.onrc.onos.datastore.topology.KVSwitch;
import net.onrc.onos.datastore.utils.KVObject;
import net.onrc.onos.datastore.utils.KVObject.WriteOp;
+import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.net.InetAddresses;
+
/**
* The southbound interface to the network graph which allows clients to
* mutate the graph. This class will maintain the invariants of the network
@@ -186,8 +192,24 @@
* @return true on success, otherwise false.
*/
public boolean addDevice(DeviceEvent device) {
- // TODO implement
- return false; // Failure: not implemented yet
+ log.debug("Adding device into DB. mac {}", device.getMac());
+
+ KVDevice rcDevice = new KVDevice(device.getMac().toBytes());
+ rcDevice.setLastSeenTime(device.getLastSeenTime());
+
+ for(SwitchPort sp : device.getAttachmentPoints()) {
+ byte[] portId = KVPort.getPortID(sp.getDpid(), sp.getNumber());
+ rcDevice.addPortId(portId);
+ }
+
+ for(InetAddress addr : device.getIpAddresses()) {
+ //It assume only one ip on a device now.
+ rcDevice.setIp(InetAddresses.coerceToInteger(addr));
+ }
+
+ rcDevice.forceCreate();
+
+ return true;
}
/**
@@ -197,7 +219,11 @@
* @return true on success, otherwise false.
*/
public boolean removeDevice(DeviceEvent device) {
- // TODO implement
- return false; // Failure: not implemented yet
+ log.debug("Removing device into DB. mac {}", device.getMac());
+
+ KVDevice rcDevice = new KVDevice(device.getMac().toBytes());
+ rcDevice.forceDelete();
+
+ return true;
}
}