code: func (c *Controller) enqueueFoo(obj interface{}) {
  	var key string
  	var err error
  	if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil {
  		utilruntime.HandleError(err)
  		return
  	}
  	c.workqueue.Add(key)
  }
docs: // enqueueFoo takes a Foo resource and converts it into a namespace/name
  // string which is then put onto the work queue. This method should *not* be
  // passed resources of any type other than Foo.