[ONOS] cherry pick from onos1.6 to master all defects merges
Change-Id: I0ff6595a55b1104cf59a270ac2b10a7f831f6555
diff --git a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java b/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
index e50e820..9997659 100644
--- a/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
+++ b/providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
@@ -63,8 +63,6 @@
import org.onosproject.core.CoreService;
import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
import org.onosproject.incubator.net.resource.label.LabelResourceId;
-import org.onosproject.mastership.MastershipEvent;
-import org.onosproject.mastership.MastershipListener;
import org.onosproject.mastership.MastershipService;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.ConnectPoint;
@@ -79,6 +77,8 @@
import org.onosproject.net.device.DefaultDeviceDescription;
import org.onosproject.net.device.DefaultPortDescription;
import org.onosproject.net.device.DeviceDescription;
+import org.onosproject.net.device.DeviceEvent;
+import org.onosproject.net.device.DeviceListener;
import org.onosproject.net.device.DeviceProvider;
import org.onosproject.net.device.DeviceProviderRegistry;
import org.onosproject.net.device.DeviceProviderService;
@@ -140,7 +140,7 @@
private DeviceProviderService deviceProviderService;
private LinkProviderService linkProviderService;
- private InternalMastershipListener masterListener = new InternalMastershipListener();
+ private DeviceListener deviceListener = new InternalDeviceListener();
private InternalBgpProvider listener = new InternalBgpProvider();
private static final String UNKNOWN = "unknown";
public static final long IDENTIFIER_SET = 0x100000000L;
@@ -169,7 +169,7 @@
deviceProviderService = deviceProviderRegistry.register(this);
linkProviderService = linkProviderRegistry.register(this);
controller.addListener(listener);
- mastershipService.addListener(masterListener);
+ deviceService.addListener(deviceListener);
controller.addLinkListener(listener);
}
@@ -182,25 +182,28 @@
linkProviderService = null;
controller.removeListener(listener);
controller.removeLinkListener(listener);
- mastershipService.removeListener(masterListener);
+ deviceService.removeListener(deviceListener);
}
- private class InternalMastershipListener implements MastershipListener {
+ private class InternalDeviceListener implements DeviceListener {
@Override
- public void event(MastershipEvent event) {
- if (event.type() == MastershipEvent.Type.MASTER_CHANGED) {
- if (mastershipService.getMasterFor(event.subject()) != null) {
- //Only for L3 device create label pool for that device
- Device device = deviceService.getDevice(event.subject());
- if (device == null) {
- log.debug("Device {} doesn't exist", event.subject());
- return;
+ public void event(DeviceEvent event) {
+ Device device = event.subject();
+
+ switch (event.type()) {
+ case DEVICE_ADDED:
+ if (!mastershipService.isLocalMaster(device.id())) {
+ break;
}
- //Reserve device label pool for L3 devices
+
+ // Reserve device label pool for L3 devices
if (device.annotations().value(LSRID) != null) {
- createDevicePool(event.subject());
+ createDevicePool(device.id());
}
- }
+ break;
+
+ default:
+ break;
}
}
}
@@ -460,6 +463,10 @@
}
linkProviderService.linkVanished(linkDes);
+
+ linkDes = new DefaultLinkDescription(linkDes.dst(), linkDes.src(), Link.Type.DIRECT,
+ false, linkDes.annotations());
+ linkProviderService.linkVanished(linkDes);
}
}
diff --git a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java b/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
index 15a51de..dd8721b 100644
--- a/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
+++ b/providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
@@ -53,10 +53,7 @@
import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
import org.onosproject.incubator.net.resource.label.LabelResourceId;
import org.onosproject.incubator.net.resource.label.LabelResourcePool;
-import org.onosproject.mastership.MastershipEvent;
-import org.onosproject.mastership.MastershipListener;
import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.mastership.MastershipEvent.Type;
import org.onosproject.net.link.LinkServiceAdapter;
import org.onosproject.bgpio.types.LinkLocalRemoteIdentifiersTlv;
import org.onosproject.bgpio.types.RouteDistinguisher;
@@ -68,8 +65,8 @@
import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric;
import org.onosproject.bgpio.util.Constants;
import org.onosproject.cluster.NodeId;
-import org.onosproject.cluster.RoleInfo;
import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.DefaultDevice;
import org.onosproject.net.DefaultLink;
import org.onosproject.net.Device;
@@ -81,8 +78,9 @@
import org.onosproject.net.config.ConfigApplyDelegate;
import org.onosproject.net.config.ConfigFactory;
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.config.basics.BandwidthCapacity;
import org.onosproject.net.device.DeviceDescription;
+import org.onosproject.net.device.DeviceEvent;
+import org.onosproject.net.device.DeviceListener;
import org.onosproject.net.device.DeviceProvider;
import org.onosproject.net.device.DeviceProviderRegistry;
import org.onosproject.net.device.DeviceProviderService;
@@ -94,6 +92,7 @@
import org.onosproject.net.link.LinkProviderRegistry;
import org.onosproject.net.link.LinkProviderService;
import org.onosproject.net.provider.ProviderId;
+import org.onosproject.net.config.basics.BandwidthCapacity;
import org.onosproject.net.resource.Resource;
import org.onosproject.net.resource.ResourceAdminService;
import org.onosproject.net.resource.ResourceId;
@@ -122,7 +121,7 @@
private MockNetConfigRegistryAdapter networkConfigService = new MockNetConfigRegistryAdapter();
private MockLabelResourceService labelResourceAdminService = new MockLabelResourceService();
private Map<DeviceId, Device> deviceMap = new HashMap<>();
- private MastershipListener listener;
+ private DeviceListener listener;
@Before
public void startUp() throws TestUtilsException {
@@ -134,7 +133,7 @@
provider.labelResourceAdminService = labelResourceAdminService;
provider.mastershipService = mastershipService;
provider.networkConfigService = networkConfigService;
- listener = TestUtils.getField(provider, "masterListener");
+ listener = TestUtils.getField(provider, "deviceListener");
provider.activate();
assertThat("device provider should be registered", not(nodeRegistry.provider));
assertThat("link provider should be registered", not(linkRegistry.linkProvider));
@@ -887,10 +886,14 @@
l.addNode(nodeNlri, details);
assertThat(nodeRegistry.connected.size(), is(1));
}
+ DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
- MastershipEvent event = new MastershipEvent(Type.MASTER_CHANGED, nodeRegistry.connected.iterator().next(),
- new RoleInfo(NodeId.nodeId("Node1"), new LinkedList<>()));
+ newBuilder.set("lsrId", "1.1.1.1");
+ Device device = new DefaultDevice(BgpTopologyProviderTest.providerId, nodeRegistry.connected.iterator().next(),
+ Device.Type.ROUTER, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
+
+ DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
listener.event(event);
assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
}
@@ -926,9 +929,16 @@
for (BgpNodeListener l : controller.nodeListener) {
l.addNode(nodeNlri, details);
assertThat(nodeRegistry.connected.size(), is(1));
- // Check label resource reserved for that device
- MastershipEvent event = new MastershipEvent(Type.MASTER_CHANGED, nodeRegistry.connected.iterator().next(),
- new RoleInfo(NodeId.nodeId("Node1"), new LinkedList<>()));
+
+ DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
+
+ newBuilder.set("lsrId", "1.1.1.1");
+
+ Device device = new DefaultDevice(BgpTopologyProviderTest.providerId,
+ nodeRegistry.connected.iterator().next(), Device.Type.ROUTER, UNKNOWN,
+ UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
+
+ DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
listener.event(event);
assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
@@ -988,8 +998,15 @@
l.addNode(nodeNlri, details);
assertThat(nodeRegistry.connected.size(), is(1));
//Check label resource reserved for that device
- MastershipEvent event = new MastershipEvent(Type.MASTER_CHANGED, nodeRegistry.connected.iterator().next(),
- new RoleInfo(NodeId.nodeId("Node1"), new LinkedList<>()));
+ DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
+
+ newBuilder.set("lsrId", "1.1.1.1");
+
+ Device device = new DefaultDevice(BgpTopologyProviderTest.providerId,
+ nodeRegistry.connected.iterator().next(), Device.Type.ROUTER,
+ UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, new ChassisId(), newBuilder.build());
+
+ DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
listener.event(event);
assertThat(labelResourceAdminService.resourcePool.keySet().size(), is(1));
l.addNode(remNodeNlri, details);