Skip to content

Commit 938039f

Browse files
authored
Fix a bug in setting labels for ReplicaSet pods (#244)
1 parent e280617 commit 938039f

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

pkg/analyzer/scan.go

+9-14
Original file line numberDiff line numberDiff line change
@@ -26,46 +26,40 @@ import (
2626

2727
// Create a common.Resource object from a k8s Workload object
2828
func ScanK8sWorkloadObject(kind string, objDataBuf []byte) (*common.Resource, error) {
29-
var podSpecV1 v1.PodTemplateSpec
29+
var podSpecV1 *v1.PodTemplateSpec
3030
var resourceCtx common.Resource
3131
var metaObj metaV1.Object
3232
resourceCtx.Resource.Kind = kind
3333
switch kind { // TODO: handle Pod
3434
case "ReplicaSet":
3535
obj := parseResource[appsv1.ReplicaSet](bytes.NewReader(objDataBuf))
36-
resourceCtx.Resource.Labels = obj.GetLabels()
37-
podSpecV1 = obj.Spec.Template
36+
podSpecV1 = &obj.Spec.Template
3837
metaObj = obj
3938
case "ReplicationController":
4039
obj := parseResource[v1.ReplicationController](bytes.NewReader(objDataBuf))
41-
resourceCtx.Resource.Labels = obj.Spec.Template.Labels
42-
podSpecV1 = *obj.Spec.Template
40+
podSpecV1 = obj.Spec.Template
4341
metaObj = obj
4442
case "Deployment":
4543
obj := parseResource[appsv1.Deployment](bytes.NewReader(objDataBuf))
46-
resourceCtx.Resource.Labels = obj.Spec.Template.Labels
47-
podSpecV1 = obj.Spec.Template
44+
podSpecV1 = &obj.Spec.Template
4845
metaObj = obj
4946
case "DaemonSet":
5047
obj := parseResource[appsv1.DaemonSet](bytes.NewReader(objDataBuf))
51-
resourceCtx.Resource.Labels = obj.Spec.Template.Labels
52-
podSpecV1 = obj.Spec.Template
48+
podSpecV1 = &obj.Spec.Template
5349
metaObj = obj
5450
case "StatefulSet":
5551
obj := parseResource[appsv1.StatefulSet](bytes.NewReader(objDataBuf))
56-
resourceCtx.Resource.Labels = obj.Spec.Template.Labels
57-
podSpecV1 = obj.Spec.Template
52+
podSpecV1 = &obj.Spec.Template
5853
metaObj = obj
5954
case "Job":
6055
obj := parseResource[batchv1.Job](bytes.NewReader(objDataBuf))
61-
resourceCtx.Resource.Labels = obj.Spec.Template.Labels
62-
podSpecV1 = obj.Spec.Template
56+
podSpecV1 = &obj.Spec.Template
6357
metaObj = obj
6458
default:
6559
return nil, fmt.Errorf("unsupported object type: `%s`", kind)
6660
}
6761

68-
parseDeployResource(&podSpecV1, metaObj, &resourceCtx)
62+
parseDeployResource(podSpecV1, metaObj, &resourceCtx)
6963
return &resourceCtx, nil
7064
}
7165

@@ -178,6 +172,7 @@ func ScanIngressObject(kind string, objDataBuf []byte, servicesToExpose common.S
178172
func parseDeployResource(podSpec *v1.PodTemplateSpec, obj metaV1.Object, resourceCtx *common.Resource) {
179173
resourceCtx.Resource.Name = obj.GetName()
180174
resourceCtx.Resource.Namespace = obj.GetNamespace()
175+
resourceCtx.Resource.Labels = podSpec.Labels
181176
resourceCtx.Resource.ServiceAccountName = podSpec.Spec.ServiceAccountName
182177
for containerIdx := range podSpec.Spec.Containers {
183178
container := &podSpec.Spec.Containers[containerIdx]

tests/k8s_guestbook/redis-leader-deployment.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook
22
apiVersion: apps/v1
3-
kind: Deployment
3+
kind: ReplicaSet
44
metadata:
55
name: redis-leader
66
namespace: redis
77
labels:
8-
app: redis
8+
app: redisapp
99
role: leader
1010
tier: backend
1111
spec:

0 commit comments

Comments
 (0)