该模块维护网络拓扑信息,并在拓扑变化时通知其监听者
在ITopologyManager接口中提供获得“node”,
”NodeConnectorHost“,以及它们间的连接关系。由ISwitchManager提供网络中所有的switch.在org.opendaylight.controller.topology.web.Topology类中获得上述数据后,
通过CircleLayout类完成拓扑节点的绘制,形成拓扑图。
org.opendaylight.controller.topologymanager:
ITopologyManager接口:
成员函数:
public boolean isInternal(NodeConnector p); 查询connector P是否连接到该网络或者是连接其他的交换机,连接到其他的交换机返回true
public Map<Edge, Set<Property>> getEdges(); 获得一个map集,是由所有节点之间已知的连接以及它们的属性
组成的
public Map<Node, Set<Edge>> getNodeEdges(); 返回一个不可修改的map集,通过Node和由Node进出的边来索引的,
public void updateHostLink(NodeConnector p, Host h, UpdateType t,Set<Property> props);
增加或者更新一个主机到topology manager数据库,p为主机h连接的nodeconnector(交换机加端口)
public Set<NodeConnector> getNodeConnectorWithHost();返回有主机相连的NodeConnector 的set集
public List<Host> getHostsAttachedToNodeConnector(NodeConnector p);返回连接到一个nodeconnector的主机list集合
public Map<Node, Set<NodeConnector>> getNodesWithNodeConnectorHost();返回map集,所有含有nodeconnector相连的node
public Status addUserLink(TopologyUserLinkConfig link);增加用户配置的连接。返回”success“或者错误原因
public Status deleteUserLink(String linkName);删除用户配置的连接。返回”success“或者错误的原因
public Status saveConfig();保存用户的配置连接
public ConcurrentMap<String, TopologyUserLinkConfig> getUserLinks();获得所有用户的配置连接的map集
org.opendaylight.controller.sal.topology:
TopoEdgeUpdate:一个类,代表一个边,以及边的属性集,和更新类型
成员变量:
private Edge edge;
private Set<Property> props;
private UpdateType type;
private boolean isLocal;
成员函数:
public TopoEdgeUpdate(Edge e, Set<Property> p, UpdateType t)//更新一个topology 边的元素
public Edge getEdge() //获取元素值
public Set<Property> getProperty()
public UpdateType getUpdateType()
接口 ITopologyManagerAware 继承了IListenTopoUpdates
接口 IListenTopoUpdates:通过sal服务实现通知topology更新的消息,
成员函数:
/**
* Called to update on Edge in the topology graph
* @param topoedgeupdateList
* List of topoedgeupdates Each topoedgeupdate includes edge, its
* Properties ( BandWidth and/or Latency etc) and update type.
*/
public void edgeUpdate(List<TopoEdgeUpdate> topoedgeupdateList);
/**
* Called when an Edge utilization is above the safety threshold configured
* on the controller
*
* @param edge
* The edge which bandwidth usage is above the safety level
*/
public void edgeOverUtilized(Edge edge);
/**
* Called when the Edge utilization is back to normal, below the safety
* threshold level configured on the controller
*
* @param edge
* The edge which bandwidth usage is back to normal
*/
public void edgeUtilBackToNormal(Edge edge);
一些Java中的数据结构
map(K,V):
成员函数:
int size() map结构中关键值得数量,不超过最大值
boolean isEmpty() 是否为空
boolean containsKey(Object key) 判断map里是否有映射关键字key的元素
boolean containsValue(Object value) 判断map里是否有映射值为value的,至少有一个或者多个这样的关键字
V get(Object key) 获取指定关键字的映射值
V put(K key, V value) 增加修改map项,已有key的会覆盖原value值
V remove(Object key) 移除map项
void putAll(Map<? extends K, ? extends V> m) 批量复制映射集m
void clear(); 清除map集
Set<K> keySet() 返回map中key值的视图(set集合),删除 Set 中的元素还将删除 Map 中相应的映射(键和值)
Collection<V> values() 返回map中value值的视图
Set<Map.Entry<K, V>> entrySet() 返回 Map 中所包含映射的 Set 视图
int hashCode() 返回map哈希值
boolean equals(Object o) 判断是否相等
Entry接口:
成员函数
K getKey() 返回entry集的key值
V getValue() 返回entry集的Value值
boolean equals(Object o) 比较与entry是否相等
int hashCode() 返回entry集的哈希值