Thomas Vachuska
Committed by Gerrit Code Review

Added deviceId to the DriverData as part of available context.

Change-Id: I5be94f35a2889e0c93cf3c20c4c9d6f907411121
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 package org.onosproject.net.driver; 16 package org.onosproject.net.driver;
17 17
18 import com.google.common.collect.ImmutableSet; 18 import com.google.common.collect.ImmutableSet;
19 +import org.onosproject.net.DeviceId;
19 import org.onosproject.net.MutableAnnotations; 20 import org.onosproject.net.MutableAnnotations;
20 21
21 import java.util.HashMap; 22 import java.util.HashMap;
...@@ -30,6 +31,7 @@ import static com.google.common.base.MoreObjects.toStringHelper; ...@@ -30,6 +31,7 @@ import static com.google.common.base.MoreObjects.toStringHelper;
30 public class DefaultDriverData implements DriverData { 31 public class DefaultDriverData implements DriverData {
31 32
32 private final Driver driver; 33 private final Driver driver;
34 + private final DeviceId deviceId;
33 private final Map<String, String> properties; 35 private final Map<String, String> properties;
34 36
35 /** 37 /**
...@@ -37,8 +39,9 @@ public class DefaultDriverData implements DriverData { ...@@ -37,8 +39,9 @@ public class DefaultDriverData implements DriverData {
37 * 39 *
38 * @param driver parent driver type 40 * @param driver parent driver type
39 */ 41 */
40 - public DefaultDriverData(Driver driver) { 42 + public DefaultDriverData(Driver driver, DeviceId deviceId) {
41 this.driver = driver; 43 this.driver = driver;
44 + this.deviceId = deviceId;
42 this.properties = new HashMap<>(); 45 this.properties = new HashMap<>();
43 } 46 }
44 47
...@@ -48,6 +51,11 @@ public class DefaultDriverData implements DriverData { ...@@ -48,6 +51,11 @@ public class DefaultDriverData implements DriverData {
48 } 51 }
49 52
50 @Override 53 @Override
54 + public DeviceId deviceId() {
55 + return deviceId;
56 + }
57 +
58 + @Override
51 public <T extends Behaviour> T behaviour(Class<T> behaviourClass) { 59 public <T extends Behaviour> T behaviour(Class<T> behaviourClass) {
52 return driver.createBehaviour(this, behaviourClass); 60 return driver.createBehaviour(this, behaviourClass);
53 } 61 }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
15 */ 15 */
16 package org.onosproject.net.driver; 16 package org.onosproject.net.driver;
17 17
18 +import org.onosproject.net.DeviceId;
18 import org.onosproject.net.MutableAnnotations; 19 import org.onosproject.net.MutableAnnotations;
19 20
20 /** 21 /**
...@@ -31,6 +32,13 @@ public interface DriverData extends MutableAnnotations { ...@@ -31,6 +32,13 @@ public interface DriverData extends MutableAnnotations {
31 Driver driver(); 32 Driver driver();
32 33
33 /** 34 /**
35 + * Returns the device identifier.
36 + *
37 + * @return device identifier
38 + */
39 + DeviceId deviceId();
40 +
41 + /**
34 * Returns the specified facet of behaviour to access the device data. 42 * Returns the specified facet of behaviour to access the device data.
35 * 43 *
36 * @param behaviourClass behaviour class 44 * @param behaviourClass behaviour class
......
...@@ -18,11 +18,15 @@ package org.onosproject.net.driver; ...@@ -18,11 +18,15 @@ package org.onosproject.net.driver;
18 import com.google.common.collect.ImmutableMap; 18 import com.google.common.collect.ImmutableMap;
19 import org.junit.Before; 19 import org.junit.Before;
20 import org.junit.Test; 20 import org.junit.Test;
21 +import org.onosproject.net.DeviceId;
21 22
22 import static org.junit.Assert.*; 23 import static org.junit.Assert.*;
24 +import static org.onosproject.net.DeviceId.deviceId;
23 25
24 public class DefaultDriverDataTest { 26 public class DefaultDriverDataTest {
25 27
28 + public static final DeviceId DEVICE_ID = deviceId("of:0011223344556677");
29 +
26 DefaultDriver ddc; 30 DefaultDriver ddc;
27 DefaultDriverData data; 31 DefaultDriverData data;
28 32
...@@ -32,12 +36,13 @@ public class DefaultDriverDataTest { ...@@ -32,12 +36,13 @@ public class DefaultDriverDataTest {
32 ImmutableMap.of(TestBehaviour.class, 36 ImmutableMap.of(TestBehaviour.class,
33 TestBehaviourImpl.class), 37 TestBehaviourImpl.class),
34 ImmutableMap.of("foo", "bar")); 38 ImmutableMap.of("foo", "bar"));
35 - data = new DefaultDriverData(ddc); 39 + data = new DefaultDriverData(ddc, DEVICE_ID);
36 } 40 }
37 41
38 @Test 42 @Test
39 public void basics() { 43 public void basics() {
40 - assertSame("incorrect type", ddc, data.driver()); 44 + assertSame("incorrect driver", ddc, data.driver());
45 + assertEquals("incorrect device id", DEVICE_ID, data.deviceId());
41 assertTrue("incorrect toString", data.toString().contains("foo.bar")); 46 assertTrue("incorrect toString", data.toString().contains("foo.bar"));
42 } 47 }
43 48
......
...@@ -36,7 +36,7 @@ public class DefaultDriverHandlerTest { ...@@ -36,7 +36,7 @@ public class DefaultDriverHandlerTest {
36 TestBehaviourTwo.class, 36 TestBehaviourTwo.class,
37 TestBehaviourTwoImpl.class), 37 TestBehaviourTwoImpl.class),
38 ImmutableMap.of("foo", "bar")); 38 ImmutableMap.of("foo", "bar"));
39 - data = new DefaultDriverData(ddc); 39 + data = new DefaultDriverData(ddc, DefaultDriverDataTest.DEVICE_ID);
40 handler = new DefaultDriverHandler(data); 40 handler = new DefaultDriverHandler(data);
41 } 41 }
42 42
......
...@@ -20,6 +20,7 @@ import org.junit.Test; ...@@ -20,6 +20,7 @@ import org.junit.Test;
20 20
21 import static org.junit.Assert.assertEquals; 21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertTrue; 22 import static org.junit.Assert.assertTrue;
23 +import static org.onosproject.net.driver.DefaultDriverDataTest.DEVICE_ID;
23 24
24 public class DefaultDriverTest { 25 public class DefaultDriverTest {
25 26
...@@ -45,10 +46,10 @@ public class DefaultDriverTest { ...@@ -45,10 +46,10 @@ public class DefaultDriverTest {
45 assertEquals("incorrect behaviour count", 0, ddc.behaviours().size()); 46 assertEquals("incorrect behaviour count", 0, ddc.behaviours().size());
46 assertTrue("incorrect behaviour", ddc.hasBehaviour(TestBehaviour.class)); 47 assertTrue("incorrect behaviour", ddc.hasBehaviour(TestBehaviour.class));
47 48
48 - Behaviour b1 = ddc.createBehaviour(new DefaultDriverData(ddc), TestBehaviour.class); 49 + Behaviour b1 = ddc.createBehaviour(new DefaultDriverData(ddc, DEVICE_ID), TestBehaviour.class);
49 assertTrue("incorrect behaviour class", b1 instanceof TestBehaviourImpl); 50 assertTrue("incorrect behaviour class", b1 instanceof TestBehaviourImpl);
50 51
51 - Behaviour b2 = ddc.createBehaviour(new DefaultDriverHandler(new DefaultDriverData(ddc)), 52 + Behaviour b2 = ddc.createBehaviour(new DefaultDriverHandler(new DefaultDriverData(ddc, DEVICE_ID)),
52 TestBehaviourTwo.class); 53 TestBehaviourTwo.class);
53 assertTrue("incorrect behaviour class", b2 instanceof TestBehaviourTwoImpl); 54 assertTrue("incorrect behaviour class", b2 instanceof TestBehaviourTwoImpl);
54 55
......
...@@ -23,6 +23,7 @@ import java.util.Iterator; ...@@ -23,6 +23,7 @@ import java.util.Iterator;
23 23
24 import static org.junit.Assert.assertEquals; 24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue; 25 import static org.junit.Assert.assertTrue;
26 +import static org.onosproject.net.driver.DefaultDriverDataTest.DEVICE_ID;
26 27
27 /** 28 /**
28 * Tests of the XML driver loader implementation. 29 * Tests of the XML driver loader implementation.
...@@ -73,7 +74,7 @@ public class XmlDriverLoaderTest { ...@@ -73,7 +74,7 @@ public class XmlDriverLoaderTest {
73 InputStream stream = getClass().getResourceAsStream("drivers.noconstructor.xml"); 74 InputStream stream = getClass().getResourceAsStream("drivers.noconstructor.xml");
74 DriverProvider provider = loader.loadDrivers(stream, null); 75 DriverProvider provider = loader.loadDrivers(stream, null);
75 Driver driver = provider.getDrivers().iterator().next(); 76 Driver driver = provider.getDrivers().iterator().next();
76 - driver.createBehaviour(new DefaultDriverData(driver), TestBehaviour.class); 77 + driver.createBehaviour(new DefaultDriverData(driver, DEVICE_ID), TestBehaviour.class);
77 } 78 }
78 79
79 } 80 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -177,7 +177,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS ...@@ -177,7 +177,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS
177 checkPermission(Permission.DRIVER_WRITE); 177 checkPermission(Permission.DRIVER_WRITE);
178 178
179 Driver driver = getDriver(deviceId); 179 Driver driver = getDriver(deviceId);
180 - return new DefaultDriverHandler(new DefaultDriverData(driver)); 180 + return new DefaultDriverHandler(new DefaultDriverData(driver, deviceId));
181 } 181 }
182 182
183 // Produces a composite driver key using the specified components. 183 // Produces a composite driver key using the specified components.
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
43 <groupId>org.apache.felix</groupId> 43 <groupId>org.apache.felix</groupId>
44 <artifactId>org.apache.felix.scr.annotations</artifactId> 44 <artifactId>org.apache.felix.scr.annotations</artifactId>
45 </dependency> 45 </dependency>
46 - <dependency> 46 + <dependency>
47 <groupId>org.osgi</groupId> 47 <groupId>org.osgi</groupId>
48 <artifactId>org.osgi.compendium</artifactId> 48 <artifactId>org.osgi.compendium</artifactId>
49 </dependency> 49 </dependency>
......
...@@ -43,6 +43,8 @@ import java.util.Map; ...@@ -43,6 +43,8 @@ import java.util.Map;
43 import java.util.concurrent.Executors; 43 import java.util.concurrent.Executors;
44 44
45 import static org.onlab.util.Tools.groupedThreads; 45 import static org.onlab.util.Tools.groupedThreads;
46 +import static org.onosproject.net.DeviceId.deviceId;
47 +import static org.onosproject.openflow.controller.Dpid.uri;
46 48
47 49
48 /** 50 /**
...@@ -208,9 +210,12 @@ public class Controller { ...@@ -208,9 +210,12 @@ public class Controller {
208 .getDriver(desc.getMfrDesc(), desc.getHwDesc(), desc.getSwDesc()); 210 .getDriver(desc.getMfrDesc(), desc.getHwDesc(), desc.getSwDesc());
209 211
210 if (driver != null && driver.hasBehaviour(OpenFlowSwitchDriver.class)) { 212 if (driver != null && driver.hasBehaviour(OpenFlowSwitchDriver.class)) {
211 - OpenFlowSwitchDriver ofSwitchDriver = driver.createBehaviour(new DefaultDriverHandler( 213 + Dpid did = new Dpid(dpid);
212 - new DefaultDriverData(driver)), OpenFlowSwitchDriver.class); 214 + DefaultDriverHandler handler =
213 - ofSwitchDriver.init(new Dpid(dpid), desc, ofv); 215 + new DefaultDriverHandler(new DefaultDriverData(driver, deviceId(uri(did))));
216 + OpenFlowSwitchDriver ofSwitchDriver =
217 + driver.createBehaviour(handler, OpenFlowSwitchDriver.class);
218 + ofSwitchDriver.init(did, desc, ofv);
214 ofSwitchDriver.setAgent(agent); 219 ofSwitchDriver.setAgent(agent);
215 ofSwitchDriver.setRoleHandler(new RoleManager(ofSwitchDriver)); 220 ofSwitchDriver.setRoleHandler(new RoleManager(ofSwitchDriver));
216 log.info("OpenFlow handshaker found for device {}: {}", dpid, ofSwitchDriver); 221 log.info("OpenFlow handshaker found for device {}: {}", dpid, ofSwitchDriver);
......