Skip to content

Commit 6fcf057

Browse files
authored
Isotope: add ability to set custom labels on generated entities. (#3052)
1 parent 39bf0fb commit 6fcf057

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

isotope/convert/pkg/graph/svc/service.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ type Service struct {
5151

5252
// Script is sequentially called each time the service is called.
5353
Script script.Script `json:"script,omitempty"`
54+
55+
// Labels to add to the generated K8S entities.
56+
Labels map[string]string `json:"labels,omitempty"`
5457
}

isotope/convert/pkg/kubernetes/kubernetes.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package kubernetes
1818
import (
1919
"errors"
2020
"fmt"
21+
"maps"
2122
"strings"
2223
"time"
2324

@@ -167,15 +168,12 @@ func validateServices(clusterName string, services []svc.Service, manifest inter
167168
return append(header, []byte(fmt.Sprintf("## Number of services included in this manifest for cluster '%s' is: %d\n\n", clusterName, serviceToAppendCounter))...), nil
168169
}
169170

170-
func combineLabels(a, b map[string]string) map[string]string {
171-
c := make(map[string]string, len(a)+len(b))
172-
for k, v := range a {
173-
c[k] = v
171+
func combineLabels(labels ...map[string]string) map[string]string {
172+
res := map[string]string{}
173+
for _, l := range labels {
174+
maps.Copy(res, l)
174175
}
175-
for k, v := range b {
176-
c[k] = v
177-
}
178-
return c
176+
return res
179177
}
180178

181179
func makeConfigMap(
@@ -205,7 +203,8 @@ func makeService(service svc.Service) (k8sService apiv1.Service) {
205203
serviceGraphNodeLabels,
206204
map[string]string{
207205
"app": service.Name,
208-
})
206+
},
207+
service.Labels)
209208
timestamp(&k8sService.ObjectMeta)
210209
k8sService.Spec.Ports = []apiv1.ServicePort{{Port: consts.ServicePort, Name: consts.ServicePortName}}
211210
k8sService.Spec.Selector = map[string]string{"name": service.Name}
@@ -224,7 +223,8 @@ func makeDeployment(
224223
serviceGraphNodeLabels,
225224
map[string]string{
226225
"app": service.Name,
227-
})
226+
},
227+
service.Labels)
228228
timestamp(&k8sDeployment.ObjectMeta)
229229
k8sDeployment.Spec = appsv1.DeploymentSpec{
230230
Replicas: &service.NumReplicas,
@@ -239,7 +239,8 @@ func makeDeployment(
239239
serviceGraphNodeLabels,
240240
map[string]string{
241241
"name": service.Name,
242-
}),
242+
},
243+
service.Labels),
243244
Annotations: prometheusScrapeAnnotations,
244245
},
245246
Spec: apiv1.PodSpec{

0 commit comments

Comments
 (0)