mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-09-17 06:55:48 +00:00
multus: update for CNI 0.7.0-alpha1 release
This commit is contained in:
committed by
Kuralamudhan Ramakrishnan
parent
92a8b1c1c9
commit
7597640a21
@@ -113,7 +113,7 @@ func delegateAdd(ifName string, delegate *types.DelegateNetConf) (cnitypes.Resul
|
||||
return nil, fmt.Errorf("cannot set %q ifname to %q: %v", delegate.Type, ifName, err)
|
||||
}
|
||||
|
||||
result, err := invoke.DelegateAdd(delegate.Type, delegate.Bytes)
|
||||
result, err := invoke.DelegateAdd(delegate.Type, delegate.Bytes, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Type, err)
|
||||
}
|
||||
@@ -126,7 +126,7 @@ func delegateDel(ifName string, delegateConf *types.DelegateNetConf) error {
|
||||
return fmt.Errorf("Multus: error in setting CNI_IFNAME")
|
||||
}
|
||||
|
||||
if err := invoke.DelegateDel(delegateConf.Type, delegateConf.Bytes); err != nil {
|
||||
if err := invoke.DelegateDel(delegateConf.Type, delegateConf.Bytes, nil); err != nil {
|
||||
return fmt.Errorf("Multus: error in invoke Delegate del - %q: %v", delegateConf.Type, err)
|
||||
}
|
||||
|
||||
@@ -200,6 +200,17 @@ func cmdAdd(args *skel.CmdArgs) error {
|
||||
return result.Print()
|
||||
}
|
||||
|
||||
func cmdGet(args *skel.CmdArgs) error {
|
||||
in, err := types.LoadNetConf(args.StdinData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// FIXME: call all delegates
|
||||
|
||||
return in.PrevResult.Print()
|
||||
}
|
||||
|
||||
func cmdDel(args *skel.CmdArgs) error {
|
||||
var nopodnet bool
|
||||
|
||||
@@ -242,5 +253,5 @@ func cmdDel(args *skel.CmdArgs) error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
skel.PluginMain(cmdAdd, cmdDel, version.All)
|
||||
skel.PluginMain(cmdAdd, cmdGet, cmdDel, version.All, "meta-plugin that delegates to other CNI plugins")
|
||||
}
|
||||
|
@@ -18,6 +18,9 @@ package types
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/containernetworking/cni/pkg/types/current"
|
||||
"github.com/containernetworking/cni/pkg/version"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -52,6 +55,23 @@ func LoadNetConf(bytes []byte) (*NetConf, error) {
|
||||
return nil, fmt.Errorf("failed to load netconf: %v", err)
|
||||
}
|
||||
|
||||
// Parse previous result
|
||||
if netconf.RawPrevResult != nil {
|
||||
resultBytes, err := json.Marshal(netconf.RawPrevResult)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not serialize prevResult: %v", err)
|
||||
}
|
||||
res, err := version.NewResult(netconf.CNIVersion, resultBytes)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse prevResult: %v", err)
|
||||
}
|
||||
netconf.RawPrevResult = nil
|
||||
netconf.PrevResult, err = current.NewResultFromResult(res)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not convert result to current version: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Delegates must always be set. If no kubeconfig is present, the
|
||||
// delegates are executed in-order. If a kubeconfig is present,
|
||||
// at least one delegate must be present and the first delegate is
|
||||
|
@@ -19,12 +19,19 @@ import (
|
||||
"net"
|
||||
|
||||
"github.com/containernetworking/cni/pkg/types"
|
||||
"github.com/containernetworking/cni/pkg/types/current"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// NetConf for cni config file written in json
|
||||
type NetConf struct {
|
||||
types.NetConf
|
||||
|
||||
// support chaining for master interface and IP decisions
|
||||
// occurring prior to running ipvlan plugin
|
||||
RawPrevResult *map[string]interface{} `json:"prevResult"`
|
||||
PrevResult *current.Result `json:"-"`
|
||||
|
||||
ConfDir string `json:"confDir"`
|
||||
CNIDir string `json:"cniDir"`
|
||||
// RawDelegates is private to the NetConf class; use Delegates instead
|
||||
|
Reference in New Issue
Block a user