Renaming autoScaling to autoscaling in tests matching the convention (#2201)
This commit is contained in:
		
							parent
							
								
									3327f620fb
								
							
						
					
					
						commit
						882bfab569
					
				|  | @ -19,35 +19,35 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| 	autoScalingListenerTestTimeout     = time.Second * 5 | 	autoscalingListenerTestTimeout     = time.Second * 5 | ||||||
| 	autoScalingListenerTestInterval    = time.Millisecond * 250 | 	autoscalingListenerTestInterval    = time.Millisecond * 250 | ||||||
| 	autoScalingListenerTestGitHubToken = "gh_token" | 	autoscalingListenerTestGitHubToken = "gh_token" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var _ = Describe("Test AutoScalingListener controller", func() { | var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 	var ctx context.Context | 	var ctx context.Context | ||||||
| 	var cancel context.CancelFunc | 	var cancel context.CancelFunc | ||||||
| 	autoScalingNS := new(corev1.Namespace) | 	autoscalingNS := new(corev1.Namespace) | ||||||
| 	autoScalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet) | 	autoscalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet) | ||||||
| 	configSecret := new(corev1.Secret) | 	configSecret := new(corev1.Secret) | ||||||
| 	autoScalingListener := new(actionsv1alpha1.AutoscalingListener) | 	autoscalingListener := new(actionsv1alpha1.AutoscalingListener) | ||||||
| 
 | 
 | ||||||
| 	BeforeEach(func() { | 	BeforeEach(func() { | ||||||
| 		ctx, cancel = context.WithCancel(context.TODO()) | 		ctx, cancel = context.WithCancel(context.TODO()) | ||||||
| 		autoScalingNS = &corev1.Namespace{ | 		autoscalingNS = &corev1.Namespace{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-listener" + RandStringRunes(5)}, | 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-listener" + RandStringRunes(5)}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Create(ctx, autoScalingNS) | 		err := k8sClient.Create(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 		configSecret = &corev1.Secret{ | 		configSecret = &corev1.Secret{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "github-config-secret", | 				Name:      "github-config-secret", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Data: map[string][]byte{ | 			Data: map[string][]byte{ | ||||||
| 				"github_token": []byte(autoScalingListenerTestGitHubToken), | 				"github_token": []byte(autoscalingListenerTestGitHubToken), | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +55,7 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | ||||||
| 
 | 
 | ||||||
| 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | ||||||
| 			Namespace:          autoScalingNS.Name, | 			Namespace:          autoscalingNS.Name, | ||||||
| 			MetricsBindAddress: "0", | 			MetricsBindAddress: "0", | ||||||
| 		}) | 		}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | ||||||
|  | @ -70,10 +70,10 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 
 | 
 | ||||||
| 		min := 1 | 		min := 1 | ||||||
| 		max := 10 | 		max := 10 | ||||||
| 		autoScalingRunnerSet = &actionsv1alpha1.AutoscalingRunnerSet{ | 		autoscalingRunnerSet = &actionsv1alpha1.AutoscalingRunnerSet{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "test-asrs", | 				Name:      "test-asrs", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Spec: actionsv1alpha1.AutoscalingRunnerSetSpec{ | 			Spec: actionsv1alpha1.AutoscalingRunnerSetSpec{ | ||||||
| 				GitHubConfigUrl:    "https://github.com/owner/repo", | 				GitHubConfigUrl:    "https://github.com/owner/repo", | ||||||
|  | @ -93,20 +93,20 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err = k8sClient.Create(ctx, autoScalingRunnerSet) | 		err = k8sClient.Create(ctx, autoscalingRunnerSet) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 		autoScalingListener = &actionsv1alpha1.AutoscalingListener{ | 		autoscalingListener = &actionsv1alpha1.AutoscalingListener{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "test-asl", | 				Name:      "test-asl", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Spec: actionsv1alpha1.AutoscalingListenerSpec{ | 			Spec: actionsv1alpha1.AutoscalingListenerSpec{ | ||||||
| 				GitHubConfigUrl:               "https://github.com/owner/repo", | 				GitHubConfigUrl:               "https://github.com/owner/repo", | ||||||
| 				GitHubConfigSecret:            configSecret.Name, | 				GitHubConfigSecret:            configSecret.Name, | ||||||
| 				RunnerScaleSetId:              1, | 				RunnerScaleSetId:              1, | ||||||
| 				AutoscalingRunnerSetNamespace: autoScalingRunnerSet.Namespace, | 				AutoscalingRunnerSetNamespace: autoscalingRunnerSet.Namespace, | ||||||
| 				AutoscalingRunnerSetName:      autoScalingRunnerSet.Name, | 				AutoscalingRunnerSetName:      autoscalingRunnerSet.Name, | ||||||
| 				EphemeralRunnerSetName:        "test-ers", | 				EphemeralRunnerSetName:        "test-ers", | ||||||
| 				MaxRunners:                    10, | 				MaxRunners:                    10, | ||||||
| 				MinRunners:                    1, | 				MinRunners:                    1, | ||||||
|  | @ -114,7 +114,7 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err = k8sClient.Create(ctx, autoScalingListener) | 		err = k8sClient.Create(ctx, autoscalingListener) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingListener") | 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingListener") | ||||||
| 
 | 
 | ||||||
| 		go func() { | 		go func() { | ||||||
|  | @ -128,7 +128,7 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
| 		defer cancel() | 		defer cancel() | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Delete(ctx, autoScalingNS) | 		err := k8sClient.Delete(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet") | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -138,7 +138,7 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			created := new(actionsv1alpha1.AutoscalingListener) | 			created := new(actionsv1alpha1.AutoscalingListener) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, created) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, created) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
|  | @ -147,76 +147,76 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 					} | 					} | ||||||
| 					return created.Finalizers[0], nil | 					return created.Finalizers[0], nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListenerFinalizerName), "AutoScalingListener should have a finalizer") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListenerFinalizerName), "AutoScalingListener should have a finalizer") | ||||||
| 
 | 
 | ||||||
| 			// Check if secret is created
 | 			// Check if secret is created
 | ||||||
| 			mirrorSecret := new(corev1.Secret) | 			mirrorSecret := new(corev1.Secret) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerSecretMirrorName(autoScalingListener), Namespace: autoScalingListener.Namespace}, mirrorSecret) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerSecretMirrorName(autoscalingListener), Namespace: autoscalingListener.Namespace}, mirrorSecret) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 					return string(mirrorSecret.Data["github_token"]), nil | 					return string(mirrorSecret.Data["github_token"]), nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoScalingListenerTestGitHubToken), "Mirror secret should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListenerTestGitHubToken), "Mirror secret should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if service account is created
 | 			// Check if service account is created
 | ||||||
| 			serviceAccount := new(corev1.ServiceAccount) | 			serviceAccount := new(corev1.ServiceAccount) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerServiceAccountName(autoScalingListener), Namespace: autoScalingListener.Namespace}, serviceAccount) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerServiceAccountName(autoscalingListener), Namespace: autoscalingListener.Namespace}, serviceAccount) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 					return serviceAccount.Name, nil | 					return serviceAccount.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(scaleSetListenerServiceAccountName(autoScalingListener)), "Service account should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(scaleSetListenerServiceAccountName(autoscalingListener)), "Service account should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if role is created
 | 			// Check if role is created
 | ||||||
| 			role := new(rbacv1.Role) | 			role := new(rbacv1.Role) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() ([]rbacv1.PolicyRule, error) { | 				func() ([]rbacv1.PolicyRule, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoScalingListener), Namespace: autoScalingListener.Spec.AutoscalingRunnerSetNamespace}, role) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoscalingListener), Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace}, role) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return nil, err | 						return nil, err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return role.Rules, nil | 					return role.Rules, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(rulesForListenerRole([]string{autoScalingListener.Spec.EphemeralRunnerSetName})), "Role should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(rulesForListenerRole([]string{autoscalingListener.Spec.EphemeralRunnerSetName})), "Role should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if rolebinding is created
 | 			// Check if rolebinding is created
 | ||||||
| 			roleBinding := new(rbacv1.RoleBinding) | 			roleBinding := new(rbacv1.RoleBinding) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoScalingListener), Namespace: autoScalingListener.Spec.AutoscalingRunnerSetNamespace}, roleBinding) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoscalingListener), Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace}, roleBinding) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return roleBinding.RoleRef.Name, nil | 					return roleBinding.RoleRef.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(scaleSetListenerRoleName(autoScalingListener)), "Rolebinding should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(scaleSetListenerRoleName(autoscalingListener)), "Rolebinding should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if pod is created
 | 			// Check if pod is created
 | ||||||
| 			pod := new(corev1.Pod) | 			pod := new(corev1.Pod) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, pod) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, pod) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return pod.Name, nil | 					return pod.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoScalingListener.Name), "Pod should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListener.Name), "Pod should be created") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -226,25 +226,25 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			pod := new(corev1.Pod) | 			pod := new(corev1.Pod) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, pod) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, pod) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return pod.Name, nil | 					return pod.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoScalingListener.Name), "Pod should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListener.Name), "Pod should be created") | ||||||
| 
 | 
 | ||||||
| 			// Delete the AutoScalingListener
 | 			// Delete the AutoScalingListener
 | ||||||
| 			err := k8sClient.Delete(ctx, autoScalingListener) | 			err := k8sClient.Delete(ctx, autoscalingListener) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to delete test AutoScalingListener") | 			Expect(err).NotTo(HaveOccurred(), "failed to delete test AutoScalingListener") | ||||||
| 
 | 
 | ||||||
| 			// Cleanup the listener pod
 | 			// Cleanup the listener pod
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					podList := new(corev1.PodList) | 					podList := new(corev1.PodList) | ||||||
| 					err := k8sClient.List(ctx, podList, client.InNamespace(autoScalingListener.Namespace), client.MatchingFields{autoscalingRunnerSetOwnerKey: autoScalingListener.Name}) | 					err := k8sClient.List(ctx, podList, client.InNamespace(autoscalingListener.Namespace), client.MatchingFields{autoscalingRunnerSetOwnerKey: autoscalingListener.Name}) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return err | 						return err | ||||||
| 					} | 					} | ||||||
|  | @ -255,14 +255,14 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return nil | 					return nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete pod") | 				autoscalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete pod") | ||||||
| 
 | 
 | ||||||
| 			// Cleanup the listener service account
 | 			// Cleanup the listener service account
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					serviceAccountList := new(corev1.ServiceAccountList) | 					serviceAccountList := new(corev1.ServiceAccountList) | ||||||
| 					err := k8sClient.List(ctx, serviceAccountList, client.InNamespace(autoScalingListener.Namespace), client.MatchingFields{autoscalingRunnerSetOwnerKey: autoScalingListener.Name}) | 					err := k8sClient.List(ctx, serviceAccountList, client.InNamespace(autoscalingListener.Namespace), client.MatchingFields{autoscalingRunnerSetOwnerKey: autoscalingListener.Name}) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return err | 						return err | ||||||
| 					} | 					} | ||||||
|  | @ -273,14 +273,14 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return nil | 					return nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete service account") | 				autoscalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete service account") | ||||||
| 
 | 
 | ||||||
| 			// The AutoScalingListener should be deleted
 | 			// The AutoScalingListener should be deleted
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					listenerList := new(actionsv1alpha1.AutoscalingListenerList) | 					listenerList := new(actionsv1alpha1.AutoscalingListenerList) | ||||||
| 					err := k8sClient.List(ctx, listenerList, client.InNamespace(autoScalingListener.Namespace), client.MatchingFields{".metadata.name": autoScalingListener.Name}) | 					err := k8sClient.List(ctx, listenerList, client.InNamespace(autoscalingListener.Namespace), client.MatchingFields{".metadata.name": autoscalingListener.Name}) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return err | 						return err | ||||||
| 					} | 					} | ||||||
|  | @ -290,8 +290,8 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 					} | 					} | ||||||
| 					return nil | 					return nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete AutoScalingListener") | 				autoscalingListenerTestInterval).ShouldNot(Succeed(), "failed to delete AutoScalingListener") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -301,35 +301,35 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			pod := new(corev1.Pod) | 			pod := new(corev1.Pod) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, pod) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, pod) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return pod.Name, nil | 					return pod.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoScalingListener.Name), "Pod should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListener.Name), "Pod should be created") | ||||||
| 
 | 
 | ||||||
| 			// Update the AutoScalingListener
 | 			// Update the AutoScalingListener
 | ||||||
| 			updated := autoScalingListener.DeepCopy() | 			updated := autoscalingListener.DeepCopy() | ||||||
| 			updated.Spec.EphemeralRunnerSetName = "test-ers-updated" | 			updated.Spec.EphemeralRunnerSetName = "test-ers-updated" | ||||||
| 			err := k8sClient.Patch(ctx, updated, client.MergeFrom(autoScalingListener)) | 			err := k8sClient.Patch(ctx, updated, client.MergeFrom(autoscalingListener)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to update test AutoScalingListener") | 			Expect(err).NotTo(HaveOccurred(), "failed to update test AutoScalingListener") | ||||||
| 
 | 
 | ||||||
| 			// Check if role is updated with right rules
 | 			// Check if role is updated with right rules
 | ||||||
| 			role := new(rbacv1.Role) | 			role := new(rbacv1.Role) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() ([]rbacv1.PolicyRule, error) { | 				func() ([]rbacv1.PolicyRule, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoScalingListener), Namespace: autoScalingListener.Spec.AutoscalingRunnerSetNamespace}, role) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerRoleName(autoscalingListener), Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace}, role) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return nil, err | 						return nil, err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return role.Rules, nil | 					return role.Rules, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(rulesForListenerRole([]string{updated.Spec.EphemeralRunnerSetName})), "Role should be updated") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(rulesForListenerRole([]string{updated.Spec.EphemeralRunnerSetName})), "Role should be updated") | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		It("It should update mirror secrets to match secret used by AutoScalingRunnerSet", func() { | 		It("It should update mirror secrets to match secret used by AutoScalingRunnerSet", func() { | ||||||
|  | @ -337,19 +337,19 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			pod := new(corev1.Pod) | 			pod := new(corev1.Pod) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, pod) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, pod) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return pod.Name, nil | 					return pod.Name, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(autoScalingListener.Name), "Pod should be created") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(autoscalingListener.Name), "Pod should be created") | ||||||
| 
 | 
 | ||||||
| 			// Update the secret
 | 			// Update the secret
 | ||||||
| 			updatedSecret := configSecret.DeepCopy() | 			updatedSecret := configSecret.DeepCopy() | ||||||
| 			updatedSecret.Data["github_token"] = []byte(autoScalingListenerTestGitHubToken + "_updated") | 			updatedSecret.Data["github_token"] = []byte(autoscalingListenerTestGitHubToken + "_updated") | ||||||
| 			err := k8sClient.Update(ctx, updatedSecret) | 			err := k8sClient.Update(ctx, updatedSecret) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to update test secret") | 			Expect(err).NotTo(HaveOccurred(), "failed to update test secret") | ||||||
| 
 | 
 | ||||||
|  | @ -362,21 +362,21 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 			mirrorSecret := new(corev1.Secret) | 			mirrorSecret := new(corev1.Secret) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (map[string][]byte, error) { | 				func() (map[string][]byte, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerSecretMirrorName(autoScalingListener), Namespace: autoScalingListener.Namespace}, mirrorSecret) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerSecretMirrorName(autoscalingListener), Namespace: autoscalingListener.Namespace}, mirrorSecret) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return nil, err | 						return nil, err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return mirrorSecret.Data, nil | 					return mirrorSecret.Data, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(BeEquivalentTo(updatedSecret.Data), "Mirror secret should be updated") | 				autoscalingListenerTestInterval).Should(BeEquivalentTo(updatedSecret.Data), "Mirror secret should be updated") | ||||||
| 
 | 
 | ||||||
| 			// Check if we re-created a new pod
 | 			// Check if we re-created a new pod
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					latestPod := new(corev1.Pod) | 					latestPod := new(corev1.Pod) | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingListener.Name, Namespace: autoScalingListener.Namespace}, latestPod) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingListener.Name, Namespace: autoscalingListener.Namespace}, latestPod) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return err | 						return err | ||||||
| 					} | 					} | ||||||
|  | @ -386,8 +386,8 @@ var _ = Describe("Test AutoScalingListener controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return nil | 					return nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingListenerTestTimeout, | 				autoscalingListenerTestTimeout, | ||||||
| 				autoScalingListenerTestInterval).Should(Succeed(), "Pod should be recreated") | 				autoscalingListenerTestInterval).Should(Succeed(), "Pod should be recreated") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | @ -20,34 +20,34 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| 	autoScalingRunnerSetTestTimeout     = time.Second * 5 | 	autoscalingRunnerSetTestTimeout     = time.Second * 5 | ||||||
| 	autoScalingRunnerSetTestInterval    = time.Millisecond * 250 | 	autoscalingRunnerSetTestInterval    = time.Millisecond * 250 | ||||||
| 	autoScalingRunnerSetTestGitHubToken = "gh_token" | 	autoscalingRunnerSetTestGitHubToken = "gh_token" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var _ = Describe("Test AutoScalingRunnerSet controller", func() { | var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 	var ctx context.Context | 	var ctx context.Context | ||||||
| 	var cancel context.CancelFunc | 	var cancel context.CancelFunc | ||||||
| 	autoScalingNS := new(corev1.Namespace) | 	autoscalingNS := new(corev1.Namespace) | ||||||
| 	autoScalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet) | 	autoscalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet) | ||||||
| 	configSecret := new(corev1.Secret) | 	configSecret := new(corev1.Secret) | ||||||
| 
 | 
 | ||||||
| 	BeforeEach(func() { | 	BeforeEach(func() { | ||||||
| 		ctx, cancel = context.WithCancel(context.TODO()) | 		ctx, cancel = context.WithCancel(context.TODO()) | ||||||
| 		autoScalingNS = &corev1.Namespace{ | 		autoscalingNS = &corev1.Namespace{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)}, | 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Create(ctx, autoScalingNS) | 		err := k8sClient.Create(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 		configSecret = &corev1.Secret{ | 		configSecret = &corev1.Secret{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "github-config-secret", | 				Name:      "github-config-secret", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Data: map[string][]byte{ | 			Data: map[string][]byte{ | ||||||
| 				"github_token": []byte(autoScalingRunnerSetTestGitHubToken), | 				"github_token": []byte(autoscalingRunnerSetTestGitHubToken), | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +55,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | ||||||
| 
 | 
 | ||||||
| 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | ||||||
| 			Namespace:          autoScalingNS.Name, | 			Namespace:          autoscalingNS.Name, | ||||||
| 			MetricsBindAddress: "0", | 			MetricsBindAddress: "0", | ||||||
| 		}) | 		}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | ||||||
|  | @ -64,7 +64,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			Client:                             mgr.GetClient(), | 			Client:                             mgr.GetClient(), | ||||||
| 			Scheme:                             mgr.GetScheme(), | 			Scheme:                             mgr.GetScheme(), | ||||||
| 			Log:                                logf.Log, | 			Log:                                logf.Log, | ||||||
| 			ControllerNamespace:                autoScalingNS.Name, | 			ControllerNamespace:                autoscalingNS.Name, | ||||||
| 			DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc", | 			DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc", | ||||||
| 			ActionsClient:                      fake.NewMultiClient(), | 			ActionsClient:                      fake.NewMultiClient(), | ||||||
| 		} | 		} | ||||||
|  | @ -73,10 +73,10 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 
 | 
 | ||||||
| 		min := 1 | 		min := 1 | ||||||
| 		max := 10 | 		max := 10 | ||||||
| 		autoScalingRunnerSet = &actionsv1alpha1.AutoscalingRunnerSet{ | 		autoscalingRunnerSet = &actionsv1alpha1.AutoscalingRunnerSet{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "test-asrs", | 				Name:      "test-asrs", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Spec: actionsv1alpha1.AutoscalingRunnerSetSpec{ | 			Spec: actionsv1alpha1.AutoscalingRunnerSetSpec{ | ||||||
| 				GitHubConfigUrl:    "https://github.com/owner/repo", | 				GitHubConfigUrl:    "https://github.com/owner/repo", | ||||||
|  | @ -96,7 +96,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err = k8sClient.Create(ctx, autoScalingRunnerSet) | 		err = k8sClient.Create(ctx, autoscalingRunnerSet) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 		go func() { | 		go func() { | ||||||
|  | @ -110,7 +110,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
| 		defer cancel() | 		defer cancel() | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Delete(ctx, autoScalingNS) | 		err := k8sClient.Delete(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet") | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -120,7 +120,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			created := new(actionsv1alpha1.AutoscalingRunnerSet) | 			created := new(actionsv1alpha1.AutoscalingRunnerSet) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingRunnerSet.Name, Namespace: autoScalingRunnerSet.Namespace}, created) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingRunnerSet.Name, Namespace: autoscalingRunnerSet.Namespace}, created) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
|  | @ -129,13 +129,13 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 					} | 					} | ||||||
| 					return created.Finalizers[0], nil | 					return created.Finalizers[0], nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(BeEquivalentTo(autoscalingRunnerSetFinalizerName), "AutoScalingRunnerSet should have a finalizer") | 				autoscalingRunnerSetTestInterval).Should(BeEquivalentTo(autoscalingRunnerSetFinalizerName), "AutoScalingRunnerSet should have a finalizer") | ||||||
| 
 | 
 | ||||||
| 			// Check if runner scale set is created on service
 | 			// Check if runner scale set is created on service
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingRunnerSet.Name, Namespace: autoScalingRunnerSet.Namespace}, created) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingRunnerSet.Name, Namespace: autoscalingRunnerSet.Namespace}, created) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
|  | @ -146,34 +146,34 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return created.Annotations[runnerScaleSetIdKey], nil | 					return created.Annotations[runnerScaleSetIdKey], nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(BeEquivalentTo("1"), "RunnerScaleSet should be created/fetched and update the AutoScalingRunnerSet's annotation") | 				autoscalingRunnerSetTestInterval).Should(BeEquivalentTo("1"), "RunnerScaleSet should be created/fetched and update the AutoScalingRunnerSet's annotation") | ||||||
| 
 | 
 | ||||||
| 			// Check if ephemeral runner set is created
 | 			// Check if ephemeral runner set is created
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (int, error) { | 				func() (int, error) { | ||||||
| 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return 0, err | 						return 0, err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return len(runnerSetList.Items), nil | 					return len(runnerSetList.Items), nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(BeEquivalentTo(1), "Only one EphemeralRunnerSet should be created") | 				autoscalingRunnerSetTestInterval).Should(BeEquivalentTo(1), "Only one EphemeralRunnerSet should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if listener is created
 | 			// Check if listener is created
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | ||||||
| 
 | 
 | ||||||
| 			// Check if status is updated
 | 			// Check if status is updated
 | ||||||
| 			runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 			runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 			err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 			err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | ||||||
| 			Expect(len(runnerSetList.Items)).To(BeEquivalentTo(1), "Only one EphemeralRunnerSet should be created") | 			Expect(len(runnerSetList.Items)).To(BeEquivalentTo(1), "Only one EphemeralRunnerSet should be created") | ||||||
| 			runnerSet := runnerSetList.Items[0] | 			runnerSet := runnerSetList.Items[0] | ||||||
|  | @ -185,14 +185,14 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (int, error) { | 				func() (int, error) { | ||||||
| 					updated := new(actionsv1alpha1.AutoscalingRunnerSet) | 					updated := new(actionsv1alpha1.AutoscalingRunnerSet) | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingRunnerSet.Name, Namespace: autoScalingRunnerSet.Namespace}, updated) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingRunnerSet.Name, Namespace: autoscalingRunnerSet.Namespace}, updated) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return 0, fmt.Errorf("failed to get AutoScalingRunnerSet: %w", err) | 						return 0, fmt.Errorf("failed to get AutoScalingRunnerSet: %w", err) | ||||||
| 					} | 					} | ||||||
| 					return updated.Status.CurrentRunners, nil | 					return updated.Status.CurrentRunners, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(BeEquivalentTo(100), "AutoScalingRunnerSet status should be updated") | 				autoscalingRunnerSetTestInterval).Should(BeEquivalentTo(100), "AutoScalingRunnerSet status should be updated") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -201,33 +201,33 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			// Wait till the listener is created
 | 			// Wait till the listener is created
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | ||||||
| 
 | 
 | ||||||
| 			// Delete the AutoScalingRunnerSet
 | 			// Delete the AutoScalingRunnerSet
 | ||||||
| 			err := k8sClient.Delete(ctx, autoScalingRunnerSet) | 			err := k8sClient.Delete(ctx, autoscalingRunnerSet) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to delete AutoScalingRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to delete AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 			// Check if the listener is deleted
 | 			// Check if the listener is deleted
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingListener)) | ||||||
| 					if err != nil && errors.IsNotFound(err) { | 					if err != nil && errors.IsNotFound(err) { | ||||||
| 						return nil | 						return nil | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return fmt.Errorf("listener is not deleted") | 					return fmt.Errorf("listener is not deleted") | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "Listener should be deleted") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "Listener should be deleted") | ||||||
| 
 | 
 | ||||||
| 			// Check if all the EphemeralRunnerSet is deleted
 | 			// Check if all the EphemeralRunnerSet is deleted
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return err | 						return err | ||||||
| 					} | 					} | ||||||
|  | @ -238,21 +238,21 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return nil | 					return nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "All EphemeralRunnerSet should be deleted") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "All EphemeralRunnerSet should be deleted") | ||||||
| 
 | 
 | ||||||
| 			// Check if the AutoScalingRunnerSet is deleted
 | 			// Check if the AutoScalingRunnerSet is deleted
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoScalingRunnerSet.Name, Namespace: autoScalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingRunnerSet)) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: autoscalingRunnerSet.Name, Namespace: autoscalingRunnerSet.Namespace}, new(actionsv1alpha1.AutoscalingRunnerSet)) | ||||||
| 					if err != nil && errors.IsNotFound(err) { | 					if err != nil && errors.IsNotFound(err) { | ||||||
| 						return nil | 						return nil | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return fmt.Errorf("AutoScalingRunnerSet is not deleted") | 					return fmt.Errorf("AutoScalingRunnerSet is not deleted") | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "AutoScalingRunnerSet should be deleted") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "AutoScalingRunnerSet should be deleted") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -262,30 +262,30 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 			listener := new(actionsv1alpha1.AutoscalingListener) | 			listener := new(actionsv1alpha1.AutoscalingListener) | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() error { | 				func() error { | ||||||
| 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, listener) | 					return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, listener) | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | 				autoscalingRunnerSetTestInterval).Should(Succeed(), "Listener should be created") | ||||||
| 
 | 
 | ||||||
| 			runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 			runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 			err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 			err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | ||||||
| 			Expect(len(runnerSetList.Items)).To(Equal(1), "There should be 1 EphemeralRunnerSet") | 			Expect(len(runnerSetList.Items)).To(Equal(1), "There should be 1 EphemeralRunnerSet") | ||||||
| 			runnerSet := runnerSetList.Items[0] | 			runnerSet := runnerSetList.Items[0] | ||||||
| 
 | 
 | ||||||
| 			// Update the AutoScalingRunnerSet.Spec.Template
 | 			// Update the AutoScalingRunnerSet.Spec.Template
 | ||||||
| 			// This should trigger re-creation of EphemeralRunnerSet and Listener
 | 			// This should trigger re-creation of EphemeralRunnerSet and Listener
 | ||||||
| 			patched := autoScalingRunnerSet.DeepCopy() | 			patched := autoscalingRunnerSet.DeepCopy() | ||||||
| 			patched.Spec.Template.Spec.PriorityClassName = "test-priority-class" | 			patched.Spec.Template.Spec.PriorityClassName = "test-priority-class" | ||||||
| 			err = k8sClient.Patch(ctx, patched, client.MergeFrom(autoScalingRunnerSet)) | 			err = k8sClient.Patch(ctx, patched, client.MergeFrom(autoscalingRunnerSet)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to patch AutoScalingRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to patch AutoScalingRunnerSet") | ||||||
| 			autoScalingRunnerSet = patched.DeepCopy() | 			autoscalingRunnerSet = patched.DeepCopy() | ||||||
| 
 | 
 | ||||||
| 			// We should create a new EphemeralRunnerSet and delete the old one, eventually, we will have only one EphemeralRunnerSet
 | 			// We should create a new EphemeralRunnerSet and delete the old one, eventually, we will have only one EphemeralRunnerSet
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
|  | @ -296,46 +296,46 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return runnerSetList.Items[0].Labels[LabelKeyRunnerSpecHash], nil | 					return runnerSetList.Items[0].Labels[LabelKeyRunnerSpecHash], nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(runnerSet.Labels[LabelKeyRunnerSpecHash]), "New EphemeralRunnerSet should be created") | 				autoscalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(runnerSet.Labels[LabelKeyRunnerSpecHash]), "New EphemeralRunnerSet should be created") | ||||||
| 
 | 
 | ||||||
| 			// We should create a new listener
 | 			// We should create a new listener
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					listener := new(actionsv1alpha1.AutoscalingListener) | 					listener := new(actionsv1alpha1.AutoscalingListener) | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, listener) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, listener) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return listener.Spec.EphemeralRunnerSetName, nil | 					return listener.Spec.EphemeralRunnerSetName, nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(runnerSet.Name), "New Listener should be created") | 				autoscalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(runnerSet.Name), "New Listener should be created") | ||||||
| 
 | 
 | ||||||
| 			// Only update the Spec for the AutoScalingListener
 | 			// Only update the Spec for the AutoScalingListener
 | ||||||
| 			// This should trigger re-creation of the Listener only
 | 			// This should trigger re-creation of the Listener only
 | ||||||
| 			runnerSetList = new(actionsv1alpha1.EphemeralRunnerSetList) | 			runnerSetList = new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 			err = k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 			err = k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to list EphemeralRunnerSet") | ||||||
| 			Expect(len(runnerSetList.Items)).To(Equal(1), "There should be 1 EphemeralRunnerSet") | 			Expect(len(runnerSetList.Items)).To(Equal(1), "There should be 1 EphemeralRunnerSet") | ||||||
| 			runnerSet = runnerSetList.Items[0] | 			runnerSet = runnerSetList.Items[0] | ||||||
| 
 | 
 | ||||||
| 			listener = new(actionsv1alpha1.AutoscalingListener) | 			listener = new(actionsv1alpha1.AutoscalingListener) | ||||||
| 			err = k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, listener) | 			err = k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, listener) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to get Listener") | 			Expect(err).NotTo(HaveOccurred(), "failed to get Listener") | ||||||
| 
 | 
 | ||||||
| 			patched = autoScalingRunnerSet.DeepCopy() | 			patched = autoscalingRunnerSet.DeepCopy() | ||||||
| 			min := 10 | 			min := 10 | ||||||
| 			patched.Spec.MinRunners = &min | 			patched.Spec.MinRunners = &min | ||||||
| 			err = k8sClient.Patch(ctx, patched, client.MergeFrom(autoScalingRunnerSet)) | 			err = k8sClient.Patch(ctx, patched, client.MergeFrom(autoscalingRunnerSet)) | ||||||
| 			Expect(err).NotTo(HaveOccurred(), "failed to patch AutoScalingRunnerSet") | 			Expect(err).NotTo(HaveOccurred(), "failed to patch AutoScalingRunnerSet") | ||||||
| 
 | 
 | ||||||
| 			// We should not re-create a new EphemeralRunnerSet
 | 			// We should not re-create a new EphemeralRunnerSet
 | ||||||
| 			Consistently( | 			Consistently( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | 					runnerSetList := new(actionsv1alpha1.EphemeralRunnerSetList) | ||||||
| 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoScalingRunnerSet.Namespace)) | 					err := k8sClient.List(ctx, runnerSetList, client.InNamespace(autoscalingRunnerSet.Namespace)) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
|  | @ -346,22 +346,22 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() { | ||||||
| 
 | 
 | ||||||
| 					return string(runnerSetList.Items[0].UID), nil | 					return string(runnerSetList.Items[0].UID), nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).Should(BeEquivalentTo(string(runnerSet.UID)), "New EphemeralRunnerSet should not be created") | 				autoscalingRunnerSetTestInterval).Should(BeEquivalentTo(string(runnerSet.UID)), "New EphemeralRunnerSet should not be created") | ||||||
| 
 | 
 | ||||||
| 			// We should only re-create a new listener
 | 			// We should only re-create a new listener
 | ||||||
| 			Eventually( | 			Eventually( | ||||||
| 				func() (string, error) { | 				func() (string, error) { | ||||||
| 					listener := new(actionsv1alpha1.AutoscalingListener) | 					listener := new(actionsv1alpha1.AutoscalingListener) | ||||||
| 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoScalingRunnerSet), Namespace: autoScalingRunnerSet.Namespace}, listener) | 					err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerName(autoscalingRunnerSet), Namespace: autoscalingRunnerSet.Namespace}, listener) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return "", err | 						return "", err | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					return string(listener.UID), nil | 					return string(listener.UID), nil | ||||||
| 				}, | 				}, | ||||||
| 				autoScalingRunnerSetTestTimeout, | 				autoscalingRunnerSetTestTimeout, | ||||||
| 				autoScalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(string(listener.UID)), "New Listener should be created") | 				autoscalingRunnerSetTestInterval).ShouldNot(BeEquivalentTo(string(listener.UID)), "New Listener should be created") | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | @ -78,16 +78,14 @@ func newExampleRunner(name, namespace, configSecretName string) *v1alpha1.Epheme | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var _ = Describe("EphemeralRunner", func() { | var _ = Describe("EphemeralRunner", func() { | ||||||
| 
 |  | ||||||
| 	Describe("Resource manipulation", func() { | 	Describe("Resource manipulation", func() { | ||||||
| 		var ctx context.Context | 		var ctx context.Context | ||||||
| 		var cancel context.CancelFunc | 		var cancel context.CancelFunc | ||||||
| 
 | 
 | ||||||
| 		autoScalingNS := new(corev1.Namespace) | 		autoscalingNS := new(corev1.Namespace) | ||||||
| 		configSecret := new(corev1.Secret) | 		configSecret := new(corev1.Secret) | ||||||
| 
 | 
 | ||||||
| 		controller := new(EphemeralRunnerReconciler) | 		controller := new(EphemeralRunnerReconciler) | ||||||
|  | @ -95,18 +93,18 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 
 | 
 | ||||||
| 		BeforeEach(func() { | 		BeforeEach(func() { | ||||||
| 			ctx, cancel = context.WithCancel(context.Background()) | 			ctx, cancel = context.WithCancel(context.Background()) | ||||||
| 			autoScalingNS = &corev1.Namespace{ | 			autoscalingNS = &corev1.Namespace{ | ||||||
| 				ObjectMeta: metav1.ObjectMeta{ | 				ObjectMeta: metav1.ObjectMeta{ | ||||||
| 					Name: "testns-autoscaling-runner" + RandStringRunes(5), | 					Name: "testns-autoscaling-runner" + RandStringRunes(5), | ||||||
| 				}, | 				}, | ||||||
| 			} | 			} | ||||||
| 			err := k8sClient.Create(ctx, autoScalingNS) | 			err := k8sClient.Create(ctx, autoscalingNS) | ||||||
| 			Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner") | 			Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner") | ||||||
| 
 | 
 | ||||||
| 			configSecret = &corev1.Secret{ | 			configSecret = &corev1.Secret{ | ||||||
| 				ObjectMeta: metav1.ObjectMeta{ | 				ObjectMeta: metav1.ObjectMeta{ | ||||||
| 					Name:      "github-config-secret", | 					Name:      "github-config-secret", | ||||||
| 					Namespace: autoScalingNS.Name, | 					Namespace: autoscalingNS.Name, | ||||||
| 				}, | 				}, | ||||||
| 				Data: map[string][]byte{ | 				Data: map[string][]byte{ | ||||||
| 					"github_token": []byte(gh_token), | 					"github_token": []byte(gh_token), | ||||||
|  | @ -117,7 +115,7 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 			Expect(err).To(BeNil(), "failed to create config secret") | 			Expect(err).To(BeNil(), "failed to create config secret") | ||||||
| 
 | 
 | ||||||
| 			mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | 			mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | ||||||
| 				Namespace:          autoScalingNS.Name, | 				Namespace:          autoscalingNS.Name, | ||||||
| 				MetricsBindAddress: "0", | 				MetricsBindAddress: "0", | ||||||
| 			}) | 			}) | ||||||
| 			Expect(err).To(BeNil(), "failed to create manager") | 			Expect(err).To(BeNil(), "failed to create manager") | ||||||
|  | @ -132,7 +130,7 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 			err = controller.SetupWithManager(mgr) | 			err = controller.SetupWithManager(mgr) | ||||||
| 			Expect(err).To(BeNil(), "failed to setup controller") | 			Expect(err).To(BeNil(), "failed to setup controller") | ||||||
| 
 | 
 | ||||||
| 			ephemeralRunner = newExampleRunner("test-runner", autoScalingNS.Name, configSecret.Name) | 			ephemeralRunner = newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name) | ||||||
| 			err = k8sClient.Create(ctx, ephemeralRunner) | 			err = k8sClient.Create(ctx, ephemeralRunner) | ||||||
| 			Expect(err).To(BeNil(), "failed to create ephemeral runner") | 			Expect(err).To(BeNil(), "failed to create ephemeral runner") | ||||||
| 
 | 
 | ||||||
|  | @ -147,7 +145,7 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 		AfterEach(func() { | 		AfterEach(func() { | ||||||
| 			defer cancel() | 			defer cancel() | ||||||
| 
 | 
 | ||||||
| 			err := k8sClient.Delete(ctx, autoScalingNS) | 			err := k8sClient.Delete(ctx, autoscalingNS) | ||||||
| 			Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner") | 			Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner") | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
|  | @ -357,7 +355,6 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 				timeout, | 				timeout, | ||||||
| 				interval, | 				interval, | ||||||
| 			).Should(BeEquivalentTo(true)) | 			).Should(BeEquivalentTo(true)) | ||||||
| 
 |  | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		It("It should eventually have runner id set", func() { | 		It("It should eventually have runner id set", func() { | ||||||
|  | @ -558,7 +555,6 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 				timeout, | 				timeout, | ||||||
| 				interval, | 				interval, | ||||||
| 			).Should(BeEquivalentTo(true)) | 			).Should(BeEquivalentTo(true)) | ||||||
| 
 |  | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		It("It should re-create pod on exit status 0, but runner exists within the service", func() { | 		It("It should re-create pod on exit status 0, but runner exists within the service", func() { | ||||||
|  | @ -668,25 +664,25 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 		var ctx context.Context | 		var ctx context.Context | ||||||
| 		var cancel context.CancelFunc | 		var cancel context.CancelFunc | ||||||
| 
 | 
 | ||||||
| 		autoScalingNS := new(corev1.Namespace) | 		autoscalingNS := new(corev1.Namespace) | ||||||
| 		configSecret := new(corev1.Secret) | 		configSecret := new(corev1.Secret) | ||||||
| 
 | 
 | ||||||
| 		var mgr manager.Manager | 		var mgr manager.Manager | ||||||
| 
 | 
 | ||||||
| 		BeforeEach(func() { | 		BeforeEach(func() { | ||||||
| 			ctx, cancel = context.WithCancel(context.Background()) | 			ctx, cancel = context.WithCancel(context.Background()) | ||||||
| 			autoScalingNS = &corev1.Namespace{ | 			autoscalingNS = &corev1.Namespace{ | ||||||
| 				ObjectMeta: metav1.ObjectMeta{ | 				ObjectMeta: metav1.ObjectMeta{ | ||||||
| 					Name: "testns-autoscaling-runner" + RandStringRunes(5), | 					Name: "testns-autoscaling-runner" + RandStringRunes(5), | ||||||
| 				}, | 				}, | ||||||
| 			} | 			} | ||||||
| 			err := k8sClient.Create(ctx, autoScalingNS) | 			err := k8sClient.Create(ctx, autoscalingNS) | ||||||
| 			Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner") | 			Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner") | ||||||
| 
 | 
 | ||||||
| 			configSecret = &corev1.Secret{ | 			configSecret = &corev1.Secret{ | ||||||
| 				ObjectMeta: metav1.ObjectMeta{ | 				ObjectMeta: metav1.ObjectMeta{ | ||||||
| 					Name:      "github-config-secret", | 					Name:      "github-config-secret", | ||||||
| 					Namespace: autoScalingNS.Name, | 					Namespace: autoscalingNS.Name, | ||||||
| 				}, | 				}, | ||||||
| 				Data: map[string][]byte{ | 				Data: map[string][]byte{ | ||||||
| 					"github_token": []byte(gh_token), | 					"github_token": []byte(gh_token), | ||||||
|  | @ -697,17 +693,16 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 			Expect(err).To(BeNil(), "failed to create config secret") | 			Expect(err).To(BeNil(), "failed to create config secret") | ||||||
| 
 | 
 | ||||||
| 			mgr, err = ctrl.NewManager(cfg, ctrl.Options{ | 			mgr, err = ctrl.NewManager(cfg, ctrl.Options{ | ||||||
| 				Namespace:          autoScalingNS.Name, | 				Namespace:          autoscalingNS.Name, | ||||||
| 				MetricsBindAddress: "0", | 				MetricsBindAddress: "0", | ||||||
| 			}) | 			}) | ||||||
| 			Expect(err).To(BeNil(), "failed to create manager") | 			Expect(err).To(BeNil(), "failed to create manager") | ||||||
| 
 |  | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		AfterEach(func() { | 		AfterEach(func() { | ||||||
| 			defer cancel() | 			defer cancel() | ||||||
| 
 | 
 | ||||||
| 			err := k8sClient.Delete(ctx, autoScalingNS) | 			err := k8sClient.Delete(ctx, autoscalingNS) | ||||||
| 			Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner") | 			Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner") | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
|  | @ -742,7 +737,7 @@ var _ = Describe("EphemeralRunner", func() { | ||||||
| 				Expect(err).To(BeNil(), "failed to start manager") | 				Expect(err).To(BeNil(), "failed to start manager") | ||||||
| 			}() | 			}() | ||||||
| 
 | 
 | ||||||
| 			ephemeralRunner := newExampleRunner("test-runner", autoScalingNS.Name, configSecret.Name) | 			ephemeralRunner := newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name) | ||||||
| 
 | 
 | ||||||
| 			err = k8sClient.Create(ctx, ephemeralRunner) | 			err = k8sClient.Create(ctx, ephemeralRunner) | ||||||
| 			Expect(err).To(BeNil()) | 			Expect(err).To(BeNil()) | ||||||
|  |  | ||||||
|  | @ -28,23 +28,23 @@ const ( | ||||||
| var _ = Describe("Test EphemeralRunnerSet controller", func() { | var _ = Describe("Test EphemeralRunnerSet controller", func() { | ||||||
| 	var ctx context.Context | 	var ctx context.Context | ||||||
| 	var cancel context.CancelFunc | 	var cancel context.CancelFunc | ||||||
| 	autoScalingNS := new(corev1.Namespace) | 	autoscalingNS := new(corev1.Namespace) | ||||||
| 	ephemeralRunnerSet := new(actionsv1alpha1.EphemeralRunnerSet) | 	ephemeralRunnerSet := new(actionsv1alpha1.EphemeralRunnerSet) | ||||||
| 	configSecret := new(corev1.Secret) | 	configSecret := new(corev1.Secret) | ||||||
| 
 | 
 | ||||||
| 	BeforeEach(func() { | 	BeforeEach(func() { | ||||||
| 		ctx, cancel = context.WithCancel(context.TODO()) | 		ctx, cancel = context.WithCancel(context.TODO()) | ||||||
| 		autoScalingNS = &corev1.Namespace{ | 		autoscalingNS = &corev1.Namespace{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-runnerset" + RandStringRunes(5)}, | 			ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-runnerset" + RandStringRunes(5)}, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Create(ctx, autoScalingNS) | 		err := k8sClient.Create(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for EphemeralRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for EphemeralRunnerSet") | ||||||
| 
 | 
 | ||||||
| 		configSecret = &corev1.Secret{ | 		configSecret = &corev1.Secret{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "github-config-secret", | 				Name:      "github-config-secret", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Data: map[string][]byte{ | 			Data: map[string][]byte{ | ||||||
| 				"github_token": []byte(ephemeralRunnerSetTestGitHubToken), | 				"github_token": []byte(ephemeralRunnerSetTestGitHubToken), | ||||||
|  | @ -55,7 +55,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | 		Expect(err).NotTo(HaveOccurred(), "failed to create config secret") | ||||||
| 
 | 
 | ||||||
| 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | 		mgr, err := ctrl.NewManager(cfg, ctrl.Options{ | ||||||
| 			Namespace:          autoScalingNS.Name, | 			Namespace:          autoscalingNS.Name, | ||||||
| 			MetricsBindAddress: "0", | 			MetricsBindAddress: "0", | ||||||
| 		}) | 		}) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | 		Expect(err).NotTo(HaveOccurred(), "failed to create manager") | ||||||
|  | @ -72,7 +72,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { | ||||||
| 		ephemeralRunnerSet = &actionsv1alpha1.EphemeralRunnerSet{ | 		ephemeralRunnerSet = &actionsv1alpha1.EphemeralRunnerSet{ | ||||||
| 			ObjectMeta: metav1.ObjectMeta{ | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
| 				Name:      "test-asrs", | 				Name:      "test-asrs", | ||||||
| 				Namespace: autoScalingNS.Name, | 				Namespace: autoscalingNS.Name, | ||||||
| 			}, | 			}, | ||||||
| 			Spec: actionsv1alpha1.EphemeralRunnerSetSpec{ | 			Spec: actionsv1alpha1.EphemeralRunnerSetSpec{ | ||||||
| 				EphemeralRunnerSpec: actionsv1alpha1.EphemeralRunnerSpec{ | 				EphemeralRunnerSpec: actionsv1alpha1.EphemeralRunnerSpec{ | ||||||
|  | @ -107,7 +107,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
| 		defer cancel() | 		defer cancel() | ||||||
| 
 | 
 | ||||||
| 		err := k8sClient.Delete(ctx, autoScalingNS) | 		err := k8sClient.Delete(ctx, autoscalingNS) | ||||||
| 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for EphemeralRunnerSet") | 		Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for EphemeralRunnerSet") | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										17
									
								
								go.mod
								
								
								
								
							|  | @ -13,6 +13,7 @@ require ( | ||||||
| 	github.com/google/uuid v1.3.0 | 	github.com/google/uuid v1.3.0 | ||||||
| 	github.com/gorilla/mux v1.8.0 | 	github.com/gorilla/mux v1.8.0 | ||||||
| 	github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 | 	github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 | ||||||
|  | 	github.com/gruntwork-io/terratest v0.41.9 | ||||||
| 	github.com/hashicorp/go-retryablehttp v0.7.1 | 	github.com/hashicorp/go-retryablehttp v0.7.1 | ||||||
| 	github.com/kelseyhightower/envconfig v1.4.0 | 	github.com/kelseyhightower/envconfig v1.4.0 | ||||||
| 	github.com/onsi/ginkgo v1.16.5 | 	github.com/onsi/ginkgo v1.16.5 | ||||||
|  | @ -37,15 +38,21 @@ require ( | ||||||
| 	cloud.google.com/go/compute/metadata v0.2.1 // indirect | 	cloud.google.com/go/compute/metadata v0.2.1 // indirect | ||||||
| 	github.com/PuerkitoBio/purell v1.1.1 // indirect | 	github.com/PuerkitoBio/purell v1.1.1 // indirect | ||||||
| 	github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect | 	github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect | ||||||
|  | 	github.com/aws/aws-sdk-go v1.40.56 // indirect | ||||||
| 	github.com/beorn7/perks v1.0.1 // indirect | 	github.com/beorn7/perks v1.0.1 // indirect | ||||||
|  | 	github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect | ||||||
| 	github.com/cespare/xxhash/v2 v2.1.2 // indirect | 	github.com/cespare/xxhash/v2 v2.1.2 // indirect | ||||||
|  | 	github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect | ||||||
| 	github.com/emicklei/go-restful/v3 v3.8.0 // indirect | 	github.com/emicklei/go-restful/v3 v3.8.0 // indirect | ||||||
| 	github.com/evanphx/json-patch/v5 v5.6.0 // indirect | 	github.com/evanphx/json-patch/v5 v5.6.0 // indirect | ||||||
| 	github.com/fsnotify/fsnotify v1.5.4 // indirect | 	github.com/fsnotify/fsnotify v1.5.4 // indirect | ||||||
|  | 	github.com/ghodss/yaml v1.0.0 // indirect | ||||||
|  | 	github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 // indirect | ||||||
| 	github.com/go-logr/zapr v1.2.3 // indirect | 	github.com/go-logr/zapr v1.2.3 // indirect | ||||||
| 	github.com/go-openapi/jsonpointer v0.19.5 // indirect | 	github.com/go-openapi/jsonpointer v0.19.5 // indirect | ||||||
| 	github.com/go-openapi/jsonreference v0.19.5 // indirect | 	github.com/go-openapi/jsonreference v0.19.5 // indirect | ||||||
| 	github.com/go-openapi/swag v0.19.14 // indirect | 	github.com/go-openapi/swag v0.19.14 // indirect | ||||||
|  | 	github.com/go-sql-driver/mysql v1.4.1 // indirect | ||||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | 	github.com/gogo/protobuf v1.3.2 // indirect | ||||||
| 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||||||
| 	github.com/golang/protobuf v1.5.2 // indirect | 	github.com/golang/protobuf v1.5.2 // indirect | ||||||
|  | @ -53,22 +60,32 @@ require ( | ||||||
| 	github.com/google/go-github/v45 v45.2.0 // indirect | 	github.com/google/go-github/v45 v45.2.0 // indirect | ||||||
| 	github.com/google/go-querystring v1.1.0 // indirect | 	github.com/google/go-querystring v1.1.0 // indirect | ||||||
| 	github.com/google/gofuzz v1.1.0 // indirect | 	github.com/google/gofuzz v1.1.0 // indirect | ||||||
|  | 	github.com/gruntwork-io/go-commons v0.8.0 // indirect | ||||||
|  | 	github.com/hashicorp/errwrap v1.0.0 // indirect | ||||||
| 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect | 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect | ||||||
|  | 	github.com/hashicorp/go-multierror v1.1.0 // indirect | ||||||
| 	github.com/imdario/mergo v0.3.12 // indirect | 	github.com/imdario/mergo v0.3.12 // indirect | ||||||
|  | 	github.com/jmespath/go-jmespath v0.4.0 // indirect | ||||||
| 	github.com/josharian/intern v1.0.0 // indirect | 	github.com/josharian/intern v1.0.0 // indirect | ||||||
| 	github.com/json-iterator/go v1.1.12 // indirect | 	github.com/json-iterator/go v1.1.12 // indirect | ||||||
| 	github.com/mailru/easyjson v0.7.6 // indirect | 	github.com/mailru/easyjson v0.7.6 // indirect | ||||||
|  | 	github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 // indirect | ||||||
| 	github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect | 	github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect | ||||||
|  | 	github.com/mitchellh/go-homedir v1.1.0 // indirect | ||||||
|  | 	github.com/moby/spdystream v0.2.0 // indirect | ||||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||||
| 	github.com/nxadm/tail v1.4.8 // indirect | 	github.com/nxadm/tail v1.4.8 // indirect | ||||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	github.com/pquerna/otp v1.2.0 // indirect | ||||||
| 	github.com/prometheus/client_model v0.2.0 // indirect | 	github.com/prometheus/client_model v0.2.0 // indirect | ||||||
| 	github.com/prometheus/common v0.37.0 // indirect | 	github.com/prometheus/common v0.37.0 // indirect | ||||||
| 	github.com/prometheus/procfs v0.8.0 // indirect | 	github.com/prometheus/procfs v0.8.0 // indirect | ||||||
|  | 	github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||||||
| 	github.com/spf13/pflag v1.0.5 // indirect | 	github.com/spf13/pflag v1.0.5 // indirect | ||||||
| 	github.com/stretchr/objx v0.4.0 // indirect | 	github.com/stretchr/objx v0.4.0 // indirect | ||||||
|  | 	github.com/urfave/cli v1.22.2 // indirect | ||||||
| 	go.uber.org/atomic v1.7.0 // indirect | 	go.uber.org/atomic v1.7.0 // indirect | ||||||
| 	golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503 // indirect | 	golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503 // indirect | ||||||
| 	golang.org/x/net v0.5.0 // indirect | 	golang.org/x/net v0.5.0 // indirect | ||||||
|  |  | ||||||
							
								
								
									
										52
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										52
									
								
								go.sum
								
								
								
								
							|  | @ -48,12 +48,18 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy | ||||||
| github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||||
| github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||||
| github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= | github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= | ||||||
|  | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= | ||||||
|  | github.com/aws/aws-sdk-go v1.40.56 h1:FM2yjR0UUYFzDTMx+mH9Vyw1k1EUUxsAFzk+BjkzANA= | ||||||
|  | github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= | ||||||
| github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= | github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= | ||||||
| github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | ||||||
| github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | ||||||
| github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | ||||||
| github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | ||||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||||
|  | github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= | ||||||
|  | github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= | ||||||
|  | github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= | ||||||
| github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA= | github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA= | ||||||
| github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= | github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= | ||||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||||
|  | @ -65,11 +71,15 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P | ||||||
| github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= | github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= | ||||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||||
|  | github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||||
|  | github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= | ||||||
|  | github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||||
| github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= | github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= | ||||||
|  | github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1 h1:yY9rWGoXv1U5pl4gxqlULARMQD7x0QG85lqEXTWysik= | ||||||
| github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= | github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= | ||||||
| github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= | github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
|  | @ -81,10 +91,16 @@ github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH | ||||||
| github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | ||||||
| github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= | github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= | ||||||
| github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= | github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= | ||||||
|  | github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= | ||||||
| github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | ||||||
| github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | ||||||
| github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= | github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= | ||||||
| github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= | github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= | ||||||
|  | github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= | ||||||
|  | github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||||
|  | github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= | ||||||
|  | github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= | ||||||
|  | github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= | ||||||
| github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= | github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= | ||||||
| github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | ||||||
| github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | ||||||
|  | @ -111,6 +127,8 @@ github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE | ||||||
| github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= | github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= | ||||||
| github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= | github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= | ||||||
| github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= | github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= | ||||||
|  | github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= | ||||||
|  | github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= | ||||||
| github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= | ||||||
| github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= | github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= | ||||||
| github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | ||||||
|  | @ -190,11 +208,20 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ | ||||||
| github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= | github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= | ||||||
| github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= | github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= | ||||||
| github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= | github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= | ||||||
|  | github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | ||||||
|  | github.com/gruntwork-io/go-commons v0.8.0 h1:k/yypwrPqSeYHevLlEDmvmgQzcyTwrlZGRaxEM6G0ro= | ||||||
|  | github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= | ||||||
|  | github.com/gruntwork-io/terratest v0.41.9 h1:jyygu23iLcEFjGQhlvRx4R0EJVqOoriP+Ire4U9cZA0= | ||||||
|  | github.com/gruntwork-io/terratest v0.41.9/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= | ||||||
|  | github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= | ||||||
|  | github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | ||||||
| github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | ||||||
| github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= | github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= | ||||||
| github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= | github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= | ||||||
| github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= | github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= | ||||||
| github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | ||||||
|  | github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= | ||||||
|  | github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= | ||||||
| github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= | github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= | ||||||
| github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | ||||||
| github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | ||||||
|  | @ -204,6 +231,10 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: | ||||||
| github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= | github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= | ||||||
| github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= | github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= | ||||||
| github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= | github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= | ||||||
|  | github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= | ||||||
|  | github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= | ||||||
|  | github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= | ||||||
|  | github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= | ||||||
| github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= | github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= | ||||||
| github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= | github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= | ||||||
| github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= | github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= | ||||||
|  | @ -233,9 +264,19 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN | ||||||
| github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | ||||||
| github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= | github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= | ||||||
| github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= | github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= | ||||||
|  | github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= | ||||||
|  | github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= | ||||||
|  | github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= | ||||||
|  | github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= | ||||||
|  | github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 h1:ofNAzWCcyTALn2Zv40+8XitdzCgXY6e9qvXwN9W0YXg= | ||||||
|  | github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= | github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= | github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= | ||||||
|  | github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | ||||||
|  | github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||||||
|  | github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= | ||||||
|  | github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= | ||||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= | ||||||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||||
|  | @ -267,6 +308,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
|  | github.com/pquerna/otp v1.2.0 h1:/A3+Jn+cagqayeR3iHs/L62m5ue7710D35zl1zJ1kok= | ||||||
|  | github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= | ||||||
| github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= | github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= | ||||||
| github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | ||||||
| github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= | github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= | ||||||
|  | @ -293,6 +336,10 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 | ||||||
| github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= | github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= | ||||||
| github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= | github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= | ||||||
| github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | ||||||
|  | github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||||
|  | github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= | ||||||
|  | github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||||
|  | github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= | ||||||
| github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | ||||||
| github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= | github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= | ||||||
| github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= | github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= | ||||||
|  | @ -315,6 +362,8 @@ github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PK | ||||||
| github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||||||
| github.com/teambition/rrule-go v1.8.0 h1:a/IX5s56hGkFF+nRlJUooZU/45OTeeldBGL29nDKIHw= | github.com/teambition/rrule-go v1.8.0 h1:a/IX5s56hGkFF+nRlJUooZU/45OTeeldBGL29nDKIHw= | ||||||
| github.com/teambition/rrule-go v1.8.0/go.mod h1:Ieq5AbrKGciP1V//Wq8ktsTXwSwJHDD5mD/wLBGl3p4= | github.com/teambition/rrule-go v1.8.0/go.mod h1:Ieq5AbrKGciP1V//Wq8ktsTXwSwJHDD5mD/wLBGl3p4= | ||||||
|  | github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= | ||||||
|  | github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||||
| github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
|  | @ -407,6 +456,7 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R | ||||||
| golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||||||
| golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
| golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||||
|  | golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||||
| golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | ||||||
| golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | ||||||
| golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= | golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= | ||||||
|  | @ -435,6 +485,7 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h | ||||||
| golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
| golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
|  | golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
| golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | @ -446,6 +497,7 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w | ||||||
| golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue