mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
move job to generalized label selector
This commit is contained in:
parent
5f55be5dc1
commit
a7a54cac74
6
pkg/client/cache/listers.go
vendored
6
pkg/client/cache/listers.go
vendored
@ -382,11 +382,9 @@ func (s *StoreToJobLister) GetPodJobs(pod *api.Pod) (jobs []extensions.Job, err
|
||||
if job.Namespace != pod.Namespace {
|
||||
continue
|
||||
}
|
||||
labelSet := labels.Set(job.Spec.Selector)
|
||||
selector = labels.Set(job.Spec.Selector).AsSelector()
|
||||
|
||||
// Job with a nil or empty selector match nothing
|
||||
if labelSet.AsSelector().Empty() || !selector.Matches(labels.Set(pod.Labels)) {
|
||||
selector, _ = extensions.PodSelectorAsSelector(job.Spec.Selector)
|
||||
if !selector.Matches(labels.Set(pod.Labels)) {
|
||||
continue
|
||||
}
|
||||
jobs = append(jobs, job)
|
||||
|
@ -313,7 +313,8 @@ func (jm *JobController) syncJob(key string) error {
|
||||
return err
|
||||
}
|
||||
jobNeedsSync := jm.expectations.SatisfiedExpectations(jobKey)
|
||||
podList, err := jm.podStore.Pods(job.Namespace).List(labels.Set(job.Spec.Selector).AsSelector())
|
||||
selector, _ := extensions.PodSelectorAsSelector(job.Spec.Selector)
|
||||
podList, err := jm.podStore.Pods(job.Namespace).List(selector)
|
||||
if err != nil {
|
||||
glog.Errorf("Error getting pods for job %q: %v", key, err)
|
||||
jm.queue.Add(key)
|
||||
|
@ -43,7 +43,9 @@ func newJob(parallelism, completions int) *extensions.Job {
|
||||
Spec: extensions.JobSpec{
|
||||
Parallelism: ¶llelism,
|
||||
Completions: &completions,
|
||||
Selector: map[string]string{"foo": "bar"},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"foo": "bar"},
|
||||
},
|
||||
Template: api.PodTemplateSpec{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
@ -76,7 +78,7 @@ func newPodList(count int, status api.PodPhase, job *extensions.Job) []api.Pod {
|
||||
newPod := api.Pod{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: fmt.Sprintf("pod-%v", unversioned.Now().UnixNano()),
|
||||
Labels: job.Spec.Selector,
|
||||
Labels: job.Spec.Selector.MatchLabels,
|
||||
Namespace: job.Namespace,
|
||||
},
|
||||
Status: api.PodStatus{Phase: status},
|
||||
@ -289,7 +291,9 @@ func TestJobPodLookup(t *testing.T) {
|
||||
job: &extensions.Job{
|
||||
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||
Spec: extensions.JobSpec{
|
||||
Selector: map[string]string{"foo": "bar"},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"foo": "bar"},
|
||||
},
|
||||
},
|
||||
},
|
||||
pod: &api.Pod{
|
||||
@ -306,7 +310,15 @@ func TestJobPodLookup(t *testing.T) {
|
||||
job: &extensions.Job{
|
||||
ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "ns"},
|
||||
Spec: extensions.JobSpec{
|
||||
Selector: map[string]string{"foo": "bar"},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchExpressions: []extensions.PodSelectorRequirement{
|
||||
{
|
||||
Key: "foo",
|
||||
Operator: extensions.PodSelectorOpIn,
|
||||
Values: []string{"bar"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
pod: &api.Pod{
|
||||
|
@ -885,7 +885,8 @@ func describeJob(job *extensions.Job, events *api.EventList) (string, error) {
|
||||
fmt.Fprintf(out, "Name:\t%s\n", job.Name)
|
||||
fmt.Fprintf(out, "Namespace:\t%s\n", job.Namespace)
|
||||
fmt.Fprintf(out, "Image(s):\t%s\n", makeImageList(&job.Spec.Template.Spec))
|
||||
fmt.Fprintf(out, "Selector:\t%s\n", labels.FormatLabels(job.Spec.Selector))
|
||||
selector, _ := extensions.PodSelectorAsSelector(job.Spec.Selector)
|
||||
fmt.Fprintf(out, "Selector:\t%s\n", selector)
|
||||
fmt.Fprintf(out, "Parallelism:\t%d\n", *job.Spec.Parallelism)
|
||||
fmt.Fprintf(out, "Completions:\t%d\n", *job.Spec.Completions)
|
||||
fmt.Fprintf(out, "Labels:\t%s\n", labels.FormatLabels(job.Labels))
|
||||
|
@ -736,11 +736,13 @@ func printJob(job *extensions.Job, w io.Writer, withNamespace bool, wide bool, s
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
selector, _ := extensions.PodSelectorAsSelector(job.Spec.Selector)
|
||||
_, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%d\n",
|
||||
name,
|
||||
firstContainer.Name,
|
||||
firstContainer.Image,
|
||||
labels.FormatLabels(job.Spec.Selector),
|
||||
selector.String(),
|
||||
job.Status.Succeeded)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -293,7 +293,10 @@ func TestJobStop(t *testing.T) {
|
||||
},
|
||||
Spec: extensions.JobSpec{
|
||||
Parallelism: &zero,
|
||||
Selector: map[string]string{"k1": "v1"}},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"k1": "v1"},
|
||||
},
|
||||
},
|
||||
},
|
||||
&extensions.JobList{ // LIST
|
||||
Items: []extensions.Job{
|
||||
@ -304,7 +307,10 @@ func TestJobStop(t *testing.T) {
|
||||
},
|
||||
Spec: extensions.JobSpec{
|
||||
Parallelism: &zero,
|
||||
Selector: map[string]string{"k1": "v1"}},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"k1": "v1"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -47,7 +47,9 @@ func validNewJob() *extensions.Job {
|
||||
Spec: extensions.JobSpec{
|
||||
Completions: &completions,
|
||||
Parallelism: ¶llelism,
|
||||
Selector: map[string]string{"a": "b"},
|
||||
Selector: &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"a": "b"},
|
||||
},
|
||||
Template: api.PodTemplateSpec{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Labels: map[string]string{"a": "b"},
|
||||
@ -80,7 +82,7 @@ func TestCreate(t *testing.T) {
|
||||
&extensions.Job{
|
||||
Spec: extensions.JobSpec{
|
||||
Completions: validJob.Spec.Completions,
|
||||
Selector: map[string]string{},
|
||||
Selector: &extensions.PodSelector{},
|
||||
Template: validJob.Spec.Template,
|
||||
},
|
||||
},
|
||||
@ -103,7 +105,7 @@ func TestUpdate(t *testing.T) {
|
||||
// invalid updateFunc
|
||||
func(obj runtime.Object) runtime.Object {
|
||||
object := obj.(*extensions.Job)
|
||||
object.Spec.Selector = map[string]string{}
|
||||
object.Spec.Selector = &extensions.PodSelector{}
|
||||
return object
|
||||
},
|
||||
func(obj runtime.Object) runtime.Object {
|
||||
|
@ -32,10 +32,12 @@ func TestJobStrategy(t *testing.T) {
|
||||
t.Errorf("Job should not allow create on update")
|
||||
}
|
||||
|
||||
validSelector := map[string]string{"a": "b"}
|
||||
validSelector := &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"a": "b"},
|
||||
}
|
||||
validPodTemplateSpec := api.PodTemplateSpec{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Labels: validSelector,
|
||||
Labels: validSelector.MatchLabels,
|
||||
},
|
||||
Spec: api.PodSpec{
|
||||
RestartPolicy: api.RestartPolicyOnFailure,
|
||||
@ -95,10 +97,12 @@ func TestJobStatusStrategy(t *testing.T) {
|
||||
if StatusStrategy.AllowCreateOnUpdate() {
|
||||
t.Errorf("Job should not allow create on update")
|
||||
}
|
||||
validSelector := map[string]string{"a": "b"}
|
||||
validSelector := &extensions.PodSelector{
|
||||
MatchLabels: map[string]string{"a": "b"},
|
||||
}
|
||||
validPodTemplateSpec := api.PodTemplateSpec{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Labels: validSelector,
|
||||
Labels: validSelector.MatchLabels,
|
||||
},
|
||||
Spec: api.PodSpec{
|
||||
RestartPolicy: api.RestartPolicyOnFailure,
|
||||
|
Loading…
Reference in New Issue
Block a user