func createRemoveRCsPods(t *testing.T, clientSet clientset.Interface, id int, wg *sync.WaitGroup, rcUIDs chan types.UID) { defer wg.Done() rcClient := clientSet.Core().ReplicationControllers(framework.TestNS) podClient := clientSet.Core().Pods(framework.TestNS) // create rc. rcName := toBeDeletedRCName + strconv.Itoa(id) toBeDeletedRC, err := rcClient.Create(newOwnerRC(rcName)) if err != nil { t.Fatalf("Failed to create replication controller: %v", err) } rcUIDs <- toBeDeletedRC.ObjectMeta.UID // create pods. These pods should be cascadingly deleted. for j := 0; j < 3; j++ { podName := garbageCollectedPodName + strconv.Itoa(id) + "-" + strconv.Itoa(j) pod := newPod(podName, []v1.OwnerReference{{UID: toBeDeletedRC.ObjectMeta.UID, Name: rcName}}) _, err = podClient.Create(pod) if err != nil { t.Fatalf("Failed to create Pod: %v", err) } } // delete the rc if err := rcClient.Delete(rcName, nil); err != nil { t.Fatalf("failed to delete replication controller: %v", err) } }
func createRCsPods(t *testing.T, clientSet clientset.Interface, rcs []*v1.ReplicationController, pods []*v1.Pod, ns string) { rcClient := clientSet.Core().ReplicationControllers(ns) podClient := clientSet.Core().Pods(ns) for _, rc := range rcs { if _, err := rcClient.Create(rc); err != nil { t.Fatalf("Failed to create replication controller %s: %v", rc.Name, err) } } for _, pod := range pods { if _, err := podClient.Create(pod); err != nil { t.Fatalf("Failed to create pod %s: %v", pod.Name, err) } } }
func createRSsPods(t *testing.T, clientSet clientset.Interface, rss []*v1beta1.ReplicaSet, pods []*v1.Pod, ns string) { rsClient := clientSet.Extensions().ReplicaSets(ns) podClient := clientSet.Core().Pods(ns) for _, rs := range rss { if _, err := rsClient.Create(rs); err != nil { t.Fatalf("Failed to create replica set %s: %v", rs.Name, err) } } for _, pod := range pods { if _, err := podClient.Create(pod); err != nil { t.Fatalf("Failed to create pod %s: %v", pod.Name, err) } } }
func waitRCStable(t *testing.T, clientSet clientset.Interface, rc *v1.ReplicationController, ns string) { rcClient := clientSet.Core().ReplicationControllers(ns) if err := wait.Poll(10*time.Second, 60*time.Second, func() (bool, error) { updatedRC, err := rcClient.Get(rc.Name) if err != nil { return false, err } if updatedRC.Status.Replicas != *rc.Spec.Replicas { return false, nil } else { return true, nil } }); err != nil { t.Fatal(err) } }
func waitRSStable(t *testing.T, clientSet clientset.Interface, rs *v1beta1.ReplicaSet, ns string) { rsClient := clientSet.Extensions().ReplicaSets(ns) if err := wait.Poll(10*time.Second, 60*time.Second, func() (bool, error) { updatedRS, err := rsClient.Get(rs.Name) if err != nil { return false, err } if updatedRS.Status.Replicas != *rs.Spec.Replicas { return false, nil } else { return true, nil } }); err != nil { t.Fatal(err) } }
func allObjectsRemoved(clientSet clientset.Interface) (bool, error) { rcClient := clientSet.Core().ReplicationControllers(framework.TestNS) podClient := clientSet.Core().Pods(framework.TestNS) pods, err := podClient.List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list pods: %v", err) } if len(pods.Items) != 0 { return false, nil } rcs, err := rcClient.List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list replication controllers: %v", err) } if len(rcs.Items) != 0 { return false, nil } return true, nil }
// verifyRemainingObjects verifies if the number of the remaining replication // controllers and pods are rcNum and podNum. It returns error if the // communication with the API server fails. func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) { rcClient := clientSet.Core().ReplicationControllers(f.Namespace.Name) pods, err := clientSet.Core().Pods(f.Namespace.Name).List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list pods: %v", err) } var ret = true if len(pods.Items) != podNum { ret = false By(fmt.Sprintf("expected %d pods, got %d pods", podNum, len(pods.Items))) } rcs, err := rcClient.List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list replication controllers: %v", err) } if len(rcs.Items) != rcNum { ret = false By(fmt.Sprintf("expected %d RCs, got %d RCs", rcNum, len(rcs.Items))) } return ret, nil }
// verifyRemainingObjects verifies if the number of the remaining replica // sets and pods are rsNum and podNum. It returns error if the // communication with the API server fails. func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespace string, rsNum, podNum int) (bool, error) { rsClient := clientSet.Extensions().ReplicaSets(namespace) podClient := clientSet.Core().Pods(namespace) pods, err := podClient.List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list pods: %v", err) } var ret = true if len(pods.Items) != podNum { ret = false t.Logf("expect %d pods, got %d pods", podNum, len(pods.Items)) } rss, err := rsClient.List(api.ListOptions{}) if err != nil { return false, fmt.Errorf("Failed to list replica sets: %v", err) } if len(rss.Items) != rsNum { ret = false t.Logf("expect %d RSs, got %d RSs", rsNum, len(rss.Items)) } return ret, nil }
func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet clientset.Interface, nameSuffix string, initialFinalizers []string, options *api.DeleteOptions, wg *sync.WaitGroup, rcUIDs chan types.UID) { defer wg.Done() rcClient := clientSet.Core().ReplicationControllers(framework.TestNS) podClient := clientSet.Core().Pods(framework.TestNS) // create rc. rcName := "test.rc." + nameSuffix rc := newOwnerRC(rcName) rc.ObjectMeta.Finalizers = initialFinalizers rc, err := rcClient.Create(rc) if err != nil { t.Fatalf("Failed to create replication controller: %v", err) } rcUIDs <- rc.ObjectMeta.UID // create pods. var podUIDs []types.UID for j := 0; j < 3; j++ { podName := "test.pod." + nameSuffix + "-" + strconv.Itoa(j) pod := newPod(podName, []v1.OwnerReference{{UID: rc.ObjectMeta.UID, Name: rc.ObjectMeta.Name}}) _, err = podClient.Create(pod) if err != nil { t.Fatalf("Failed to create Pod: %v", err) } podUIDs = append(podUIDs, pod.ObjectMeta.UID) } orphan := (options != nil && options.OrphanDependents != nil && *options.OrphanDependents) || (options == nil && len(initialFinalizers) != 0 && initialFinalizers[0] == api.FinalizerOrphan) // if we intend to orphan the pods, we need wait for the gc to observe the // creation of the pods, otherwise if the deletion of RC is observed before // the creation of the pods, the pods will not be orphaned. if orphan { wait.Poll(5*time.Second, 60*time.Second, func() (bool, error) { return gc.GraphHasUID(podUIDs), nil }) } // delete the rc if err := rcClient.Delete(rc.ObjectMeta.Name, options); err != nil { t.Fatalf("failed to delete replication controller: %v", err) } }