Add invoke.Delegate{Add,Del} for use by meta-plugins

The 'flannel' meta plugin delegates to other plugins to do the actual
OS-level work. It used the ipam.Exec{Add,Del} procedures for this
delegation, since those do precisely what's needed.

However this is a bit misleading, since the flannel plugin _isn't_
doing this for IPAM, and the ipam.Exec* procedures aren't doing
something specific to IPAM plugins.

So: anticipating that there may be more meta plugins that want to
delegate in the same way, this commit moves generic delegation
procedures to `pkg/invoke`, and makes the `pkg/ipam` procedures (still
used, accurately, in the non-meta plugins) shims.
This commit is contained in:
Michael Bridgen
2016-03-02 17:02:52 +00:00
parent 36c6bcd106
commit 719a1db54b
3 changed files with 44 additions and 28 deletions

View File

@ -29,7 +29,7 @@ import (
"strconv"
"strings"
"github.com/appc/cni/pkg/ipam"
"github.com/appc/cni/pkg/invoke"
"github.com/appc/cni/pkg/skel"
"github.com/appc/cni/pkg/types"
)
@ -155,7 +155,7 @@ func delegateAdd(cid string, netconf map[string]interface{}) error {
return err
}
result, err := ipam.ExecAdd(netconf["type"].(string), netconfBytes)
result, err := invoke.DelegateAdd(netconf["type"].(string), netconfBytes)
if err != nil {
return err
}
@ -245,7 +245,7 @@ func cmdDel(args *skel.CmdArgs) error {
return fmt.Errorf("failed to parse netconf: %v", err)
}
return ipam.ExecDel(n.Type, netconfBytes)
return invoke.DelegateDel(n.Type, netconfBytes)
}
func main() {