func firstContainerName(c kclient.PodInterface, podName string) (string, error) { pod, err := c.Get(podName) if err != nil { return "", err } return pod.Spec.Containers[0].Name, nil }
// WaitUntilPodIsGone waits until the named Pod will disappear func WaitUntilPodIsGone(c kclient.PodInterface, podName string, timeout time.Duration) error { return wait.Poll(1*time.Second, timeout, func() (bool, error) { _, err := c.Get(podName) if err != nil { if strings.Contains(err.Error(), "not found") { return true, nil } return true, err } return false, nil }) }
func getPodConfig(c kclient.PodInterface, podName string) (conf *PodConfig, err error) { pod, err := c.Get(podName) if err != nil { return nil, err } env := make(map[string]string) for _, container := range pod.Spec.Containers { for _, e := range container.Env { env[e.Name] = e.Value } } return &PodConfig{pod.Spec.Containers[0].Name, env}, nil }
func installationStarted(c kclient.PodInterface, name string, s kclient.SecretsInterface) wait.ConditionFunc { return func() (bool, error) { pod, err := c.Get(name) if err != nil { return false, err } if pod.Status.Phase == kapi.PodPending { return false, nil } // delete a secret named the same as the pod if it exists if secret, err := s.Get(name); err == nil { if secret.Annotations[newcmd.GeneratedForJob] == "true" && secret.Annotations[newcmd.GeneratedForJobFor] == pod.Annotations[newcmd.GeneratedForJobFor] { if err := s.Delete(name); err != nil { glog.V(4).Infof("Failed to delete install secret %s: %v", name, err) } } } return true, nil } }
func installationComplete(c kclient.PodInterface, name string, out io.Writer) wait.ConditionFunc { return func() (bool, error) { pod, err := c.Get(name) if err != nil { if kapierrors.IsNotFound(err) { return false, fmt.Errorf("installation pod was deleted; unable to determine whether it completed successfully") } return false, nil } switch pod.Status.Phase { case kapi.PodSucceeded: fmt.Fprintf(out, "--> Success\n") if err := c.Delete(name, nil); err != nil { glog.V(4).Infof("Failed to delete install pod %s: %v", name, err) } return true, nil case kapi.PodFailed: return true, fmt.Errorf("installation of %q did not complete successfully", name) default: return false, nil } } }
probe := webserverProbeBuilder{} BeforeEach(func() { framework.beforeEach() podClient = framework.Client.Pods(framework.Namespace.Name) }) AfterEach(framework.afterEach) It("with readiness probe should not be ready before initial delay and never restart [Conformance]", func() { p, err := podClient.Create(makePodSpec(probe.withInitialDelay().build(), nil)) expectNoError(err) startTime := time.Now() Expect(wait.Poll(poll, 90*time.Second, func() (bool, error) { p, err := podClient.Get(p.Name) if err != nil { return false, err } ready := api.IsPodReady(p) if !ready { Logf("pod is not yet ready; pod has phase %q.", p.Status.Phase) return false, nil } return true, nil })).NotTo(HaveOccurred(), "pod never became ready") if time.Since(startTime) < 30*time.Second { Failf("Pod became ready before it's initial delay") }