func ensureServicesAreRemovedWhenNamespaceIsDeleted(f *framework.Framework) { var err error By("Creating a test namespace") namespace, err := f.CreateNamespace("nsdeletetest", nil) Expect(err).NotTo(HaveOccurred()) By("Waiting for a default service account to be provisioned in namespace") err = framework.WaitForDefaultServiceAccountInNamespace(f.ClientSet, namespace.Name) Expect(err).NotTo(HaveOccurred()) By("Creating a service in the namespace") serviceName := "test-service" labels := map[string]string{ "foo": "bar", "baz": "blah", } service := &v1.Service{ ObjectMeta: v1.ObjectMeta{ Name: serviceName, }, Spec: v1.ServiceSpec{ Selector: labels, Ports: []v1.ServicePort{{ Port: 80, TargetPort: intstr.FromInt(80), }}, }, } service, err = f.ClientSet.Core().Services(namespace.Name).Create(service) Expect(err).NotTo(HaveOccurred()) By("Deleting the namespace") err = f.ClientSet.Core().Namespaces().Delete(namespace.Name, nil) Expect(err).NotTo(HaveOccurred()) By("Waiting for the namespace to be removed.") maxWaitSeconds := int64(60) framework.ExpectNoError(wait.Poll(1*time.Second, time.Duration(maxWaitSeconds)*time.Second, func() (bool, error) { _, err = f.ClientSet.Core().Namespaces().Get(namespace.Name, metav1.GetOptions{}) if err != nil && errors.IsNotFound(err) { return true, nil } return false, nil })) By("Verifying there is no service in the namespace") _, err = f.ClientSet.Core().Services(namespace.Name).Get(service.Name, metav1.GetOptions{}) Expect(err).To(HaveOccurred()) }
func ensurePodsAreRemovedWhenNamespaceIsDeleted(f *framework.Framework) { var err error By("Creating a test namespace") namespace, err := f.CreateNamespace("nsdeletetest", nil) Expect(err).NotTo(HaveOccurred()) By("Waiting for a default service account to be provisioned in namespace") err = framework.WaitForDefaultServiceAccountInNamespace(f.ClientSet, namespace.Name) Expect(err).NotTo(HaveOccurred()) By("Creating a pod in the namespace") pod := &v1.Pod{ ObjectMeta: v1.ObjectMeta{ Name: "test-pod", }, Spec: v1.PodSpec{ Containers: []v1.Container{ { Name: "nginx", Image: framework.GetPauseImageName(f.ClientSet), }, }, }, } pod, err = f.ClientSet.Core().Pods(namespace.Name).Create(pod) Expect(err).NotTo(HaveOccurred()) By("Waiting for the pod to have running status") framework.ExpectNoError(framework.WaitForPodRunningInNamespace(f.ClientSet, pod)) By("Deleting the namespace") err = f.ClientSet.Core().Namespaces().Delete(namespace.Name, nil) Expect(err).NotTo(HaveOccurred()) By("Waiting for the namespace to be removed.") maxWaitSeconds := int64(60) + *pod.Spec.TerminationGracePeriodSeconds framework.ExpectNoError(wait.Poll(1*time.Second, time.Duration(maxWaitSeconds)*time.Second, func() (bool, error) { _, err = f.ClientSet.Core().Namespaces().Get(namespace.Name, metav1.GetOptions{}) if err != nil && errors.IsNotFound(err) { return true, nil } return false, nil })) By("Verifying there is no pod in the namespace") _, err = f.ClientSet.Core().Pods(namespace.Name).Get(pod.Name, metav1.GetOptions{}) Expect(err).To(HaveOccurred()) }