ONOS-4420 Implemented BMv2 packet provider
Also, moved DeviceId generation logic from Bmv2DeviceProvider to
Bmv2Device.
Change-Id: I0a7af6d558d054604038a858dce67a2d287bcde3
diff --git a/providers/bmv2/device/pom.xml b/providers/bmv2/device/pom.xml
index 021d90f..80f42e1 100644
--- a/providers/bmv2/device/pom.xml
+++ b/providers/bmv2/device/pom.xml
@@ -39,7 +39,7 @@
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-common</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>${project.version}</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java b/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
index 2d16ff2..d9ac3a4 100644
--- a/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
+++ b/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
@@ -50,8 +50,6 @@
import org.onosproject.net.provider.ProviderId;
import org.slf4j.Logger;
-import java.net.URI;
-import java.net.URISyntaxException;
import java.util.List;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
@@ -63,6 +61,9 @@
import static org.onosproject.bmv2.ctl.Bmv2ThriftClient.ping;
import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
import static org.slf4j.LoggerFactory.getLogger;
+import static org.onosproject.bmv2.api.runtime.Bmv2Device.SCHEME;
+import static org.onosproject.bmv2.api.runtime.Bmv2Device.MANUFACTURER;
+import static org.onosproject.bmv2.api.runtime.Bmv2Device.HW_VERSION;
/**
* BMv2 device provider.
@@ -72,9 +73,6 @@
private static final Logger LOG = getLogger(Bmv2DeviceProvider.class);
- public static final String MANUFACTURER = "p4.org";
- public static final String HW_VERSION = "bmv2";
- public static final String SCHEME = "bmv2";
private static final String APP_NAME = "org.onosproject.bmv2";
private static final String UNKNOWN = "unknown";
private static final int POLL_INTERVAL = 5; // seconds
@@ -108,25 +106,6 @@
super(new ProviderId("bmv2", "org.onosproject.provider.device"));
}
- private static DeviceId deviceIdOf(String ip, int port) {
- try {
- return DeviceId.deviceId(new URI(SCHEME, ip + ":" + port, null));
- } catch (URISyntaxException e) {
- throw new IllegalArgumentException("Unable to build deviceID for device " + ip + ":" + port, e);
- }
- }
-
- /**
- * Creates a new device ID for the given BMv2 device.
- *
- * @param device a BMv2 device object
- *
- * @return a new device ID
- */
- public static DeviceId deviceIdOf(Bmv2Device device) {
- return deviceIdOf(device.thriftServerHost(), device.thriftServerPort());
- }
-
@Override
protected void activate() {
appId = coreService.registerApplication(APP_NAME);
@@ -258,7 +237,9 @@
if (cfg != null) {
try {
cfg.getDevicesInfo().stream().forEach(info -> {
- triggerProbe(deviceIdOf(info.ip().toString(), info.port()));
+ // TODO: require also bmv2 internal device id from net-cfg (now is default 0)
+ Bmv2Device bmv2Device = new Bmv2Device(info.ip().toString(), info.port(), 0);
+ triggerProbe(bmv2Device.asDeviceId());
});
} catch (ConfigException e) {
LOG.error("Unable to read config: " + e);
@@ -283,7 +264,7 @@
@Override
public void handleHello(Bmv2Device device) {
log.debug("Received hello from {}", device);
- triggerProbe(deviceIdOf(device));
+ triggerProbe(device.asDeviceId());
}
}