Luca Prete
Committed by Gerrit Code Review

ONOS-4401 VPLS: react to intf config changes.

Change-Id: Id34a9de669a3ab571e690b27072b44057d863768
......@@ -28,6 +28,8 @@ import org.onlab.packet.VlanId;
import org.onosproject.app.ApplicationService;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.incubator.net.intf.InterfaceEvent;
import org.onosproject.incubator.net.intf.InterfaceListener;
import org.onosproject.incubator.net.intf.InterfaceService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Host;
......@@ -75,6 +77,9 @@ public class Vpls {
private final HostListener hostListener = new InternalHostListener();
private final InternalInterfaceListener interfaceListener
= new InternalInterfaceListener();
private IntentInstaller intentInstaller;
private ApplicationId appId;
......@@ -91,6 +96,7 @@ public class Vpls {
intentSynchronizerAdmin::removeIntents);
hostService.addListener(hostListener);
interfaceService.addListener(interfaceListener);
setupConnectivity();
......@@ -200,4 +206,23 @@ public class Vpls {
}
}
}
/**
* Listener for interface configuration events.
*/
private class InternalInterfaceListener implements InterfaceListener {
@Override
public void event(InterfaceEvent event) {
log.debug("Received InterfaceConfigEvent {}", event);
switch (event.type()) {
case INTERFACE_ADDED:
case INTERFACE_UPDATED:
case INTERFACE_REMOVED:
setupConnectivity();
break;
default:
break;
}
}
}
}
......
......@@ -28,6 +28,7 @@ import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.core.IdGenerator;
import org.onosproject.incubator.net.intf.Interface;
import org.onosproject.incubator.net.intf.InterfaceListener;
import org.onosproject.incubator.net.intf.InterfaceService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultHost;
......@@ -57,16 +58,14 @@ import org.onosproject.routing.IntentSynchronizationService;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import static java.lang.String.format;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.*;
import static org.easymock.EasyMock.expectLastCall;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
......@@ -157,6 +156,8 @@ public class VplsTest {
new TestIntentSynchronizer(intentService);
interfaceService = createMock(InterfaceService.class);
interfaceService.addListener(anyObject(InterfaceListener.class));
expectLastCall().anyTimes();
addIntfConfig();
vpls = new Vpls();
......@@ -177,21 +178,24 @@ public class VplsTest {
*/
private void addIntfConfig() {
Set<Interface> interfaces = Sets.newHashSet();
Set<Interface> vlanOneSet = new HashSet<>();
Set<Interface> vlanTwoSet = new HashSet<>();
Set<Interface> vlanOneSet = Sets.newHashSet();
Set<Interface> vlanTwoSet = Sets.newHashSet();
for (int i = 1; i <= NUM_DEVICES - 1; i++) {
ConnectPoint cp = new ConnectPoint(getDeviceId(i), P1);
Interface intf =
new Interface(cp, Collections.emptySet(), null, VlanId.NONE);
new Interface("intfOne", cp, Collections.emptyList(), null,
VlanId.NONE);
if (i <= 3) {
intf = new Interface(cp, Collections.emptySet(), null, VLAN1);
intf = new Interface("intfTwo", cp, Collections.emptyList(),
null, VLAN1);
interfaces.add(intf);
vlanOneSet.add(intf);
} else if (i > 3 && i <= 6) {
intf = new Interface(cp, Collections.emptySet(), null, VLAN2);
intf = new Interface("intfThree", cp, Collections.emptyList(),
null, VLAN2);
interfaces.add(intf);
vlanTwoSet.add(intf);
}
......