Commit 519c1374 authored by deads2k's avatar deads2k

convert rest of kubectl to generated clients

parent f756e43e
...@@ -301,14 +301,6 @@ func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.Neg ...@@ -301,14 +301,6 @@ func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.Neg
return kubectl.ShortcutExpander{RESTMapper: mapper}, typer, nil return kubectl.ShortcutExpander{RESTMapper: mapper}, typer, nil
}, },
Client: func() (*client.Client, error) {
// Swap out the HTTP client out of the client with the fake's version.
fakeClient := t.Client.(*fake.RESTClient)
c := client.NewOrDie(t.ClientConfig)
c.Client = fakeClient.Client
c.ExtensionsClient.Client = fakeClient.Client
return c, t.Err
},
ClientSet: func() (*internalclientset.Clientset, error) { ClientSet: func() (*internalclientset.Clientset, error) {
// Swap out the HTTP client out of the client with the fake's version. // Swap out the HTTP client out of the client with the fake's version.
fakeClient := t.Client.(*fake.RESTClient) fakeClient := t.Client.(*fake.RESTClient)
......
...@@ -32,7 +32,7 @@ import ( ...@@ -32,7 +32,7 @@ import (
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1" batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
client "k8s.io/kubernetes/pkg/client/unversioned" coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
...@@ -179,11 +179,11 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob ...@@ -179,11 +179,11 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob
generatorName = "scheduledjob/v2alpha1" generatorName = "scheduledjob/v2alpha1"
} }
if len(generatorName) == 0 { if len(generatorName) == 0 {
client, err := f.Client() clientset, err := f.ClientSet()
if err != nil { if err != nil {
return err return err
} }
resourcesList, err := client.Discovery().ServerResources() resourcesList, err := clientset.Discovery().ServerResources()
// ServerResources ignores errors for old servers do not expose discovery // ServerResources ignores errors for old servers do not expose discovery
if err != nil { if err != nil {
return fmt.Errorf("failed to discover supported resources: %v", err) return fmt.Errorf("failed to discover supported resources: %v", err)
...@@ -270,11 +270,6 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob ...@@ -270,11 +270,6 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob
} }
opts.Config = config opts.Config = config
client, err := f.Client()
if err != nil {
return err
}
clientset, err := f.ClientSet() clientset, err := f.ClientSet()
if err != nil { if err != nil {
return err return err
...@@ -285,7 +280,7 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob ...@@ -285,7 +280,7 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob
if err != nil { if err != nil {
return err return err
} }
err = handleAttachPod(f, client, attachablePod.Namespace, attachablePod.Name, opts, quiet) err = handleAttachPod(f, clientset.Core(), attachablePod.Namespace, attachablePod.Name, opts, quiet)
if err != nil { if err != nil {
return err return err
} }
...@@ -294,7 +289,7 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob ...@@ -294,7 +289,7 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob
leaveStdinOpen := cmdutil.GetFlagBool(cmd, "leave-stdin-open") leaveStdinOpen := cmdutil.GetFlagBool(cmd, "leave-stdin-open")
waitForExitCode := !leaveStdinOpen && restartPolicy == api.RestartPolicyNever waitForExitCode := !leaveStdinOpen && restartPolicy == api.RestartPolicyNever
if waitForExitCode { if waitForExitCode {
pod, err = waitForPodTerminated(client, attachablePod.Namespace, attachablePod.Name, opts.Out, quiet) pod, err = waitForPodTerminated(clientset.Core(), attachablePod.Namespace, attachablePod.Name, opts.Out, quiet)
if err != nil { if err != nil {
return err return err
} }
...@@ -377,8 +372,8 @@ func contains(resourcesList map[string]*unversioned.APIResourceList, resource un ...@@ -377,8 +372,8 @@ func contains(resourcesList map[string]*unversioned.APIResourceList, resource un
// waitForPod watches the given pod until the exitCondition is true. Each two seconds // waitForPod watches the given pod until the exitCondition is true. Each two seconds
// the tick function is called e.g. for progress output. // the tick function is called e.g. for progress output.
func waitForPod(c *client.Client, ns, name string, exitCondition func(*api.Pod) bool, tick func(*api.Pod)) (*api.Pod, error) { func waitForPod(podClient coreclient.PodsGetter, ns, name string, exitCondition func(*api.Pod) bool, tick func(*api.Pod)) (*api.Pod, error) {
pod, err := c.Pods(ns).Get(name) pod, err := podClient.Pods(ns).Get(name)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -388,7 +383,7 @@ func waitForPod(c *client.Client, ns, name string, exitCondition func(*api.Pod) ...@@ -388,7 +383,7 @@ func waitForPod(c *client.Client, ns, name string, exitCondition func(*api.Pod)
tick(pod) tick(pod)
w, err := c.Pods(ns).Watch(api.SingleObject(api.ObjectMeta{Name: pod.Name, ResourceVersion: pod.ResourceVersion})) w, err := podClient.Pods(ns).Watch(api.SingleObject(api.ObjectMeta{Name: pod.Name, ResourceVersion: pod.ResourceVersion}))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -424,7 +419,7 @@ func waitForPod(c *client.Client, ns, name string, exitCondition func(*api.Pod) ...@@ -424,7 +419,7 @@ func waitForPod(c *client.Client, ns, name string, exitCondition func(*api.Pod)
return result, err return result, err
} }
func waitForPodRunning(c *client.Client, ns, name string, out io.Writer, quiet bool) (*api.Pod, error) { func waitForPodRunning(podClient coreclient.PodsGetter, ns, name string, out io.Writer, quiet bool) (*api.Pod, error) {
exitCondition := func(pod *api.Pod) bool { exitCondition := func(pod *api.Pod) bool {
switch pod.Status.Phase { switch pod.Status.Phase {
case api.PodRunning: case api.PodRunning:
...@@ -440,26 +435,26 @@ func waitForPodRunning(c *client.Client, ns, name string, out io.Writer, quiet b ...@@ -440,26 +435,26 @@ func waitForPodRunning(c *client.Client, ns, name string, out io.Writer, quiet b
return false return false
} }
} }
return waitForPod(c, ns, name, exitCondition, func(pod *api.Pod) { return waitForPod(podClient, ns, name, exitCondition, func(pod *api.Pod) {
if !quiet { if !quiet {
fmt.Fprintf(out, "Waiting for pod %s/%s to be running, status is %s, pod ready: false\n", pod.Namespace, pod.Name, pod.Status.Phase) fmt.Fprintf(out, "Waiting for pod %s/%s to be running, status is %s, pod ready: false\n", pod.Namespace, pod.Name, pod.Status.Phase)
} }
}) })
} }
func waitForPodTerminated(c *client.Client, ns, name string, out io.Writer, quiet bool) (*api.Pod, error) { func waitForPodTerminated(podClient coreclient.PodsGetter, ns, name string, out io.Writer, quiet bool) (*api.Pod, error) {
exitCondition := func(pod *api.Pod) bool { exitCondition := func(pod *api.Pod) bool {
return pod.Status.Phase == api.PodSucceeded || pod.Status.Phase == api.PodFailed return pod.Status.Phase == api.PodSucceeded || pod.Status.Phase == api.PodFailed
} }
return waitForPod(c, ns, name, exitCondition, func(pod *api.Pod) { return waitForPod(podClient, ns, name, exitCondition, func(pod *api.Pod) {
if !quiet { if !quiet {
fmt.Fprintf(out, "Waiting for pod %s/%s to terminate, status is %s\n", pod.Namespace, pod.Name, pod.Status.Phase) fmt.Fprintf(out, "Waiting for pod %s/%s to terminate, status is %s\n", pod.Namespace, pod.Name, pod.Status.Phase)
} }
}) })
} }
func handleAttachPod(f *cmdutil.Factory, c *client.Client, ns, name string, opts *AttachOptions, quiet bool) error { func handleAttachPod(f *cmdutil.Factory, podClient coreclient.PodsGetter, ns, name string, opts *AttachOptions, quiet bool) error {
pod, err := waitForPodRunning(c, ns, name, opts.Out, quiet) pod, err := waitForPodRunning(podClient, ns, name, opts.Out, quiet)
if err != nil { if err != nil {
return err return err
} }
...@@ -481,11 +476,7 @@ func handleAttachPod(f *cmdutil.Factory, c *client.Client, ns, name string, opts ...@@ -481,11 +476,7 @@ func handleAttachPod(f *cmdutil.Factory, c *client.Client, ns, name string, opts
return err return err
} }
clientset, err := f.ClientSet() opts.PodClient = podClient
if err != nil {
return nil
}
opts.PodClient = clientset.Core()
opts.PodName = name opts.PodName = name
opts.Namespace = ns opts.Namespace = ns
......
...@@ -20,12 +20,13 @@ import ( ...@@ -20,12 +20,13 @@ import (
"errors" "errors"
"io" "io"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/metricsutil"
"github.com/renstrom/dedent" "github.com/renstrom/dedent"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/metricsutil"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
) )
...@@ -33,6 +34,7 @@ import ( ...@@ -33,6 +34,7 @@ import (
type TopNodeOptions struct { type TopNodeOptions struct {
ResourceName string ResourceName string
Selector string Selector string
NodeClient coreclient.NodesGetter
Client *metricsutil.HeapsterMetricsClient Client *metricsutil.HeapsterMetricsClient
Printer *metricsutil.TopCmdPrinter Printer *metricsutil.TopCmdPrinter
} }
...@@ -84,11 +86,12 @@ func (o *TopNodeOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args [ ...@@ -84,11 +86,12 @@ func (o *TopNodeOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args [
return cmdutil.UsageError(cmd, cmd.Use) return cmdutil.UsageError(cmd, cmd.Use)
} }
cli, err := f.Client() clientset, err := f.ClientSet()
if err != nil { if err != nil {
return err return err
} }
o.Client = metricsutil.DefaultHeapsterMetricsClient(cli) o.NodeClient = clientset.Core()
o.Client = metricsutil.DefaultHeapsterMetricsClient(clientset.Core())
o.Printer = metricsutil.NewTopCmdPrinter(out) o.Printer = metricsutil.NewTopCmdPrinter(out)
return nil return nil
} }
...@@ -122,13 +125,13 @@ func (o TopNodeOptions) RunTopNode() error { ...@@ -122,13 +125,13 @@ func (o TopNodeOptions) RunTopNode() error {
var nodes []api.Node var nodes []api.Node
if len(o.ResourceName) > 0 { if len(o.ResourceName) > 0 {
node, err := o.Client.Nodes().Get(o.ResourceName) node, err := o.NodeClient.Nodes().Get(o.ResourceName)
if err != nil { if err != nil {
return err return err
} }
nodes = append(nodes, *node) nodes = append(nodes, *node)
} else { } else {
nodeList, err := o.Client.Nodes().List(api.ListOptions{ nodeList, err := o.NodeClient.Nodes().List(api.ListOptions{
LabelSelector: selector, LabelSelector: selector,
}) })
if err != nil { if err != nil {
......
...@@ -25,8 +25,6 @@ import ( ...@@ -25,8 +25,6 @@ import (
"k8s.io/heapster/metrics/apis/metrics/v1alpha1" "k8s.io/heapster/metrics/apis/metrics/v1alpha1"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/fake" "k8s.io/kubernetes/pkg/client/unversioned/fake"
"net/url" "net/url"
) )
...@@ -63,7 +61,7 @@ func TestTopNodeAllMetrics(t *testing.T) { ...@@ -63,7 +61,7 @@ func TestTopNodeAllMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopNode(f, buf) cmd := NewCmdTopNode(f, buf)
...@@ -111,7 +109,7 @@ func TestTopNodeWithNameMetrics(t *testing.T) { ...@@ -111,7 +109,7 @@ func TestTopNodeWithNameMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopNode(f, buf) cmd := NewCmdTopNode(f, buf)
...@@ -170,7 +168,7 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) { ...@@ -170,7 +168,7 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopNode(f, buf) cmd := NewCmdTopNode(f, buf)
......
...@@ -23,6 +23,7 @@ import ( ...@@ -23,6 +23,7 @@ import (
"time" "time"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/metricsutil" "k8s.io/kubernetes/pkg/kubectl/metricsutil"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
...@@ -38,6 +39,7 @@ type TopPodOptions struct { ...@@ -38,6 +39,7 @@ type TopPodOptions struct {
Selector string Selector string
AllNamespaces bool AllNamespaces bool
PrintContainers bool PrintContainers bool
PodClient coreclient.PodsGetter
Client *metricsutil.HeapsterMetricsClient Client *metricsutil.HeapsterMetricsClient
Printer *metricsutil.TopCmdPrinter Printer *metricsutil.TopCmdPrinter
} }
...@@ -103,11 +105,12 @@ func (o *TopPodOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args [] ...@@ -103,11 +105,12 @@ func (o *TopPodOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args []
if err != nil { if err != nil {
return err return err
} }
cli, err := f.Client() clientset, err := f.ClientSet()
if err != nil { if err != nil {
return err return err
} }
o.Client = metricsutil.DefaultHeapsterMetricsClient(cli) o.PodClient = clientset.Core()
o.Client = metricsutil.DefaultHeapsterMetricsClient(clientset.Core())
o.Printer = metricsutil.NewTopCmdPrinter(out) o.Printer = metricsutil.NewTopCmdPrinter(out)
return nil return nil
} }
...@@ -147,7 +150,7 @@ func (o TopPodOptions) RunTopPod() error { ...@@ -147,7 +150,7 @@ func (o TopPodOptions) RunTopPod() error {
func verifyEmptyMetrics(o TopPodOptions, selector labels.Selector) error { func verifyEmptyMetrics(o TopPodOptions, selector labels.Selector) error {
if len(o.ResourceName) > 0 { if len(o.ResourceName) > 0 {
pod, err := o.Client.Pods(o.Namespace).Get(o.ResourceName) pod, err := o.PodClient.Pods(o.Namespace).Get(o.ResourceName)
if err != nil { if err != nil {
return err return err
} }
...@@ -155,7 +158,7 @@ func verifyEmptyMetrics(o TopPodOptions, selector labels.Selector) error { ...@@ -155,7 +158,7 @@ func verifyEmptyMetrics(o TopPodOptions, selector labels.Selector) error {
return err return err
} }
} else { } else {
pods, err := o.Client.Pods(o.Namespace).List(api.ListOptions{ pods, err := o.PodClient.Pods(o.Namespace).List(api.ListOptions{
LabelSelector: selector, LabelSelector: selector,
}) })
if err != nil { if err != nil {
......
...@@ -24,8 +24,6 @@ import ( ...@@ -24,8 +24,6 @@ import (
"testing" "testing"
metrics_api "k8s.io/heapster/metrics/apis/metrics/v1alpha1" metrics_api "k8s.io/heapster/metrics/apis/metrics/v1alpha1"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/fake" "k8s.io/kubernetes/pkg/client/unversioned/fake"
"net/url" "net/url"
) )
...@@ -61,7 +59,7 @@ func TestTopPodAllNamespacesMetrics(t *testing.T) { ...@@ -61,7 +59,7 @@ func TestTopPodAllNamespacesMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = firstTestNamespace tf.Namespace = firstTestNamespace
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopPod(f, buf) cmd := NewCmdTopPod(f, buf)
...@@ -120,7 +118,7 @@ func TestTopPodAllInNamespaceMetrics(t *testing.T) { ...@@ -120,7 +118,7 @@ func TestTopPodAllInNamespaceMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = testNamespace tf.Namespace = testNamespace
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopPod(f, buf) cmd := NewCmdTopPod(f, buf)
...@@ -171,7 +169,7 @@ func TestTopPodWithNameMetrics(t *testing.T) { ...@@ -171,7 +169,7 @@ func TestTopPodWithNameMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = testNamespace tf.Namespace = testNamespace
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopPod(f, buf) cmd := NewCmdTopPod(f, buf)
...@@ -224,7 +222,7 @@ func TestTopPodWithLabelSelectorMetrics(t *testing.T) { ...@@ -224,7 +222,7 @@ func TestTopPodWithLabelSelectorMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = testNamespace tf.Namespace = testNamespace
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopPod(f, buf) cmd := NewCmdTopPod(f, buf)
...@@ -276,7 +274,7 @@ func TestTopPodWithContainersMetrics(t *testing.T) { ...@@ -276,7 +274,7 @@ func TestTopPodWithContainersMetrics(t *testing.T) {
}), }),
} }
tf.Namespace = testNamespace tf.Namespace = testNamespace
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTopPod(f, buf) cmd := NewCmdTopPod(f, buf)
......
...@@ -32,8 +32,8 @@ import ( ...@@ -32,8 +32,8 @@ import (
) )
const ( const (
baseHeapsterServiceAddress = "/api/v1/namespaces/kube-system/services/http:heapster:" baseHeapsterServiceAddress = "/api/v1/proxy/namespaces/kube-system/services/http:heapster:"
baseMetricsAddress = baseHeapsterServiceAddress + "/proxy/apis/metrics" baseMetricsAddress = baseHeapsterServiceAddress + "/apis/metrics"
metricsApiVersion = "v1alpha1" metricsApiVersion = "v1alpha1"
) )
......
...@@ -28,7 +28,6 @@ import ( ...@@ -28,7 +28,6 @@ import (
func NewClientCache(loader clientcmd.ClientConfig) *ClientCache { func NewClientCache(loader clientcmd.ClientConfig) *ClientCache {
return &ClientCache{ return &ClientCache{
clients: make(map[unversioned.GroupVersion]*client.Client),
clientsets: make(map[unversioned.GroupVersion]*internalclientset.Clientset), clientsets: make(map[unversioned.GroupVersion]*internalclientset.Clientset),
configs: make(map[unversioned.GroupVersion]*restclient.Config), configs: make(map[unversioned.GroupVersion]*restclient.Config),
fedClientSets: make(map[unversioned.GroupVersion]fed_clientset.Interface), fedClientSets: make(map[unversioned.GroupVersion]fed_clientset.Interface),
...@@ -40,7 +39,6 @@ func NewClientCache(loader clientcmd.ClientConfig) *ClientCache { ...@@ -40,7 +39,6 @@ func NewClientCache(loader clientcmd.ClientConfig) *ClientCache {
// is invoked only once // is invoked only once
type ClientCache struct { type ClientCache struct {
loader clientcmd.ClientConfig loader clientcmd.ClientConfig
clients map[unversioned.GroupVersion]*client.Client
clientsets map[unversioned.GroupVersion]*internalclientset.Clientset clientsets map[unversioned.GroupVersion]*internalclientset.Clientset
fedClientSets map[unversioned.GroupVersion]fed_clientset.Interface fedClientSets map[unversioned.GroupVersion]fed_clientset.Interface
configs map[unversioned.GroupVersion]*restclient.Config configs map[unversioned.GroupVersion]*restclient.Config
...@@ -132,40 +130,6 @@ func (c *ClientCache) ClientSetForVersion(version *unversioned.GroupVersion) (*i ...@@ -132,40 +130,6 @@ func (c *ClientCache) ClientSetForVersion(version *unversioned.GroupVersion) (*i
return clientset, nil return clientset, nil
} }
// ClientForVersion initializes or reuses a client for the specified version, or returns an
// error if that is not possible
func (c *ClientCache) ClientForVersion(version *unversioned.GroupVersion) (*client.Client, error) {
if version != nil {
if client, ok := c.clients[*version]; ok {
return client, nil
}
}
config, err := c.ClientConfigForVersion(version)
if err != nil {
return nil, err
}
kubeclient, err := client.New(config)
if err != nil {
return nil, err
}
c.clients[*config.GroupVersion] = kubeclient
// `version` does not necessarily equal `config.Version`. However, we know that if we call this method again with
// `version`, we should get a client based on the same config we just found. There's no guarantee that a client
// is copiable, so create a new client and save it in the cache.
if version != nil {
configCopy := *config
kubeclient, err := client.New(&configCopy)
if err != nil {
return nil, err
}
c.clients[*version] = kubeclient
}
return kubeclient, nil
}
func (c *ClientCache) FederationClientSetForVersion(version *unversioned.GroupVersion) (fed_clientset.Interface, error) { func (c *ClientCache) FederationClientSetForVersion(version *unversioned.GroupVersion) (fed_clientset.Interface, error) {
if version != nil { if version != nil {
if clientSet, found := c.fedClientSets[*version]; found { if clientSet, found := c.fedClientSets[*version]; found {
......
...@@ -36,10 +36,11 @@ import ( ...@@ -36,10 +36,11 @@ import (
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
testcore "k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
"k8s.io/kubernetes/pkg/client/unversioned/fake" manualfake "k8s.io/kubernetes/pkg/client/unversioned/fake"
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
...@@ -262,9 +263,9 @@ func TestRefetchSchemaWhenValidationFails(t *testing.T) { ...@@ -262,9 +263,9 @@ func TestRefetchSchemaWhenValidationFails(t *testing.T) {
} }
requests := map[string]int{} requests := map[string]int{}
c := &fake.RESTClient{ c := &manualfake.RESTClient{
NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), NegotiatedSerializer: testapi.Default.NegotiatedSerializer(),
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: manualfake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
case strings.HasPrefix(p, "/swaggerapi") && m == "GET": case strings.HasPrefix(p, "/swaggerapi") && m == "GET":
requests[p] = requests[p] + 1 requests[p] = requests[p] + 1
...@@ -319,9 +320,9 @@ func TestValidateCachesSchema(t *testing.T) { ...@@ -319,9 +320,9 @@ func TestValidateCachesSchema(t *testing.T) {
} }
requests := map[string]int{} requests := map[string]int{}
c := &fake.RESTClient{ c := &manualfake.RESTClient{
NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), NegotiatedSerializer: testapi.Default.NegotiatedSerializer(),
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: manualfake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
case strings.HasPrefix(p, "/swaggerapi") && m == "GET": case strings.HasPrefix(p, "/swaggerapi") && m == "GET":
requests[p] = requests[p] + 1 requests[p] = requests[p] + 1
...@@ -587,10 +588,7 @@ func TestGetFirstPod(t *testing.T) { ...@@ -587,10 +588,7 @@ func TestGetFirstPod(t *testing.T) {
for i := range tests { for i := range tests {
test := tests[i] test := tests[i]
client := &testclient.Fake{} fake := fake.NewSimpleClientset(test.podList)
client.PrependReactor("list", "pods", func(action testclient.Action) (handled bool, ret runtime.Object, err error) {
return true, test.podList, nil
})
if len(test.watching) > 0 { if len(test.watching) > 0 {
watcher := watch.NewFake() watcher := watch.NewFake()
for _, event := range test.watching { for _, event := range test.watching {
...@@ -601,11 +599,11 @@ func TestGetFirstPod(t *testing.T) { ...@@ -601,11 +599,11 @@ func TestGetFirstPod(t *testing.T) {
go watcher.Modify(event.Object) go watcher.Modify(event.Object)
} }
} }
client.PrependWatchReactor("pods", testclient.DefaultWatchReactor(watcher, nil)) fake.PrependWatchReactor("pods", testcore.DefaultWatchReactor(watcher, nil))
} }
selector := labels.Set(labelSet).AsSelector() selector := labels.Set(labelSet).AsSelector()
pod, numPods, err := GetFirstPod(client, api.NamespaceDefault, selector, 1*time.Minute, test.sortBy) pod, numPods, err := GetFirstPod(fake.Core(), api.NamespaceDefault, selector, 1*time.Minute, test.sortBy)
if !test.expectedErr && err != nil { if !test.expectedErr && err != nil {
t.Errorf("%s: unexpected error: %v", test.name, err) t.Errorf("%s: unexpected error: %v", test.name, err)
continue continue
......
...@@ -25,7 +25,7 @@ import ( ...@@ -25,7 +25,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
client "k8s.io/kubernetes/pkg/client/unversioned" coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
) )
...@@ -46,16 +46,16 @@ var ( ...@@ -46,16 +46,16 @@ var (
) )
type HeapsterMetricsClient struct { type HeapsterMetricsClient struct {
*client.Client SVCClient coreclient.ServicesGetter
HeapsterNamespace string HeapsterNamespace string
HeapsterScheme string HeapsterScheme string
HeapsterService string HeapsterService string
HeapsterPort string HeapsterPort string
} }
func NewHeapsterMetricsClient(client *client.Client, namespace, scheme, service, port string) *HeapsterMetricsClient { func NewHeapsterMetricsClient(svcClient coreclient.ServicesGetter, namespace, scheme, service, port string) *HeapsterMetricsClient {
return &HeapsterMetricsClient{ return &HeapsterMetricsClient{
Client: client, SVCClient: svcClient,
HeapsterNamespace: namespace, HeapsterNamespace: namespace,
HeapsterScheme: scheme, HeapsterScheme: scheme,
HeapsterService: service, HeapsterService: service,
...@@ -63,8 +63,8 @@ func NewHeapsterMetricsClient(client *client.Client, namespace, scheme, service, ...@@ -63,8 +63,8 @@ func NewHeapsterMetricsClient(client *client.Client, namespace, scheme, service,
} }
} }
func DefaultHeapsterMetricsClient(client *client.Client) *HeapsterMetricsClient { func DefaultHeapsterMetricsClient(svcClient coreclient.ServicesGetter) *HeapsterMetricsClient {
return NewHeapsterMetricsClient(client, DefaultHeapsterNamespace, DefaultHeapsterScheme, DefaultHeapsterService, DefaultHeapsterPort) return NewHeapsterMetricsClient(svcClient, DefaultHeapsterNamespace, DefaultHeapsterScheme, DefaultHeapsterService, DefaultHeapsterPort)
} }
func podMetricsUrl(namespace string, name string) (string, error) { func podMetricsUrl(namespace string, name string) (string, error) {
...@@ -161,7 +161,7 @@ func (cli *HeapsterMetricsClient) GetPodMetrics(namespace string, podName string ...@@ -161,7 +161,7 @@ func (cli *HeapsterMetricsClient) GetPodMetrics(namespace string, podName string
} }
func GetHeapsterMetrics(cli *HeapsterMetricsClient, path string, params map[string]string) ([]byte, error) { func GetHeapsterMetrics(cli *HeapsterMetricsClient, path string, params map[string]string) ([]byte, error) {
return cli.Services(cli.HeapsterNamespace). return cli.SVCClient.Services(cli.HeapsterNamespace).
ProxyGet(cli.HeapsterScheme, cli.HeapsterService, cli.HeapsterPort, path, params). ProxyGet(cli.HeapsterScheme, cli.HeapsterService, cli.HeapsterPort, path, params).
DoRaw() DoRaw()
} }
...@@ -21,7 +21,8 @@ import ( ...@@ -21,7 +21,8 @@ import (
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
extensionsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned"
) )
// StatusViewer provides an interface for resources that provides rollout status. // StatusViewer provides an interface for resources that provides rollout status.
...@@ -29,7 +30,7 @@ type StatusViewer interface { ...@@ -29,7 +30,7 @@ type StatusViewer interface {
Status(namespace, name string) (string, bool, error) Status(namespace, name string) (string, bool, error)
} }
func StatusViewerFor(kind unversioned.GroupKind, c client.Interface) (StatusViewer, error) { func StatusViewerFor(kind unversioned.GroupKind, c internalclientset.Interface) (StatusViewer, error) {
switch kind { switch kind {
case extensions.Kind("Deployment"): case extensions.Kind("Deployment"):
return &DeploymentStatusViewer{c.Extensions()}, nil return &DeploymentStatusViewer{c.Extensions()}, nil
...@@ -38,7 +39,7 @@ func StatusViewerFor(kind unversioned.GroupKind, c client.Interface) (StatusView ...@@ -38,7 +39,7 @@ func StatusViewerFor(kind unversioned.GroupKind, c client.Interface) (StatusView
} }
type DeploymentStatusViewer struct { type DeploymentStatusViewer struct {
c client.ExtensionsInterface c extensionsclient.DeploymentsGetter
} }
// Status returns a message describing deployment status, and a bool value indicating if the status is considered done // Status returns a message describing deployment status, and a bool value indicating if the status is considered done
......
...@@ -21,7 +21,7 @@ import ( ...@@ -21,7 +21,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/unversioned/testclient" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
) )
func TestDeploymentStatusViewerStatus(t *testing.T) { func TestDeploymentStatusViewerStatus(t *testing.T) {
...@@ -107,6 +107,7 @@ func TestDeploymentStatusViewerStatus(t *testing.T) { ...@@ -107,6 +107,7 @@ func TestDeploymentStatusViewerStatus(t *testing.T) {
for _, test := range tests { for _, test := range tests {
d := &extensions.Deployment{ d := &extensions.Deployment{
ObjectMeta: api.ObjectMeta{ ObjectMeta: api.ObjectMeta{
Namespace: "bar",
Name: "foo", Name: "foo",
UID: "8764ae47-9092-11e4-8393-42010af018ff", UID: "8764ae47-9092-11e4-8393-42010af018ff",
Generation: test.generation, Generation: test.generation,
...@@ -116,7 +117,7 @@ func TestDeploymentStatusViewerStatus(t *testing.T) { ...@@ -116,7 +117,7 @@ func TestDeploymentStatusViewerStatus(t *testing.T) {
}, },
Status: test.status, Status: test.status,
} }
client := testclient.NewSimpleFake(d).Extensions() client := fake.NewSimpleClientset(d).Extensions()
dsv := &DeploymentStatusViewer{c: client} dsv := &DeploymentStatusViewer{c: client}
msg, done, err := dsv.Status("bar", "foo") msg, done, err := dsv.Status("bar", "foo")
if err != nil { if err != nil {
......
...@@ -49,7 +49,7 @@ type Scaler interface { ...@@ -49,7 +49,7 @@ type Scaler interface {
ScaleSimple(namespace, name string, preconditions *ScalePrecondition, newSize uint) (updatedResourceVersion string, err error) ScaleSimple(namespace, name string, preconditions *ScalePrecondition, newSize uint) (updatedResourceVersion string, err error)
} }
func ScalerFor(kind unversioned.GroupKind, c *internalclientset.Clientset) (Scaler, error) { func ScalerFor(kind unversioned.GroupKind, c internalclientset.Interface) (Scaler, error) {
switch kind { switch kind {
case api.Kind("ReplicationController"): case api.Kind("ReplicationController"):
return &ReplicationControllerScaler{c.Core()}, nil return &ReplicationControllerScaler{c.Core()}, nil
......
...@@ -68,7 +68,7 @@ func IsNoSuchReaperError(err error) bool { ...@@ -68,7 +68,7 @@ func IsNoSuchReaperError(err error) bool {
return ok return ok
} }
func ReaperFor(kind unversioned.GroupKind, c *internalclientset.Clientset) (Reaper, error) { func ReaperFor(kind unversioned.GroupKind, c internalclientset.Interface) (Reaper, error) {
switch kind { switch kind {
case api.Kind("ReplicationController"): case api.Kind("ReplicationController"):
return &ReplicationControllerReaper{c.Core(), Interval, Timeout}, nil return &ReplicationControllerReaper{c.Core(), Interval, Timeout}, nil
......
...@@ -27,6 +27,7 @@ import ( ...@@ -27,6 +27,7 @@ import (
"k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/batch"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
...@@ -128,7 +129,7 @@ var _ = framework.KubeDescribe("V1Job", func() { ...@@ -128,7 +129,7 @@ var _ = framework.KubeDescribe("V1Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("scale job up") By("scale job up")
scaler, err := kubectl.ScalerFor(batch.Kind("Job"), f.Client) scaler, err := kubectl.ScalerFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute) waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute)
waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute) waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute)
...@@ -153,7 +154,7 @@ var _ = framework.KubeDescribe("V1Job", func() { ...@@ -153,7 +154,7 @@ var _ = framework.KubeDescribe("V1Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("scale job down") By("scale job down")
scaler, err := kubectl.ScalerFor(batch.Kind("Job"), f.Client) scaler, err := kubectl.ScalerFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute) waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute)
waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute) waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute)
...@@ -176,7 +177,7 @@ var _ = framework.KubeDescribe("V1Job", func() { ...@@ -176,7 +177,7 @@ var _ = framework.KubeDescribe("V1Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("delete a job") By("delete a job")
reaper, err := kubectl.ReaperFor(batch.Kind("Job"), f.Client) reaper, err := kubectl.ReaperFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
timeout := 1 * time.Minute timeout := 1 * time.Minute
err = reaper.Stop(f.Namespace.Name, job.Name, timeout, api.NewDeleteOptions(0)) err = reaper.Stop(f.Namespace.Name, job.Name, timeout, api.NewDeleteOptions(0))
......
...@@ -28,6 +28,7 @@ import ( ...@@ -28,6 +28,7 @@ import (
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
...@@ -115,7 +116,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { ...@@ -115,7 +116,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
defer func() { defer func() {
framework.Logf("Check that reaper kills all daemon pods for %s", dsName) framework.Logf("Check that reaper kills all daemon pods for %s", dsName)
dsReaper, err := kubectl.ReaperFor(extensions.Kind("DaemonSet"), c) dsReaper, err := kubectl.ReaperFor(extensions.Kind("DaemonSet"), clientsetadapter.FromUnversionedClient(c))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
err = dsReaper.Stop(ns, dsName, 0, nil) err = dsReaper.Stop(ns, dsName, 0, nil)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
......
...@@ -195,7 +195,7 @@ func stopDeploymentMaybeOverlap(c *clientset.Clientset, oldC client.Interface, n ...@@ -195,7 +195,7 @@ func stopDeploymentMaybeOverlap(c *clientset.Clientset, oldC client.Interface, n
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
framework.Logf("Deleting deployment %s", deploymentName) framework.Logf("Deleting deployment %s", deploymentName)
reaper, err := kubectl.ReaperFor(extensions.Kind("Deployment"), oldC) reaper, err := kubectl.ReaperFor(extensions.Kind("Deployment"), c)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
timeout := 1 * time.Minute timeout := 1 * time.Minute
err = reaper.Stop(ns, deployment.Name, timeout, api.NewDeleteOptions(0)) err = reaper.Stop(ns, deployment.Name, timeout, api.NewDeleteOptions(0))
...@@ -1114,10 +1114,10 @@ func testScaledRolloutDeployment(f *framework.Framework) { ...@@ -1114,10 +1114,10 @@ func testScaledRolloutDeployment(f *framework.Framework) {
first, err = c.Extensions().ReplicaSets(first.Namespace).Get(first.Name) first, err = c.Extensions().ReplicaSets(first.Namespace).Get(first.Name)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
firstCond := client.ReplicaSetHasDesiredReplicas(f.Client.Extensions(), first) firstCond := client.ReplicaSetHasDesiredReplicas(c.Extensions(), first)
wait.PollImmediate(10*time.Millisecond, 1*time.Minute, firstCond) wait.PollImmediate(10*time.Millisecond, 1*time.Minute, firstCond)
secondCond := client.ReplicaSetHasDesiredReplicas(f.Client.Extensions(), second) secondCond := client.ReplicaSetHasDesiredReplicas(c.Extensions(), second)
wait.PollImmediate(10*time.Millisecond, 1*time.Minute, secondCond) wait.PollImmediate(10*time.Millisecond, 1*time.Minute, secondCond)
By(fmt.Sprintf("Updating the size (up) and template at the same time for deployment %q", deploymentName)) By(fmt.Sprintf("Updating the size (up) and template at the same time for deployment %q", deploymentName))
...@@ -1175,10 +1175,10 @@ func testScaledRolloutDeployment(f *framework.Framework) { ...@@ -1175,10 +1175,10 @@ func testScaledRolloutDeployment(f *framework.Framework) {
newRs, err := deploymentutil.GetNewReplicaSet(deployment, c) newRs, err := deploymentutil.GetNewReplicaSet(deployment, c)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
oldCond := client.ReplicaSetHasDesiredReplicas(f.Client.Extensions(), oldRs) oldCond := client.ReplicaSetHasDesiredReplicas(c.Extensions(), oldRs)
wait.PollImmediate(10*time.Millisecond, 1*time.Minute, oldCond) wait.PollImmediate(10*time.Millisecond, 1*time.Minute, oldCond)
newCond := client.ReplicaSetHasDesiredReplicas(f.Client.Extensions(), newRs) newCond := client.ReplicaSetHasDesiredReplicas(c.Extensions(), newRs)
wait.PollImmediate(10*time.Millisecond, 1*time.Minute, newCond) wait.PollImmediate(10*time.Millisecond, 1*time.Minute, newCond)
By(fmt.Sprintf("Updating the size (down) and template at the same time for deployment %q", deploymentName)) By(fmt.Sprintf("Updating the size (down) and template at the same time for deployment %q", deploymentName))
......
...@@ -56,6 +56,7 @@ import ( ...@@ -56,6 +56,7 @@ import (
"k8s.io/kubernetes/pkg/client/typed/discovery" "k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic" "k8s.io/kubernetes/pkg/client/typed/dynamic"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
...@@ -3197,7 +3198,7 @@ func RemoveTaintOffNode(c *client.Client, nodeName string, taint api.Taint) { ...@@ -3197,7 +3198,7 @@ func RemoveTaintOffNode(c *client.Client, nodeName string, taint api.Taint) {
func ScaleRC(c *client.Client, ns, name string, size uint, wait bool) error { func ScaleRC(c *client.Client, ns, name string, size uint, wait bool) error {
By(fmt.Sprintf("Scaling replication controller %s in namespace %s to %d", name, ns, size)) By(fmt.Sprintf("Scaling replication controller %s in namespace %s to %d", name, ns, size))
scaler, err := kubectl.ScalerFor(api.Kind("ReplicationController"), c) scaler, err := kubectl.ScalerFor(api.Kind("ReplicationController"), clientsetadapter.FromUnversionedClient(c))
if err != nil { if err != nil {
return err return err
} }
...@@ -3314,7 +3315,7 @@ func DeleteRCAndPods(c *client.Client, ns, name string) error { ...@@ -3314,7 +3315,7 @@ func DeleteRCAndPods(c *client.Client, ns, name string) error {
} }
return err return err
} }
reaper, err := kubectl.ReaperForReplicationController(c, 10*time.Minute) reaper, err := kubectl.ReaperForReplicationController(clientsetadapter.FromUnversionedClient(c).Core(), 10*time.Minute)
if err != nil { if err != nil {
if apierrs.IsNotFound(err) { if apierrs.IsNotFound(err) {
Logf("RC %s was already deleted: %v", name, err) Logf("RC %s was already deleted: %v", name, err)
...@@ -3462,7 +3463,7 @@ func DeleteReplicaSet(c *client.Client, ns, name string) error { ...@@ -3462,7 +3463,7 @@ func DeleteReplicaSet(c *client.Client, ns, name string) error {
} }
return err return err
} }
reaper, err := kubectl.ReaperFor(extensions.Kind("ReplicaSet"), c) reaper, err := kubectl.ReaperFor(extensions.Kind("ReplicaSet"), clientsetadapter.FromUnversionedClient(c))
if err != nil { if err != nil {
if apierrs.IsNotFound(err) { if apierrs.IsNotFound(err) {
Logf("ReplicaSet %s was already deleted: %v", name, err) Logf("ReplicaSet %s was already deleted: %v", name, err)
......
...@@ -23,6 +23,7 @@ import ( ...@@ -23,6 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/batch"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
...@@ -124,7 +125,7 @@ var _ = framework.KubeDescribe("Job", func() { ...@@ -124,7 +125,7 @@ var _ = framework.KubeDescribe("Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("scale job up") By("scale job up")
scaler, err := kubectl.ScalerFor(batch.Kind("Job"), f.Client) scaler, err := kubectl.ScalerFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute) waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute)
waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute) waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute)
...@@ -149,7 +150,7 @@ var _ = framework.KubeDescribe("Job", func() { ...@@ -149,7 +150,7 @@ var _ = framework.KubeDescribe("Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("scale job down") By("scale job down")
scaler, err := kubectl.ScalerFor(batch.Kind("Job"), f.Client) scaler, err := kubectl.ScalerFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute) waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute)
waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute) waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute)
...@@ -172,7 +173,7 @@ var _ = framework.KubeDescribe("Job", func() { ...@@ -172,7 +173,7 @@ var _ = framework.KubeDescribe("Job", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("delete a job") By("delete a job")
reaper, err := kubectl.ReaperFor(batch.Kind("Job"), f.Client) reaper, err := kubectl.ReaperFor(batch.Kind("Job"), clientsetadapter.FromUnversionedClient(f.Client))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
timeout := 1 * time.Minute timeout := 1 * time.Minute
err = reaper.Stop(f.Namespace.Name, job.Name, timeout, api.NewDeleteOptions(0)) err = reaper.Stop(f.Namespace.Name, job.Name, timeout, api.NewDeleteOptions(0))
......
...@@ -47,6 +47,7 @@ import ( ...@@ -47,6 +47,7 @@ import (
"k8s.io/kubernetes/pkg/api/resource" "k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
...@@ -420,7 +421,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() { ...@@ -420,7 +421,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
ExecOrDie() ExecOrDie()
Expect(runOutput).ToNot(ContainSubstring("stdin closed")) Expect(runOutput).ToNot(ContainSubstring("stdin closed"))
f := func(pods []*api.Pod) sort.Interface { return sort.Reverse(controller.ActivePods(pods)) } f := func(pods []*api.Pod) sort.Interface { return sort.Reverse(controller.ActivePods(pods)) }
runTestPod, _, err := util.GetFirstPod(c, ns, labels.SelectorFromSet(map[string]string{"run": "run-test-3"}), 1*time.Minute, f) runTestPod, _, err := util.GetFirstPod(clientsetadapter.FromUnversionedClient(c), ns, labels.SelectorFromSet(map[string]string{"run": "run-test-3"}), 1*time.Minute, f)
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
} }
......
...@@ -42,6 +42,7 @@ import ( ...@@ -42,6 +42,7 @@ import (
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
clientsetadapter "k8s.io/kubernetes/pkg/client/unversioned/adapters/internalclientset"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
replicationcontroller "k8s.io/kubernetes/pkg/controller/replication" replicationcontroller "k8s.io/kubernetes/pkg/controller/replication"
"k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/fields"
...@@ -290,7 +291,7 @@ func RCFromManifest(fileName string) *api.ReplicationController { ...@@ -290,7 +291,7 @@ func RCFromManifest(fileName string) *api.ReplicationController {
// StopRC stops the rc via kubectl's stop library // StopRC stops the rc via kubectl's stop library
func StopRC(rc *api.ReplicationController, restClient *client.Client) error { func StopRC(rc *api.ReplicationController, restClient *client.Client) error {
reaper, err := kubectl.ReaperFor(api.Kind("ReplicationController"), restClient) reaper, err := kubectl.ReaperFor(api.Kind("ReplicationController"), clientsetadapter.FromUnversionedClient(restClient))
if err != nil || reaper == nil { if err != nil || reaper == nil {
return err return err
} }
...@@ -303,7 +304,7 @@ func StopRC(rc *api.ReplicationController, restClient *client.Client) error { ...@@ -303,7 +304,7 @@ func StopRC(rc *api.ReplicationController, restClient *client.Client) error {
// ScaleRC scales the given rc to the given replicas. // ScaleRC scales the given rc to the given replicas.
func ScaleRC(name, ns string, replicas int32, restClient *client.Client) (*api.ReplicationController, error) { func ScaleRC(name, ns string, replicas int32, restClient *client.Client) (*api.ReplicationController, error) {
scaler, err := kubectl.ScalerFor(api.Kind("ReplicationController"), restClient) scaler, err := kubectl.ScalerFor(api.Kind("ReplicationController"), clientsetadapter.FromUnversionedClient(restClient))
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment