code: func (m *MetricStorage) List(ctx genericapirequest.Context, options *metainternalversion.ListOptions) (runtime.Object, error) {
  	labelSelector := labels.Everything()
  	if options != nil && options.LabelSelector != nil {
  		labelSelector = options.LabelSelector
  	}
  	nodes, err := m.nodeLister.ListWithPredicate(func(node *v1.Node) bool {
  		if labelSelector.Empty() {
  			return true
  		}
  		return labelSelector.Matches(labels.Set(node.Labels))
  	})
  	if err != nil {
  		errMsg := fmt.Errorf("Error while listing nodes: %v", err)
  		glog.Error(errMsg)
  		return &metrics.NodeMetricsList{}, errMsg
  	}
  
  	res := metrics.NodeMetricsList{}
  	for _, node := range nodes {
  		if m := m.getNodeMetrics(node.Name); m != nil {
  			res.Items = append(res.Items, *m)
  		}
  	}
  	return &res, nil
  }
docs: // Lister interface