diff --git a/pkg/apis/core/v1/conversion.go b/pkg/apis/core/v1/conversion.go index cceee153af2..64d458189a0 100644 --- a/pkg/apis/core/v1/conversion.go +++ b/pkg/apis/core/v1/conversion.go @@ -63,6 +63,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { "spec.nodeName", "spec.restartPolicy", "spec.schedulerName", + "spec.serviceAccountName", "status.phase", "status.podIP", "status.nominatedNodeName": diff --git a/pkg/registry/core/pod/strategy.go b/pkg/registry/core/pod/strategy.go index a3658911120..87b8bed8149 100644 --- a/pkg/registry/core/pod/strategy.go +++ b/pkg/registry/core/pod/strategy.go @@ -237,10 +237,11 @@ func PodToSelectableFields(pod *api.Pod) fields.Set { // amount of allocations needed to create the fields.Set. If you add any // field here or the number of object-meta related fields changes, this should // be adjusted. - podSpecificFieldsSet := make(fields.Set, 8) + podSpecificFieldsSet := make(fields.Set, 9) podSpecificFieldsSet["spec.nodeName"] = pod.Spec.NodeName podSpecificFieldsSet["spec.restartPolicy"] = string(pod.Spec.RestartPolicy) podSpecificFieldsSet["spec.schedulerName"] = string(pod.Spec.SchedulerName) + podSpecificFieldsSet["spec.serviceAccountName"] = string(pod.Spec.ServiceAccountName) podSpecificFieldsSet["status.phase"] = string(pod.Status.Phase) podSpecificFieldsSet["status.podIP"] = string(pod.Status.PodIP) podSpecificFieldsSet["status.nominatedNodeName"] = string(pod.Status.NominatedNodeName) diff --git a/pkg/registry/core/pod/strategy_test.go b/pkg/registry/core/pod/strategy_test.go index b1c207307f2..e1d6a17669b 100644 --- a/pkg/registry/core/pod/strategy_test.go +++ b/pkg/registry/core/pod/strategy_test.go @@ -86,6 +86,20 @@ func TestMatchPod(t *testing.T) { fieldSelector: fields.ParseSelectorOrDie("spec.schedulerName=scheduler2"), expectMatch: false, }, + { + in: &api.Pod{ + Spec: api.PodSpec{ServiceAccountName: "serviceAccount1"}, + }, + fieldSelector: fields.ParseSelectorOrDie("spec.serviceAccountName=serviceAccount1"), + expectMatch: true, + }, + { + in: &api.Pod{ + Spec: api.PodSpec{SchedulerName: "serviceAccount1"}, + }, + fieldSelector: fields.ParseSelectorOrDie("spec.serviceAccountName=serviceAccount2"), + expectMatch: false, + }, { in: &api.Pod{ Status: api.PodStatus{Phase: api.PodRunning},