本文整理匯總了Golang中github.com/contiv/netplugin/gstate.Cfg.AssignDefaultNetwork方法的典型用法代碼示例。如果您正苦於以下問題:Golang Cfg.AssignDefaultNetwork方法的具體用法?Golang Cfg.AssignDefaultNetwork怎麽用?Golang Cfg.AssignDefaultNetwork使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/contiv/netplugin/gstate.Cfg
的用法示例。
在下文中一共展示了Cfg.AssignDefaultNetwork方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: CreateNetwork
// CreateNetwork creates a network from intent
func CreateNetwork(network intent.ConfigNetwork, stateDriver core.StateDriver, tenantName string) error {
var extPktTag, pktTag uint
gCfg := gstate.Cfg{}
gCfg.StateDriver = stateDriver
err := gCfg.Read(tenantName)
if err != nil {
log.Errorf("error reading tenant cfg state. Error: %s", err)
return err
}
tempRm, err := resources.GetStateResourceManager()
if err != nil {
return err
}
rm := core.ResourceManager(tempRm)
// Create network state
networkID := network.Name + "." + tenantName
nwCfg := &mastercfg.CfgNetworkState{}
nwCfg.StateDriver = stateDriver
if nwCfg.Read(networkID) == nil {
// TODO: check if parameters changed and apply an update if needed
return nil
}
subnetIP, subnetLen, _ := netutils.ParseCIDR(network.SubnetCIDR)
// construct and update network state
nwCfg = &mastercfg.CfgNetworkState{
Tenant: tenantName,
NetworkName: network.Name,
PktTagType: network.PktTagType,
SubnetIP: subnetIP,
SubnetLen: subnetLen,
Gateway: network.Gateway,
}
nwCfg.ID = networkID
nwCfg.StateDriver = stateDriver
if network.PktTagType == "" {
nwCfg.PktTagType = gCfg.Deploy.DefaultNetType
}
if network.PktTag == 0 {
if nwCfg.PktTagType == "vlan" {
pktTag, err = gCfg.AllocVLAN(rm)
if err != nil {
return err
}
} else if nwCfg.PktTagType == "vxlan" {
extPktTag, pktTag, err = gCfg.AllocVXLAN(rm)
if err != nil {
return err
}
}
nwCfg.ExtPktTag = int(extPktTag)
nwCfg.PktTag = int(pktTag)
} else if network.PktTagType == "vxlan" {
if !isTagInRange(uint(network.PktTag), "vxlan", gCfg.Auto.VXLANs, stateDriver, tenantName) {
return fmt.Errorf("vxlan %d does not adhere to tenant's vxlan range %s", network.PktTag, gCfg.Auto.VXLANs)
}
nwCfg.ExtPktTag = network.PktTag
nwCfg.PktTag = network.PktTag
} else if network.PktTagType == "vlan" {
if !isTagInRange(uint(network.PktTag), "vlan", gCfg.Auto.VLANs, stateDriver, tenantName) {
return fmt.Errorf("vlan %d does not adhere to tenant's vlan range %s", network.PktTag, gCfg.Auto.VLANs)
}
nwCfg.PktTag = network.PktTag
}
if nwCfg.SubnetIP == "" {
nwCfg.SubnetLen = gCfg.Auto.AllocSubnetLen
nwCfg.SubnetIP, err = gCfg.AllocSubnet(rm)
if err != nil {
return err
}
nwCfg.SubnetIsAllocated = true
}
defaultNwName, err := gCfg.AssignDefaultNetwork(network.Name)
if err != nil {
log.Errorf("error assigning the default network. Error: %s", err)
return err
}
if network.Name == defaultNwName {
// For auto derived subnets assign gateway ip be the last valid unicast ip the subnet
if nwCfg.Gateway == "" && nwCfg.SubnetIsAllocated {
var ipAddrValue uint
ipAddrValue = (1 << (32 - nwCfg.SubnetLen)) - 2
nwCfg.Gateway, err = netutils.GetSubnetIP(nwCfg.SubnetIP, nwCfg.SubnetLen, 32, ipAddrValue)
if err != nil {
return err
}
nwCfg.IPAllocMap.Set(ipAddrValue)
//.........這裏部分代碼省略.........