本文整理汇总了Golang中github.com/Juniper/contrail-go-api/types.VirtualNetwork.AddNetworkIpam方法的典型用法代码示例。如果您正苦于以下问题:Golang VirtualNetwork.AddNetworkIpam方法的具体用法?Golang VirtualNetwork.AddNetworkIpam怎么用?Golang VirtualNetwork.AddNetworkIpam使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/Juniper/contrail-go-api/types.VirtualNetwork
的用法示例。
在下文中一共展示了VirtualNetwork.AddNetworkIpam方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: CreateNetworkWithSubnet
func CreateNetworkWithSubnet(
client contrail.ApiClient, project_id, name, prefix string) (
string, error) {
expr := regexp.MustCompile(`(([0-9]{1,3}\.){3}[0-9]{1,3})/([0-9]{1,2})`)
match := expr.FindStringSubmatch(prefix)
if match == nil {
return "", fmt.Errorf("Invalid subnet prefix %s", prefix)
}
address := match[1]
prefixlen, _ := strconv.Atoi(match[3])
obj, err := client.FindByUuid("project", project_id)
if err != nil {
return "", err
}
project := obj.(*types.Project)
refList, err := project.GetNetworkIpams()
if err != nil {
return "", err
}
var ipam *types.NetworkIpam
if len(refList) > 0 {
obj, err := client.FindByUuid("network-ipam", refList[0].Uuid)
if err != nil {
return "", err
}
ipam = obj.(*types.NetworkIpam)
} else {
obj, err := client.FindByName("network-ipam",
"default-domain:default-project:default-network-ipam")
if err != nil {
return "", err
}
ipam = obj.(*types.NetworkIpam)
}
net := new(types.VirtualNetwork)
net.SetParent(project)
net.SetName(name)
subnets := types.VnSubnetsType{}
subnets.AddIpamSubnets(
&types.IpamSubnetType{
Subnet: &types.SubnetType{address, prefixlen}})
net.AddNetworkIpam(ipam, subnets)
err = client.Create(net)
if err != nil {
return "", err
}
return net.GetUuid(), nil
}
示例2: TestCreate
func TestCreate(t *testing.T) {
client := contrail.NewClient("localhost", 8082)
net := types.VirtualNetwork{}
net.SetName("test")
ipam, err := client.FindByName("network-ipam",
"default-domain:default-project:default-network-ipam")
if err != nil {
t.Fatal(err)
}
subnets := types.VnSubnetsType{}
subnets.AddIpamSubnets(
&types.IpamSubnetType{
Subnet: &types.SubnetType{"10.0.0.0", 8}})
net.AddNetworkIpam(ipam.(*types.NetworkIpam), subnets)
err = client.Create(&net)
if err != nil {
t.Error(err)
}
if len(net.GetUuid()) == 0 {
t.Error("No uuid assigned")
}
netPtr, err := client.FindByUuid("virtual-network", net.GetUuid())
if err != nil {
t.Error(err)
} else {
xnet := netPtr.(*types.VirtualNetwork)
refs, err := xnet.GetNetworkIpamRefs()
if err != nil {
t.Error(err)
} else if len(refs) > 0 {
xattr := refs[0].Attr.(types.VnSubnetsType)
if len(xattr.IpamSubnets) == 1 {
isubnet := xattr.IpamSubnets[0]
if isubnet.Subnet.IpPrefix != "10.0.0.0" ||
isubnet.Subnet.IpPrefixLen != 8 {
t.Errorf("Bad subnet %s/%d",
isubnet.Subnet.IpPrefix,
isubnet.Subnet.IpPrefixLen)
}
} else {
t.Errorf("%d subnets", len(xattr.IpamSubnets))
}
} else {
t.Error("Empty network-ipam reference list")
}
}
err = client.Delete(&net)
if err != nil {
t.Error(err)
}
}
示例3: TestReference
func TestReference(t *testing.T) {
db := NewInMemDatabase()
ipam := new(types.NetworkIpam)
ipam.SetUuid(uuid.New())
ipam.SetFQName("project", strings.Split("default-domain:p1:ipam", ":"))
assert.NoError(t, db.Put(ipam, nil, UIDList{}))
net := new(types.VirtualNetwork)
net.SetUuid(uuid.New())
net.SetFQName("project", strings.Split("default-domain:p1:network", ":"))
subnets := types.VnSubnetsType{}
subnets.AddIpamSubnets(
&types.IpamSubnetType{
Subnet: &types.SubnetType{"10.0.0.0", 8}})
net.AddNetworkIpam(ipam, subnets)
refs := GetReferenceList(net)
assert.NoError(t, db.Put(net, nil, refs))
result, err := db.GetBackReferences(parseUID(ipam.GetUuid()), "virtual_network")
assert.NoError(t, err)
assert.Contains(t, result, parseUID(net.GetUuid()))
}
示例4: TestReferenceUpdate
func TestReferenceUpdate(t *testing.T) {
client := contrail.NewClient("localhost", 8082)
net := types.VirtualNetwork{}
net.SetName("test2")
ipam, err := client.FindByName("network-ipam",
"default-domain:default-project:default-network-ipam")
if err != nil {
t.Fatal(err)
}
subnets := types.VnSubnetsType{}
subnets.AddIpamSubnets(
&types.IpamSubnetType{
Subnet: &types.SubnetType{"10.0.0.0", 8}})
net.AddNetworkIpam(ipam.(*types.NetworkIpam), subnets)
err = client.Create(&net)
if err != nil {
t.Error(err)
}
defer client.Delete(&net)
obj, err := client.FindByUuid("virtual-network", net.GetUuid())
if err != nil {
t.Fatal(err)
}
netPtr := obj.(*types.VirtualNetwork)
refs, err := netPtr.GetNetworkIpamRefs()
if err != nil {
t.Error(err)
} else if len(refs) > 0 {
netPtr.DeleteNetworkIpam(refs[0].Uuid)
nsubnets := types.VnSubnetsType{}
nsubnets.AddIpamSubnets(
&types.IpamSubnetType{
Subnet: &types.SubnetType{"192.168.0.0", 16}})
netPtr.AddNetworkIpam(ipam.(*types.NetworkIpam), nsubnets)
client.Update(netPtr)
} else {
t.Error("Empty network-ipam reference list")
}
obj, err = client.FindByUuid("virtual-network", net.GetUuid())
if err != nil {
t.Fatal(err)
}
netPtr = obj.(*types.VirtualNetwork)
refs, err = netPtr.GetNetworkIpamRefs()
if err != nil {
t.Error(err)
} else if len(refs) != 1 {
t.Errorf("Expected: 1 reference, %d actual", len(refs))
} else {
xattr := refs[0].Attr.(types.VnSubnetsType)
if len(xattr.IpamSubnets) == 1 {
isubnet := xattr.IpamSubnets[0]
if isubnet.Subnet.IpPrefix != "192.168.0.0" ||
isubnet.Subnet.IpPrefixLen != 16 {
t.Errorf("Bad subnet %s/%d",
isubnet.Subnet.IpPrefix,
isubnet.Subnet.IpPrefixLen)
}
} else {
t.Errorf("%d subnets", len(xattr.IpamSubnets))
}
}
netPtr.ClearNetworkIpam()
client.Update(netPtr)
obj, err = client.FindByUuid("virtual-network", net.GetUuid())
if err != nil {
t.Fatal(err)
}
netPtr = obj.(*types.VirtualNetwork)
refs, err = netPtr.GetNetworkIpamRefs()
if err != nil {
t.Error(err)
} else if len(refs) != 0 {
t.Errorf("Expected: 1 reference, %d actual", len(refs))
}
}