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 }
// GetPodNamesByFilter looks up pods that satisfy the predicate and returns their names. func GetPodNamesByFilter(c kclient.PodInterface, label labels.Selector, predicate func(kapi.Pod) bool) (podNames []string, err error) { podList, err := c.List(kapi.ListOptions{LabelSelector: label}) if err != nil { return nil, err } for _, pod := range podList.Items { if predicate(pod) { podNames = append(podNames, pod.Name) } } return podNames, 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 getPodStatusForReplicationController(c client.PodInterface, controller *api.ReplicationController) (running, waiting, succeeded, failed int, err error) { rcPods, err := c.List(labels.SelectorFromSet(controller.Spec.Selector), fields.Everything()) if err != nil { return } for _, pod := range rcPods.Items { switch pod.Status.Phase { case api.PodRunning: running++ case api.PodPending: waiting++ case api.PodSucceeded: succeeded++ case api.PodFailed: failed++ } } return }
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 } }
// NewPodWatch creates a pod watching function which is backed by a // FIFO/reflector pair. This avoids managing watches directly. // A stop channel to close the watch's reflector is also returned. // It is the caller's responsibility to defer closing the stop channel to prevent leaking resources. func NewPodWatch(client kclient.PodInterface, namespace, name, resourceVersion string, stopChannel chan struct{}) func() *kapi.Pod { fieldSelector := fields.OneTermEqualSelector("metadata.name", name) podLW := &cache.ListWatch{ ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { options.FieldSelector = fieldSelector return client.List(options) }, WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { options.FieldSelector = fieldSelector return client.Watch(options) }, } queue := cache.NewResyncableFIFO(cache.MetaNamespaceKeyFunc) cache.NewReflector(podLW, &kapi.Pod{}, queue, 1*time.Minute).RunUntil(stopChannel) return func() *kapi.Pod { obj := cache.Pop(queue) return obj.(*kapi.Pod) } }
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 } } }
"k8s.io/kubernetes/pkg/apimachinery/registered" client "k8s.io/kubernetes/pkg/client/unversioned" awscloud "k8s.io/kubernetes/pkg/cloudprovider/providers/aws" gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" "k8s.io/kubernetes/pkg/util" ) const ( gcePDDetachTimeout = 10 * time.Minute gcePDDetachPollTime = 10 * time.Second ) var _ = Describe("Pod Disks", func() { var ( podClient client.PodInterface host0Name string host1Name string ) framework := NewFramework("pod-disks") BeforeEach(func() { SkipUnlessNodeCountIsAtLeast(2) podClient = framework.Client.Pods(framework.Namespace.Name) nodes := ListSchedulableNodesOrDie(framework.Client) Expect(len(nodes.Items)).To(BeNumerically(">=", 2), "Requires at least 2 nodes") host0Name = nodes.Items[0].ObjectMeta.Name host1Name = nodes.Items[1].ObjectMeta.Name
import ( "time" "k8s.io/kubernetes/pkg/api" client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/wait" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Probing container", func() { framework := NewFramework("container-probe") var podClient client.PodInterface 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) {
client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/cloudprovider/providers/aws" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/util" ) const ( gcePDDetachTimeout = 10 * time.Minute gcePDDetachPollTime = 10 * time.Second ) var _ = Describe("Pod Disks", func() { var ( podClient client.PodInterface host0Name string host1Name string ) framework := NewFramework("pod-disks") BeforeEach(func() { SkipUnlessNodeCountIsAtLeast(2) podClient = framework.Client.Pods(framework.Namespace.Name) nodes, err := framework.Client.Nodes().List(labels.Everything(), fields.Everything()) expectNoError(err, "Failed to list nodes for e2e cluster.") Expect(len(nodes.Items)).To(BeNumerically(">=", 2), "Requires at least 2 nodes") host0Name = nodes.Items[0].ObjectMeta.Name