Skip to content

Commit a94c5e2

Browse files
atulpatel261194glimchb
authored andcommitted
fix(evpn): issue259 consider breaking too long files
Signed-off-by: atulpatel261194 <[email protected]>
1 parent d7d7f54 commit a94c5e2

16 files changed

+1535
-1384
lines changed

cmd/evpn-bridge-port.go

+215
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// Copyright (c) 2022-2023 Intel Corporation, or its subsidiaries.
3+
// Copyright (c) 2022-2023 Dell Inc, or its subsidiaries.
4+
5+
// Package cmd implements the CLI commands
6+
package cmd
7+
8+
import (
9+
"context"
10+
"log"
11+
"time"
12+
13+
"github.com/opiproject/godpu/network"
14+
"github.com/spf13/cobra"
15+
)
16+
17+
// CreateBridgePort creates an Bridge Port an OPI server
18+
func CreateBridgePort() *cobra.Command {
19+
var addr string
20+
var name string
21+
var mac string
22+
var bridgePortType string
23+
var logicalBridges []string
24+
25+
cmd := &cobra.Command{
26+
Use: "create-bp",
27+
Short: "Create a bridge port",
28+
Long: "Create a BridgePort with the specified name, MAC address, type, and VLAN IDs",
29+
Run: func(cmd *cobra.Command, args []string) {
30+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
31+
evpnClient, err := network.NewBridgePort(addr)
32+
if err != nil {
33+
log.Fatalf("could not create gRPC client: %v", err)
34+
}
35+
defer cancel()
36+
// grpc call to create the bridge port
37+
bridgePort, err := evpnClient.CreateBridgePort(ctx, name, mac, bridgePortType, logicalBridges)
38+
if err != nil {
39+
log.Fatalf("could not create Bridge Port: %v", err)
40+
}
41+
log.Printf("Created Bridge Port:\n status: %s\n type: %s\n name: %s\n bridges: %s\n mac: %s\n", bridgePort.GetStatus().GetOperStatus(), bridgePort.GetSpec().GetPtype(),
42+
bridgePort.GetName(), bridgePort.GetSpec().GetLogicalBridges(), bridgePort.GetSpec().GetMacAddress())
43+
},
44+
}
45+
46+
cmd.Flags().StringVarP(&name, "name", "n", "", "Specify the name of the BridgePort")
47+
cmd.Flags().StringVar(&mac, "mac", "", "Specify the MAC address")
48+
cmd.Flags().StringVarP(&bridgePortType, "type", "t", "", "Specify the type (access or trunk)")
49+
cmd.Flags().StringSliceVar(&logicalBridges, "logicalBridges", []string{}, "Specify VLAN IDs (multiple values supported)")
50+
cmd.Flags().StringVar(&addr, "addr", "localhost:50151", "address of OPI gRPC server")
51+
52+
if err := cmd.MarkFlagRequired("mac"); err != nil {
53+
log.Fatalf("Error marking flag as required: %v", err)
54+
}
55+
if err := cmd.MarkFlagRequired("type"); err != nil {
56+
log.Fatalf("Error marking flag as required: %v", err)
57+
}
58+
59+
// Define allowed choices for the "type" Flag
60+
err := cmd.RegisterFlagCompletionFunc("type", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
61+
return []string{"access", "trunk"}, cobra.ShellCompDirectiveNoFileComp
62+
})
63+
if err != nil {
64+
log.Fatalf("Error registering flag completion function: %v", err)
65+
}
66+
return cmd
67+
}
68+
69+
// DeleteBridgePort delete an Bridge Port an OPI server
70+
func DeleteBridgePort() *cobra.Command {
71+
var addr string
72+
var name string
73+
var allowMissing bool
74+
75+
cmd := &cobra.Command{
76+
Use: "delete-bp",
77+
Short: "Delete a bridge port",
78+
Long: "Delete a BridgePort with the specified name",
79+
Run: func(cmd *cobra.Command, args []string) {
80+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
81+
evpnClient, err := network.NewBridgePort(addr)
82+
if err != nil {
83+
log.Fatalf("could not create gRPC client: %v", err)
84+
}
85+
defer cancel()
86+
87+
// grpc call to create the bridge port
88+
_, err = evpnClient.DeleteBridgePort(ctx, name, allowMissing)
89+
if err != nil {
90+
log.Fatalf("DeleteBridgePort: Error occurred while deleting Bridge Port: %q", err)
91+
}
92+
log.Printf("Deleted BridgePort ")
93+
},
94+
}
95+
96+
cmd.Flags().StringVarP(&name, "name", "n", "", "Specify the name of the BridgePort")
97+
cmd.Flags().BoolVarP(&allowMissing, "allowMissing", "a", false, "Specify if missing allowed")
98+
cmd.Flags().StringVar(&addr, "addr", "localhost:50151", "address of OPI gRPC server")
99+
100+
return cmd
101+
}
102+
103+
// GetBridgePort Get Bridge Port details
104+
func GetBridgePort() *cobra.Command {
105+
var addr string
106+
var name string
107+
108+
cmd := &cobra.Command{
109+
Use: "get-bp",
110+
Short: "Show details of a bridge port",
111+
Long: "Show details of a BridgePort with the specified name",
112+
Run: func(cmd *cobra.Command, args []string) {
113+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
114+
evpnClient, err := network.NewBridgePort(addr)
115+
if err != nil {
116+
log.Fatalf("could not create gRPC client: %v", err)
117+
}
118+
defer cancel()
119+
120+
// grpc call to create the bridge port
121+
bridgePort, err := evpnClient.GetBridgePort(ctx, name)
122+
if err != nil {
123+
log.Fatalf("GetBridgePort: Error occurred while creating Bridge Port: %q", err)
124+
}
125+
log.Printf("Bridge Port:\n status: %s\n type: %s\n name: %s\n bridges: %s\n mac: %s\n", bridgePort.GetStatus().GetOperStatus(), bridgePort.GetSpec().GetPtype(),
126+
bridgePort.GetName(), bridgePort.GetSpec().GetLogicalBridges(), bridgePort.GetSpec().GetMacAddress())
127+
},
128+
}
129+
130+
cmd.Flags().StringVarP(&name, "name", "n", "", "Specify the name of the BridgePort")
131+
cmd.Flags().StringVar(&addr, "addr", "localhost:50151", "address of OPI gRPC server")
132+
133+
if err := cmd.MarkFlagRequired("name"); err != nil {
134+
log.Fatalf("Error marking flag as required: %v", err)
135+
}
136+
return cmd
137+
}
138+
139+
// ListBridgePorts list all the Bridge Port an OPI server
140+
func ListBridgePorts() *cobra.Command {
141+
var addr string
142+
var pageSize int32
143+
var pageToken string
144+
145+
cmd := &cobra.Command{
146+
Use: "list-bps",
147+
Short: "Show details of all bridge ports",
148+
Run: func(cmd *cobra.Command, args []string) {
149+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
150+
evpnClient, err := network.NewBridgePort(addr)
151+
if err != nil {
152+
log.Fatalf("could not create gRPC client: %v", err)
153+
}
154+
defer cancel()
155+
for {
156+
resp, err := evpnClient.ListBridgePorts(ctx, pageSize, pageToken)
157+
if err != nil {
158+
log.Fatalf("Failed to get items: %v", err)
159+
}
160+
// Process the server response
161+
for _, bridgePort := range resp.BridgePorts {
162+
log.Printf("Bridge Port:\n status: %s\n type: %s\n name: %s\n bridges: %s\n mac: %s\n", bridgePort.GetStatus().GetOperStatus(), bridgePort.GetSpec().GetPtype(),
163+
bridgePort.GetName(), bridgePort.GetSpec().GetLogicalBridges(), bridgePort.GetSpec().GetMacAddress())
164+
}
165+
166+
// Check if there are more pages to retrieve
167+
if resp.NextPageToken == "" {
168+
// No more pages, break the loop
169+
break
170+
}
171+
// Update the page token for the next request
172+
pageToken = resp.NextPageToken
173+
}
174+
},
175+
}
176+
cmd.Flags().Int32VarP(&pageSize, "pagesize", "s", 0, "Specify page size")
177+
cmd.Flags().StringVarP(&pageToken, "pagetoken", "t", "", "Specify the token")
178+
cmd.Flags().StringVar(&addr, "addr", "localhost:50151", "address of OPI gRPC server")
179+
return cmd
180+
}
181+
182+
// UpdateBridgePort update the Bridge Port on OPI server
183+
func UpdateBridgePort() *cobra.Command {
184+
var addr string
185+
var name string
186+
var updateMask []string
187+
var allowMissing bool
188+
189+
cmd := &cobra.Command{
190+
Use: "update-bp",
191+
Short: "Update the bridge port",
192+
Long: "updates the Bridge Port with updated mask",
193+
Run: func(cmd *cobra.Command, args []string) {
194+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
195+
evpnClient, err := network.NewBridgePort(addr)
196+
if err != nil {
197+
log.Fatalf("could not create gRPC client: %v", err)
198+
}
199+
defer cancel()
200+
201+
// grpc call to create the bridge port
202+
bridgePort, err := evpnClient.UpdateBridgePort(ctx, name, updateMask, allowMissing)
203+
if err != nil {
204+
log.Fatalf("UpdateBridgePort: Error occurred while creating Bridge Port: %q", err)
205+
}
206+
log.Printf("Bridge Port:\n status: %s\n type: %s\n name: %s\n bridges: %s\n mac: %s\n", bridgePort.GetStatus().GetOperStatus(), bridgePort.GetSpec().GetPtype(),
207+
bridgePort.GetName(), bridgePort.GetSpec().GetLogicalBridges(), bridgePort.GetSpec().GetMacAddress())
208+
},
209+
}
210+
cmd.Flags().StringVar(&name, "name", "", "name of the Bridge Port")
211+
cmd.Flags().StringSliceVar(&updateMask, "update-mask", nil, "update mask")
212+
cmd.Flags().BoolVarP(&allowMissing, "allowMissing", "a", false, "allow the missing")
213+
cmd.Flags().StringVar(&addr, "addr", "localhost:50151", "address of OPI gRPC server")
214+
return cmd
215+
}

0 commit comments

Comments
 (0)