steve/pkg/stores/selector/selector.go
2020-06-11 21:51:19 -07:00

30 lines
792 B
Go

package selector
import (
"github.com/rancher/apiserver/pkg/types"
"k8s.io/apimachinery/pkg/labels"
)
type Store struct {
types.Store
Selector labels.Selector
}
func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.APIObjectList, error) {
return s.Store.List(s.addSelector(apiOp), schema)
}
func (s *Store) addSelector(apiOp *types.APIRequest) *types.APIRequest {
apiOp = apiOp.Clone()
apiOp.Request = apiOp.Request.Clone(apiOp.Context())
q := apiOp.Request.URL.Query()
q.Add("labelSelector", s.Selector.String())
apiOp.Request.URL.RawQuery = q.Encode()
return apiOp
}
func (s *Store) Watch(apiOp *types.APIRequest, schema *types.APISchema, w types.WatchRequest) (chan types.APIEvent, error) {
return s.Store.Watch(s.addSelector(apiOp), schema, w)
}