mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2026-01-08 16:21:50 +00:00
e2e: use Ginkgo context
All code must use the context from Ginkgo when doing API calls or polling for a change, otherwise the code would not return immediately when the test gets aborted.
This commit is contained in:
@@ -60,7 +60,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
{
|
||||
ginkgo.By("ensuring no secret-based service account token exists")
|
||||
time.Sleep(10 * time.Second)
|
||||
sa, err := f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Get(context.TODO(), "default", metav1.GetOptions{})
|
||||
sa, err := f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Get(ctx, "default", metav1.GetOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectEmpty(sa.Secrets)
|
||||
}
|
||||
@@ -76,11 +76,11 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
Account mount path MUST be auto mounted to the Container.
|
||||
*/
|
||||
framework.ConformanceIt("should mount an API token into pods ", func(ctx context.Context) {
|
||||
sa, err := f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(context.TODO(), &v1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "mount-test"}}, metav1.CreateOptions{})
|
||||
sa, err := f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(ctx, &v1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "mount-test"}}, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
zero := int64(0)
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), &v1.Pod{
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(ctx, &v1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod-service-account-" + string(uuid.NewUUID()),
|
||||
},
|
||||
@@ -96,7 +96,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
},
|
||||
}, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectNoError(e2epod.WaitForPodRunningInNamespace(f.ClientSet, pod))
|
||||
framework.ExpectNoError(e2epod.WaitForPodRunningInNamespace(ctx, f.ClientSet, pod))
|
||||
|
||||
tk := e2ekubectl.NewTestKubeconfig(framework.TestContext.CertDir, framework.TestContext.Host, framework.TestContext.KubeConfig, framework.TestContext.KubeContext, framework.TestContext.KubectlPath, f.Namespace.Name)
|
||||
mountedToken, err := tk.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountTokenKey))
|
||||
@@ -107,14 +107,14 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
// CA and namespace should be identical
|
||||
rootCA, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(context.TODO(), rootCAConfigMapName, metav1.GetOptions{})
|
||||
rootCA, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(ctx, rootCAConfigMapName, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
framework.Logf("Got root ca configmap in namespace %q", f.Namespace.Name)
|
||||
framework.ExpectEqual(mountedCA, rootCA.Data["ca.crt"])
|
||||
framework.ExpectEqual(mountedNamespace, f.Namespace.Name)
|
||||
// Token should be a valid credential that identifies the pod's service account
|
||||
tokenReview := &authenticationv1.TokenReview{Spec: authenticationv1.TokenReviewSpec{Token: mountedToken}}
|
||||
tokenReview, err = f.ClientSet.AuthenticationV1().TokenReviews().Create(context.TODO(), tokenReview, metav1.CreateOptions{})
|
||||
tokenReview, err = f.ClientSet.AuthenticationV1().TokenReviews().Create(ctx, tokenReview, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
if !tokenReview.Status.Authenticated {
|
||||
framework.Fail("tokenReview is not authenticated")
|
||||
@@ -165,9 +165,9 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
falseValue := false
|
||||
mountSA := &v1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "mount"}, AutomountServiceAccountToken: &trueValue}
|
||||
nomountSA := &v1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "nomount"}, AutomountServiceAccountToken: &falseValue}
|
||||
mountSA, err = f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(context.TODO(), mountSA, metav1.CreateOptions{})
|
||||
mountSA, err = f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(ctx, mountSA, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
nomountSA, err = f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(context.TODO(), nomountSA, metav1.CreateOptions{})
|
||||
nomountSA, err = f.ClientSet.CoreV1().ServiceAccounts(f.Namespace.Name).Create(ctx, nomountSA, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
testcases := []struct {
|
||||
@@ -246,7 +246,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
AutomountServiceAccountToken: tc.AutomountPodSpec,
|
||||
},
|
||||
}
|
||||
createdPod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{})
|
||||
createdPod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(ctx, pod, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
framework.Logf("created pod %s", tc.PodName)
|
||||
|
||||
@@ -317,7 +317,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
fmt.Sprintf("content of file \"%v\": %s", tokenVolumePath, `[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*`),
|
||||
}
|
||||
|
||||
e2eoutput.TestContainerOutputRegexp(f, "service account token: ", pod, 0, output)
|
||||
e2eoutput.TestContainerOutputRegexp(ctx, f, "service account token: ", pod, 0, output)
|
||||
})
|
||||
|
||||
/*
|
||||
@@ -425,7 +425,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
fmt.Sprintf("owner UID of \"%v\": %d", tokenVolumePath, tc.wantUID),
|
||||
fmt.Sprintf("owner GID of \"%v\": %d", tokenVolumePath, tc.wantGID),
|
||||
}
|
||||
e2eoutput.TestContainerOutputRegexp(f, "service account token: ", pod, 0, output)
|
||||
e2eoutput.TestContainerOutputRegexp(ctx, f, "service account token: ", pod, 0, output)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -489,11 +489,11 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
}},
|
||||
},
|
||||
}
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{})
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(ctx, pod, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("created pod")
|
||||
if !e2epod.CheckPodsRunningReady(f.ClientSet, f.Namespace.Name, []string{pod.Name}, time.Minute) {
|
||||
if !e2epod.CheckPodsRunningReady(ctx, f.ClientSet, f.Namespace.Name, []string{pod.Name}, time.Minute) {
|
||||
framework.Failf("pod %q in ns %q never became ready", pod.Name, f.Namespace.Name)
|
||||
}
|
||||
|
||||
@@ -502,7 +502,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
var logs string
|
||||
if err := wait.Poll(1*time.Minute, 20*time.Minute, func() (done bool, err error) {
|
||||
framework.Logf("polling logs")
|
||||
logs, err = e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, "inclusterclient", "inclusterclient")
|
||||
logs, err = e2epod.GetPodLogs(ctx, f.ClientSet, f.Namespace.Name, "inclusterclient", "inclusterclient")
|
||||
if err != nil {
|
||||
framework.Logf("Error pulling logs: %v", err)
|
||||
return false, nil
|
||||
@@ -538,7 +538,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
const clusterRoleName = "system:service-account-issuer-discovery"
|
||||
crbName := fmt.Sprintf("%s-%s", f.Namespace.Name, clusterRoleName)
|
||||
if crb, err := f.ClientSet.RbacV1().ClusterRoleBindings().Create(
|
||||
context.TODO(),
|
||||
ctx,
|
||||
&rbacv1.ClusterRoleBinding{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: crbName,
|
||||
@@ -564,7 +564,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
defer func() {
|
||||
framework.ExpectNoError(
|
||||
f.ClientSet.RbacV1().ClusterRoleBindings().Delete(
|
||||
context.TODO(),
|
||||
ctx,
|
||||
crb.Name, metav1.DeleteOptions{}))
|
||||
}()
|
||||
}
|
||||
@@ -612,17 +612,17 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
}},
|
||||
},
|
||||
}
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{})
|
||||
pod, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(ctx, pod, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("created pod")
|
||||
podErr := e2epod.WaitForPodSuccessInNamespace(f.ClientSet, pod.Name, f.Namespace.Name)
|
||||
podErr := e2epod.WaitForPodSuccessInNamespace(ctx, f.ClientSet, pod.Name, f.Namespace.Name)
|
||||
|
||||
// Get the logs before calling ExpectNoError, so we can debug any errors.
|
||||
var logs string
|
||||
if err := wait.Poll(30*time.Second, 2*time.Minute, func() (done bool, err error) {
|
||||
framework.Logf("polling logs")
|
||||
logs, err = e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, pod.Name, pod.Spec.Containers[0].Name)
|
||||
logs, err = e2epod.GetPodLogs(ctx, f.ClientSet, f.Namespace.Name, pod.Name, pod.Spec.Containers[0].Name)
|
||||
if err != nil {
|
||||
framework.Logf("Error pulling logs: %v", err)
|
||||
return false, nil
|
||||
@@ -659,16 +659,16 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
Labels: testServiceAccountStaticLabels,
|
||||
},
|
||||
}
|
||||
createdServiceAccount, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Create(context.TODO(), &testServiceAccount, metav1.CreateOptions{})
|
||||
createdServiceAccount, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Create(ctx, &testServiceAccount, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err, "failed to create a ServiceAccount")
|
||||
|
||||
getServiceAccount, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Get(context.TODO(), testServiceAccountName, metav1.GetOptions{})
|
||||
getServiceAccount, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Get(ctx, testServiceAccountName, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err, "failed to fetch the created ServiceAccount")
|
||||
framework.ExpectEqual(createdServiceAccount.UID, getServiceAccount.UID)
|
||||
|
||||
ginkgo.By("watching for the ServiceAccount to be added")
|
||||
resourceWatchTimeoutSeconds := int64(180)
|
||||
resourceWatch, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Watch(context.TODO(), metav1.ListOptions{LabelSelector: testServiceAccountStaticLabelsFlat, TimeoutSeconds: &resourceWatchTimeoutSeconds})
|
||||
resourceWatch, err := f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Watch(ctx, metav1.ListOptions{LabelSelector: testServiceAccountStaticLabelsFlat, TimeoutSeconds: &resourceWatchTimeoutSeconds})
|
||||
if err != nil {
|
||||
fmt.Println(err, "failed to setup watch on newly created ServiceAccount")
|
||||
return
|
||||
@@ -691,7 +691,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
AutomountServiceAccountToken: &boolFalse,
|
||||
})
|
||||
framework.ExpectNoError(err, "failed to marshal JSON patch for the ServiceAccount")
|
||||
_, err = f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Patch(context.TODO(), testServiceAccountName, types.StrategicMergePatchType, []byte(testServiceAccountPatchData), metav1.PatchOptions{})
|
||||
_, err = f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).Patch(ctx, testServiceAccountName, types.StrategicMergePatchType, []byte(testServiceAccountPatchData), metav1.PatchOptions{})
|
||||
framework.ExpectNoError(err, "failed to patch the ServiceAccount")
|
||||
eventFound = false
|
||||
for watchEvent := range resourceWatchChan {
|
||||
@@ -704,7 +704,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
framework.Failf("failed to find %v event", watch.Modified)
|
||||
}
|
||||
ginkgo.By("finding ServiceAccount in list of all ServiceAccounts (by LabelSelector)")
|
||||
serviceAccountList, err := f.ClientSet.CoreV1().ServiceAccounts("").List(context.TODO(), metav1.ListOptions{LabelSelector: testServiceAccountStaticLabelsFlat})
|
||||
serviceAccountList, err := f.ClientSet.CoreV1().ServiceAccounts("").List(ctx, metav1.ListOptions{LabelSelector: testServiceAccountStaticLabelsFlat})
|
||||
framework.ExpectNoError(err, "failed to list ServiceAccounts by LabelSelector")
|
||||
foundServiceAccount := false
|
||||
for _, serviceAccountItem := range serviceAccountList.Items {
|
||||
@@ -717,7 +717,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
framework.Fail("failed to find the created ServiceAccount")
|
||||
}
|
||||
ginkgo.By("deleting the ServiceAccount")
|
||||
err = f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{})
|
||||
err = f.ClientSet.CoreV1().ServiceAccounts(testNamespaceName).DeleteCollection(ctx, metav1.DeleteOptions{}, metav1.ListOptions{})
|
||||
framework.ExpectNoError(err, "failed to delete the ServiceAccount by Collection")
|
||||
eventFound = false
|
||||
for watchEvent := range resourceWatchChan {
|
||||
@@ -741,7 +741,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
*/
|
||||
framework.ConformanceIt("should guarantee kube-root-ca.crt exist in any namespace", func(ctx context.Context) {
|
||||
framework.ExpectNoError(wait.PollImmediate(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(context.TODO(), rootCAConfigMapName, metav1.GetOptions{})
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(ctx, rootCAConfigMapName, metav1.GetOptions{})
|
||||
if err == nil {
|
||||
return true, nil
|
||||
}
|
||||
@@ -753,12 +753,12 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
}))
|
||||
framework.Logf("Got root ca configmap in namespace %q", f.Namespace.Name)
|
||||
|
||||
framework.ExpectNoError(f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Delete(context.TODO(), rootCAConfigMapName, metav1.DeleteOptions{GracePeriodSeconds: utilptr.Int64Ptr(0)}))
|
||||
framework.ExpectNoError(f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Delete(ctx, rootCAConfigMapName, metav1.DeleteOptions{GracePeriodSeconds: utilptr.Int64Ptr(0)}))
|
||||
framework.Logf("Deleted root ca configmap in namespace %q", f.Namespace.Name)
|
||||
|
||||
framework.ExpectNoError(wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
|
||||
ginkgo.By("waiting for a new root ca configmap created")
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(context.TODO(), rootCAConfigMapName, metav1.GetOptions{})
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(ctx, rootCAConfigMapName, metav1.GetOptions{})
|
||||
if err == nil {
|
||||
return true, nil
|
||||
}
|
||||
@@ -770,7 +770,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
}))
|
||||
framework.Logf("Recreated root ca configmap in namespace %q", f.Namespace.Name)
|
||||
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Update(context.TODO(), &v1.ConfigMap{
|
||||
_, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Update(ctx, &v1.ConfigMap{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: rootCAConfigMapName,
|
||||
},
|
||||
@@ -783,7 +783,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
|
||||
framework.ExpectNoError(wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
|
||||
ginkgo.By("waiting for the root ca configmap reconciled")
|
||||
cm, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(context.TODO(), rootCAConfigMapName, metav1.GetOptions{})
|
||||
cm, err := f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Get(ctx, rootCAConfigMapName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if apierrors.IsNotFound(err) {
|
||||
ginkgo.By("root ca configmap not found, retrying")
|
||||
@@ -819,7 +819,7 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
}
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Creating ServiceAccount %q ", saName))
|
||||
createdServiceAccount, err := saClient.Create(context.TODO(), initialServiceAccount, metav1.CreateOptions{})
|
||||
createdServiceAccount, err := saClient.Create(ctx, initialServiceAccount, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectEqual(createdServiceAccount.AutomountServiceAccountToken, utilptr.Bool(false), "Failed to set AutomountServiceAccountToken")
|
||||
framework.Logf("AutomountServiceAccountToken: %v", *createdServiceAccount.AutomountServiceAccountToken)
|
||||
@@ -828,10 +828,10 @@ var _ = SIGDescribe("ServiceAccounts", func() {
|
||||
var updatedServiceAccount *v1.ServiceAccount
|
||||
|
||||
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
|
||||
updateServiceAccount, err := saClient.Get(context.TODO(), saName, metav1.GetOptions{})
|
||||
updateServiceAccount, err := saClient.Get(ctx, saName, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err, "Unable to get ServiceAccount %q", saName)
|
||||
updateServiceAccount.AutomountServiceAccountToken = utilptr.Bool(true)
|
||||
updatedServiceAccount, err = saClient.Update(context.TODO(), updateServiceAccount, metav1.UpdateOptions{})
|
||||
updatedServiceAccount, err = saClient.Update(ctx, updateServiceAccount, metav1.UpdateOptions{})
|
||||
return err
|
||||
})
|
||||
framework.ExpectNoError(err, "Failed to update ServiceAccount")
|
||||
|
||||
Reference in New Issue
Block a user