mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-09-17 15:07:14 +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)
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Type, err)
|
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")
|
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)
|
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()
|
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 {
|
func cmdDel(args *skel.CmdArgs) error {
|
||||||
var nopodnet bool
|
var nopodnet bool
|
||||||
|
|
||||||
@@ -242,5 +253,5 @@ func cmdDel(args *skel.CmdArgs) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
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 (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/containernetworking/cni/pkg/types/current"
|
||||||
|
"github.com/containernetworking/cni/pkg/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -52,6 +55,23 @@ func LoadNetConf(bytes []byte) (*NetConf, error) {
|
|||||||
return nil, fmt.Errorf("failed to load netconf: %v", err)
|
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 must always be set. If no kubeconfig is present, the
|
||||||
// delegates are executed in-order. If a kubeconfig is present,
|
// delegates are executed in-order. If a kubeconfig is present,
|
||||||
// at least one delegate must be present and the first delegate is
|
// at least one delegate must be present and the first delegate is
|
||||||
|
@@ -19,12 +19,19 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/containernetworking/cni/pkg/types"
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
"github.com/containernetworking/cni/pkg/types/current"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NetConf for cni config file written in json
|
// NetConf for cni config file written in json
|
||||||
type NetConf struct {
|
type NetConf struct {
|
||||||
types.NetConf
|
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"`
|
ConfDir string `json:"confDir"`
|
||||||
CNIDir string `json:"cniDir"`
|
CNIDir string `json:"cniDir"`
|
||||||
// RawDelegates is private to the NetConf class; use Delegates instead
|
// RawDelegates is private to the NetConf class; use Delegates instead
|
||||||
|
Reference in New Issue
Block a user