diff --git a/network/bridge_port.go b/network/bridge_port.go index 6202396..4679609 100644 --- a/network/bridge_port.go +++ b/network/bridge_port.go @@ -20,21 +20,32 @@ import ( // CreateBridgePort creates an Bridge Port an OPI server func (c evpnClientImpl) CreateBridgePort(ctx context.Context, name string, mac string, bridgePortType string, logicalBridges []string) (*pb.BridgePort, error) { var typeOfPort pb.BridgePortType + conn, closer, err := c.NewConn() if err != nil { log.Printf("error creating connection: %s\n", err) return nil, err } defer closer() + if mac == "" || bridgePortType == "" { return nil, errors.New("required parameter [mac, bridgePortType] wasn't passed ") } + + var lBridges = make([]string, 0) + for _, lb := range logicalBridges { + str := resourceIDToFullName("bridges", lb) + lBridges = append(lBridges, str) + } + client := c.getEvpnBridgePortClient(conn) + macBytes, err := net.ParseMAC(mac) if err != nil { fmt.Println("Error parsing MAC address:", err) return nil, err } + switch bridgePortType { case "access": typeOfPort = pb.BridgePortType_BRIDGE_PORT_TYPE_ACCESS @@ -49,7 +60,7 @@ func (c evpnClientImpl) CreateBridgePort(ctx context.Context, name string, mac s Spec: &pb.BridgePortSpec{ MacAddress: macBytes, Ptype: typeOfPort, - LogicalBridges: logicalBridges, + LogicalBridges: lBridges, }, }, }) diff --git a/network/bridge_port_test.go b/network/bridge_port_test.go index a6dd797..c96a8d5 100644 --- a/network/bridge_port_test.go +++ b/network/bridge_port_test.go @@ -28,7 +28,7 @@ func TestCreateBridgePort(t *testing.T) { Spec: &pb.BridgePortSpec{ MacAddress: macBytes, Ptype: pb.BridgePortType_BRIDGE_PORT_TYPE_ACCESS, - LogicalBridges: []string{"lb1", "lb2"}, + LogicalBridges: []string{"//network.opiproject.org/bridges/lb1", "//network.opiproject.org/bridges/lb2"}, }, } diff --git a/network/svi.go b/network/svi.go index 0cb4013..a2fcbed 100644 --- a/network/svi.go +++ b/network/svi.go @@ -31,6 +31,9 @@ func (c evpnClientImpl) CreateSvi(ctx context.Context, name string, vrf string, if vrf == "" || mac == "" || len(gwIPs) == 0 { return nil, errors.New("one of the required together parameter [vrf, mac, gwIPs] wasn't passed ") } + vrfName := resourceIDToFullName("vrfs", vrf) + + lBridge := resourceIDToFullName("bridges", logicalBridge) gwPrefixes, err := parseIPPrefixes(gwIPs) if err != nil { @@ -46,8 +49,8 @@ func (c evpnClientImpl) CreateSvi(ctx context.Context, name string, vrf string, SviId: name, Svi: &pb.Svi{ Spec: &pb.SviSpec{ - Vrf: vrf, - LogicalBridge: logicalBridge, + Vrf: vrfName, + LogicalBridge: lBridge, MacAddress: macBytes, GwIpPrefix: gwPrefixes, EnableBgp: ebgp, diff --git a/network/svi_test.go b/network/svi_test.go index 9e40707..2a5bd39 100644 --- a/network/svi_test.go +++ b/network/svi_test.go @@ -38,8 +38,8 @@ func TestCreateSvi(t *testing.T) { testSvi := &pb.Svi{ Spec: &pb.SviSpec{ - Vrf: "vrf1", - LogicalBridge: "logical1", + Vrf: "//network.opiproject.org/vrfs/vrf1", + LogicalBridge: "//network.opiproject.org/bridges/logical1", MacAddress: macBytes, GwIpPrefix: wantGWPrefixes, EnableBgp: true,