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()
 	}