Committed by
Gerrit Code Review
Add clusterID info to Null Device ID so that multiple Null Device Providers can …
…run on different nodes without collision. Change-Id: I3c834a5f23f4813b9234beed3ae1c0e93e69360e
Showing
1 changed file
with
11 additions
and
3 deletions
providers/null/device/src/main/java/org/onosproject/provider/nil/device/impl/NullDeviceProvider.java
... | @@ -24,6 +24,7 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -24,6 +24,7 @@ import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Reference; | 24 | import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.onlab.packet.ChassisId; | 26 | import org.onlab.packet.ChassisId; |
27 | +import org.onosproject.cluster.ClusterService; | ||
27 | import org.onosproject.net.Device; | 28 | import org.onosproject.net.Device; |
28 | import org.onosproject.net.DeviceId; | 29 | import org.onosproject.net.DeviceId; |
29 | import org.onosproject.net.MastershipRole; | 30 | import org.onosproject.net.MastershipRole; |
... | @@ -52,13 +53,16 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -52,13 +53,16 @@ import static org.slf4j.LoggerFactory.getLogger; |
52 | 53 | ||
53 | /** | 54 | /** |
54 | * Provider which advertises fake/nonexistant devices to the core. | 55 | * Provider which advertises fake/nonexistant devices to the core. |
56 | + * nodeID is passed as part of the fake device id so that multiple nodes can run simultaneously. | ||
55 | * To be used for benchmarking only. | 57 | * To be used for benchmarking only. |
56 | */ | 58 | */ |
57 | @Component(immediate = true) | 59 | @Component(immediate = true) |
58 | public class NullDeviceProvider extends AbstractProvider implements DeviceProvider { | 60 | public class NullDeviceProvider extends AbstractProvider implements DeviceProvider { |
59 | 61 | ||
60 | private static final Logger log = getLogger(NullDeviceProvider.class); | 62 | private static final Logger log = getLogger(NullDeviceProvider.class); |
61 | - private static final String SCHEME = "null"; | 63 | + |
64 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
65 | + protected ClusterService clusterService; | ||
62 | 66 | ||
63 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 67 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
64 | protected DeviceProviderRegistry providerRegistry; | 68 | protected DeviceProviderRegistry providerRegistry; |
... | @@ -69,8 +73,8 @@ public class NullDeviceProvider extends AbstractProvider implements DeviceProvid | ... | @@ -69,8 +73,8 @@ public class NullDeviceProvider extends AbstractProvider implements DeviceProvid |
69 | namedThreads("null-device-creator")); | 73 | namedThreads("null-device-creator")); |
70 | 74 | ||
71 | 75 | ||
72 | - | ||
73 | //currently hardcoded. will be made configurable via rest/cli. | 76 | //currently hardcoded. will be made configurable via rest/cli. |
77 | + private static final String SCHEME = null; | ||
74 | private static final int NUMDEVICES = 10; | 78 | private static final int NUMDEVICES = 10; |
75 | private static final int NUMPORTSPERDEVICE = 10; | 79 | private static final int NUMPORTSPERDEVICE = 10; |
76 | 80 | ||
... | @@ -156,7 +160,11 @@ public class NullDeviceProvider extends AbstractProvider implements DeviceProvid | ... | @@ -156,7 +160,11 @@ public class NullDeviceProvider extends AbstractProvider implements DeviceProvid |
156 | private void advertiseDevices() { | 160 | private void advertiseDevices() { |
157 | DeviceId did; | 161 | DeviceId did; |
158 | ChassisId cid; | 162 | ChassisId cid; |
159 | - for (int i = 0; i < NUMDEVICES; i++) { | 163 | + |
164 | + // nodeIdHash takes into account for nodeID to avoid collisions when running multi-node providers. | ||
165 | + int nodeIdHash = (clusterService.getLocalNode().hashCode() % NUMDEVICES) * NUMDEVICES; | ||
166 | + | ||
167 | + for (int i = nodeIdHash; i < nodeIdHash + NUMDEVICES; i++) { | ||
160 | did = DeviceId.deviceId(String.format("%s:%d", SCHEME, i)); | 168 | did = DeviceId.deviceId(String.format("%s:%d", SCHEME, i)); |
161 | cid = new ChassisId(i); | 169 | cid = new ChassisId(i); |
162 | DeviceDescription desc = | 170 | DeviceDescription desc = | ... | ... |
-
Please register or login to post a comment