VOL-2927 convert to static protos
Change-Id: If08aec0b1fb84fc54f7f62d5e4ede8ad4a9db80f
diff --git a/internal/pkg/commands/flows.go b/internal/pkg/commands/flows.go
index b8c2eb6..efe09f2 100644
--- a/internal/pkg/commands/flows.go
+++ b/internal/pkg/commands/flows.go
@@ -18,10 +18,10 @@
import (
"context"
"fmt"
- "github.com/fullstorydev/grpcurl"
- "github.com/jhump/protoreflect/dynamic"
"github.com/opencord/voltctl/pkg/format"
"github.com/opencord/voltctl/pkg/model"
+ "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ "github.com/opencord/voltha-protos/v3/go/voltha"
"sort"
"strings"
)
@@ -113,51 +113,37 @@
}
defer conn.Close()
- switch options.Method {
- case "device-flows":
- case "logical-device-flows":
- default:
- Error.Fatalf("Unknown method name: '%s'", options.Method)
- }
-
- descriptor, method, err := GetMethod(options.Method)
- if err != nil {
- return err
- }
+ client := voltha.NewVolthaServiceClient(conn)
ctx, cancel := context.WithTimeout(context.Background(), GlobalConfig.Grpc.Timeout)
defer cancel()
- h := &RpcEventHandler{
- Fields: map[string]map[string]interface{}{ParamNames[GlobalConfig.ApiVersion]["ID"]: {"id": options.Args.Id}},
- }
- err = grpcurl.InvokeRPC(ctx, descriptor, conn, method, []string{}, h, h.GetParams)
- if err != nil {
- return err
- } else if h.Status != nil && h.Status.Err() != nil {
- return h.Status.Err()
+ id := voltha.ID{Id: string(options.Args.Id)}
+
+ var flows *openflow_13.Flows
+
+ switch options.Method {
+ case "device-flows":
+ flows, err = client.ListDeviceFlows(ctx, &id)
+ case "logical-device-flows":
+ flows, err = client.ListLogicalDeviceFlows(ctx, &id)
+ default:
+ Error.Fatalf("Unknown method name: '%s'", options.Method)
}
- d, err := dynamic.AsDynamicMessage(h.Response)
- if err != nil {
- return err
- }
- items, err := d.TryGetFieldByName("items")
if err != nil {
return err
}
- if toOutputType(options.OutputAs) == OUTPUT_TABLE && (items == nil || len(items.([]interface{})) == 0) {
+ if toOutputType(options.OutputAs) == OUTPUT_TABLE && (flows == nil || len(flows.Items) == 0) {
fmt.Println("*** NO FLOWS ***")
return nil
}
- // Walk the flows and populate the output table
- data := make([]model.Flow, len(items.([]interface{})))
+ data := make([]model.Flow, len(flows.Items))
var fieldset model.FlowFieldFlag
- for i, item := range items.([]interface{}) {
- val := item.(*dynamic.Message)
- data[i].PopulateFrom(val)
+ for i, item := range flows.Items {
+ data[i].PopulateFromProto(item)
fieldset |= data[i].Populated()
}