mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-22 04:40:59 +02:00
Sketching more topology related stuff.
Added overview.html for Java API docs.
This commit is contained in:
parent
568581d582
commit
cfde062483
@ -0,0 +1,49 @@
|
|||||||
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static com.google.common.base.MoreObjects.toStringHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Representation of the topology cluster identity.
|
||||||
|
*/
|
||||||
|
public final class ClusterId {
|
||||||
|
|
||||||
|
private final int id;
|
||||||
|
|
||||||
|
// Public construction is prohibit
|
||||||
|
private ClusterId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the cluster identifier, represented by the specified integer
|
||||||
|
* serial number.
|
||||||
|
*
|
||||||
|
* @param id integer serial number
|
||||||
|
* @return cluster identifier
|
||||||
|
*/
|
||||||
|
public static ClusterId clusterId(int id) {
|
||||||
|
return new ClusterId(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof ClusterId) {
|
||||||
|
final ClusterId other = (ClusterId) obj;
|
||||||
|
return Objects.equals(this.id, other.id);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return toStringHelper(this).add("id", id).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import org.onlab.onos.net.DeviceId;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static com.google.common.base.MoreObjects.toStringHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default implementation of a network topology cluster.
|
||||||
|
*/
|
||||||
|
public class DefaultTopologyCluster implements TopologyCluster {
|
||||||
|
|
||||||
|
private final ClusterId id;
|
||||||
|
private final int deviceCount;
|
||||||
|
private final int linkCount;
|
||||||
|
private final DeviceId root;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new topology cluster descriptor with the specified attributes.
|
||||||
|
*
|
||||||
|
* @param id cluster id
|
||||||
|
* @param deviceCount number of devices in the cluster
|
||||||
|
* @param linkCount number of links in the cluster
|
||||||
|
* @param root cluster root node
|
||||||
|
*/
|
||||||
|
public DefaultTopologyCluster(ClusterId id, int deviceCount, int linkCount,
|
||||||
|
DeviceId root) {
|
||||||
|
this.id = id;
|
||||||
|
this.deviceCount = deviceCount;
|
||||||
|
this.linkCount = linkCount;
|
||||||
|
this.root = root;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClusterId id() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int deviceCount() {
|
||||||
|
return deviceCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int linkCount() {
|
||||||
|
return linkCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceId root() {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(id, deviceCount, linkCount, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof DefaultTopologyCluster) {
|
||||||
|
final DefaultTopologyCluster other = (DefaultTopologyCluster) obj;
|
||||||
|
return Objects.equals(this.id, other.id) &&
|
||||||
|
Objects.equals(this.deviceCount, other.deviceCount) &&
|
||||||
|
Objects.equals(this.linkCount, other.linkCount) &&
|
||||||
|
Objects.equals(this.root, other.root);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return toStringHelper(this)
|
||||||
|
.add("id", id)
|
||||||
|
.add("deviceCount", deviceCount)
|
||||||
|
.add("linkCount", linkCount)
|
||||||
|
.add("root", root)
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
package org.onlab.onos.net;
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import org.onlab.onos.net.Provided;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a network topology computation snapshot.
|
* Represents a network topology computation snapshot.
|
@ -1,10 +1,38 @@
|
|||||||
package org.onlab.onos.net.topology;
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import org.onlab.onos.net.DeviceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of an SCC (strongly-connected component) in a network topology.
|
* Representation of an SCC (strongly-connected component) in a network topology.
|
||||||
*/
|
*/
|
||||||
public interface TopologyCluster {
|
public interface TopologyCluster {
|
||||||
|
|
||||||
// TODO: add stuff in here: id, deviceCount, linkCount
|
/**
|
||||||
|
* Returns the cluster id.
|
||||||
|
*
|
||||||
|
* @return cluster identifier
|
||||||
|
*/
|
||||||
|
ClusterId id();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of devices in the cluster.
|
||||||
|
*
|
||||||
|
* @return number of cluster devices
|
||||||
|
*/
|
||||||
|
int deviceCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of infrastructure links in the cluster.
|
||||||
|
*
|
||||||
|
* @return number of cluster links
|
||||||
|
*/
|
||||||
|
int linkCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the device identifier of the cluster root device.
|
||||||
|
*
|
||||||
|
* @return cluster root device identifier
|
||||||
|
*/
|
||||||
|
DeviceId root();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package org.onlab.onos.net.topology;
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import org.onlab.graph.Graph;
|
||||||
|
import org.onlab.graph.GraphPathSearch;
|
||||||
import org.onlab.onos.net.Description;
|
import org.onlab.onos.net.Description;
|
||||||
|
import org.onlab.onos.net.DeviceId;
|
||||||
|
import org.onlab.onos.net.Link;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes attribute(s) of a network topology.
|
* Describes attribute(s) of a network topology.
|
||||||
@ -10,21 +14,58 @@ import java.util.Collection;
|
|||||||
public interface TopologyDescription extends Description {
|
public interface TopologyDescription extends Description {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of Device, Link, and Host descriptors that describe
|
* Returns the creation timestamp of the topology description. This is
|
||||||
* the changes tha have occurred in the network topology.
|
* expressed in system nanos to allow proper sequencing.
|
||||||
*
|
*
|
||||||
* @return network element descriptions describing topology change
|
* @return topology description creation timestamp
|
||||||
*/
|
*/
|
||||||
Collection<Description> details();
|
long timestamp();
|
||||||
|
|
||||||
// Default topology provider/computor should do the following:
|
/**
|
||||||
// create graph
|
* Returns the topology graph.
|
||||||
// search graph for SCC clusters (Tarjan)
|
*
|
||||||
// search graph for all pairs shortest paths based on hop-count
|
* @return network graph
|
||||||
// this means all shortest paths, between all pairs; not just one shortest path
|
*/
|
||||||
// optionally use path results to produce destination-rooted broadcast trees
|
Graph<TopoVertex, TopoEdge> graph();
|
||||||
|
|
||||||
// provide description with the graph, clusters, paths and trees upwards
|
/**
|
||||||
|
* Returns the results of the path search through the network graph. This
|
||||||
|
* is assumed to contain results of seach fro the given device to all
|
||||||
|
* other devices.
|
||||||
|
*
|
||||||
|
* @param srcDeviceId source device identifier
|
||||||
|
* @return path search result for the given source node
|
||||||
|
*/
|
||||||
|
GraphPathSearch.Result pathResults(DeviceId srcDeviceId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the set of topology SCC clusters.
|
||||||
|
*
|
||||||
|
* @return set of SCC clusters
|
||||||
|
*/
|
||||||
|
Set<TopologyCluster> clusters();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the set of devices contained by the specified topology cluster.
|
||||||
|
*
|
||||||
|
* @return set of devices that belong to the specified cluster
|
||||||
|
*/
|
||||||
|
Set<DeviceId> clusterDevices(TopologyCluster cluster);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the set of infrastructure links contained by the specified cluster.
|
||||||
|
*
|
||||||
|
* @return set of links that form the given cluster
|
||||||
|
*/
|
||||||
|
Set<Link> clusterLinks(TopologyCluster cluster);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the topology SCC cluster which contains the given device.
|
||||||
|
*
|
||||||
|
* @param deviceId device identifier
|
||||||
|
* @return topology cluster that contains the specified device
|
||||||
|
*/
|
||||||
|
TopologyCluster clusterFor(DeviceId deviceId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package org.onlab.onos.net.topology;
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
import org.onlab.onos.event.AbstractEvent;
|
import org.onlab.onos.event.AbstractEvent;
|
||||||
import org.onlab.onos.net.Topology;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes network topology event.
|
* Describes network topology event.
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package org.onlab.onos.net.topology;
|
package org.onlab.onos.net.topology;
|
||||||
|
|
||||||
|
import org.onlab.onos.event.Event;
|
||||||
import org.onlab.onos.net.provider.ProviderService;
|
import org.onlab.onos.net.provider.ProviderService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Means for injecting topology information into the core.
|
* Means for injecting topology information into the core.
|
||||||
*/
|
*/
|
||||||
@ -14,7 +17,9 @@ public interface TopologyProviderService extends ProviderService<TopologyProvide
|
|||||||
* Signals the core that some aspect of the topology has changed.
|
* Signals the core that some aspect of the topology has changed.
|
||||||
*
|
*
|
||||||
* @param topoDescription information about topology
|
* @param topoDescription information about topology
|
||||||
|
* @param reasons events that triggered topology change
|
||||||
*/
|
*/
|
||||||
void topologyChanged(TopologyDescription topoDescription);
|
void topologyChanged(TopologyDescription topoDescription,
|
||||||
|
List<Event> reasons);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import org.onlab.graph.Graph;
|
|||||||
import org.onlab.onos.net.ConnectPoint;
|
import org.onlab.onos.net.ConnectPoint;
|
||||||
import org.onlab.onos.net.DeviceId;
|
import org.onlab.onos.net.DeviceId;
|
||||||
import org.onlab.onos.net.Path;
|
import org.onlab.onos.net.Path;
|
||||||
import org.onlab.onos.net.Topology;
|
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -37,8 +36,8 @@ public interface TopologyService {
|
|||||||
Graph<TopoVertex, TopoEdge> getGraph(Topology topology);
|
Graph<TopoVertex, TopoEdge> getGraph(Topology topology);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the set of all shortest paths, in terms of hop-count, between
|
* Returns the set of all shortest paths, precomputed in terms of hop-count,
|
||||||
* the specified source and destination devices.
|
* between the specified source and destination devices.
|
||||||
*
|
*
|
||||||
* @param topology topology descriptor
|
* @param topology topology descriptor
|
||||||
* @param src source device
|
* @param src source device
|
||||||
@ -71,7 +70,8 @@ public interface TopologyService {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether the specified connection point allows broadcast.
|
* Indicates whether the specified connection point belong to the
|
||||||
|
* broadcast tree.
|
||||||
*
|
*
|
||||||
* @param topology topology descriptor
|
* @param topology topology descriptor
|
||||||
* @param connectPoint connection point
|
* @param connectPoint connection point
|
||||||
|
@ -0,0 +1,80 @@
|
|||||||
|
package org.onlab.onos.net.trivial.impl;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
|
import org.onlab.graph.Graph;
|
||||||
|
import org.onlab.graph.GraphPathSearch;
|
||||||
|
import org.onlab.onos.net.DeviceId;
|
||||||
|
import org.onlab.onos.net.Link;
|
||||||
|
import org.onlab.onos.net.topology.ClusterId;
|
||||||
|
import org.onlab.onos.net.topology.TopoEdge;
|
||||||
|
import org.onlab.onos.net.topology.TopoVertex;
|
||||||
|
import org.onlab.onos.net.topology.TopologyCluster;
|
||||||
|
import org.onlab.onos.net.topology.TopologyDescription;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default implementation of an immutable topology data carrier.
|
||||||
|
*/
|
||||||
|
public class DefaultTopologyDescription implements TopologyDescription {
|
||||||
|
|
||||||
|
private final long nanos;
|
||||||
|
private final Graph<TopoVertex, TopoEdge> graph;
|
||||||
|
private final Map<DeviceId, GraphPathSearch.Result<TopoVertex, TopoEdge>> results;
|
||||||
|
private final Map<ClusterId, TopologyCluster> clusters;
|
||||||
|
private final Multimap<ClusterId, DeviceId> clusterDevices;
|
||||||
|
private final Multimap<ClusterId, Link> clusterLinks;
|
||||||
|
private final Map<DeviceId, TopologyCluster> deviceClusters;
|
||||||
|
|
||||||
|
public DefaultTopologyDescription(long nanos, Graph<TopoVertex, TopoEdge> graph,
|
||||||
|
Map<DeviceId, GraphPathSearch.Result<TopoVertex, TopoEdge>> results,
|
||||||
|
Map<ClusterId, TopologyCluster> clusters,
|
||||||
|
Multimap<ClusterId, DeviceId> clusterDevices,
|
||||||
|
Multimap<ClusterId, Link> clusterLinks,
|
||||||
|
Map<DeviceId, TopologyCluster> deviceClusters) {
|
||||||
|
this.nanos = nanos;
|
||||||
|
this.graph = graph;
|
||||||
|
this.results = results;
|
||||||
|
this.clusters = clusters;
|
||||||
|
this.clusterDevices = clusterDevices;
|
||||||
|
this.clusterLinks = clusterLinks;
|
||||||
|
this.deviceClusters = deviceClusters;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long timestamp() {
|
||||||
|
return nanos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Graph<TopoVertex, TopoEdge> graph() {
|
||||||
|
return graph;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GraphPathSearch.Result<TopoVertex, TopoEdge> pathResults(DeviceId srcDeviceId) {
|
||||||
|
return results.get(srcDeviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<TopologyCluster> clusters() {
|
||||||
|
return ImmutableSet.copyOf(clusters.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<DeviceId> clusterDevices(TopologyCluster cluster) {
|
||||||
|
return null; // clusterDevices.get(cluster.id());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Link> clusterLinks(TopologyCluster cluster) {
|
||||||
|
return null; // clusterLinks.get(cluster.id());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TopologyCluster clusterFor(DeviceId deviceId) {
|
||||||
|
return deviceClusters.get(deviceId);
|
||||||
|
}
|
||||||
|
}
|
@ -150,7 +150,7 @@ public class SimpleDeviceManager
|
|||||||
private class InternalDeviceProviderService extends AbstractProviderService<DeviceProvider>
|
private class InternalDeviceProviderService extends AbstractProviderService<DeviceProvider>
|
||||||
implements DeviceProviderService {
|
implements DeviceProviderService {
|
||||||
|
|
||||||
public InternalDeviceProviderService(DeviceProvider provider) {
|
InternalDeviceProviderService(DeviceProvider provider) {
|
||||||
super(provider);
|
super(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ public class SimpleHostManager
|
|||||||
private class InternalHostProviderService extends AbstractProviderService<HostProvider>
|
private class InternalHostProviderService extends AbstractProviderService<HostProvider>
|
||||||
implements HostProviderService {
|
implements HostProviderService {
|
||||||
|
|
||||||
public InternalHostProviderService(HostProvider provider) {
|
InternalHostProviderService(HostProvider provider) {
|
||||||
super(provider);
|
super(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ public class SimpleLinkManager
|
|||||||
private class InternalLinkProviderService extends AbstractProviderService<LinkProvider>
|
private class InternalLinkProviderService extends AbstractProviderService<LinkProvider>
|
||||||
implements LinkProviderService {
|
implements LinkProviderService {
|
||||||
|
|
||||||
public InternalLinkProviderService(LinkProvider provider) {
|
InternalLinkProviderService(LinkProvider provider) {
|
||||||
super(provider);
|
super(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,153 @@
|
|||||||
|
package org.onlab.onos.net.trivial.impl;
|
||||||
|
|
||||||
|
import org.apache.felix.scr.annotations.Activate;
|
||||||
|
import org.apache.felix.scr.annotations.Component;
|
||||||
|
import org.apache.felix.scr.annotations.Deactivate;
|
||||||
|
import org.apache.felix.scr.annotations.Reference;
|
||||||
|
import org.apache.felix.scr.annotations.ReferenceCardinality;
|
||||||
|
import org.apache.felix.scr.annotations.Service;
|
||||||
|
import org.onlab.graph.Graph;
|
||||||
|
import org.onlab.onos.event.AbstractListenerRegistry;
|
||||||
|
import org.onlab.onos.event.Event;
|
||||||
|
import org.onlab.onos.event.EventDeliveryService;
|
||||||
|
import org.onlab.onos.net.ConnectPoint;
|
||||||
|
import org.onlab.onos.net.DeviceId;
|
||||||
|
import org.onlab.onos.net.Path;
|
||||||
|
import org.onlab.onos.net.provider.AbstractProviderRegistry;
|
||||||
|
import org.onlab.onos.net.provider.AbstractProviderService;
|
||||||
|
import org.onlab.onos.net.topology.LinkWeight;
|
||||||
|
import org.onlab.onos.net.topology.TopoEdge;
|
||||||
|
import org.onlab.onos.net.topology.TopoVertex;
|
||||||
|
import org.onlab.onos.net.topology.Topology;
|
||||||
|
import org.onlab.onos.net.topology.TopologyCluster;
|
||||||
|
import org.onlab.onos.net.topology.TopologyDescription;
|
||||||
|
import org.onlab.onos.net.topology.TopologyEvent;
|
||||||
|
import org.onlab.onos.net.topology.TopologyListener;
|
||||||
|
import org.onlab.onos.net.topology.TopologyProvider;
|
||||||
|
import org.onlab.onos.net.topology.TopologyProviderRegistry;
|
||||||
|
import org.onlab.onos.net.topology.TopologyProviderService;
|
||||||
|
import org.onlab.onos.net.topology.TopologyService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.slf4j.LoggerFactory.getLogger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides basic implementation of the topology SB & NB APIs.
|
||||||
|
*/
|
||||||
|
@Component(immediate = true)
|
||||||
|
@Service
|
||||||
|
public class SimpleTopologyManager
|
||||||
|
extends AbstractProviderRegistry<TopologyProvider, TopologyProviderService>
|
||||||
|
implements TopologyService, TopologyProviderRegistry {
|
||||||
|
|
||||||
|
public static final String TOPOLOGY_NULL = "Topology cannot be null";
|
||||||
|
private static final String DEVICE_ID_NULL = "Device ID cannot be null";
|
||||||
|
public static final String CONNECTION_POINT_NULL = "Connection point cannot be null";
|
||||||
|
|
||||||
|
private final Logger log = getLogger(getClass());
|
||||||
|
|
||||||
|
private final AbstractListenerRegistry<TopologyEvent, TopologyListener>
|
||||||
|
listenerRegistry = new AbstractListenerRegistry<>();
|
||||||
|
|
||||||
|
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
||||||
|
private EventDeliveryService eventDispatcher;
|
||||||
|
|
||||||
|
|
||||||
|
@Activate
|
||||||
|
public void activate() {
|
||||||
|
eventDispatcher.addSink(TopologyEvent.class, listenerRegistry);
|
||||||
|
log.info("Started");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deactivate
|
||||||
|
public void deactivate() {
|
||||||
|
eventDispatcher.removeSink(TopologyEvent.class);
|
||||||
|
log.info("Stopped");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected TopologyProviderService createProviderService(TopologyProvider provider) {
|
||||||
|
return new InternalTopologyProviderService(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Topology currentTopology() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<TopologyCluster> getClusters(Topology topology) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Graph<TopoVertex, TopoEdge> getGraph(Topology topology) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
checkNotNull(src, DEVICE_ID_NULL);
|
||||||
|
checkNotNull(dst, DEVICE_ID_NULL);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
checkNotNull(src, DEVICE_ID_NULL);
|
||||||
|
checkNotNull(dst, DEVICE_ID_NULL);
|
||||||
|
checkNotNull(weight, "Link weight cannot be null");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
checkNotNull(connectPoint, CONNECTION_POINT_NULL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInBroadcastTree(Topology topology, ConnectPoint connectPoint) {
|
||||||
|
checkNotNull(topology, TOPOLOGY_NULL);
|
||||||
|
checkNotNull(connectPoint, CONNECTION_POINT_NULL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addListener(TopologyListener listener) {
|
||||||
|
listenerRegistry.addListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeListener(TopologyListener listener) {
|
||||||
|
listenerRegistry.removeListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Personalized host provider service issued to the supplied provider.
|
||||||
|
private class InternalTopologyProviderService
|
||||||
|
extends AbstractProviderService<TopologyProvider>
|
||||||
|
implements TopologyProviderService {
|
||||||
|
|
||||||
|
InternalTopologyProviderService(TopologyProvider provider) {
|
||||||
|
super(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void topologyChanged(TopologyDescription topoDescription,
|
||||||
|
List<Event> reasons) {
|
||||||
|
checkNotNull(topoDescription, "Topology description cannot be null");
|
||||||
|
log.info("Topology changed due to: {}",
|
||||||
|
reasons == null ? "initial compute" : reasons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
9
src/main/javadoc/overview.html
Normal file
9
src/main/javadoc/overview.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<img src="doc-files/onos-tiers.png" alt="ONOS architecture tiers"><br>
|
||||||
|
ONOS architecture is strictly segmented into protocol-agnostic system core and
|
||||||
|
protocol-aware providers tiers.
|
||||||
|
|
||||||
|
<em>More information to come later...</em>
|
||||||
|
|
||||||
|
</body>
|
Loading…
x
Reference in New Issue
Block a user