mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-26 05:41:08 +01:00
Remove dependency on LinkResourceService from ObjectiveTracker
This resolves ONOS-3262. Change-Id: I57b51b9d8ef1ed2d847ecddeca279b8afdb8725e
This commit is contained in:
parent
fa62b475da
commit
0b9c46889f
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user