diff --git a/cmd/rescheduler/app/server.go b/cmd/rescheduler/app/server.go index b0873c4cf..51252d25e 100644 --- a/cmd/rescheduler/app/server.go +++ b/cmd/rescheduler/app/server.go @@ -23,6 +23,7 @@ import ( "github.com/aveshagarwal/rescheduler/cmd/rescheduler/app/options" "github.com/aveshagarwal/rescheduler/pkg/rescheduler/client" "github.com/aveshagarwal/rescheduler/pkg/rescheduler/node" + "github.com/aveshagarwal/rescheduler/pkg/rescheduler/pod" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -60,6 +61,19 @@ func Run(rs *options.ReschedulerServer) error { return err } - fmt.Printf("\nnodes = %#v\n", nodes) + for _, n := range nodes { + fmt.Printf("\nnode = %#v\n", n) + } + + for _, node := range nodes { + pods, err := pod.ListPodsOnANode(rs.Client, node) + if err != nil { + return err + } + + for _, p := range pods { + fmt.Printf("\npod = %#v\n", p) + } + } return nil } diff --git a/pkg/rescheduler/node/node.go b/pkg/rescheduler/node/node.go index 7864f3572..5e3c728c8 100644 --- a/pkg/rescheduler/node/node.go +++ b/pkg/rescheduler/node/node.go @@ -31,25 +31,29 @@ import ( // ReadyNodes returns ready nodes irrespective of whether they are // schedulable or not. -func ReadyNodes(client clientset.Interface, stopChannel <-chan struct{}) ([]v1.Node, error) { +func ReadyNodes(client clientset.Interface, stopChannel <-chan struct{}) ([]*v1.Node, error) { nl := getNodeLister(client, stopChannel) nodes, err := nl.List(labels.Everything()) if err != nil { - return []v1.Node{}, err + return []*v1.Node{}, err } if len(nodes) == 0 { var err error nItems, err := client.Core().Nodes().List(metav1.ListOptions{}) if err != nil { - return []v1.Node{}, err + return []*v1.Node{}, err + } + + for _, node := range nItems.Items { + nodes = append(nodes, &node) } - return nItems.Items, nil } - readyNodes := make([]v1.Node, 0, len(nodes)) + + readyNodes := make([]*v1.Node, 0, len(nodes)) for _, node := range nodes { if IsReady(node) { - readyNodes = append(readyNodes, *node) + readyNodes = append(readyNodes, node) } } return readyNodes, nil diff --git a/pkg/rescheduler/pod/pods.go b/pkg/rescheduler/pod/pods.go index b868beeb8..aa61f41a4 100644 --- a/pkg/rescheduler/pod/pods.go +++ b/pkg/rescheduler/pod/pods.go @@ -17,6 +17,8 @@ limitations under the License. package pod import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" ) diff --git a/pkg/rescheduler/pods/pods.go b/pkg/rescheduler/pods/pods.go deleted file mode 100644 index b868beeb8..000000000 --- a/pkg/rescheduler/pods/pods.go +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package pod - -import ( - "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" -) - -func ListPodsOnANode(client clientset.Interface, node *v1.Node) ([]*v1.Pod, error) { - podList, err := client.CoreV1().Pods(v1.NamespaceAll).List( - metav1.ListOptions{FieldSelector: fields.SelectorFromSet(fields.Set{"spec.nodeName": node.Name}).String()}) - if err != nil { - return []*v1.Pod{}, err - } - - pods := make([]*v1.Pod, 0) - for i := range podList.Items { - pods = append(pods, &podList.Items[i]) - } - - return pods, nil -}