func (f *Framework) deleteFederationNs() { if !f.federated { // Nothing to do if this is not a federation setup. return } ns := f.FederationNamespace By(fmt.Sprintf("Destroying federation namespace %q for this suite.", ns.Name)) timeout := 5 * time.Minute if f.NamespaceDeletionTimeout != 0 { timeout = f.NamespaceDeletionTimeout } clientset := f.FederationClientset_1_5 // First delete the namespace from federation apiserver. // Also delete the corresponding namespaces from underlying clusters. orphanDependents := false if err := clientset.Core().Namespaces().Delete(ns.Name, &v1.DeleteOptions{OrphanDependents: &orphanDependents}); err != nil { Failf("Error while deleting federation namespace %s: %s", ns.Name, err) } // Verify that it got deleted. err := wait.PollImmediate(5*time.Second, timeout, func() (bool, error) { if _, err := clientset.Core().Namespaces().Get(ns.Name, metav1.GetOptions{}); err != nil { if apierrs.IsNotFound(err) { return true, nil } Logf("Error while waiting for namespace to be terminated: %v", err) return false, nil } return false, nil }) if err != nil { if !apierrs.IsNotFound(err) { Failf("Couldn't delete ns %q: %s", ns.Name, err) } else { Logf("Namespace %v was already deleted", ns.Name) } } }
func (f *Framework) createFederationNamespace(baseName string) (*v1.Namespace, error) { clientset := f.FederationClientset_1_5 namespaceObj := &v1.Namespace{ ObjectMeta: v1.ObjectMeta{ GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName), }, } // Be robust about making the namespace creation call. var got *v1.Namespace if err := wait.PollImmediate(Poll, SingleCallTimeout, func() (bool, error) { var err error got, err = clientset.Core().Namespaces().Create(namespaceObj) if err != nil { Logf("Unexpected error while creating namespace: %v", err) return false, nil } return true, nil }); err != nil { return nil, err } return got, nil }