Merge pull request #3294 from erictune/public_storetoers
Move Listers to pkg/client/cache.
This commit is contained in:
@@ -19,7 +19,6 @@ limitations under the License.
|
||||
package factory
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -36,8 +35,8 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
PodLister = &storeToPodLister{cache.NewStore()}
|
||||
MinionLister = &storeToNodeLister{cache.NewStore()}
|
||||
PodLister = &cache.StoreToPodLister{cache.NewStore()}
|
||||
MinionLister = &cache.StoreToNodeLister{cache.NewStore()}
|
||||
)
|
||||
|
||||
// ConfigFactory knows how to fill out a scheduler config with its support functions.
|
||||
@@ -46,9 +45,9 @@ type ConfigFactory struct {
|
||||
// queue for pods that need scheduling
|
||||
PodQueue *cache.FIFO
|
||||
// a means to list all scheduled pods
|
||||
PodLister *storeToPodLister
|
||||
PodLister *cache.StoreToPodLister
|
||||
// a means to list all minions
|
||||
MinionLister *storeToNodeLister
|
||||
MinionLister *cache.StoreToNodeLister
|
||||
}
|
||||
|
||||
// NewConfigFactory initializes the factory.
|
||||
@@ -201,41 +200,6 @@ func (factory *ConfigFactory) makeDefaultErrorFunc(backoff *podBackoff, podQueue
|
||||
}
|
||||
}
|
||||
|
||||
// storeToNodeLister turns a store into a minion lister. The store must contain (only) minions.
|
||||
type storeToNodeLister struct {
|
||||
cache.Store
|
||||
}
|
||||
|
||||
func (s *storeToNodeLister) List() (machines api.NodeList, err error) {
|
||||
for _, m := range s.Store.List() {
|
||||
machines.Items = append(machines.Items, *(m.(*api.Node)))
|
||||
}
|
||||
return machines, nil
|
||||
}
|
||||
|
||||
// GetNodeInfo returns cached data for the minion 'id'.
|
||||
func (s *storeToNodeLister) GetNodeInfo(id string) (*api.Node, error) {
|
||||
if minion, ok := s.Get(id); ok {
|
||||
return minion.(*api.Node), nil
|
||||
}
|
||||
return nil, fmt.Errorf("minion '%v' is not in cache", id)
|
||||
}
|
||||
|
||||
// storeToPodLister turns a store into a pod lister. The store must contain (only) pods.
|
||||
type storeToPodLister struct {
|
||||
cache.Store
|
||||
}
|
||||
|
||||
func (s *storeToPodLister) ListPods(selector labels.Selector) (pods []api.Pod, err error) {
|
||||
for _, m := range s.List() {
|
||||
pod := m.(*api.Pod)
|
||||
if selector.Matches(labels.Set(pod.Labels)) {
|
||||
pods = append(pods, *pod)
|
||||
}
|
||||
}
|
||||
return pods, nil
|
||||
}
|
||||
|
||||
// nodeEnumerator allows a cache.Poller to enumerate items in an api.NodeList
|
||||
type nodeEnumerator struct {
|
||||
*api.NodeList
|
||||
|
@@ -29,7 +29,6 @@ import (
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/testapi"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||
)
|
||||
@@ -142,57 +141,6 @@ func TestDefaultErrorFunc(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreToMinionLister(t *testing.T) {
|
||||
store := cache.NewStore()
|
||||
ids := util.NewStringSet("foo", "bar", "baz")
|
||||
for id := range ids {
|
||||
store.Add(id, &api.Node{ObjectMeta: api.ObjectMeta{Name: id}})
|
||||
}
|
||||
sml := storeToNodeLister{store}
|
||||
|
||||
gotNodes, err := sml.List()
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error: %v", err)
|
||||
}
|
||||
got := make([]string, len(gotNodes.Items))
|
||||
for ix := range gotNodes.Items {
|
||||
got[ix] = gotNodes.Items[ix].Name
|
||||
}
|
||||
if !ids.HasAll(got...) || len(got) != len(ids) {
|
||||
t.Errorf("Expected %v, got %v", ids, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreToPodLister(t *testing.T) {
|
||||
store := cache.NewStore()
|
||||
ids := []string{"foo", "bar", "baz"}
|
||||
for _, id := range ids {
|
||||
store.Add(id, &api.Pod{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: id,
|
||||
Labels: map[string]string{"name": id},
|
||||
},
|
||||
})
|
||||
}
|
||||
spl := storeToPodLister{store}
|
||||
|
||||
for _, id := range ids {
|
||||
got, err := spl.ListPods(labels.Set{"name": id}.AsSelector())
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
continue
|
||||
}
|
||||
if e, a := 1, len(got); e != a {
|
||||
t.Errorf("Expected %v, got %v", e, a)
|
||||
continue
|
||||
}
|
||||
if e, a := id, got[0].Name; e != a {
|
||||
t.Errorf("Expected %v, got %v", e, a)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMinionEnumerator(t *testing.T) {
|
||||
testList := &api.NodeList{
|
||||
Items: []api.Node{
|
||||
|
Reference in New Issue
Block a user