Remove dependency on LinkResourceService from ObjectiveTracker

This resolves ONOS-3262.

Change-Id: I57b51b9d8ef1ed2d847ecddeca279b8afdb8725e
This commit is contained in:
Sho SHIMIZU 2015-11-02 18:30:34 -08:00
parent fa62b475da
commit 0b9c46889f
2 changed files with 31 additions and 43 deletions

View File

@ -48,9 +48,9 @@ import org.onosproject.net.intent.PartitionEvent;
import org.onosproject.net.intent.PartitionEventListener; import org.onosproject.net.intent.PartitionEventListener;
import org.onosproject.net.intent.PartitionService; import org.onosproject.net.intent.PartitionService;
import org.onosproject.net.link.LinkEvent; import org.onosproject.net.link.LinkEvent;
import org.onosproject.net.resource.link.LinkResourceEvent; import org.onosproject.net.newresource.ResourceEvent;
import org.onosproject.net.resource.link.LinkResourceListener; import org.onosproject.net.newresource.ResourceListener;
import org.onosproject.net.resource.link.LinkResourceService; import org.onosproject.net.newresource.ResourceService;
import org.onosproject.net.topology.TopologyEvent; import org.onosproject.net.topology.TopologyEvent;
import org.onosproject.net.topology.TopologyListener; import org.onosproject.net.topology.TopologyListener;
import org.onosproject.net.topology.TopologyService; import org.onosproject.net.topology.TopologyService;
@ -60,6 +60,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@ -101,7 +102,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
protected TopologyService topologyService; protected TopologyService topologyService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected LinkResourceService resourceManager; protected ResourceService resourceService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService; protected DeviceService deviceService;
@ -122,8 +123,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
.newScheduledThreadPool(1); .newScheduledThreadPool(1);
private TopologyListener listener = new InternalTopologyListener(); private TopologyListener listener = new InternalTopologyListener();
private LinkResourceListener linkResourceListener = private ResourceListener resourceListener = new InternalResourceListener();
new InternalLinkResourceListener();
private DeviceListener deviceListener = new InternalDeviceListener(); private DeviceListener deviceListener = new InternalDeviceListener();
private HostListener hostListener = new InternalHostListener(); private HostListener hostListener = new InternalHostListener();
private PartitionEventListener partitionListener = new InternalPartitionListener(); private PartitionEventListener partitionListener = new InternalPartitionListener();
@ -134,7 +134,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
@Activate @Activate
public void activate() { public void activate() {
topologyService.addListener(listener); topologyService.addListener(listener);
resourceManager.addListener(linkResourceListener); resourceService.addListener(resourceListener);
deviceService.addListener(deviceListener); deviceService.addListener(deviceListener);
hostService.addListener(hostListener); hostService.addListener(hostListener);
partitionService.addListener(partitionListener); partitionService.addListener(partitionListener);
@ -144,7 +144,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
@Deactivate @Deactivate
public void deactivate() { public void deactivate() {
topologyService.removeListener(listener); topologyService.removeListener(listener);
resourceManager.removeListener(linkResourceListener); resourceService.removeListener(resourceListener);
deviceService.removeListener(deviceListener); deviceService.removeListener(deviceListener);
hostService.removeListener(hostListener); hostService.removeListener(hostListener);
partitionService.removeListener(partitionListener); partitionService.removeListener(partitionListener);
@ -299,35 +299,22 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
} }
} }
/** private class InternalResourceListener implements ResourceListener {
* Internal re-actor to resource available events.
*/
private class InternalLinkResourceListener implements LinkResourceListener {
@Override @Override
public void event(LinkResourceEvent event) { public void event(ResourceEvent event) {
executorService.execute(new ResourceAvailableHandler(event)); Optional<Class<?>> linkEvent = event.subject().components().stream()
} .map(Object::getClass)
} .filter(x -> x == LinkKey.class)
.findFirst();
if (linkEvent.isPresent()) {
executorService.execute(() -> {
if (delegate == null) {
return;
}
/* delegate.triggerCompile(Collections.emptySet(), true);
* Re-dispatcher of resource available events. });
*/
private class ResourceAvailableHandler implements Runnable {
private final LinkResourceEvent event;
ResourceAvailableHandler(LinkResourceEvent event) {
this.event = event;
}
@Override
public void run() {
// If there is no delegate, why bother? Just bail.
if (delegate == null) {
return;
} }
delegate.triggerCompile(Collections.emptySet(), true);
} }
} }

View File

@ -16,7 +16,6 @@
package org.onosproject.net.intent.impl; package org.onosproject.net.intent.impl;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
@ -38,8 +37,9 @@ import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.Key; import org.onosproject.net.intent.Key;
import org.onosproject.net.intent.MockIdGenerator; import org.onosproject.net.intent.MockIdGenerator;
import org.onosproject.net.link.LinkEvent; import org.onosproject.net.link.LinkEvent;
import org.onosproject.net.resource.link.LinkResourceEvent; import org.onosproject.net.newresource.ResourceEvent;
import org.onosproject.net.resource.link.LinkResourceListener; import org.onosproject.net.newresource.ResourceListener;
import org.onosproject.net.newresource.ResourcePath;
import org.onosproject.net.topology.Topology; import org.onosproject.net.topology.Topology;
import org.onosproject.net.topology.TopologyEvent; import org.onosproject.net.topology.TopologyEvent;
import org.onosproject.net.topology.TopologyListener; import org.onosproject.net.topology.TopologyListener;
@ -52,6 +52,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.onosproject.net.LinkKey.linkKey;
import static org.onosproject.net.newresource.ResourceEvent.Type.*;
import static org.onosproject.net.NetTestTools.APP_ID; import static org.onosproject.net.NetTestTools.APP_ID;
import static org.onosproject.net.NetTestTools.device; import static org.onosproject.net.NetTestTools.device;
import static org.onosproject.net.NetTestTools.link; import static org.onosproject.net.NetTestTools.link;
@ -67,7 +69,7 @@ public class ObjectiveTrackerTest {
private List<Event> reasons; private List<Event> reasons;
private TopologyListener listener; private TopologyListener listener;
private DeviceListener deviceListener; private DeviceListener deviceListener;
private LinkResourceListener linkResourceListener; private ResourceListener resourceListener;
private IdGenerator mockGenerator; private IdGenerator mockGenerator;
/** /**
@ -84,7 +86,7 @@ public class ObjectiveTrackerTest {
reasons = new LinkedList<>(); reasons = new LinkedList<>();
listener = TestUtils.getField(tracker, "listener"); listener = TestUtils.getField(tracker, "listener");
deviceListener = TestUtils.getField(tracker, "deviceListener"); deviceListener = TestUtils.getField(tracker, "deviceListener");
linkResourceListener = TestUtils.getField(tracker, "linkResourceListener"); resourceListener = TestUtils.getField(tracker, "resourceListener");
mockGenerator = new MockIdGenerator(); mockGenerator = new MockIdGenerator();
Intent.bindIdGenerator(mockGenerator); Intent.bindIdGenerator(mockGenerator);
} }
@ -228,10 +230,9 @@ public class ObjectiveTrackerTest {
*/ */
@Test @Test
public void testResourceEvent() throws Exception { public void testResourceEvent() throws Exception {
LinkResourceEvent event = new LinkResourceEvent( ResourceEvent event = new ResourceEvent(RESOURCE_ADDED,
LinkResourceEvent.Type.ADDITIONAL_RESOURCES_AVAILABLE, new ResourcePath(linkKey(link("a", 1, "b", 1))));
new HashSet<>()); resourceListener.event(event);
linkResourceListener.event(event);
assertThat( assertThat(
delegate.latch.await(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS), delegate.latch.await(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS),