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;
 	}
 }