parent
							
								
									bc35bdfa85
								
							
						
					
					
						commit
						e613219a89
					
				|  | @ -126,7 +126,13 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { | ||||||
| 			return ctrl.Result{}, err | 			return ctrl.Result{}, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		newPod, err := r.newPod(ctx, runner) | 		if updated, err := r.updateRegistrationToken(ctx, runner); err != nil { | ||||||
|  | 			return ctrl.Result{}, err | ||||||
|  | 		} else if updated { | ||||||
|  | 			return ctrl.Result{Requeue: true}, nil | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		newPod, err := r.newPod(runner) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			log.Error(err, "Could not create pod") | 			log.Error(err, "Could not create pod") | ||||||
| 			return ctrl.Result{}, err | 			return ctrl.Result{}, err | ||||||
|  | @ -174,7 +180,13 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		newPod, err := r.newPod(ctx, runner) | 		if updated, err := r.updateRegistrationToken(ctx, runner); err != nil { | ||||||
|  | 			return ctrl.Result{}, err | ||||||
|  | 		} else if updated { | ||||||
|  | 			return ctrl.Result{Requeue: true}, nil | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		newPod, err := r.newPod(runner) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			log.Error(err, "Could not create pod") | 			log.Error(err, "Could not create pod") | ||||||
| 			return ctrl.Result{}, err | 			return ctrl.Result{}, err | ||||||
|  | @ -249,21 +261,46 @@ func (r *RunnerReconciler) unregisterRunner(ctx context.Context, org, repo, name | ||||||
| 	return true, nil | 	return true, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (r *RunnerReconciler) newPod(ctx context.Context, runner v1alpha1.Runner) (corev1.Pod, error) { | func (r *RunnerReconciler) updateRegistrationToken(ctx context.Context, runner v1alpha1.Runner) (bool, error) { | ||||||
|  | 	if runner.IsRegisterable() { | ||||||
|  | 		return false, nil | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	log := r.Log.WithValues("runner", runner.Name) | ||||||
|  | 
 | ||||||
|  | 	rt, err := r.GitHubClient.GetRegistrationToken(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name) | ||||||
|  | 	if err != nil { | ||||||
|  | 		r.Recorder.Event(&runner, corev1.EventTypeWarning, "FailedUpdateRegistrationToken", "Updating registration token failed") | ||||||
|  | 		log.Error(err, "Failed to get new registration token") | ||||||
|  | 		return false, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	updated := runner.DeepCopy() | ||||||
|  | 	updated.Status.Registration = v1alpha1.RunnerStatusRegistration{ | ||||||
|  | 		Organization: runner.Spec.Organization, | ||||||
|  | 		Repository:   runner.Spec.Repository, | ||||||
|  | 		Labels:       runner.Spec.Labels, | ||||||
|  | 		Token:        rt.GetToken(), | ||||||
|  | 		ExpiresAt:    metav1.NewTime(rt.GetExpiresAt().Time), | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if err := r.Status().Update(ctx, updated); err != nil { | ||||||
|  | 		log.Error(err, "Failed to update runner status") | ||||||
|  | 		return false, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	r.Recorder.Event(&runner, corev1.EventTypeNormal, "RegistrationTokenUpdated", "Successfully update registration token") | ||||||
|  | 	log.Info("Updated registration token", "repository", runner.Spec.Repository) | ||||||
|  | 
 | ||||||
|  | 	return true, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { | ||||||
| 	var ( | 	var ( | ||||||
| 		privileged      bool = true | 		privileged      bool = true | ||||||
| 		dockerdInRunner bool = runner.Spec.DockerdWithinRunnerContainer != nil && *runner.Spec.DockerdWithinRunnerContainer | 		dockerdInRunner bool = runner.Spec.DockerdWithinRunnerContainer != nil && *runner.Spec.DockerdWithinRunnerContainer | ||||||
| 		err             error |  | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	token := runner.Status.Registration.Token |  | ||||||
| 	if !runner.IsRegisterable() { |  | ||||||
| 		token, err = r.getRegistrationToken(ctx, runner) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return corev1.Pod{}, err |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	runnerImage := runner.Spec.Image | 	runnerImage := runner.Spec.Image | ||||||
| 	if runnerImage == "" { | 	if runnerImage == "" { | ||||||
| 		runnerImage = r.RunnerImage | 		runnerImage = r.RunnerImage | ||||||
|  | @ -297,7 +334,7 @@ func (r *RunnerReconciler) newPod(ctx context.Context, runner v1alpha1.Runner) ( | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			Name:  "RUNNER_TOKEN", | 			Name:  "RUNNER_TOKEN", | ||||||
| 			Value: token, | 			Value: runner.Status.Registration.Token, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			Name:  "DOCKERD_IN_RUNNER", | 			Name:  "DOCKERD_IN_RUNNER", | ||||||
|  | @ -484,20 +521,3 @@ func removeFinalizer(finalizers []string) ([]string, bool) { | ||||||
| 
 | 
 | ||||||
| 	return result, removed | 	return result, removed | ||||||
| } | } | ||||||
| 
 |  | ||||||
| func (r *RunnerReconciler) getRegistrationToken(ctx context.Context, runner v1alpha1.Runner) (string, error) { |  | ||||||
| 	log := r.Log.WithValues("runner", runner.Name) |  | ||||||
| 	if runner.IsRegisterable() { |  | ||||||
| 		return runner.Status.Registration.Token, nil |  | ||||||
| 	} else { |  | ||||||
| 		rt, err := r.GitHubClient.GetRegistrationToken(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name) |  | ||||||
| 		if err != nil { |  | ||||||
| 			r.Recorder.Event(&runner, corev1.EventTypeWarning, "FailedUpdateRegistrationToken", "Updating registration token failed") |  | ||||||
| 			log.Error(err, "Failed to get new registration token") |  | ||||||
| 			return "", err |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		log.Info("Updated registration token", "repository", runner.Spec.Repository) |  | ||||||
| 		return rt.GetToken(), nil |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue