opendaylight中TopologyManager模块学习

该模块维护网络拓扑信息,并在拓扑变化时通知其监听者

在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集的哈希值



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值