in plugins/ipam/ipstore/ipstore.go [126:153]
func (manager *IPManager) Assign(ip string, id string) error {
ok, err := manager.Exists(ip)
if err != nil {
return errors.Wrapf(err, "assign ipstore: query the db failed, err: %v", err)
}
if ok {
return store.ErrKeyExists
}
// if the id presents, it should be unique
if id != "" {
ok, err := manager.UniqueID(id)
if err != nil {
return errors.Wrapf(err, "assign ipstore: check id unique failed, id: %s", id)
}
if !ok {
return errors.Errorf("assign ipstore: id already exists, id: %s", id)
}
}
err = manager.client.Put(ip, []byte(id), nil)
if err != nil {
return errors.Wrapf(err, "assign ipstore: failed to put the key/value into the db: %s -> %s", ip, id)
}
manager.lastKnownIP = net.ParseIP(ip)
return nil
}