From 1a1372d582d3d8ee9e7aa1ef33085dc8367e12ee Mon Sep 17 00:00:00 2001 From: Michael Cambria Date: Mon, 22 Apr 2019 17:58:40 -0400 Subject: [PATCH] first pass at capabilitiy args --- api/api.proto | 13 ++++++++---- api/handler.go | 20 +++++++++--------- client/main.go | 55 +++++++++++++++++++++++++++----------------------- 3 files changed, 48 insertions(+), 40 deletions(-) diff --git a/api/api.proto b/api/api.proto index 651c86c..c785356 100644 --- a/api/api.proto +++ b/api/api.proto @@ -61,6 +61,7 @@ message CNIcapArgs { } repeated PORTMAPPINGS portMappings = 1; + //PORTMAPPINGS portMappings = 1; message FOOMAP { string thing1 = 1; @@ -68,6 +69,7 @@ message CNIcapArgs { } repeated FOOMAP fooMap = 2; + //FOOMAP fooMap = 2; } message ConfPath { @@ -84,7 +86,7 @@ message CNImsg { string ifName = 6; string cniArgs = 7; string stdIn = 8; - repeated CNIcapArgs capArgs = 9; + CNIcapArgs capArgs = 9; } message CNIresult { @@ -99,7 +101,8 @@ message CNIaddMsg { string netNS = 3; string ifName = 4; string cniArgs = 5; - repeated CNIcapArgs capArgs = 6; + //CNIcapArgs capArgs = 6; + string capArgs = 6; } message ADDresult { @@ -113,7 +116,8 @@ message CNIcheckMsg { string netNS = 3; string ifName = 4; string cniArgs = 5; - repeated CNIcapArgs capArgs = 6; + //CNIcapArgs capArgs = 6; + string capArgs = 6; } message CHECKresult { @@ -126,7 +130,8 @@ message CNIdelMsg { string netNS = 3; string ifName = 4; string cniArgs = 5; - repeated CNIcapArgs capArgs = 6; + //CNIcapArgs capArgs = 6; + string capArgs = 6; } message DELresult { diff --git a/api/handler.go b/api/handler.go index a71e5cf..1792af6 100644 --- a/api/handler.go +++ b/api/handler.go @@ -4,12 +4,14 @@ import ( "log" "context" "crypto/sha512" - //"encoding/json" + "encoding/json" "fmt" "os" "path/filepath" "strings" + //proto "github.com/golang/protobuf/proto" + "github.com/containernetworking/cni/libcni" ) @@ -179,7 +181,7 @@ func parseArgs(args string) ([][2]string, error) { return result, nil } -func cniCommon(conf string, netns string, ifName string, args string, capabilityArgsValue []*CNIcapArgs) (*libcni.NetworkConfigList, *libcni.RuntimeConf, *libcni.CNIConfig, error) { +func cniCommon(conf string, netns string, ifName string, args string, capabilityArgsValue string) (*libcni.NetworkConfigList, *libcni.RuntimeConf, *libcni.CNIConfig, error) { log.Printf("cniCommon Called") @@ -194,15 +196,11 @@ func cniCommon(conf string, netns string, ifName string, args string, capability return nil, nil, nil, err } - // TODO deal with capabilityArgs - // - //var capabilityArgs map[string]interface{} - // //capabilityArgsValue := os.Getenv(EnvCapabilityArgs) - //if len(capabilityArgsValue) > 0 { - // if err = json.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil { - // return nil, nil, nil, err - // } - //} + capabilityArgs := CNIcapArgs{} + if err = json.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil { + //if err := proto.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil { + return nil, nil, nil, err + } var cniArgs [][2]string if args != "" { diff --git a/client/main.go b/client/main.go index d104b44..a7dd6fb 100644 --- a/client/main.go +++ b/client/main.go @@ -10,6 +10,7 @@ import ( "path/filepath" "github.com/mccv1r0/demo-grpc/api" + //proto "github.com/golang/protobuf/proto" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) @@ -189,22 +190,23 @@ func main() { os.Exit(1) } - /* - var capabilityArgs map[string]interface{} + var capArgs string + //var err error + //capabilityArgs := api.CNIcapArgs{} capabilityArgsValue := os.Getenv(EnvCapabilityArgs) if len(capabilityArgsValue) > 0 { - if err := json.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil { - exit(err) - } + println("capabilityArgsValue: ", capabilityArgsValue) + //if err = proto.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil { + // exit(err) + //} + //data, err := proto.Marshal(&capabilityArgs) + //println("data: %v", data) + //if err != nil { + // exit(err) + //} + //capArgs = string(data) + capArgs = capabilityArgsValue } - */ - - /* - capArgs, okCapArgs := os.LookupEnv(EnvCapabilityArgs) - if !okCapArgs { - capArgs = "" - } - */ args, okArgs := os.LookupEnv(EnvCNIArgs) if !okArgs { @@ -224,18 +226,18 @@ func main() { switch os.Args[1] { case CmdAdd: - gRPCsendAddTcp(os.Args[2], netns, ifName, args) + gRPCsendAddTcp(os.Args[2], netns, ifName, args, capArgs) os.Exit(0) case CmdCheck: - gRPCsendCheckTcp(os.Args[2], netns, ifName, args) + gRPCsendCheckTcp(os.Args[2], netns, ifName, args, capArgs) os.Exit(0) case CmdDel: - gRPCsendDelTcp(os.Args[2], netns, ifName, args) + gRPCsendDelTcp(os.Args[2], netns, ifName, args, capArgs) os.Exit(0) } } -func gRPCsendAddTcp(conf string, netns string, ifName string, args string) error { +func gRPCsendAddTcp(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn // Create the client TLS credentials @@ -266,7 +268,7 @@ func gRPCsendAddTcp(conf string, netns string, ifName string, args string) error NetNS: netns, IfName: ifName, CniArgs: args, - //CapArgs: capArgs, + CapArgs: capArgs, } resultAdd, err := cni.CNIadd(context.Background(), &cniAddMsg) if err != nil { @@ -278,7 +280,7 @@ func gRPCsendAddTcp(conf string, netns string, ifName string, args string) error return nil } -func gRPCsendCheckTcp(conf string, netns string, ifName string, args string) error { +func gRPCsendCheckTcp(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn // Create the client TLS credentials @@ -309,7 +311,7 @@ func gRPCsendCheckTcp(conf string, netns string, ifName string, args string) err NetNS: netns, IfName: ifName, CniArgs: args, - //CapArgs: capArgs, + CapArgs: capArgs, } resultCheck, err := cni.CNIcheck(context.Background(), &cniCheckMsg) if err != nil { @@ -321,7 +323,7 @@ func gRPCsendCheckTcp(conf string, netns string, ifName string, args string) err return nil } -func gRPCsendDelTcp(conf string, netns string, ifName string, args string) error { +func gRPCsendDelTcp(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn // Create the client TLS credentials @@ -352,7 +354,7 @@ func gRPCsendDelTcp(conf string, netns string, ifName string, args string) error NetNS: netns, IfName: ifName, CniArgs: args, - //CapArgs: capArgs, + CapArgs: capArgs, } resultDel, err := cni.CNIdel(context.Background(), &cniDelMsg) if err != nil { @@ -364,7 +366,7 @@ func gRPCsendDelTcp(conf string, netns string, ifName string, args string) error return nil } -func gRPCsendAddUnix(conf string, netns string, ifName string, args string) error { +func gRPCsendAddUnix(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn @@ -396,6 +398,7 @@ func gRPCsendAddUnix(conf string, netns string, ifName string, args string) erro NetNS: netns, IfName: ifName, CniArgs: args, + CapArgs: capArgs, } resultAdd, err := cni.CNIadd(context.Background(), &cniAddMsg) if err != nil { @@ -407,7 +410,7 @@ func gRPCsendAddUnix(conf string, netns string, ifName string, args string) erro return nil } -func gRPCsendCheckUnix(conf string, netns string, ifName string, args string) error { +func gRPCsendCheckUnix(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn @@ -439,6 +442,7 @@ func gRPCsendCheckUnix(conf string, netns string, ifName string, args string) er NetNS: netns, IfName: ifName, CniArgs: args, + CapArgs: capArgs, } resultCheck, err := cni.CNIcheck(context.Background(), &cniCheckMsg) if err != nil { @@ -450,7 +454,7 @@ func gRPCsendCheckUnix(conf string, netns string, ifName string, args string) er return nil } -func gRPCsendDelUnix(conf string, netns string, ifName string, args string) error { +func gRPCsendDelUnix(conf string, netns string, ifName string, args string, capArgs string) error { var conn *grpc.ClientConn @@ -482,6 +486,7 @@ func gRPCsendDelUnix(conf string, netns string, ifName string, args string) erro NetNS: netns, IfName: ifName, CniArgs: args, + CapArgs: capArgs, } resultDel, err := cni.CNIdel(context.Background(), &cniDelMsg) if err != nil { -- 2.44.0