dhcp ipam: using full config to regular the code
Signed-off-by: SilverBut <SilverBut@users.noreply.github.com>
This commit is contained in:
@ -29,7 +29,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/containernetworking/cni/pkg/skel"
|
"github.com/containernetworking/cni/pkg/skel"
|
||||||
"github.com/containernetworking/cni/pkg/types"
|
|
||||||
current "github.com/containernetworking/cni/pkg/types/100"
|
current "github.com/containernetworking/cni/pkg/types/100"
|
||||||
"github.com/coreos/go-systemd/v22/activation"
|
"github.com/coreos/go-systemd/v22/activation"
|
||||||
)
|
)
|
||||||
@ -62,7 +61,7 @@ func generateClientID(containerID string, netName string, ifName string) string
|
|||||||
// Allocate acquires an IP from a DHCP server for a specified container.
|
// Allocate acquires an IP from a DHCP server for a specified container.
|
||||||
// The acquired lease will be maintained until Release() is called.
|
// The acquired lease will be maintained until Release() is called.
|
||||||
func (d *DHCP) Allocate(args *skel.CmdArgs, result *current.Result) error {
|
func (d *DHCP) Allocate(args *skel.CmdArgs, result *current.Result) error {
|
||||||
conf := types.NetConf{}
|
conf := NetConf{}
|
||||||
if err := json.Unmarshal(args.StdinData, &conf); err != nil {
|
if err := json.Unmarshal(args.StdinData, &conf); err != nil {
|
||||||
return fmt.Errorf("error parsing netconf: %v", err)
|
return fmt.Errorf("error parsing netconf: %v", err)
|
||||||
}
|
}
|
||||||
@ -94,7 +93,7 @@ func (d *DHCP) Allocate(args *skel.CmdArgs, result *current.Result) error {
|
|||||||
// Release stops maintenance of the lease acquired in Allocate()
|
// Release stops maintenance of the lease acquired in Allocate()
|
||||||
// and sends a release msg to the DHCP server.
|
// and sends a release msg to the DHCP server.
|
||||||
func (d *DHCP) Release(args *skel.CmdArgs, reply *struct{}) error {
|
func (d *DHCP) Release(args *skel.CmdArgs, reply *struct{}) error {
|
||||||
conf := types.NetConf{}
|
conf := NetConf{}
|
||||||
if err := json.Unmarshal(args.StdinData, &conf); err != nil {
|
if err := json.Unmarshal(args.StdinData, &conf); err != nil {
|
||||||
return fmt.Errorf("error parsing netconf: %v", err)
|
return fmt.Errorf("error parsing netconf: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,18 @@ import (
|
|||||||
|
|
||||||
const defaultSocketPath = "/run/cni/dhcp.sock"
|
const defaultSocketPath = "/run/cni/dhcp.sock"
|
||||||
|
|
||||||
|
// The top-level network config - IPAM plugins are passed the full configuration
|
||||||
|
// of the calling plugin, not just the IPAM section.
|
||||||
|
type NetConf struct {
|
||||||
|
types.NetConf
|
||||||
|
IPAM *IPAMConfig `json:"ipam"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type IPAMConfig struct {
|
||||||
|
types.IPAM
|
||||||
|
DaemonSocketPath string `json:"daemonSocketPath,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "daemon" {
|
if len(os.Args) > 1 && os.Args[1] == "daemon" {
|
||||||
var pidfilePath string
|
var pidfilePath string
|
||||||
@ -104,16 +116,8 @@ func cmdCheck(args *skel.CmdArgs) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type SocketPathConf struct {
|
|
||||||
DaemonSocketPath string `json:"daemonSocketPath,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type TempNetConf struct {
|
|
||||||
IPAM SocketPathConf `json:"ipam,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func getSocketPath(stdinData []byte) (string, error) {
|
func getSocketPath(stdinData []byte) (string, error) {
|
||||||
conf := TempNetConf{}
|
conf := NetConf{}
|
||||||
if err := json.Unmarshal(stdinData, &conf); err != nil {
|
if err := json.Unmarshal(stdinData, &conf); err != nil {
|
||||||
return "", fmt.Errorf("error parsing socket path conf: %v", err)
|
return "", fmt.Errorf("error parsing socket path conf: %v", err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user