mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Address comments, and fix some bugs in kubectl.
This commit is contained in:
		@@ -25,6 +25,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/spf13/cobra"
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
 | 
						cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
 | 
				
			||||||
	libutil "k8s.io/kubernetes/pkg/util"
 | 
						libutil "k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -145,7 +146,10 @@ func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
 | 
				
			|||||||
	if cmdutil.GetFlagBool(cmd, "previous") {
 | 
						if cmdutil.GetFlagBool(cmd, "previous") {
 | 
				
			||||||
		previous = true
 | 
							previous = true
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return handleLog(client, namespace, podID, container, follow, previous, out)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func handleLog(client *client.Client, namespace, podID, container string, follow, previous bool, out io.Writer) error {
 | 
				
			||||||
	readCloser, err := client.RESTClient.Get().
 | 
						readCloser, err := client.RESTClient.Get().
 | 
				
			||||||
		Namespace(namespace).
 | 
							Namespace(namespace).
 | 
				
			||||||
		Name(podID).
 | 
							Name(podID).
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -239,14 +239,15 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func waitForPodRunning(c *client.Client, pod *api.Pod, out io.Writer) error {
 | 
					func waitForPodRunning(c *client.Client, pod *api.Pod, out io.Writer) (status api.PodPhase, err error) {
 | 
				
			||||||
	for {
 | 
						for {
 | 
				
			||||||
		pod, err := c.Pods(pod.Namespace).Get(pod.Name)
 | 
							pod, err := c.Pods(pod.Namespace).Get(pod.Name)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return api.PodUnknown, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							ready := false
 | 
				
			||||||
		if pod.Status.Phase == api.PodRunning {
 | 
							if pod.Status.Phase == api.PodRunning {
 | 
				
			||||||
			ready := true
 | 
								ready = true
 | 
				
			||||||
			for _, status := range pod.Status.ContainerStatuses {
 | 
								for _, status := range pod.Status.ContainerStatuses {
 | 
				
			||||||
				if !status.Ready {
 | 
									if !status.Ready {
 | 
				
			||||||
					ready = false
 | 
										ready = false
 | 
				
			||||||
@@ -254,10 +255,13 @@ func waitForPodRunning(c *client.Client, pod *api.Pod, out io.Writer) error {
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if ready {
 | 
								if ready {
 | 
				
			||||||
				return nil
 | 
									return api.PodRunning, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		fmt.Fprintf(out, "Waiting for pod %s/%s to be running\n", pod.Namespace, pod.Name)
 | 
							if pod.Status.Phase == api.PodSucceeded || pod.Status.Phase == api.PodFailed {
 | 
				
			||||||
 | 
								return pod.Status.Phase, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							fmt.Fprintf(out, "Waiting for pod %s/%s to be running, status is %s, pod ready: %v\n", pod.Namespace, pod.Name, pod.Status.Phase, ready)
 | 
				
			||||||
		time.Sleep(2 * time.Second)
 | 
							time.Sleep(2 * time.Second)
 | 
				
			||||||
		continue
 | 
							continue
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -280,9 +284,13 @@ func handleAttachReplicationController(c *client.Client, controller *api.Replica
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func handleAttachPod(c *client.Client, pod *api.Pod, opts *AttachOptions) error {
 | 
					func handleAttachPod(c *client.Client, pod *api.Pod, opts *AttachOptions) error {
 | 
				
			||||||
	if err := waitForPodRunning(c, pod, opts.Out); err != nil {
 | 
						status, err := waitForPodRunning(c, pod, opts.Out)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if status == api.PodSucceeded || status == api.PodFailed {
 | 
				
			||||||
 | 
							return handleLog(c, pod.Namespace, pod.Name, pod.Spec.Containers[0].Name, false, false, opts.Out)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	opts.Client = c
 | 
						opts.Client = c
 | 
				
			||||||
	opts.PodName = pod.Name
 | 
						opts.PodName = pod.Name
 | 
				
			||||||
	opts.Namespace = pod.Namespace
 | 
						opts.Namespace = pod.Namespace
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -190,12 +190,10 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		It("should support inline execution and attach", func() {
 | 
							It("should support inline execution and attach", func() {
 | 
				
			||||||
			By("executing a command with run and attach")
 | 
								By("executing a command with run and attach")
 | 
				
			||||||
			runOutput := runKubectl("run", fmt.Sprintf("--namespace=%v", ns), "run", "run-test", "--image=busybox", "--restart=Never", "--attach", "echo", "running", "in", "container")
 | 
								runOutput := runKubectl(fmt.Sprintf("--namespace=%v", ns), "run", "run-test", "--image=busybox", "--restart=Never", "--attach=true", "echo", "running", "in", "container")
 | 
				
			||||||
			expectedRunOutput := "running in container"
 | 
								expectedRunOutput := "running in container"
 | 
				
			||||||
			if runOutput != expectedRunOutput {
 | 
								Expect(runOutput).To(ContainSubstring(expectedRunOutput))
 | 
				
			||||||
				Failf("Unexpected kubectl exec output. Wanted '%s', got '%s'", runOutput, expectedRunOutput)
 | 
								// everything in the ns will be deleted at the end of the test
 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			runKubectl("delete", "pods", "run-test")
 | 
					 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should support port-forward", func() {
 | 
							It("should support port-forward", func() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user