Skip to content

Commit

Permalink
UPSTREAM: kubernetes-incubator/cluster-capacity: 78: Remove resources…
Browse files Browse the repository at this point in the history
… that are not needed to run cluster

 capacity analysis.
  • Loading branch information
Avesh Agarwal committed Jun 14, 2017
1 parent 67695b6 commit fc1816d
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 239 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,16 @@ import (

"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
)

type ResourceType string

const (
Pods ResourceType = "pods"
PersistentVolumes ResourceType = "persistentvolumes"
ReplicationControllers ResourceType = "replicationcontrollers"
Nodes ResourceType = "nodes"
Services ResourceType = "services"
PersistentVolumeClaims ResourceType = "persistentvolumeclaims"
ReplicaSets ResourceType = "replicasets"
)

func (r ResourceType) String() string {
Expand All @@ -46,16 +43,12 @@ func (r ResourceType) ObjectType() runtime.Object {
return &v1.Pod{}
case "persistentvolumes":
return &v1.PersistentVolume{}
case "replicationcontrollers":
return &v1.ReplicationController{}
case "nodes":
return &v1.Node{}
case "services":
return &v1.Service{}
case "persistentvolumeclaims":
return &v1.PersistentVolumeClaim{}
case "replicasets":
return &v1beta1.ReplicaSet{}
}
return nil
}
Expand All @@ -66,16 +59,12 @@ func StringToResourceType(resource string) (ResourceType, error) {
return Pods, nil
case "persistentvolumes":
return PersistentVolumes, nil
case "replicationcontrollers":
return ReplicationControllers, nil
case "nodes":
return Nodes, nil
case "services":
return Services, nil
case "persistentvolumeclaims":
return PersistentVolumeClaims, nil
case "replicasets":
return ReplicaSets, nil
default:
return "", fmt.Errorf("Resource type %v not recognized", resource)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import (
"k8s.io/client-go/util/flowcontrol"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"

ccapi "github.com/kubernetes-incubator/cluster-capacity/pkg/api"
"github.com/kubernetes-incubator/cluster-capacity/pkg/framework/store"
Expand Down Expand Up @@ -143,25 +142,6 @@ func (c *RESTClient) Services(fieldsSelector fields.Selector) *v1.ServiceList {
}
}

func (c *RESTClient) ReplicationControllers(fieldsSelector fields.Selector) *v1.ReplicationControllerList {
items := c.resourceStore.List(ccapi.ReplicationControllers)
typedItems := make([]v1.ReplicationController, 0, len(items))
for _, item := range items {
if !fieldsSelector.Matches(NewObjectFieldsAccessor(item)) {
continue
}
typedItems = append(typedItems, *item.(*v1.ReplicationController))
}

return &v1.ReplicationControllerList{
ListMeta: metav1.ListMeta{
// choose arbitrary value as the cache does not store the ResourceVersion
ResourceVersion: "0",
},
Items: typedItems,
}
}

func (c *RESTClient) PersistentVolumes(fieldsSelector fields.Selector) *v1.PersistentVolumeList {
items := c.resourceStore.List(ccapi.PersistentVolumes)
typedItems := make([]v1.PersistentVolume, 0, len(items))
Expand Down Expand Up @@ -216,40 +196,18 @@ func (c *RESTClient) Nodes(fieldsSelector fields.Selector) *v1.NodeList {
}
}

func (c *RESTClient) ReplicaSets(fieldsSelector fields.Selector) *v1beta1.ReplicaSetList {
items := c.resourceStore.List(ccapi.ReplicaSets)
typedItems := make([]v1beta1.ReplicaSet, 0, len(items))
for _, item := range items {
if !fieldsSelector.Matches(NewObjectFieldsAccessor(item)) {
continue
}
typedItems = append(typedItems, *item.(*v1beta1.ReplicaSet))
}

return &v1beta1.ReplicaSetList{
ListMeta: metav1.ListMeta{
ResourceVersion: "0",
},
Items: typedItems,
}
}

func (c *RESTClient) List(resource ccapi.ResourceType, fieldsSelector fields.Selector) (runtime.Object, error) {
switch resource {
case ccapi.Pods:
return c.Pods(fieldsSelector), nil
case ccapi.Services:
return c.Services(fieldsSelector), nil
case ccapi.ReplicationControllers:
return c.ReplicationControllers(fieldsSelector), nil
case ccapi.PersistentVolumes:
return c.PersistentVolumes(fieldsSelector), nil
case ccapi.PersistentVolumeClaims:
return c.PersistentVolumeClaims(fieldsSelector), nil
case ccapi.Nodes:
return c.Nodes(fieldsSelector), nil
case ccapi.ReplicaSets:
return c.ReplicaSets(fieldsSelector), nil
default:
return nil, fmt.Errorf("Resource %s not recognized", resource)
}
Expand Down Expand Up @@ -327,17 +285,9 @@ func (c *RESTClient) request(verb string) *restclient.Request {
ns := c.NegotiatedSerializer
info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON)

var targetVersion schema.GroupVersion
if c.name == "extensions" {
gvr := schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "replicasets"}
targetVersion = gvr.GroupVersion()
} else {
targetVersion = gv
}

serializers := restclient.Serializers{
Encoder: ns.EncoderForVersion(info.Serializer, gv),
Decoder: ns.DecoderToVersion(info.Serializer, targetVersion),
Decoder: ns.DecoderToVersion(info.Serializer, gv),
}

if info.StreamSerializer != nil {
Expand All @@ -364,9 +314,6 @@ func (c *RESTClient) createReadCloser(resource ccapi.ResourceType, obj runtime.O
}

gv := v1.SchemeGroupVersion
if resource == ccapi.ReplicaSets {
gv = schema.GroupVersion{Group: "extensions", Version: "v1beta1"}
}
encoder := api.Codecs.EncoderForVersion(info.Serializer, gv)
nopCloser := ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(encoder, obj))))
return &nopCloser, nil
Expand Down Expand Up @@ -407,9 +354,6 @@ func (c *RESTClient) createGetReadCloser(resource ccapi.ResourceType, resourceNa
case ccapi.Services:
obj = runtime.Object(item.(*v1.Service))
ns = item.(*v1.Service).Namespace
case ccapi.ReplicationControllers:
obj = runtime.Object(item.(*v1.ReplicationController))
ns = item.(*v1.ReplicationController).Namespace
case ccapi.PersistentVolumes:
obj = runtime.Object(item.(*v1.PersistentVolume))
ns = item.(*v1.PersistentVolume).Namespace
Expand All @@ -418,9 +362,6 @@ func (c *RESTClient) createGetReadCloser(resource ccapi.ResourceType, resourceNa
ns = item.(*v1.PersistentVolumeClaim).Namespace
case ccapi.Nodes:
obj = runtime.Object(item.(*v1.Node))
case ccapi.ReplicaSets:
obj = runtime.Object(item.(*v1beta1.ReplicaSet))
ns = item.(*v1beta1.ReplicaSet).Namespace
default:
return nil, fmt.Errorf("Resource %v not recognized", resource)
}
Expand Down Expand Up @@ -463,10 +404,6 @@ func (c *RESTClient) createWatchReadCloser(resource ccapi.ResourceType, fieldsSe
for _, item := range c.Services(fieldsSelector).Items {
rg.EmitWatchEvent(watch.Added, runtime.Object(&item))
}
case ccapi.ReplicationControllers:
for _, item := range c.ReplicationControllers(fieldsSelector).Items {
rg.EmitWatchEvent(watch.Added, runtime.Object(&item))
}
case ccapi.PersistentVolumes:
for _, item := range c.PersistentVolumes(fieldsSelector).Items {
rg.EmitWatchEvent(watch.Added, runtime.Object(&item))
Expand All @@ -479,10 +416,6 @@ func (c *RESTClient) createWatchReadCloser(resource ccapi.ResourceType, fieldsSe
for _, item := range c.Nodes(fieldsSelector).Items {
rg.EmitWatchEvent(watch.Added, runtime.Object(&item))
}
case ccapi.ReplicaSets:
for _, item := range c.ReplicaSets(fieldsSelector).Items {
rg.EmitWatchEvent(watch.Added, runtime.Object(&item))
}
default:
return nil, fmt.Errorf("Resource %s not recognized", resource)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"

ccapi "github.com/kubernetes-incubator/cluster-capacity/pkg/api"
"github.com/kubernetes-incubator/cluster-capacity/pkg/framework/store"
Expand All @@ -56,16 +55,6 @@ func testServicesData() []*v1.Service {
return svcs
}

func testReplicationControllersData() []*v1.ReplicationController {
rcs := make([]*v1.ReplicationController, 0, 10)
for i := 0; i < 10; i++ {
name := fmt.Sprintf("rc%v", i)
item := test.ReplicationControllerExample(name)
rcs = append(rcs, &item)
}
return rcs
}

func testPersistentVolumesData() []*v1.PersistentVolume {
pvs := make([]*v1.PersistentVolume, 0, 10)
for i := 0; i < 1; i++ {
Expand Down Expand Up @@ -96,21 +85,6 @@ func testNodesData() []*v1.Node {
return nodes
}

func testReplicaSetsData() []*v1beta1.ReplicaSet {
rss := make([]*v1beta1.ReplicaSet, 0, 10)
for i := 0; i < 10; i++ {
name := fmt.Sprintf("replicaset%v", i)
item := v1beta1.ReplicaSet{
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: "test", ResourceVersion: "125"},
Spec: v1beta1.ReplicaSetSpec{
Replicas: &[]int32{3}[0],
},
}
rss = append(rss, &item)
}
return rss
}

func newTestListRestClient() *RESTClient {

resourceStore := &store.FakeResourceStore{
Expand All @@ -120,9 +94,6 @@ func newTestListRestClient() *RESTClient {
ServicesData: func() []*v1.Service {
return testServicesData()
},
ReplicationControllersData: func() []*v1.ReplicationController {
return testReplicationControllersData()
},
PersistentVolumesData: func() []*v1.PersistentVolume {
return testPersistentVolumesData()
},
Expand Down Expand Up @@ -220,27 +191,6 @@ func TestSyncServices(t *testing.T) {
}
}

func TestSyncReplicationControllers(t *testing.T) {

fakeClient := newTestListRestClient()
expected := fakeClient.ReplicationControllers(fields.Everything()).Items

list := getResourceList(fakeClient, ccapi.ReplicationControllers)
items, err := meta.ExtractList(list)
if err != nil {
t.Errorf("Unable to understand list result %#v (%v)", list, err)
}

found := make([]v1.ReplicationController, 0, len(items))
for _, item := range items {
found = append(found, *((interface{})(item).(*v1.ReplicationController)))
}

if !compareItems(expected, found) {
t.Errorf("unexpected object: expected: %#v\n actual: %#v", expected, found)
}
}

func TestSyncPersistentVolumes(t *testing.T) {
fakeClient := newTestListRestClient()
expected := fakeClient.PersistentVolumes(fields.Everything()).Items
Expand Down Expand Up @@ -297,29 +247,3 @@ func TestSyncNodes(t *testing.T) {
t.Errorf("unexpected object: expected: %#v\n actual: %#v", expected, found)
}
}

//func testSyncReplicaSets(t *testing.T) {
// fakeClient := newTestListRestClient()
// expected := fakeClient.ReplicaSets().Items
// emulator := NewClientEmulator()
//
// err := emulator.sync(fakeClient)
//
// if err != nil {
// t.Fatalf("Unexpected error: %v", err)
// }
//
// storedItems := emulator.ReplicaSetCache.List()
// actual := make([]extensions.ReplicaSet, 0, len(storedItems))
// for _, value := range storedItems {
// item, ok := value.(*extensions.ReplicaSet)
// if !ok {
// t.Errorf("Expected api.Service type, found different")
// }
// actual = append(actual, *item)
// }
//
// if !compareItems(expected, actual) {
// t.Errorf("unexpected object: expected: %#v\n actual: %#v", expected, actual)
// }
//}
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ func emitEvent(client *RESTClient, resource ccapi.ResourceType, test eventTest)
client.EmitObjectWatchEvent(resource, test.event, test.item.(*v1.Pod))
case ccapi.Services:
client.EmitObjectWatchEvent(resource, test.event, test.item.(*v1.Service))
case ccapi.ReplicationControllers:
client.EmitObjectWatchEvent(resource, test.event, test.item.(*v1.ReplicationController))
case ccapi.PersistentVolumes:
client.EmitObjectWatchEvent(resource, test.event, test.item.(*v1.PersistentVolume))
case ccapi.Nodes:
Expand Down Expand Up @@ -176,32 +174,6 @@ func TestWatchServices(t *testing.T) {
testWatch(tests, ccapi.Services, t)
}

func TestWatchReplicationControllers(t *testing.T) {

rc := test.ReplicationControllerExample("rc1")

tests := []eventTest{
{
event: watch.Modified,
item: &rc,
},
{
event: watch.Added,
item: &rc,
},
{
event: watch.Modified,
item: &rc,
},
{
event: watch.Deleted,
item: &rc,
},
}

testWatch(tests, ccapi.ReplicationControllers, t)
}

func TestWatchPersistentVolumes(t *testing.T) {
pv := test.PersistentVolumeExample("persistentvolume1")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,7 @@ func (c *ClusterCapacity) Report() *ClusterCapacityReview {

func (c *ClusterCapacity) SyncWithClient(client externalclientset.Interface) error {
for _, resource := range c.resourceStore.Resources() {
var listWatcher *cache.ListWatch
if resource == ccapi.ReplicaSets {
listWatcher = cache.NewListWatchFromClient(client.Extensions().RESTClient(), resource.String(), metav1.NamespaceAll, fields.ParseSelectorOrDie(""))
} else {
listWatcher = cache.NewListWatchFromClient(client.Core().RESTClient(), resource.String(), metav1.NamespaceAll, fields.ParseSelectorOrDie(""))
}
listWatcher := cache.NewListWatchFromClient(client.Core().RESTClient(), resource.String(), metav1.NamespaceAll, fields.ParseSelectorOrDie(""))

options := metav1.ListOptions{ResourceVersion: "0"}
list, err := listWatcher.List(options)
Expand Down Expand Up @@ -294,7 +289,7 @@ func (c *ClusterCapacity) createSchedulerConfig(s *soptions.SchedulerServer) (*s
c.informerFactory.Core().V1().Nodes(),
c.informerFactory.Core().V1().PersistentVolumes(),
c.informerFactory.Core().V1().PersistentVolumeClaims(),
c.informerFactory.Core().V1().ReplicationControllers(),
fakeInformerFactory.Core().V1().ReplicationControllers(),
fakeInformerFactory.Extensions().V1beta1().ReplicaSets(),
fakeInformerFactory.Apps().V1beta1().StatefulSets(),
c.informerFactory.Core().V1().Services(),
Expand Down
Loading

0 comments on commit fc1816d

Please sign in to comment.