func()

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
}