本文整理汇总了Golang中github.com/contiv/netplugin/plugin.NetPlugin.AddPeerHost方法的典型用法代码示例。如果您正苦于以下问题:Golang NetPlugin.AddPeerHost方法的具体用法?Golang NetPlugin.AddPeerHost怎么用?Golang NetPlugin.AddPeerHost使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/contiv/netplugin/plugin.NetPlugin
的用法示例。
在下文中一共展示了NetPlugin.AddPeerHost方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: processPeerEvent
func processPeerEvent(netPlugin *plugin.NetPlugin, opts cliOpts,
peerInfo *drivers.PeerHostState, isDelete bool) (err error) {
// if this is our own peer info coming back to us, ignore it
if peerInfo.ID == opts.hostLabel {
return nil
}
nodeInfo := core.ServiceInfo{
HostAddr: peerInfo.HostAddr,
Port: 0,
}
// take a lock to ensure we are programming one event at a time.
netPlugin.Lock()
defer func() { netPlugin.Unlock() }()
operStr := ""
if isDelete {
err = netPlugin.DeletePeerHost(nodeInfo)
operStr = "delete"
} else {
err = netPlugin.AddPeerHost(nodeInfo)
operStr = "create"
}
if err != nil {
log.Errorf("PeerHost operation %s failed. Error: %s", operStr, err)
} else {
log.Infof("PeerHost operation %s succeeded", operStr)
}
return
}
示例2: peerDiscoveryLoop
// Main loop to discover peer hosts and masters
func peerDiscoveryLoop(netplugin *plugin.NetPlugin, objdbClient objdb.ObjdbApi) {
// Create channels for watch thread
nodeEventCh := make(chan objdb.WatchServiceEvent, 1)
watchStopCh := make(chan bool, 1)
masterEventCh := make(chan objdb.WatchServiceEvent, 1)
masterWatchStopCh := make(chan bool, 1)
// Get the local address
localIP, err := objdbClient.GetLocalAddr()
if err != nil {
log.Fatalf("Error getting locla IP address. Err: %v", err)
}
// Start a watch on netplugin service so that we dont miss any
err = objdbClient.WatchService("netplugin", nodeEventCh, watchStopCh)
if err != nil {
log.Fatalf("Could not start a watch on netplugin service. Err: %v", err)
}
// Start a watch on netmaster too
err = objdbClient.WatchService("netmaster", masterEventCh, masterWatchStopCh)
if err != nil {
log.Fatalf("Could not start a watch on netmaster service. Err: %v", err)
}
// Get a list of all existing netplugin nodes
nodeList, err := objdbClient.GetService("netplugin")
if err != nil {
log.Errorf("Error getting node list from objdb. Err: %v", err)
}
log.Infof("Got netplugin service list: %+v", nodeList)
// walk each node and add it as a PeerHost
for _, node := range nodeList {
// Ignore if its our own info
if node.HostAddr == localIP {
continue
}
// add the node
err := netplugin.AddPeerHost(core.ServiceInfo{
HostAddr: node.HostAddr,
Port: ofnet.OFNET_AGENT_PORT,
})
if err != nil {
log.Errorf("Error adding node {%+v}. Err: %v", node, err)
}
}
// Get a list of all existing netmasters
masterList, err := objdbClient.GetService("netmaster")
if err != nil {
log.Errorf("Error getting master list from objdb. Err: %v", err)
}
log.Infof("Got netmaster service list: %+v", masterList)
// Walk each master and add it
for _, master := range masterList {
// Add the master
err := netplugin.AddMaster(core.ServiceInfo{
HostAddr: master.HostAddr,
Port: ofnet.OFNET_MASTER_PORT,
})
if err != nil {
log.Errorf("Error adding master {%+v}. Err: %v", master, err)
}
}
for {
select {
case srvEvent := <-nodeEventCh:
log.Infof("Received netplugin service watch event: %+v", srvEvent)
// collect the info about the node
nodeInfo := srvEvent.ServiceInfo
// check if its our on info coming back to us
if nodeInfo.HostAddr == localIP {
break
}
// Handle based on event type
if srvEvent.EventType == objdb.WatchServiceEventAdd {
log.Infof("Node add event for {%+v}", nodeInfo)
// add the node
err := netplugin.AddPeerHost(core.ServiceInfo{
HostAddr: nodeInfo.HostAddr,
Port: ofnet.OFNET_AGENT_PORT,
})
if err != nil {
log.Errorf("Error adding node {%+v}. Err: %v", nodeInfo, err)
}
} else if srvEvent.EventType == objdb.WatchServiceEventDel {
log.Infof("Node delete event for {%+v}", nodeInfo)
// remove the node
err := netplugin.DeletePeerHost(core.ServiceInfo{
//.........这里部分代码省略.........