// AllocSubnet allocates a new subnet. Returns a CIDR. func (gc *Cfg) AllocSubnet(ra core.ResourceManager) (string, error) { pair, err := ra.AllocateResourceVal(gc.Tenant, resources.AutoSubnetResource) if err != nil { return "", err } return pair.(resources.SubnetIPLenPair).IP.String(), err }
// AllocVLAN allocates a new VLAN resource. Returns an ID. func (gc *Cfg) AllocVLAN(ra core.ResourceManager) (uint, error) { vlan, err := ra.AllocateResourceVal(gc.Tenant, resources.AutoVLANResource) if err != nil { log.Errorf("alloc vlan failed: %q", err) return 0, err } return vlan.(uint), err }
// AllocVXLAN allocates a new vxlan; ids for both the vxlan and vlan are returned. func (gc *Cfg) AllocVXLAN(ra core.ResourceManager) (vxlan uint, localVLAN uint, err error) { pair, err1 := ra.AllocateResourceVal(gc.Tenant, resources.AutoVXLANResource) if err1 != nil { return 0, 0, err1 } g := &Oper{} g.StateDriver = gc.StateDriver err = g.Read(gc.Tenant) if err != nil { return 0, 0, err } vxlan = pair.(resources.VXLANVLANPair).VXLAN + g.FreeVXLANsStart localVLAN = pair.(resources.VXLANVLANPair).VLAN return }