Skip to content

Commit 109750f

Browse files
authored
propogate arbitrary labels from runnersets to all created resources (#3157)
1 parent 9e191cd commit 109750f

File tree

2 files changed

+35
-22
lines changed

2 files changed

+35
-22
lines changed

controllers/actions.github.com/resourcebuilder.go

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,13 @@ func (b *resourceBuilder) newAutoScalingListener(autoscalingRunnerSet *v1alpha1.
8585
effectiveMinRunners = *autoscalingRunnerSet.Spec.MinRunners
8686
}
8787

88-
labels := map[string]string{
88+
labels := mergeLabels(autoscalingRunnerSet.Labels, map[string]string{
8989
LabelKeyGitHubScaleSetNamespace: autoscalingRunnerSet.Namespace,
9090
LabelKeyGitHubScaleSetName: autoscalingRunnerSet.Name,
9191
LabelKeyKubernetesPartOf: labelValueKubernetesPartOf,
9292
LabelKeyKubernetesComponent: "runner-scale-set-listener",
9393
LabelKeyKubernetesVersion: autoscalingRunnerSet.Labels[LabelKeyKubernetesVersion],
94-
}
94+
})
9595

9696
annotations := map[string]string{
9797
annotationKeyRunnerSpecHash: autoscalingRunnerSet.ListenerSpecHash(),
@@ -411,10 +411,10 @@ func (b *resourceBuilder) newScaleSetListenerServiceAccount(autoscalingListener
411411
ObjectMeta: metav1.ObjectMeta{
412412
Name: scaleSetListenerServiceAccountName(autoscalingListener),
413413
Namespace: autoscalingListener.Namespace,
414-
Labels: map[string]string{
414+
Labels: mergeLabels(autoscalingListener.Labels, map[string]string{
415415
LabelKeyGitHubScaleSetNamespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
416416
LabelKeyGitHubScaleSetName: autoscalingListener.Spec.AutoscalingRunnerSetName,
417-
},
417+
}),
418418
},
419419
}
420420
}
@@ -426,13 +426,13 @@ func (b *resourceBuilder) newScaleSetListenerRole(autoscalingListener *v1alpha1.
426426
ObjectMeta: metav1.ObjectMeta{
427427
Name: scaleSetListenerRoleName(autoscalingListener),
428428
Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
429-
Labels: map[string]string{
429+
Labels: mergeLabels(autoscalingListener.Labels, map[string]string{
430430
LabelKeyGitHubScaleSetNamespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
431431
LabelKeyGitHubScaleSetName: autoscalingListener.Spec.AutoscalingRunnerSetName,
432432
labelKeyListenerNamespace: autoscalingListener.Namespace,
433433
labelKeyListenerName: autoscalingListener.Name,
434434
"role-policy-rules-hash": rulesHash,
435-
},
435+
}),
436436
},
437437
Rules: rules,
438438
}
@@ -460,14 +460,14 @@ func (b *resourceBuilder) newScaleSetListenerRoleBinding(autoscalingListener *v1
460460
ObjectMeta: metav1.ObjectMeta{
461461
Name: scaleSetListenerRoleName(autoscalingListener),
462462
Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
463-
Labels: map[string]string{
463+
Labels: mergeLabels(autoscalingListener.Labels, map[string]string{
464464
LabelKeyGitHubScaleSetNamespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
465465
LabelKeyGitHubScaleSetName: autoscalingListener.Spec.AutoscalingRunnerSetName,
466466
labelKeyListenerNamespace: autoscalingListener.Namespace,
467467
labelKeyListenerName: autoscalingListener.Name,
468468
"role-binding-role-ref-hash": roleRefHash,
469469
"role-binding-subject-hash": subjectHash,
470-
},
470+
}),
471471
},
472472
RoleRef: roleRef,
473473
Subjects: subjects,
@@ -483,11 +483,11 @@ func (b *resourceBuilder) newScaleSetListenerSecretMirror(autoscalingListener *v
483483
ObjectMeta: metav1.ObjectMeta{
484484
Name: scaleSetListenerSecretMirrorName(autoscalingListener),
485485
Namespace: autoscalingListener.Namespace,
486-
Labels: map[string]string{
486+
Labels: mergeLabels(autoscalingListener.Labels, map[string]string{
487487
LabelKeyGitHubScaleSetNamespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
488488
LabelKeyGitHubScaleSetName: autoscalingListener.Spec.AutoscalingRunnerSetName,
489489
"secret-data-hash": dataHash,
490-
},
490+
}),
491491
},
492492
Data: secret.DeepCopy().Data,
493493
}
@@ -502,13 +502,13 @@ func (b *resourceBuilder) newEphemeralRunnerSet(autoscalingRunnerSet *v1alpha1.A
502502
}
503503
runnerSpecHash := autoscalingRunnerSet.RunnerSetSpecHash()
504504

505-
labels := map[string]string{
505+
labels := mergeLabels(autoscalingRunnerSet.Labels, map[string]string{
506506
LabelKeyKubernetesPartOf: labelValueKubernetesPartOf,
507507
LabelKeyKubernetesComponent: "runner-set",
508508
LabelKeyKubernetesVersion: autoscalingRunnerSet.Labels[LabelKeyKubernetesVersion],
509509
LabelKeyGitHubScaleSetName: autoscalingRunnerSet.Name,
510510
LabelKeyGitHubScaleSetNamespace: autoscalingRunnerSet.Namespace,
511-
}
511+
})
512512

513513
if err := applyGitHubURLLabels(autoscalingRunnerSet.Spec.GitHubConfigUrl, labels); err != nil {
514514
return nil, fmt.Errorf("failed to apply GitHub URL labels: %v", err)
@@ -547,18 +547,14 @@ func (b *resourceBuilder) newEphemeralRunnerSet(autoscalingRunnerSet *v1alpha1.A
547547

548548
func (b *resourceBuilder) newEphemeralRunner(ephemeralRunnerSet *v1alpha1.EphemeralRunnerSet) *v1alpha1.EphemeralRunner {
549549
labels := make(map[string]string)
550-
for _, key := range commonLabelKeys {
551-
switch key {
552-
case LabelKeyKubernetesComponent:
553-
labels[key] = "runner"
554-
default:
555-
v, ok := ephemeralRunnerSet.Labels[key]
556-
if !ok {
557-
continue
558-
}
559-
labels[key] = v
550+
for k, v := range ephemeralRunnerSet.Labels {
551+
if k == LabelKeyKubernetesComponent {
552+
labels[k] = "runner"
553+
} else {
554+
labels[k] = v
560555
}
561556
}
557+
562558
annotations := make(map[string]string)
563559
for key, val := range ephemeralRunnerSet.Annotations {
564560
annotations[key] = val
@@ -751,3 +747,17 @@ func trimLabelValue(val string) string {
751747
}
752748
return val
753749
}
750+
751+
func mergeLabels(base, overwrite map[string]string) map[string]string {
752+
mergedLabels := map[string]string{}
753+
754+
for k, v := range base {
755+
mergedLabels[k] = v
756+
}
757+
758+
for k, v := range overwrite {
759+
mergedLabels[k] = v
760+
}
761+
762+
return mergedLabels
763+
}

controllers/actions.github.com/resourcebuilder_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func TestLabelPropagation(t *testing.T) {
2121
Labels: map[string]string{
2222
LabelKeyKubernetesPartOf: labelValueKubernetesPartOf,
2323
LabelKeyKubernetesVersion: "0.2.0",
24+
"arbitrary-label": "random-value",
2425
},
2526
Annotations: map[string]string{
2627
runnerScaleSetIdAnnotationKey: "1",
@@ -47,6 +48,7 @@ func TestLabelPropagation(t *testing.T) {
4748
assert.Equal(t, "repo", ephemeralRunnerSet.Labels[LabelKeyGitHubRepository])
4849
assert.Equal(t, autoscalingRunnerSet.Annotations[AnnotationKeyGitHubRunnerGroupName], ephemeralRunnerSet.Annotations[AnnotationKeyGitHubRunnerGroupName])
4950
assert.Equal(t, autoscalingRunnerSet.Annotations[AnnotationKeyGitHubRunnerScaleSetName], ephemeralRunnerSet.Annotations[AnnotationKeyGitHubRunnerScaleSetName])
51+
assert.Equal(t, autoscalingRunnerSet.Labels["arbitrary-label"], ephemeralRunnerSet.Labels["arbitrary-label"])
5052

5153
listener, err := b.newAutoScalingListener(&autoscalingRunnerSet, ephemeralRunnerSet, autoscalingRunnerSet.Namespace, "test:latest", nil)
5254
require.NoError(t, err)
@@ -59,6 +61,7 @@ func TestLabelPropagation(t *testing.T) {
5961
assert.Equal(t, "", listener.Labels[LabelKeyGitHubEnterprise])
6062
assert.Equal(t, "org", listener.Labels[LabelKeyGitHubOrganization])
6163
assert.Equal(t, "repo", listener.Labels[LabelKeyGitHubRepository])
64+
assert.Equal(t, autoscalingRunnerSet.Labels["arbitrary-label"], listener.Labels["arbitrary-label"])
6265

6366
listenerServiceAccount := &corev1.ServiceAccount{
6467
ObjectMeta: metav1.ObjectMeta{

0 commit comments

Comments
 (0)