multus: rework cmdAdd/Del/Get calling to support testcases

This commit is contained in:
Dan Williams
2018-06-14 09:35:23 -05:00
committed by Kuralamudhan Ramakrishnan
parent afa87024eb
commit f4f6a6cbed

View File

@@ -148,11 +148,11 @@ func delPlugins(exec invoke.Exec, argIfname string, delegates []*types.DelegateN
return nil return nil
} }
func cmdAdd(args *skel.CmdArgs, exec invoke.Exec) error { func cmdAdd(args *skel.CmdArgs, exec invoke.Exec) (cnitypes.Result, error) {
var nopodnet bool var nopodnet bool
n, err := types.LoadNetConf(args.StdinData) n, err := types.LoadNetConf(args.StdinData)
if err != nil { if err != nil {
return fmt.Errorf("err in loading netconf: %v", err) return nil, fmt.Errorf("err in loading netconf: %v", err)
} }
if n.Kubeconfig != "" { if n.Kubeconfig != "" {
@@ -161,18 +161,18 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec) error {
if _, ok := err.(*k8s.NoK8sNetworkError); ok { if _, ok := err.(*k8s.NoK8sNetworkError); ok {
nopodnet = true nopodnet = true
} else { } else {
return fmt.Errorf("Multus: Err in getting k8s network from pod: %v", err) return nil, fmt.Errorf("Multus: Err in getting k8s network from pod: %v", err)
} }
} }
if err = n.AddDelegates(delegates); err != nil { if err = n.AddDelegates(delegates); err != nil {
return err return nil, err
} }
} }
if n.Kubeconfig == "" || nopodnet { if n.Kubeconfig == "" || nopodnet {
if err := saveDelegates(args.ContainerID, n.CNIDir, n.Delegates); err != nil { if err := saveDelegates(args.ContainerID, n.CNIDir, n.Delegates); err != nil {
return fmt.Errorf("Multus: Err in saving the delegates: %v", err) return nil, fmt.Errorf("Multus: Err in saving the delegates: %v", err)
} }
} }
@@ -191,24 +191,25 @@ func cmdAdd(args *skel.CmdArgs, exec invoke.Exec) error {
result = tmpResult result = tmpResult
} }
} }
if err != nil { if err != nil {
// Ignore errors; DEL must be idempotent anyway // Ignore errors; DEL must be idempotent anyway
_ = delPlugins(exec, args.IfName, n.Delegates, lastIdx) _ = delPlugins(exec, args.IfName, n.Delegates, lastIdx)
return err return nil, err
} }
return result.Print() return result, nil
} }
func cmdGet(args *skel.CmdArgs, exec invoke.Exec) error { func cmdGet(args *skel.CmdArgs, exec invoke.Exec) (cnitypes.Result, error) {
in, err := types.LoadNetConf(args.StdinData) in, err := types.LoadNetConf(args.StdinData)
if err != nil { if err != nil {
return err return nil, err
} }
// FIXME: call all delegates // FIXME: call all delegates
return in.PrevResult.Print() return in.PrevResult, nil
} }
func cmdDel(args *skel.CmdArgs, exec invoke.Exec) error { func cmdDel(args *skel.CmdArgs, exec invoke.Exec) error {
@@ -254,8 +255,20 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec) error {
func main() { func main() {
skel.PluginMain( skel.PluginMain(
func(args *skel.CmdArgs) error { return cmdAdd(args, nil) }, func(args *skel.CmdArgs) error {
func(args *skel.CmdArgs) error { return cmdGet(args, nil) }, result, err := cmdAdd(args, nil)
if err != nil {
return err
}
return result.Print()
},
func(args *skel.CmdArgs) error {
result, err := cmdGet(args, nil)
if err != nil {
return err
}
return result.Print()
},
func(args *skel.CmdArgs) error { return cmdDel(args, nil) }, func(args *skel.CmdArgs) error { return cmdDel(args, nil) },
version.All, "meta-plugin that delegates to other CNI plugins") version.All, "meta-plugin that delegates to other CNI plugins")
} }