mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-14 05:37:48 +00:00
Fix additionalPrinterColumns (#556)
This fixes human-readable output of `kubectl get` on `runnerdeployment`, `runnerreplicaset`, and `runner`. Most notably, CURRENT and READY of runner replicasets are now computed and printed correctly. Runner deployments now have UP-TO-DATE and AVAILABLE instead of READY so that it is consistent with columns of K8s deployments. A few fixes has been also made to runner deployment and runner replicaset controllers so that those numbers stored in Status objects are reliably updated and in-sync with actual values. Finally, `AGE` columns are added to runnerdeployment, runnerreplicaset, runnner to make that more visible to users. `kubectl get` outputs should now look like the below examples: ``` # Immediately after runnerdeployment updated/created $ k get runnerdeployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE example-runnerdeploy 0 0 0 0 8d org-runnerdeploy 5 5 5 0 8d # A few dozens of seconds after update/create all the runners are registered that "available" numbers increase $ k get runnerdeployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE example-runnerdeploy 0 0 0 0 8d org-runnerdeploy 5 5 5 5 8d ``` ``` $ k get runnerreplicaset NAME DESIRED CURRENT READY AGE example-runnerdeploy-wnpf6 0 0 0 61m org-runnerdeploy-fsnmr 2 2 0 8m41s ``` ``` $ k get runner NAME ENTERPRISE ORGANIZATION REPOSITORY LABELS STATUS AGE example-runnerdeploy-wnpf6-registration-only actions-runner-controller/mumoshu-actions-test Running 61m org-runnerdeploy-fsnmr-n8kkx actions-runner-controller ["mylabel 1","mylabel 2"] 21s org-runnerdeploy-fsnmr-sq6m8 actions-runner-controller ["mylabel 1","mylabel 2"] 21s ``` Fixes #490
This commit is contained in:
@@ -190,7 +190,10 @@ func (r *RunnerDeploymentReconciler) Reconcile(req ctrl.Request) (ctrl.Result, e
|
||||
|
||||
// Do we have old runner replica sets that should eventually deleted?
|
||||
if len(oldSets) > 0 {
|
||||
readyReplicas := newestSet.Status.ReadyReplicas
|
||||
var readyReplicas int
|
||||
if newestSet.Status.ReadyReplicas != nil {
|
||||
readyReplicas = *newestSet.Status.ReadyReplicas
|
||||
}
|
||||
|
||||
oldSetsCount := len(oldSets)
|
||||
|
||||
@@ -231,14 +234,49 @@ func (r *RunnerDeploymentReconciler) Reconcile(req ctrl.Request) (ctrl.Result, e
|
||||
}
|
||||
}
|
||||
|
||||
if rd.Spec.Replicas == nil && desiredRS.Spec.Replicas != nil {
|
||||
var replicaSets []v1alpha1.RunnerReplicaSet
|
||||
|
||||
replicaSets = append(replicaSets, *newestSet)
|
||||
replicaSets = append(replicaSets, oldSets...)
|
||||
|
||||
var totalCurrentReplicas, totalStatusAvailableReplicas, updatedReplicas int
|
||||
|
||||
for _, rs := range replicaSets {
|
||||
var current, available int
|
||||
|
||||
if rs.Status.Replicas != nil {
|
||||
current = *rs.Status.Replicas
|
||||
}
|
||||
|
||||
if rs.Status.AvailableReplicas != nil {
|
||||
available = *rs.Status.AvailableReplicas
|
||||
}
|
||||
|
||||
totalCurrentReplicas += current
|
||||
totalStatusAvailableReplicas += available
|
||||
}
|
||||
|
||||
if newestSet.Status.Replicas != nil {
|
||||
updatedReplicas = *newestSet.Status.Replicas
|
||||
}
|
||||
|
||||
var status v1alpha1.RunnerDeploymentStatus
|
||||
|
||||
status.AvailableReplicas = &totalStatusAvailableReplicas
|
||||
status.ReadyReplicas = &totalStatusAvailableReplicas
|
||||
status.DesiredReplicas = &newDesiredReplicas
|
||||
status.Replicas = &totalCurrentReplicas
|
||||
status.UpdatedReplicas = &updatedReplicas
|
||||
|
||||
if !reflect.DeepEqual(rd.Status, status) {
|
||||
updated := rd.DeepCopy()
|
||||
updated.Status.Replicas = desiredRS.Spec.Replicas
|
||||
updated.Status = status
|
||||
|
||||
if err := r.Status().Update(ctx, updated); err != nil {
|
||||
log.Error(err, "Failed to update runnerdeployment status")
|
||||
|
||||
return ctrl.Result{}, err
|
||||
if err := r.Status().Patch(ctx, updated, client.MergeFrom(&rd)); err != nil {
|
||||
log.Info("Failed to patch runnerdeployment status. Retrying immediately", "error", err.Error())
|
||||
return ctrl.Result{
|
||||
Requeue: true,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user