first pass at capabilitiy args
authorMichael Cambria <mcambria@redhat.com>
Mon, 22 Apr 2019 21:58:40 +0000 (17:58 -0400)
committerMichael Cambria <mcambria@redhat.com>
Mon, 22 Apr 2019 21:58:40 +0000 (17:58 -0400)
api/api.proto
api/handler.go
client/main.go

index 651c86c..c785356 100644 (file)
@@ -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 {
index a71e5cf..1792af6 100644 (file)
@@ -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 != "" {
index d104b44..a7dd6fb 100644 (file)
@@ -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 {