code: func (s *daemonSetLister) GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*apps.DaemonSet, error) {
  	if len(history.Labels) == 0 {
  		return nil, fmt.Errorf("no DaemonSet found for ControllerRevision %s because it has no labels", history.Name)
  	}
  
  	list, err := s.DaemonSets(history.Namespace).List(labels.Everything())
  	if err != nil {
  		return nil, err
  	}
  
  	var daemonSets []*apps.DaemonSet
  	for _, ds := range list {
  		selector, err := metav1.LabelSelectorAsSelector(ds.Spec.Selector)
  		if err != nil {
  			return nil, fmt.Errorf("invalid label selector: %v", err)
  		}
  		// If a DaemonSet with a nil or empty selector creeps in, it should match nothing, not everything.
  		if selector.Empty() || !selector.Matches(labels.Set(history.Labels)) {
  			continue
  		}
  		daemonSets = append(daemonSets, ds)
  	}
  
  	if len(daemonSets) == 0 {
  		return nil, fmt.Errorf("could not find DaemonSets for ControllerRevision %s in namespace %s with labels: %v", history.Name, history.Namespace, history.Labels)
  	}
  
  	return daemonSets, nil
  }
docs: // GetHistoryDaemonSets returns a list of DaemonSets that potentially
  // match a ControllerRevision. Only the one specified in the ControllerRevision's ControllerRef
  // will actually manage it.
  // Returns an error only if no matching DaemonSets are found.