code: func (a *Allocator) ReleasePool(poolID string) error {
  	logrus.Debugf("ReleasePool(%s)", poolID)
  	k := SubnetKey{}
  	if err := k.FromString(poolID); err != nil {
  		return types.BadRequestErrorf("invalid pool id: %s", poolID)
  	}
  
  retry:
  	if err := a.refresh(k.AddressSpace); err != nil {
  		return err
  	}
  
  	aSpace, err := a.getAddrSpace(k.AddressSpace)
  	if err != nil {
  		return err
  	}
  
  	remove, err := aSpace.updatePoolDBOnRemoval(k)
  	if err != nil {
  		return err
  	}
  
  	if err = a.writeToStore(aSpace); err != nil {
  		if _, ok := err.(types.RetryError); !ok {
  			return types.InternalErrorf("pool (%s) removal failed because of %v", poolID, err)
  		}
  		goto retry
  	}
  
  	return remove()
  }
docs: // ReleasePool releases the address pool identified by the passed id