Avantika-Huawei

[ONOS-4166] Use device capapbility set using network config for path computation

Change-Id: I5f904f3838aafd5d1ab21d335043d9cfcdd2bce2
(cherry picked from commit 032a9873)
...@@ -60,6 +60,7 @@ import org.onosproject.incubator.net.tunnel.TunnelListener; ...@@ -60,6 +60,7 @@ import org.onosproject.incubator.net.tunnel.TunnelListener;
60 import org.onosproject.incubator.net.tunnel.TunnelName; 60 import org.onosproject.incubator.net.tunnel.TunnelName;
61 import org.onosproject.incubator.net.tunnel.TunnelService; 61 import org.onosproject.incubator.net.tunnel.TunnelService;
62 import org.onosproject.mastership.MastershipService; 62 import org.onosproject.mastership.MastershipService;
63 +import org.onosproject.net.config.NetworkConfigService;
63 import org.onosproject.net.DefaultAnnotations; 64 import org.onosproject.net.DefaultAnnotations;
64 import org.onosproject.net.DefaultAnnotations.Builder; 65 import org.onosproject.net.DefaultAnnotations.Builder;
65 import org.onosproject.net.Device; 66 import org.onosproject.net.Device;
...@@ -92,6 +93,7 @@ import org.onosproject.pce.pceservice.api.PceService; ...@@ -92,6 +93,7 @@ import org.onosproject.pce.pceservice.api.PceService;
92 import org.onosproject.pce.pcestore.PcePathInfo; 93 import org.onosproject.pce.pcestore.PcePathInfo;
93 import org.onosproject.pce.pcestore.PceccTunnelInfo; 94 import org.onosproject.pce.pcestore.PceccTunnelInfo;
94 import org.onosproject.pce.pcestore.api.PceStore; 95 import org.onosproject.pce.pcestore.api.PceStore;
96 +import org.onosproject.pcep.api.DeviceCapability;
95 import org.onosproject.store.serializers.KryoNamespaces; 97 import org.onosproject.store.serializers.KryoNamespaces;
96 import org.onosproject.store.service.DistributedSet; 98 import org.onosproject.store.service.DistributedSet;
97 import org.onosproject.store.service.Serializer; 99 import org.onosproject.store.service.Serializer;
...@@ -176,6 +178,9 @@ public class PceManager implements PceService { ...@@ -176,6 +178,9 @@ public class PceManager implements PceService {
176 protected DeviceService deviceService; 178 protected DeviceService deviceService;
177 179
178 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 180 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
181 + protected NetworkConfigService netCfgService;
182 +
183 + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
179 protected LabelResourceAdminService labelRsrcAdminService; 184 protected LabelResourceAdminService labelRsrcAdminService;
180 185
181 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 186 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
...@@ -304,6 +309,14 @@ public class PceManager implements PceService { ...@@ -304,6 +309,14 @@ public class PceManager implements PceService {
304 return false; 309 return false;
305 } 310 }
306 311
312 + // Get device config from netconfig, to ascertain that session with ingress is present.
313 + DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(srcLsrId), DeviceCapability.class);
314 + if (cfg == null) {
315 + log.debug("No session to ingress.");
316 + pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
317 + return false;
318 + }
319 +
307 TunnelEndPoint srcEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(srcLsrId)); 320 TunnelEndPoint srcEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(srcLsrId));
308 TunnelEndPoint dstEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(dstLsrId)); 321 TunnelEndPoint dstEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(dstLsrId));
309 322
...@@ -441,7 +454,7 @@ public class PceManager implements PceService { ...@@ -441,7 +454,7 @@ public class PceManager implements PceService {
441 bwConstraintValue = bwConstraint.bandwidth().bps(); 454 bwConstraintValue = bwConstraint.bandwidth().bps();
442 } else if (constraint instanceof CostConstraint) { 455 } else if (constraint instanceof CostConstraint) {
443 costConstraint = (CostConstraint) constraint; 456 costConstraint = (CostConstraint) constraint;
444 - costType = costConstraint.type().name(); 457 + costType = costConstraint.type().name();
445 } 458 }
446 } 459 }
447 460
...@@ -621,7 +634,8 @@ public class PceManager implements PceService { ...@@ -621,7 +634,8 @@ public class PceManager implements PceService {
621 while (it.hasNext() && cost > 0) { 634 while (it.hasNext() && cost > 0) {
622 Constraint constraint = it.next(); 635 Constraint constraint = it.next();
623 if (constraint instanceof CapabilityConstraint) { 636 if (constraint instanceof CapabilityConstraint) {
624 - cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService) ? 1 : -1; 637 + cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService,
638 + netCfgService) ? 1 : -1;
625 } else { 639 } else {
626 cost = constraint.cost(edge.link(), resourceService::isAvailable); 640 cost = constraint.cost(edge.link(), resourceService::isAvailable);
627 } 641 }
......
...@@ -406,6 +406,7 @@ public final class PceccSrTeBeHandler { ...@@ -406,6 +406,7 @@ public final class PceccSrTeBeHandler {
406 406
407 /** 407 /**
408 * Install a rule for pushing unique global labels to the device. 408 * Install a rule for pushing unique global labels to the device.
409 + *
409 * @param deviceId device to which flow should be pushed 410 * @param deviceId device to which flow should be pushed
410 * @param labelId label for the device 411 * @param labelId label for the device
411 * @param type type of operation 412 * @param type type of operation
...@@ -437,6 +438,7 @@ public final class PceccSrTeBeHandler { ...@@ -437,6 +438,7 @@ public final class PceccSrTeBeHandler {
437 438
438 /** 439 /**
439 * Install a rule for pushing node labels to the device of other nodes. 440 * Install a rule for pushing node labels to the device of other nodes.
441 + *
440 * @param deviceId device to which flow should be pushed 442 * @param deviceId device to which flow should be pushed
441 * @param labelId label for the device 443 * @param labelId label for the device
442 * @param ipPrefix device for which label is pushed 444 * @param ipPrefix device for which label is pushed
...@@ -474,7 +476,8 @@ public final class PceccSrTeBeHandler { ...@@ -474,7 +476,8 @@ public final class PceccSrTeBeHandler {
474 } 476 }
475 477
476 /** 478 /**
477 - * Install a rule for pushing Adjacency labels to the device. 479 + * Install a rule for pushing Adjacency labels to the device.
480 + *
478 * @param deviceId device to which flow should be pushed 481 * @param deviceId device to which flow should be pushed
479 * @param labelId label for the adjacency 482 * @param labelId label for the adjacency
480 * @param srcPortNum local port of the adjacency 483 * @param srcPortNum local port of the adjacency
......
...@@ -15,12 +15,14 @@ ...@@ -15,12 +15,14 @@
15 */ 15 */
16 package org.onosproject.pce.pceservice.constraint; 16 package org.onosproject.pce.pceservice.constraint;
17 17
18 -import org.onosproject.net.AnnotationKeys;
19 import org.onosproject.net.Device; 18 import org.onosproject.net.Device;
19 +import org.onosproject.net.DeviceId;
20 import org.onosproject.net.Link; 20 import org.onosproject.net.Link;
21 +import org.onosproject.net.config.NetworkConfigService;
21 import org.onosproject.net.device.DeviceService; 22 import org.onosproject.net.device.DeviceService;
22 import org.onosproject.net.intent.ResourceContext; 23 import org.onosproject.net.intent.ResourceContext;
23 import org.onosproject.net.intent.constraint.BooleanConstraint; 24 import org.onosproject.net.intent.constraint.BooleanConstraint;
25 +import org.onosproject.pcep.api.DeviceCapability;
24 26
25 import java.util.Objects; 27 import java.util.Objects;
26 28
...@@ -32,11 +34,7 @@ import static com.google.common.base.MoreObjects.toStringHelper; ...@@ -32,11 +34,7 @@ import static com.google.common.base.MoreObjects.toStringHelper;
32 public final class CapabilityConstraint extends BooleanConstraint { 34 public final class CapabilityConstraint extends BooleanConstraint {
33 35
34 private final CapabilityType capabilityType; 36 private final CapabilityType capabilityType;
35 - public static final String PCECC_CAPABILITY = "pceccCapability";
36 - public static final String SR_CAPABILITY = "srCapability";
37 - public static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
38 public static final String LSRID = "lsrId"; 37 public static final String LSRID = "lsrId";
39 - public static final String L3 = "L3";
40 public static final String TRUE = "true"; 38 public static final String TRUE = "true";
41 39
42 /** 40 /**
...@@ -117,45 +115,33 @@ public final class CapabilityConstraint extends BooleanConstraint { ...@@ -117,45 +115,33 @@ public final class CapabilityConstraint extends BooleanConstraint {
117 * 115 *
118 * @param link to validate source and destination based on capability constraint 116 * @param link to validate source and destination based on capability constraint
119 * @param deviceService instance of DeviceService 117 * @param deviceService instance of DeviceService
118 + * @param netCfgService instance of NetworkConfigService
120 * @return true if link satisfies capability constraint otherwise false 119 * @return true if link satisfies capability constraint otherwise false
121 */ 120 */
122 - public boolean isValidLink(Link link, DeviceService deviceService) { 121 + public boolean isValidLink(Link link, DeviceService deviceService, NetworkConfigService netCfgService) {
123 - if (deviceService == null) { 122 + if (deviceService == null || netCfgService == null) {
124 return false; 123 return false;
125 } 124 }
126 125
127 Device srcDevice = deviceService.getDevice(link.src().deviceId()); 126 Device srcDevice = deviceService.getDevice(link.src().deviceId());
128 Device dstDevice = deviceService.getDevice(link.dst().deviceId()); 127 Device dstDevice = deviceService.getDevice(link.dst().deviceId());
129 128
130 - //TODO: Usage of annotations are for transient solution. In future will be replaces with the 129 + //TODO: Usage of annotations are for transient solution. In future will be replaced with the
131 // network config service / Projection model. 130 // network config service / Projection model.
132 // L3 device 131 // L3 device
133 - if (srcDevice == null 132 + if (srcDevice == null || dstDevice == null) {
134 - || dstDevice == null
135 - || srcDevice.annotations().value(AnnotationKeys.TYPE) == null
136 - || dstDevice.annotations().value(AnnotationKeys.TYPE) == null
137 - || !srcDevice.annotations().value(AnnotationKeys.TYPE).equals(L3)
138 - || !dstDevice.annotations().value(AnnotationKeys.TYPE).equals(L3)) {
139 return false; 133 return false;
140 } 134 }
141 135
142 - String scrLsrId = srcDevice.annotations().value(LSRID); 136 + String srcLsrId = srcDevice.annotations().value(LSRID);
143 String dstLsrId = dstDevice.annotations().value(LSRID); 137 String dstLsrId = dstDevice.annotations().value(LSRID);
144 138
145 - Device srcCapDevice = null; 139 + DeviceCapability srcDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(srcLsrId),
146 - Device dstCapDevice = null; 140 + DeviceCapability.class);
147 - 141 + DeviceCapability dstDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(dstLsrId),
148 - // Get Capability device 142 + DeviceCapability.class);
149 - Iterable<Device> devices = deviceService.getAvailableDevices();
150 - for (Device dev : devices) {
151 - if (dev.annotations().value(LSRID).equals(scrLsrId)) {
152 - srcCapDevice = dev;
153 - } else if (dev.annotations().value(LSRID).equals(dstLsrId)) {
154 - dstCapDevice = dev;
155 - }
156 - }
157 143
158 - if (srcCapDevice == null || dstCapDevice == null) { 144 + if (srcDeviceConfig == null || dstDeviceConfig == null) {
159 return false; 145 return false;
160 } 146 }
161 147
...@@ -163,23 +149,11 @@ public final class CapabilityConstraint extends BooleanConstraint { ...@@ -163,23 +149,11 @@ public final class CapabilityConstraint extends BooleanConstraint {
163 case WITH_SIGNALLING: 149 case WITH_SIGNALLING:
164 return true; 150 return true;
165 case WITHOUT_SIGNALLING_AND_WITHOUT_SR: 151 case WITHOUT_SIGNALLING_AND_WITHOUT_SR:
166 - if (srcCapDevice.annotations().value(PCECC_CAPABILITY) != null 152 + return srcDeviceConfig.localLabelCap() && dstDeviceConfig.localLabelCap();
167 - && dstCapDevice.annotations().value(PCECC_CAPABILITY) != null) { 153 +
168 - return srcCapDevice.annotations().value(PCECC_CAPABILITY).equals(TRUE)
169 - && dstCapDevice.annotations().value(PCECC_CAPABILITY).equals(TRUE);
170 - }
171 - return false;
172 case SR_WITHOUT_SIGNALLING: 154 case SR_WITHOUT_SIGNALLING:
173 - if (srcCapDevice.annotations().value(LABEL_STACK_CAPABILITY) != null 155 + return srcDeviceConfig.srCap() && dstDeviceConfig.srCap()
174 - && dstCapDevice.annotations().value(LABEL_STACK_CAPABILITY) != null 156 + && srcDeviceConfig.labelStackCap() && dstDeviceConfig.labelStackCap();
175 - && srcCapDevice.annotations().value(SR_CAPABILITY) != null
176 - && dstCapDevice.annotations().value(SR_CAPABILITY) != null) {
177 - return srcCapDevice.annotations().value(LABEL_STACK_CAPABILITY).equals(TRUE)
178 - && dstCapDevice.annotations().value(LABEL_STACK_CAPABILITY).equals(TRUE)
179 - && srcCapDevice.annotations().value(SR_CAPABILITY).equals(TRUE)
180 - && dstCapDevice.annotations().value(SR_CAPABILITY).equals(TRUE);
181 - }
182 - return false;
183 default: 157 default:
184 return false; 158 return false;
185 } 159 }
......
...@@ -40,6 +40,10 @@ import org.onosproject.net.PortNumber; ...@@ -40,6 +40,10 @@ import org.onosproject.net.PortNumber;
40 import org.onosproject.net.intent.Constraint; 40 import org.onosproject.net.intent.Constraint;
41 import org.onosproject.net.intent.IntentId; 41 import org.onosproject.net.intent.IntentId;
42 import org.onosproject.net.Device.Type; 42 import org.onosproject.net.Device.Type;
43 +import org.onosproject.net.config.Config;
44 +import org.onosproject.net.config.ConfigApplyDelegate;
45 +import org.onosproject.net.config.ConfigFactory;
46 +import org.onosproject.net.config.NetworkConfigRegistryAdapter;
43 import org.onosproject.net.intent.constraint.BandwidthConstraint; 47 import org.onosproject.net.intent.constraint.BandwidthConstraint;
44 import org.onosproject.net.device.DeviceServiceAdapter; 48 import org.onosproject.net.device.DeviceServiceAdapter;
45 import org.onosproject.net.resource.ContinuousResource; 49 import org.onosproject.net.resource.ContinuousResource;
...@@ -60,7 +64,11 @@ import org.onosproject.net.topology.TopologyVertex; ...@@ -60,7 +64,11 @@ import org.onosproject.net.topology.TopologyVertex;
60 import org.onosproject.pce.pceservice.constraint.CapabilityConstraint; 64 import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
61 import org.onosproject.pce.pceservice.constraint.CostConstraint; 65 import org.onosproject.pce.pceservice.constraint.CostConstraint;
62 import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint; 66 import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint;
63 - 67 +import org.onosproject.pcep.api.DeviceCapability;
68 +import com.fasterxml.jackson.databind.JsonNode;
69 +import com.fasterxml.jackson.databind.ObjectMapper;
70 +import com.fasterxml.jackson.databind.node.JsonNodeFactory;
71 +import com.fasterxml.jackson.databind.node.ObjectNode;
64 import com.google.common.collect.ImmutableList; 72 import com.google.common.collect.ImmutableList;
65 import com.google.common.collect.ImmutableSet; 73 import com.google.common.collect.ImmutableSet;
66 74
...@@ -94,6 +102,7 @@ public class PathComputationTest { ...@@ -94,6 +102,7 @@ public class PathComputationTest {
94 102
95 private final MockPathResourceService resourceService = new MockPathResourceService(); 103 private final MockPathResourceService resourceService = new MockPathResourceService();
96 private final MockDeviceService deviceService = new MockDeviceService(); 104 private final MockDeviceService deviceService = new MockDeviceService();
105 + private final MockNetConfigRegistryAdapter netConfigRegistry = new MockNetConfigRegistryAdapter();
97 private PceManager pceManager = new PceManager(); 106 private PceManager pceManager = new PceManager();
98 public static ProviderId providerId = new ProviderId("pce", "foo"); 107 public static ProviderId providerId = new ProviderId("pce", "foo");
99 public static final String DEVICE1 = "D001"; 108 public static final String DEVICE1 = "D001";
...@@ -123,6 +132,7 @@ public class PathComputationTest { ...@@ -123,6 +132,7 @@ public class PathComputationTest {
123 public void startUp() { 132 public void startUp() {
124 pceManager.resourceService = resourceService; 133 pceManager.resourceService = resourceService;
125 pceManager.deviceService = deviceService; 134 pceManager.deviceService = deviceService;
135 + pceManager.netCfgService = netConfigRegistry;
126 } 136 }
127 137
128 /** 138 /**
...@@ -164,6 +174,7 @@ public class PathComputationTest { ...@@ -164,6 +174,7 @@ public class PathComputationTest {
164 public void tearDown() { 174 public void tearDown() {
165 pceManager.resourceService = null; 175 pceManager.resourceService = null;
166 pceManager.deviceService = null; 176 pceManager.deviceService = null;
177 + pceManager.netCfgService = null;
167 } 178 }
168 179
169 /** 180 /**
...@@ -234,6 +245,7 @@ public class PathComputationTest { ...@@ -234,6 +245,7 @@ public class PathComputationTest {
234 } 245 }
235 } 246 }
236 247
248 + @Override
237 public double weight(TopologyEdge edge) { 249 public double weight(TopologyEdge edge) {
238 if (!constraints.iterator().hasNext()) { 250 if (!constraints.iterator().hasNext()) {
239 //Takes default cost/hopcount as 1 if no constraints specified 251 //Takes default cost/hopcount as 1 if no constraints specified
...@@ -247,7 +259,8 @@ public class PathComputationTest { ...@@ -247,7 +259,8 @@ public class PathComputationTest {
247 while (it.hasNext() && cost > 0) { 259 while (it.hasNext() && cost > 0) {
248 Constraint constraint = it.next(); 260 Constraint constraint = it.next();
249 if (constraint instanceof CapabilityConstraint) { 261 if (constraint instanceof CapabilityConstraint) {
250 - cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService) ? 1 : -1; 262 + cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService,
263 + netConfigRegistry) ? 1 : -1;
251 } else { 264 } else {
252 cost = constraint.cost(edge.link(), resourceService::isAvailable); 265 cost = constraint.cost(edge.link(), resourceService::isAvailable);
253 } 266 }
...@@ -346,6 +359,63 @@ public class PathComputationTest { ...@@ -346,6 +359,63 @@ public class PathComputationTest {
346 } 359 }
347 } 360 }
348 361
362 + /* Mock test for network config registry. */
363 + public static class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
364 + private ConfigFactory cfgFactory;
365 + private Map<DeviceId, DeviceCapability> classConfig = new HashMap<>();
366 +
367 + @Override
368 + public void registerConfigFactory(ConfigFactory configFactory) {
369 + cfgFactory = configFactory;
370 + }
371 +
372 + @Override
373 + public void unregisterConfigFactory(ConfigFactory configFactory) {
374 + cfgFactory = null;
375 + }
376 +
377 + @Override
378 + public <S, C extends Config<S>> C addConfig(S subject, Class<C> configClass) {
379 + if (configClass == DeviceCapability.class) {
380 + DeviceCapability devCap = new DeviceCapability();
381 + classConfig.put((DeviceId) subject, devCap);
382 +
383 + JsonNode node = new ObjectNode(new MockJsonNode());
384 + ObjectMapper mapper = new ObjectMapper();
385 + ConfigApplyDelegate delegate = new InternalApplyDelegate();
386 + devCap.init((DeviceId) subject, null, node, mapper, delegate);
387 + return (C) devCap;
388 + }
389 +
390 + return null;
391 + }
392 +
393 + @Override
394 + public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
395 + classConfig.remove(subject);
396 + }
397 +
398 + @Override
399 + public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
400 + if (configClass == DeviceCapability.class) {
401 + return (C) classConfig.get(subject);
402 + }
403 + return null;
404 + }
405 +
406 + private class MockJsonNode extends JsonNodeFactory {
407 + }
408 +
409 + // Auxiliary delegate to receive notifications about changes applied to
410 + // the network configuration - by the apps.
411 + private class InternalApplyDelegate implements ConfigApplyDelegate {
412 + @Override
413 + public void onApply(Config config) {
414 + //configs.put(config.subject(), config.node());
415 + }
416 + }
417 + }
418 +
349 /** 419 /**
350 * All links with different costs with L1-L2 as least cost path. 420 * All links with different costs with L1-L2 as least cost path.
351 */ 421 */
...@@ -614,24 +684,48 @@ public class PathComputationTest { ...@@ -614,24 +684,48 @@ public class PathComputationTest {
614 builder.set(LSRID, "1.1.1.1"); 684 builder.set(LSRID, "1.1.1.1");
615 addDevice(DEVICE1, builder); 685 addDevice(DEVICE1, builder);
616 686
687 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
688 + device1Cap.setLabelStackCap(false)
689 + .setLocalLabelCap(false)
690 + .setSrCap(false)
691 + .apply();
692 +
617 //Device2 693 //Device2
618 builder = DefaultAnnotations.builder(); 694 builder = DefaultAnnotations.builder();
619 builder.set(AnnotationKeys.TYPE, L3); 695 builder.set(AnnotationKeys.TYPE, L3);
620 builder.set(LSRID, "2.2.2.2"); 696 builder.set(LSRID, "2.2.2.2");
621 addDevice(DEVICE2, builder); 697 addDevice(DEVICE2, builder);
622 698
699 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
700 + device2Cap.setLabelStackCap(false)
701 + .setLocalLabelCap(false)
702 + .setSrCap(false)
703 + .apply();
704 +
623 //Device3 705 //Device3
624 builder = DefaultAnnotations.builder(); 706 builder = DefaultAnnotations.builder();
625 builder.set(AnnotationKeys.TYPE, L3); 707 builder.set(AnnotationKeys.TYPE, L3);
626 builder.set(LSRID, "3.3.3.3"); 708 builder.set(LSRID, "3.3.3.3");
627 addDevice(DEVICE3, builder); 709 addDevice(DEVICE3, builder);
628 710
711 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
712 + device3Cap.setLabelStackCap(false)
713 + .setLocalLabelCap(false)
714 + .setSrCap(false)
715 + .apply();
716 +
629 //Device4 717 //Device4
630 builder = DefaultAnnotations.builder(); 718 builder = DefaultAnnotations.builder();
631 builder.set(AnnotationKeys.TYPE, L3); 719 builder.set(AnnotationKeys.TYPE, L3);
632 builder.set(LSRID, "4.4.4.4"); 720 builder.set(LSRID, "4.4.4.4");
633 addDevice(DEVICE4, builder); 721 addDevice(DEVICE4, builder);
634 722
723 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
724 + device4Cap.setLabelStackCap(false)
725 + .setLocalLabelCap(false)
726 + .setSrCap(false)
727 + .apply();
728 +
635 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 729 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
636 730
637 List<Link> links = new LinkedList<>(); 731 List<Link> links = new LinkedList<>();
...@@ -663,32 +757,44 @@ public class PathComputationTest { ...@@ -663,32 +757,44 @@ public class PathComputationTest {
663 builder.set(AnnotationKeys.TYPE, L3); 757 builder.set(AnnotationKeys.TYPE, L3);
664 builder.set(LSRID, "1.1.1.1"); 758 builder.set(LSRID, "1.1.1.1");
665 addDevice(DEVICE1, builder); 759 addDevice(DEVICE1, builder);
666 - builder.set(PCECC_CAPABILITY, "true"); 760 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
667 - addDevice(PCEPDEVICE1, builder); 761 + device1Cap.setLabelStackCap(false)
762 + .setLocalLabelCap(true)
763 + .setSrCap(false)
764 + .apply();
668 765
669 //Device2 766 //Device2
670 builder = DefaultAnnotations.builder(); 767 builder = DefaultAnnotations.builder();
671 builder.set(AnnotationKeys.TYPE, L3); 768 builder.set(AnnotationKeys.TYPE, L3);
672 builder.set(LSRID, "2.2.2.2"); 769 builder.set(LSRID, "2.2.2.2");
673 addDevice(DEVICE2, builder); 770 addDevice(DEVICE2, builder);
674 - builder.set(PCECC_CAPABILITY, "true"); 771 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
675 - addDevice(PCEPDEVICE2, builder); 772 + device2Cap.setLabelStackCap(false)
773 + .setLocalLabelCap(true)
774 + .setSrCap(false)
775 + .apply();
676 776
677 //Device3 777 //Device3
678 builder = DefaultAnnotations.builder(); 778 builder = DefaultAnnotations.builder();
679 builder.set(AnnotationKeys.TYPE, L3); 779 builder.set(AnnotationKeys.TYPE, L3);
680 builder.set(LSRID, "3.3.3.3"); 780 builder.set(LSRID, "3.3.3.3");
681 addDevice(DEVICE3, builder); 781 addDevice(DEVICE3, builder);
682 - builder.set(PCECC_CAPABILITY, "true"); 782 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
683 - addDevice(PCEPDEVICE3, builder); 783 + device3Cap.setLabelStackCap(false)
784 + .setLocalLabelCap(true)
785 + .setSrCap(false)
786 + .apply();
684 787
685 //Device4 788 //Device4
686 builder = DefaultAnnotations.builder(); 789 builder = DefaultAnnotations.builder();
687 builder.set(AnnotationKeys.TYPE, L3); 790 builder.set(AnnotationKeys.TYPE, L3);
688 builder.set(LSRID, "4.4.4.4"); 791 builder.set(LSRID, "4.4.4.4");
689 addDevice(DEVICE4, builder); 792 addDevice(DEVICE4, builder);
690 - builder.set(PCECC_CAPABILITY, "true"); 793 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
691 - addDevice(PCEPDEVICE4, builder); 794 + device4Cap.setLabelStackCap(false)
795 + .setLocalLabelCap(true)
796 + .setSrCap(false)
797 + .apply();
692 798
693 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 799 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
694 800
...@@ -721,36 +827,44 @@ public class PathComputationTest { ...@@ -721,36 +827,44 @@ public class PathComputationTest {
721 builder.set(AnnotationKeys.TYPE, L3); 827 builder.set(AnnotationKeys.TYPE, L3);
722 builder.set(LSRID, "1.1.1.1"); 828 builder.set(LSRID, "1.1.1.1");
723 addDevice(DEVICE1, builder); 829 addDevice(DEVICE1, builder);
724 - builder.set(SR_CAPABILITY, "true"); 830 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
725 - builder.set(LABEL_STACK_CAPABILITY, "true"); 831 + device1Cap.setLabelStackCap(true)
726 - addDevice(PCEPDEVICE1, builder); 832 + .setLocalLabelCap(false)
833 + .setSrCap(true)
834 + .apply();
727 835
728 //Device2 836 //Device2
729 builder = DefaultAnnotations.builder(); 837 builder = DefaultAnnotations.builder();
730 builder.set(AnnotationKeys.TYPE, L3); 838 builder.set(AnnotationKeys.TYPE, L3);
731 builder.set(LSRID, "2.2.2.2"); 839 builder.set(LSRID, "2.2.2.2");
732 addDevice(DEVICE2, builder); 840 addDevice(DEVICE2, builder);
733 - builder.set(SR_CAPABILITY, "true"); 841 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
734 - builder.set(LABEL_STACK_CAPABILITY, "true"); 842 + device2Cap.setLabelStackCap(true)
735 - addDevice(PCEPDEVICE2, builder); 843 + .setLocalLabelCap(false)
844 + .setSrCap(true)
845 + .apply();
736 846
737 //Device3 847 //Device3
738 builder = DefaultAnnotations.builder(); 848 builder = DefaultAnnotations.builder();
739 builder.set(AnnotationKeys.TYPE, L3); 849 builder.set(AnnotationKeys.TYPE, L3);
740 builder.set(LSRID, "3.3.3.3"); 850 builder.set(LSRID, "3.3.3.3");
741 addDevice(DEVICE3, builder); 851 addDevice(DEVICE3, builder);
742 - builder.set(SR_CAPABILITY, "true"); 852 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
743 - builder.set(LABEL_STACK_CAPABILITY, "true"); 853 + device3Cap.setLabelStackCap(true)
744 - addDevice(PCEPDEVICE3, builder); 854 + .setLocalLabelCap(false)
855 + .setSrCap(true)
856 + .apply();
745 857
746 //Device4 858 //Device4
747 builder = DefaultAnnotations.builder(); 859 builder = DefaultAnnotations.builder();
748 builder.set(AnnotationKeys.TYPE, L3); 860 builder.set(AnnotationKeys.TYPE, L3);
749 builder.set(LSRID, "4.4.4.4"); 861 builder.set(LSRID, "4.4.4.4");
750 addDevice(DEVICE4, builder); 862 addDevice(DEVICE4, builder);
751 - builder.set(SR_CAPABILITY, "true"); 863 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
752 - builder.set(LABEL_STACK_CAPABILITY, "true"); 864 + device4Cap.setLabelStackCap(true)
753 - addDevice(PCEPDEVICE4, builder); 865 + .setLocalLabelCap(false)
866 + .setSrCap(true)
867 + .apply();
754 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 868 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
755 869
756 List<Link> links = new LinkedList<>(); 870 List<Link> links = new LinkedList<>();
...@@ -783,36 +897,45 @@ public class PathComputationTest { ...@@ -783,36 +897,45 @@ public class PathComputationTest {
783 builder.set(AnnotationKeys.TYPE, L3); 897 builder.set(AnnotationKeys.TYPE, L3);
784 builder.set(LSRID, "1.1.1.1"); 898 builder.set(LSRID, "1.1.1.1");
785 addDevice(DEVICE1, builder); 899 addDevice(DEVICE1, builder);
786 - builder.set(SR_CAPABILITY, "true"); 900 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
787 - builder.set(LABEL_STACK_CAPABILITY, "true"); 901 + device1Cap.setLabelStackCap(true)
788 - addDevice(PCEPDEVICE1, builder); 902 + .setLocalLabelCap(false)
903 + .setSrCap(true)
904 + .apply();
789 905
790 //Device2 906 //Device2
791 builder = DefaultAnnotations.builder(); 907 builder = DefaultAnnotations.builder();
792 builder.set(AnnotationKeys.TYPE, L3); 908 builder.set(AnnotationKeys.TYPE, L3);
793 builder.set(LSRID, "2.2.2.2"); 909 builder.set(LSRID, "2.2.2.2");
794 addDevice(DEVICE2, builder); 910 addDevice(DEVICE2, builder);
795 - builder.set(SR_CAPABILITY, "true"); 911 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
796 - builder.set(LABEL_STACK_CAPABILITY, "true"); 912 + device2Cap.setLabelStackCap(true)
797 - addDevice(PCEPDEVICE2, builder); 913 + .setLocalLabelCap(false)
914 + .setSrCap(true)
915 + .apply();
798 916
799 //Device3 917 //Device3
800 builder = DefaultAnnotations.builder(); 918 builder = DefaultAnnotations.builder();
801 builder.set(AnnotationKeys.TYPE, L3); 919 builder.set(AnnotationKeys.TYPE, L3);
802 builder.set(LSRID, "3.3.3.3"); 920 builder.set(LSRID, "3.3.3.3");
803 addDevice(DEVICE3, builder); 921 addDevice(DEVICE3, builder);
804 - builder.set(SR_CAPABILITY, "true"); 922 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
805 - builder.set(LABEL_STACK_CAPABILITY, "true"); 923 + device3Cap.setLabelStackCap(true)
806 - addDevice(PCEPDEVICE3, builder); 924 + .setLocalLabelCap(false)
925 + .setSrCap(true)
926 + .apply();
807 927
808 //Device4 928 //Device4
809 builder = DefaultAnnotations.builder(); 929 builder = DefaultAnnotations.builder();
810 builder.set(AnnotationKeys.TYPE, L3); 930 builder.set(AnnotationKeys.TYPE, L3);
811 builder.set(LSRID, "4.4.4.4"); 931 builder.set(LSRID, "4.4.4.4");
812 addDevice(DEVICE4, builder); 932 addDevice(DEVICE4, builder);
813 - builder.set(SR_CAPABILITY, "true"); 933 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
814 - builder.set(LABEL_STACK_CAPABILITY, "true"); 934 + device4Cap.setLabelStackCap(true)
815 - addDevice(PCEPDEVICE4, builder); 935 + .setLocalLabelCap(false)
936 + .setSrCap(true)
937 + .apply();
938 +
816 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 939 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
817 940
818 List<Link> links = new LinkedList<>(); 941 List<Link> links = new LinkedList<>();
...@@ -842,36 +965,45 @@ public class PathComputationTest { ...@@ -842,36 +965,45 @@ public class PathComputationTest {
842 builder.set(AnnotationKeys.TYPE, L3); 965 builder.set(AnnotationKeys.TYPE, L3);
843 builder.set(LSRID, "1.1.1.1"); 966 builder.set(LSRID, "1.1.1.1");
844 addDevice(DEVICE1, builder); 967 addDevice(DEVICE1, builder);
845 - builder.set(SR_CAPABILITY, "true"); 968 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
846 - builder.set(LABEL_STACK_CAPABILITY, "true"); 969 + device1Cap.setLabelStackCap(true)
847 - addDevice(PCEPDEVICE1, builder); 970 + .setLocalLabelCap(false)
971 + .setSrCap(true)
972 + .apply();
848 973
849 //Device2 974 //Device2
850 builder = DefaultAnnotations.builder(); 975 builder = DefaultAnnotations.builder();
851 builder.set(AnnotationKeys.TYPE, L3); 976 builder.set(AnnotationKeys.TYPE, L3);
852 builder.set(LSRID, "2.2.2.2"); 977 builder.set(LSRID, "2.2.2.2");
853 addDevice(DEVICE2, builder); 978 addDevice(DEVICE2, builder);
854 - builder.set(SR_CAPABILITY, "true"); 979 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
855 - builder.set(LABEL_STACK_CAPABILITY, "true"); 980 + device2Cap.setLabelStackCap(true)
856 - addDevice(PCEPDEVICE2, builder); 981 + .setLocalLabelCap(false)
982 + .setSrCap(true)
983 + .apply();
857 984
858 //Device3 985 //Device3
859 builder = DefaultAnnotations.builder(); 986 builder = DefaultAnnotations.builder();
860 builder.set(AnnotationKeys.TYPE, L3); 987 builder.set(AnnotationKeys.TYPE, L3);
861 builder.set(LSRID, "3.3.3.3"); 988 builder.set(LSRID, "3.3.3.3");
862 addDevice(DEVICE3, builder); 989 addDevice(DEVICE3, builder);
863 - builder.set(SR_CAPABILITY, "true"); 990 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
864 - builder.set(LABEL_STACK_CAPABILITY, "true"); 991 + device3Cap.setLabelStackCap(true)
865 - addDevice(PCEPDEVICE3, builder); 992 + .setLocalLabelCap(false)
993 + .setSrCap(true)
994 + .apply();
866 995
867 //Device4 996 //Device4
868 builder = DefaultAnnotations.builder(); 997 builder = DefaultAnnotations.builder();
869 builder.set(AnnotationKeys.TYPE, L3); 998 builder.set(AnnotationKeys.TYPE, L3);
870 builder.set(LSRID, "4.4.4.4"); 999 builder.set(LSRID, "4.4.4.4");
871 addDevice(DEVICE4, builder); 1000 addDevice(DEVICE4, builder);
872 - builder.set(SR_CAPABILITY, "true"); 1001 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
873 - builder.set(LABEL_STACK_CAPABILITY, "true"); 1002 + device4Cap.setLabelStackCap(true)
874 - addDevice(PCEPDEVICE4, builder); 1003 + .setLocalLabelCap(false)
1004 + .setSrCap(true)
1005 + .apply();
1006 +
875 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 1007 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
876 1008
877 List<Link> links = new LinkedList<>(); 1009 List<Link> links = new LinkedList<>();
...@@ -969,24 +1101,33 @@ public class PathComputationTest { ...@@ -969,24 +1101,33 @@ public class PathComputationTest {
969 builder.set(AnnotationKeys.TYPE, L3); 1101 builder.set(AnnotationKeys.TYPE, L3);
970 builder.set(LSRID, "1.1.1.1"); 1102 builder.set(LSRID, "1.1.1.1");
971 addDevice(DEVICE1, builder); 1103 addDevice(DEVICE1, builder);
972 - builder.set(PCECC_CAPABILITY, "true"); 1104 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
973 - addDevice(PCEPDEVICE1, builder); 1105 + device1Cap.setLabelStackCap(false)
1106 + .setLocalLabelCap(true)
1107 + .setSrCap(false)
1108 + .apply();
974 1109
975 //Device2 1110 //Device2
976 builder = DefaultAnnotations.builder(); 1111 builder = DefaultAnnotations.builder();
977 builder.set(AnnotationKeys.TYPE, L3); 1112 builder.set(AnnotationKeys.TYPE, L3);
978 builder.set(LSRID, "2.2.2.2"); 1113 builder.set(LSRID, "2.2.2.2");
979 addDevice(DEVICE2, builder); 1114 addDevice(DEVICE2, builder);
980 - builder.set(PCECC_CAPABILITY, "true"); 1115 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
981 - addDevice(PCEPDEVICE2, builder); 1116 + device2Cap.setLabelStackCap(false)
1117 + .setLocalLabelCap(true)
1118 + .setSrCap(false)
1119 + .apply();
982 1120
983 //Device4 1121 //Device4
984 builder = DefaultAnnotations.builder(); 1122 builder = DefaultAnnotations.builder();
985 builder.set(AnnotationKeys.TYPE, L3); 1123 builder.set(AnnotationKeys.TYPE, L3);
986 builder.set(LSRID, "4.4.4.4"); 1124 builder.set(LSRID, "4.4.4.4");
987 addDevice(DEVICE4, builder); 1125 addDevice(DEVICE4, builder);
988 - builder.set(PCECC_CAPABILITY, "true"); 1126 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
989 - addDevice(PCEPDEVICE4, builder); 1127 + device4Cap.setLabelStackCap(false)
1128 + .setLocalLabelCap(true)
1129 + .setSrCap(false)
1130 + .apply();
990 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 1131 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
991 1132
992 List<Link> links = new LinkedList<>(); 1133 List<Link> links = new LinkedList<>();
...@@ -1019,24 +1160,33 @@ public class PathComputationTest { ...@@ -1019,24 +1160,33 @@ public class PathComputationTest {
1019 builder.set(AnnotationKeys.TYPE, L3); 1160 builder.set(AnnotationKeys.TYPE, L3);
1020 builder.set(LSRID, "1.1.1.1"); 1161 builder.set(LSRID, "1.1.1.1");
1021 addDevice(DEVICE2, builder); 1162 addDevice(DEVICE2, builder);
1022 - builder.set(PCECC_CAPABILITY, "true"); 1163 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
1023 - addDevice(PCEPDEVICE1, builder); 1164 + device1Cap.setLabelStackCap(false)
1165 + .setLocalLabelCap(true)
1166 + .setSrCap(false)
1167 + .apply();
1024 1168
1025 //Device2 1169 //Device2
1026 builder = DefaultAnnotations.builder(); 1170 builder = DefaultAnnotations.builder();
1027 builder.set(AnnotationKeys.TYPE, L3); 1171 builder.set(AnnotationKeys.TYPE, L3);
1028 builder.set(LSRID, "2.2.2.2"); 1172 builder.set(LSRID, "2.2.2.2");
1029 addDevice(DEVICE2, builder); 1173 addDevice(DEVICE2, builder);
1030 - builder.set(PCECC_CAPABILITY, "true"); 1174 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
1031 - addDevice(PCEPDEVICE2, builder); 1175 + device2Cap.setLabelStackCap(false)
1176 + .setLocalLabelCap(true)
1177 + .setSrCap(false)
1178 + .apply();
1032 1179
1033 //Device4 1180 //Device4
1034 builder = DefaultAnnotations.builder(); 1181 builder = DefaultAnnotations.builder();
1035 builder.set(AnnotationKeys.TYPE, L3); 1182 builder.set(AnnotationKeys.TYPE, L3);
1036 builder.set(LSRID, "4.4.4.4"); 1183 builder.set(LSRID, "4.4.4.4");
1037 addDevice(DEVICE4, builder); 1184 addDevice(DEVICE4, builder);
1038 - builder.set(PCECC_CAPABILITY, "true"); 1185 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
1039 - addDevice(PCEPDEVICE4, builder); 1186 + device4Cap.setLabelStackCap(false)
1187 + .setLocalLabelCap(true)
1188 + .setSrCap(false)
1189 + .apply();
1040 Set<Path> paths = computePath(link1, link2, link3, link4, constraints); 1190 Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
1041 1191
1042 assertThat(paths, is(new HashSet<>())); 1192 assertThat(paths, is(new HashSet<>()));
......
...@@ -102,12 +102,14 @@ import org.onosproject.net.topology.TopologyGraph; ...@@ -102,12 +102,14 @@ import org.onosproject.net.topology.TopologyGraph;
102 import org.onosproject.net.topology.TopologyListener; 102 import org.onosproject.net.topology.TopologyListener;
103 import org.onosproject.net.topology.TopologyServiceAdapter; 103 import org.onosproject.net.topology.TopologyServiceAdapter;
104 import org.onosproject.net.topology.TopologyVertex; 104 import org.onosproject.net.topology.TopologyVertex;
105 +import org.onosproject.pce.pceservice.PathComputationTest.MockNetConfigRegistryAdapter;
105 import org.onosproject.pce.pceservice.PathComputationTest.MockPathResourceService; 106 import org.onosproject.pce.pceservice.PathComputationTest.MockPathResourceService;
106 import org.onosproject.pce.pceservice.constraint.CostConstraint; 107 import org.onosproject.pce.pceservice.constraint.CostConstraint;
107 import org.onosproject.pce.pcestore.api.PceStore; 108 import org.onosproject.pce.pcestore.api.PceStore;
108 import org.onosproject.pce.util.LabelResourceAdapter; 109 import org.onosproject.pce.util.LabelResourceAdapter;
109 import org.onosproject.pce.util.PceStoreAdapter; 110 import org.onosproject.pce.util.PceStoreAdapter;
110 import org.onosproject.pce.util.TunnelServiceAdapter; 111 import org.onosproject.pce.util.TunnelServiceAdapter;
112 +import org.onosproject.pcep.api.DeviceCapability;
111 import org.onosproject.pce.util.FlowObjServiceAdapter; 113 import org.onosproject.pce.util.FlowObjServiceAdapter;
112 import org.onosproject.store.service.TestStorageService; 114 import org.onosproject.store.service.TestStorageService;
113 115
...@@ -130,6 +132,7 @@ public class PceManagerTest { ...@@ -130,6 +132,7 @@ public class PceManagerTest {
130 private TestStorageService storageService = new TestStorageService(); 132 private TestStorageService storageService = new TestStorageService();
131 private PacketService packetService = new MockPacketService(); 133 private PacketService packetService = new MockPacketService();
132 private MockDeviceService deviceService = new MockDeviceService(); 134 private MockDeviceService deviceService = new MockDeviceService();
135 + private MockNetConfigRegistryAdapter netConfigRegistry = new PathComputationTest.MockNetConfigRegistryAdapter();
133 private MockFlowObjService flowObjectiveService = new MockFlowObjService(); 136 private MockFlowObjService flowObjectiveService = new MockFlowObjService();
134 private PceStore pceStore = new PceStoreAdapter(); 137 private PceStore pceStore = new PceStoreAdapter();
135 private LabelResourceService labelResourceService = new LabelResourceAdapter(); 138 private LabelResourceService labelResourceService = new LabelResourceAdapter();
...@@ -137,13 +140,9 @@ public class PceManagerTest { ...@@ -137,13 +140,9 @@ public class PceManagerTest {
137 public static ProviderId providerId = new ProviderId("pce", "foo"); 140 public static ProviderId providerId = new ProviderId("pce", "foo");
138 private static final String L3 = "L3"; 141 private static final String L3 = "L3";
139 private static final String LSRID = "lsrId"; 142 private static final String LSRID = "lsrId";
140 - private static final String PCECC_CAPABILITY = "pceccCapability";
141 - private static final String SR_CAPABILITY = "srCapability";
142 - private static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
143 143
144 private TopologyGraph graph = null; 144 private TopologyGraph graph = null;
145 private Device deviceD1, deviceD2, deviceD3, deviceD4; 145 private Device deviceD1, deviceD2, deviceD3, deviceD4;
146 - private Device pcepDeviceD1, pcepDeviceD2, pcepDeviceD3, pcepDeviceD4;
147 private Link link1, link2, link3, link4; 146 private Link link1, link2, link3, link4;
148 protected static int flowsDownloaded; 147 protected static int flowsDownloaded;
149 private TunnelListener tunnelListener; 148 private TunnelListener tunnelListener;
...@@ -163,6 +162,7 @@ public class PceManagerTest { ...@@ -163,6 +162,7 @@ public class PceManagerTest {
163 pceManager.storageService = storageService; 162 pceManager.storageService = storageService;
164 pceManager.packetService = packetService; 163 pceManager.packetService = packetService;
165 pceManager.deviceService = deviceService; 164 pceManager.deviceService = deviceService;
165 + pceManager.netCfgService = netConfigRegistry;
166 pceManager.labelRsrcService = labelResourceService; 166 pceManager.labelRsrcService = labelResourceService;
167 pceManager.flowObjectiveService = flowObjectiveService; 167 pceManager.flowObjectiveService = flowObjectiveService;
168 pceManager.pceStore = pceStore; 168 pceManager.pceStore = pceStore;
...@@ -231,27 +231,6 @@ public class PceManagerTest { ...@@ -231,27 +231,6 @@ public class PceManagerTest {
231 builderDev4.set(AnnotationKeys.TYPE, L3); 231 builderDev4.set(AnnotationKeys.TYPE, L3);
232 builderDev4.set(LSRID, "4.4.4.4"); 232 builderDev4.set(LSRID, "4.4.4.4");
233 233
234 - if (setSrCap) {
235 - builderDev1.set(SR_CAPABILITY, "true");
236 - builderDev2.set(SR_CAPABILITY, "true");
237 - builderDev3.set(SR_CAPABILITY, "true");
238 - builderDev4.set(SR_CAPABILITY, "true");
239 - }
240 -
241 - if (setPceccCap) {
242 - builderDev1.set(PCECC_CAPABILITY, "true");
243 - builderDev2.set(PCECC_CAPABILITY, "true");
244 - builderDev3.set(PCECC_CAPABILITY, "true");
245 - builderDev4.set(PCECC_CAPABILITY, "true");
246 - }
247 -
248 - if (setLabelStackCap) {
249 - builderDev1.set(LABEL_STACK_CAPABILITY, "true");
250 - builderDev2.set(LABEL_STACK_CAPABILITY, "true");
251 - builderDev3.set(LABEL_STACK_CAPABILITY, "true");
252 - builderDev4.set(LABEL_STACK_CAPABILITY, "true");
253 - }
254 -
255 deviceD1 = new MockDevice(D1.deviceId(), builderDev1.build()); 234 deviceD1 = new MockDevice(D1.deviceId(), builderDev1.build());
256 deviceD2 = new MockDevice(D2.deviceId(), builderDev2.build()); 235 deviceD2 = new MockDevice(D2.deviceId(), builderDev2.build());
257 deviceD3 = new MockDevice(D3.deviceId(), builderDev3.build()); 236 deviceD3 = new MockDevice(D3.deviceId(), builderDev3.build());
...@@ -262,17 +241,29 @@ public class PceManagerTest { ...@@ -262,17 +241,29 @@ public class PceManagerTest {
262 deviceService.addDevice(deviceD3); 241 deviceService.addDevice(deviceD3);
263 deviceService.addDevice(deviceD4); 242 deviceService.addDevice(deviceD4);
264 243
265 - pcepDeviceD1 = new MockDevice(DeviceId.deviceId(PathComputationTest.PCEPDEVICE1), builderDev1.build()); 244 + DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
266 - deviceService.addDevice(pcepDeviceD1); 245 + device1Cap.setLabelStackCap(setLabelStackCap)
267 - 246 + .setLocalLabelCap(setPceccCap)
268 - pcepDeviceD2 = new MockDevice(DeviceId.deviceId(PathComputationTest.PCEPDEVICE2), builderDev1.build()); 247 + .setSrCap(setSrCap)
269 - deviceService.addDevice(pcepDeviceD2); 248 + .apply();
270 - 249 +
271 - pcepDeviceD3 = new MockDevice(DeviceId.deviceId(PathComputationTest.PCEPDEVICE3), builderDev1.build()); 250 + DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
272 - deviceService.addDevice(pcepDeviceD3); 251 + device2Cap.setLabelStackCap(setLabelStackCap)
273 - 252 + .setLocalLabelCap(setPceccCap)
274 - pcepDeviceD4 = new MockDevice(DeviceId.deviceId(PathComputationTest.PCEPDEVICE4), builderDev1.build()); 253 + .setSrCap(setSrCap)
275 - deviceService.addDevice(pcepDeviceD4); 254 + .apply();
255 +
256 + DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
257 + device3Cap.setLabelStackCap(setLabelStackCap)
258 + .setLocalLabelCap(setPceccCap)
259 + .setSrCap(setSrCap)
260 + .apply();
261 +
262 + DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
263 + device4Cap.setLabelStackCap(setLabelStackCap)
264 + .setLocalLabelCap(setPceccCap)
265 + .setSrCap(setSrCap)
266 + .apply();
276 267
277 if (bandwidth != 0) { 268 if (bandwidth != 0) {
278 List<Resource> resources = new LinkedList<>(); 269 List<Resource> resources = new LinkedList<>();
......