code: func (na *cnmNetworkAllocator) DeallocateService(s *api.Service) error {
  	if s.Endpoint == nil {
  		return nil
  	}
  
  	for _, vip := range s.Endpoint.VirtualIPs {
  		if err := na.deallocateVIP(vip); err != nil {
  			// don't bail here, deallocate as many as possible.
  			log.L.WithError(err).
  				WithField("vip.network", vip.NetworkID).
  				WithField("vip.addr", vip.Addr).Error("error deallocating vip")
  		}
  	}
  	s.Endpoint.VirtualIPs = nil
  
  	na.portAllocator.serviceDeallocatePorts(s)
  	delete(na.services, s.ID)
  
  	return nil
  }
docs: // DeallocateService de-allocates all the network resources such as
  // virtual IP and ports associated with the service.