lldp discovery independent of OF
Change-Id: I720f727f6628e30e5d732e6d7bf742d1b7050812
diff --git a/core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java b/core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
index 8b3eee1..53f2676 100644
--- a/core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
+++ b/core/api/src/main/java/org/onlab/onos/net/DefaultDevice.java
@@ -1,6 +1,7 @@
package org.onlab.onos.net;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.ChassisId;
import java.util.Objects;
@@ -16,6 +17,7 @@
private final String serialNumber;
private final String hwVersion;
private final String swVersion;
+ private final ChassisId chassisId;
// For serialization
private DefaultDevice() {
@@ -24,6 +26,7 @@
this.hwVersion = null;
this.swVersion = null;
this.serialNumber = null;
+ this.chassisId = null;
}
/**
@@ -40,13 +43,15 @@
*/
public DefaultDevice(ProviderId providerId, DeviceId id, Type type,
String manufacturer, String hwVersion, String swVersion,
- String serialNumber, Annotations... annotations) {
+ String serialNumber, ChassisId chassisId,
+ Annotations... annotations) {
super(providerId, id, annotations);
this.type = type;
this.manufacturer = manufacturer;
this.hwVersion = hwVersion;
this.swVersion = swVersion;
this.serialNumber = serialNumber;
+ this.chassisId = chassisId;
}
@Override
@@ -80,6 +85,11 @@
}
@Override
+ public ChassisId chassisId() {
+ return chassisId;
+ }
+
+ @Override
public int hashCode() {
return Objects.hash(id, type, manufacturer, hwVersion, swVersion, serialNumber);
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/Device.java b/core/api/src/main/java/org/onlab/onos/net/Device.java
index 9e6018e..0294d99 100644
--- a/core/api/src/main/java/org/onlab/onos/net/Device.java
+++ b/core/api/src/main/java/org/onlab/onos/net/Device.java
@@ -1,5 +1,7 @@
package org.onlab.onos.net;
+import org.onlab.packet.ChassisId;
+
/**
* Representation of a network infrastructure device.
*/
@@ -54,6 +56,13 @@
*/
String serialNumber();
+ /**
+ * Returns the device chassis id.
+ *
+ * @return chassis id
+ */
+ ChassisId chassisId();
+
// Device realizedBy(); ?
// ports are not provided directly, but rather via DeviceService.getPorts(Device device);
diff --git a/core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
index ede2eb2..79710ae 100644
--- a/core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
+++ b/core/api/src/main/java/org/onlab/onos/net/device/DefaultDeviceDescription.java
@@ -2,6 +2,7 @@
import org.onlab.onos.net.AbstractDescription;
import org.onlab.onos.net.SparseAnnotations;
+import org.onlab.packet.ChassisId;
import java.net.URI;
@@ -20,6 +21,7 @@
private final String hwVersion;
private final String swVersion;
private final String serialNumber;
+ private final ChassisId chassisId;
/**
* Creates a device description using the supplied information.
@@ -34,7 +36,7 @@
*/
public DefaultDeviceDescription(URI uri, Type type, String manufacturer,
String hwVersion, String swVersion,
- String serialNumber,
+ String serialNumber, ChassisId chassis,
SparseAnnotations... annotations) {
super(annotations);
this.uri = checkNotNull(uri, "Device URI cannot be null");
@@ -43,6 +45,7 @@
this.hwVersion = hwVersion;
this.swVersion = swVersion;
this.serialNumber = serialNumber;
+ this.chassisId = chassis;
}
/**
@@ -54,7 +57,7 @@
SparseAnnotations... annotations) {
this(base.deviceURI(), base.type(), base.manufacturer(),
base.hwVersion(), base.swVersion(), base.serialNumber(),
- annotations);
+ base.chassisId(), annotations);
}
@Override
@@ -88,6 +91,11 @@
}
@Override
+ public ChassisId chassisId() {
+ return chassisId;
+ }
+
+ @Override
public String toString() {
return toStringHelper(this)
.add("uri", uri).add("type", type).add("mfr", manufacturer)
@@ -104,5 +112,6 @@
this.hwVersion = null;
this.swVersion = null;
this.serialNumber = null;
+ this.chassisId = null;
}
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java b/core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
index e32c19d..99b49ab 100644
--- a/core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
+++ b/core/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
@@ -2,6 +2,7 @@
import org.onlab.onos.net.Description;
import org.onlab.onos.net.Device;
+import org.onlab.packet.ChassisId;
import java.net.URI;
@@ -54,4 +55,11 @@
*/
String serialNumber();
+ /**
+ * Returns a device chassis id.
+ *
+ * @return chassis id
+ */
+ ChassisId chassisId();
+
}
diff --git a/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
index 329e128..63f1daa 100644
--- a/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
@@ -3,6 +3,7 @@
import com.google.common.testing.EqualsTester;
import org.junit.Test;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.ChassisId;
import static org.junit.Assert.assertEquals;
import static org.onlab.onos.net.Device.Type.SWITCH;
@@ -21,14 +22,15 @@
static final String SW = "3.9.1";
static final String SN1 = "43311-12345";
static final String SN2 = "42346-43512";
+ static final ChassisId CID = new ChassisId();
@Test
public void testEquality() {
- Device d1 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1);
- Device d2 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1);
- Device d3 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2);
- Device d4 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2);
- Device d5 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN1);
+ Device d1 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID);
+ Device d2 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID);
+ Device d3 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2, CID);
+ Device d4 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2, CID);
+ Device d5 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN1, CID);
new EqualsTester().addEqualityGroup(d1, d2)
.addEqualityGroup(d3, d4)
@@ -38,13 +40,13 @@
@Test
public void basics() {
- Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1);
+ Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID);
validate(device);
}
@Test
public void annotations() {
- Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1,
+ Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID,
DefaultAnnotations.builder().set("foo", "bar").build());
validate(device);
assertEquals("incorrect provider", "bar", device.annotations().value("foo"));
diff --git a/core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
index 1069fd1..b9720ea 100644
--- a/core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/DefaultPortTest.java
@@ -3,6 +3,7 @@
import com.google.common.testing.EqualsTester;
import org.junit.Test;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.ChassisId;
import static org.junit.Assert.assertEquals;
import static org.onlab.onos.net.Device.Type.SWITCH;
@@ -22,7 +23,8 @@
@Test
public void testEquality() {
- Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n");
+ Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n",
+ new ChassisId());
Port p1 = new DefaultPort(device, portNumber(1), true);
Port p2 = new DefaultPort(device, portNumber(1), true);
Port p3 = new DefaultPort(device, portNumber(2), true);
@@ -37,7 +39,8 @@
@Test
public void basics() {
- Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n");
+ Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n",
+ new ChassisId());
Port port = new DefaultPort(device, portNumber(1), true);
assertEquals("incorrect element", device, port.element());
assertEquals("incorrect number", portNumber(1), port.number());
diff --git a/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java b/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
index 379ec7a..e1e78ed 100644
--- a/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
+++ b/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
@@ -1,6 +1,7 @@
package org.onlab.onos.net;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.ChassisId;
import org.onlab.packet.IpPrefix;
import java.util.ArrayList;
@@ -37,7 +38,7 @@
// Crates a new device with the specified id
public static Device device(String id) {
return new DefaultDevice(PID, did(id), Device.Type.SWITCH,
- "mfg", "1.0", "1.1", "1234");
+ "mfg", "1.0", "1.1", "1234", new ChassisId());
}
// Crates a new host with the specified id
diff --git a/core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
index 9d06edf..243d148 100644
--- a/core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/device/DefaultDeviceDescriptionTest.java
@@ -1,6 +1,7 @@
package org.onlab.onos.net.device;
import org.junit.Test;
+import org.onlab.packet.ChassisId;
import java.net.URI;
@@ -18,12 +19,13 @@
private static final String HW = "1.1.x";
private static final String SW = "3.9.1";
private static final String SN = "43311-12345";
+ private static final ChassisId CID = new ChassisId();
@Test
public void basics() {
DeviceDescription device =
- new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN);
+ new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID);
assertEquals("incorrect uri", DURI, device.deviceURI());
assertEquals("incorrect type", SWITCH, device.type());
assertEquals("incorrect manufacturer", MFR, device.manufacturer());
@@ -31,6 +33,7 @@
assertEquals("incorrect sw", SW, device.swVersion());
assertEquals("incorrect serial", SN, device.serialNumber());
assertTrue("incorrect toString", device.toString().contains("uri=of:foo"));
+ assertTrue("Incorrect chassis", device.chassisId().value() == 0);
}
}
diff --git a/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java b/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
index 9c45b96..312b9c2 100644
--- a/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
@@ -11,6 +11,7 @@
import org.onlab.onos.net.Port;
import org.onlab.onos.net.PortNumber;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.packet.ChassisId;
/**
* Tests of the device event.
@@ -19,7 +20,7 @@
private Device createDevice() {
return new DefaultDevice(new ProviderId("of", "foo"), deviceId("of:foo"),
- Device.Type.SWITCH, "box", "hw", "sw", "sn");
+ Device.Type.SWITCH, "box", "hw", "sw", "sn", new ChassisId());
}
@Override
diff --git a/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java
index 5f7d47b..81e6393 100644
--- a/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java
@@ -18,9 +18,9 @@
private static final DeviceId D3 = deviceId("3");
- static final Device DEV1 = new DefaultDevice(PID, D1, SWITCH, "", "", "", "");
- static final Device DEV2 = new DefaultDevice(PID, D2, SWITCH, "", "", "", "");
- static final Device DEV3 = new DefaultDevice(PID, D3, SWITCH, "", "", "", "");
+ static final Device DEV1 = new DefaultDevice(PID, D1, SWITCH, "", "", "", "", null);
+ static final Device DEV2 = new DefaultDevice(PID, D2, SWITCH, "", "", "", "", null);
+ static final Device DEV3 = new DefaultDevice(PID, D3, SWITCH, "", "", "", "", null);
@Test
public void basics() {