host-local: allow ip request via CNI_ARGS

A specific IP can now be requested via the environment variable CNI_ARGS, e.g.
`CNI_ARGS=ip=1.2.3.4`.
The plugin will try to reserve the specified IP.
If this is not successful the execution will fail.
This commit is contained in:
Stefan Junker
2015-08-16 02:30:04 +02:00
parent 59f58fb974
commit 1d398af124
5 changed files with 98 additions and 4 deletions

View File

@ -28,7 +28,7 @@ func main() {
}
func cmdAdd(args *skel.CmdArgs) error {
ipamConf, err := LoadIPAMConfig(args.StdinData)
ipamConf, err := LoadIPAMConfig(args.StdinData, args.Args)
if err != nil {
return err
}
@ -39,6 +39,13 @@ func cmdAdd(args *skel.CmdArgs) error {
}
defer store.Close()
ipamArgs := IPAMArgs{}
err = plugin.LoadArgs(args.Args, &ipamArgs)
if err != nil {
return err
}
ipamConf.Args = &ipamArgs
allocator, err := NewIPAllocator(ipamConf, store)
if err != nil {
return err
@ -66,7 +73,7 @@ func cmdAdd(args *skel.CmdArgs) error {
}
func cmdDel(args *skel.CmdArgs) error {
ipamConf, err := LoadIPAMConfig(args.StdinData)
ipamConf, err := LoadIPAMConfig(args.StdinData, args.Args)
if err != nil {
return err
}