mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	Fix incorrect reference to name in v1beta3 API.
This commit is contained in:
		@@ -1534,7 +1534,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			case "DesiredState.Host":
 | 
								case "DesiredState.Host":
 | 
				
			||||||
				return "spec.host", value, nil
 | 
									return "spec.host", value, nil
 | 
				
			||||||
			case "DesiredState.Status":
 | 
								case "DesiredState.Status":
 | 
				
			||||||
@@ -1554,7 +1554,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -1567,7 +1567,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			case "currentState.replicas":
 | 
								case "currentState.replicas":
 | 
				
			||||||
				return "status.replicas", value, nil
 | 
									return "status.replicas", value, nil
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1459,7 +1459,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			case "DesiredState.Host":
 | 
								case "DesiredState.Host":
 | 
				
			||||||
				return "spec.host", value, nil
 | 
									return "spec.host", value, nil
 | 
				
			||||||
			case "DesiredState.Status":
 | 
								case "DesiredState.Status":
 | 
				
			||||||
@@ -1479,7 +1479,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -1492,7 +1492,7 @@ func init() {
 | 
				
			|||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "name":
 | 
				
			||||||
				return "name", value, nil
 | 
									return "metadata.name", value, nil
 | 
				
			||||||
			case "currentState.replicas":
 | 
								case "currentState.replicas":
 | 
				
			||||||
				return "status.replicas", value, nil
 | 
									return "status.replicas", value, nil
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ func init() {
 | 
				
			|||||||
	err := newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "Pod",
 | 
						err := newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "Pod",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name",
 | 
								case "metadata.name",
 | 
				
			||||||
				"status.phase",
 | 
									"status.phase",
 | 
				
			||||||
				"spec.host":
 | 
									"spec.host":
 | 
				
			||||||
				return label, value, nil
 | 
									return label, value, nil
 | 
				
			||||||
@@ -42,7 +42,7 @@ func init() {
 | 
				
			|||||||
	err = newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "Node",
 | 
						err = newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "Node",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "metadata.name":
 | 
				
			||||||
				return label, value, nil
 | 
									return label, value, nil
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
@@ -55,10 +55,9 @@ func init() {
 | 
				
			|||||||
	err = newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "ReplicationController",
 | 
						err = newer.Scheme.AddFieldLabelConversionFunc("v1beta3", "ReplicationController",
 | 
				
			||||||
		func(label, value string) (string, string, error) {
 | 
							func(label, value string) (string, string, error) {
 | 
				
			||||||
			switch label {
 | 
								switch label {
 | 
				
			||||||
			case "name":
 | 
								case "metadata.name",
 | 
				
			||||||
				return "name", value, nil
 | 
									"status.replicas":
 | 
				
			||||||
			case "status.replicas":
 | 
									return label, value, nil
 | 
				
			||||||
				return "status.replicas", value, nil
 | 
					 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
									return "", "", fmt.Errorf("field label not supported: %s", label)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -544,14 +544,15 @@ func TestEtcdWatchControllersFields(t *testing.T) {
 | 
				
			|||||||
	testFieldMap := map[int][]fields.Set{
 | 
						testFieldMap := map[int][]fields.Set{
 | 
				
			||||||
		PASS: {
 | 
							PASS: {
 | 
				
			||||||
			{"status.replicas": "0"},
 | 
								{"status.replicas": "0"},
 | 
				
			||||||
			{"name": "foo"},
 | 
								{"metadata.name": "foo"},
 | 
				
			||||||
			{"status.replicas": "0", "name": "foo"},
 | 
								{"status.replicas": "0", "metadata.name": "foo"},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		FAIL: {
 | 
							FAIL: {
 | 
				
			||||||
			{"status.replicas": "10"},
 | 
								{"status.replicas": "10"},
 | 
				
			||||||
			{"name": "bar"},
 | 
								{"metadata.name": "bar"},
 | 
				
			||||||
			{"status.replicas": "10", "name": "foo"},
 | 
								{"name": "foo"},
 | 
				
			||||||
			{"status.replicas": "0", "name": "bar"},
 | 
								{"status.replicas": "10", "metadata.name": "foo"},
 | 
				
			||||||
 | 
								{"status.replicas": "0", "metadata.name": "bar"},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	testEtcdActions := []string{
 | 
						testEtcdActions := []string{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,9 +75,9 @@ func (rcStrategy) ValidateUpdate(ctx api.Context, obj, old runtime.Object) field
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ControllerToSelectableFields returns a label set that represents the object.
 | 
					// ControllerToSelectableFields returns a label set that represents the object.
 | 
				
			||||||
func ControllerToSelectableFields(controller *api.ReplicationController) labels.Set {
 | 
					func ControllerToSelectableFields(controller *api.ReplicationController) fields.Set {
 | 
				
			||||||
	return labels.Set{
 | 
						return fields.Set{
 | 
				
			||||||
		"name":            controller.Name,
 | 
							"metadata.name":   controller.Name,
 | 
				
			||||||
		"status.replicas": strconv.Itoa(controller.Status.Replicas),
 | 
							"status.replicas": strconv.Itoa(controller.Status.Replicas),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -86,13 +86,15 @@ func ControllerToSelectableFields(controller *api.ReplicationController) labels.
 | 
				
			|||||||
// watch events from etcd to clients of the apiserver only interested in specific
 | 
					// watch events from etcd to clients of the apiserver only interested in specific
 | 
				
			||||||
// labels/fields.
 | 
					// labels/fields.
 | 
				
			||||||
func MatchController(label labels.Selector, field fields.Selector) generic.Matcher {
 | 
					func MatchController(label labels.Selector, field fields.Selector) generic.Matcher {
 | 
				
			||||||
	return generic.MatcherFunc(
 | 
						return &generic.SelectionPredicate{
 | 
				
			||||||
		func(obj runtime.Object) (bool, error) {
 | 
							Label: label,
 | 
				
			||||||
			controllerObj, ok := obj.(*api.ReplicationController)
 | 
							Field: field,
 | 
				
			||||||
 | 
							GetAttrs: func(obj runtime.Object) (labels.Set, fields.Set, error) {
 | 
				
			||||||
 | 
								rc, ok := obj.(*api.ReplicationController)
 | 
				
			||||||
			if !ok {
 | 
								if !ok {
 | 
				
			||||||
				return false, fmt.Errorf("Given object is not a replication controller.")
 | 
									return nil, nil, fmt.Errorf("Given object is not a replication controller.")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			fields := ControllerToSelectableFields(controllerObj)
 | 
								return labels.Set(rc.ObjectMeta.Labels), ControllerToSelectableFields(rc), nil
 | 
				
			||||||
			return label.Matches(labels.Set(controllerObj.Labels)) && field.Matches(fields), nil
 | 
							},
 | 
				
			||||||
		})
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ func (s *SelectionPredicate) Matches(obj runtime.Object) (bool, error) {
 | 
				
			|||||||
// name.
 | 
					// name.
 | 
				
			||||||
func (s *SelectionPredicate) MatchesSingle() (string, bool) {
 | 
					func (s *SelectionPredicate) MatchesSingle() (string, bool) {
 | 
				
			||||||
	// TODO: should be namespace.name
 | 
						// TODO: should be namespace.name
 | 
				
			||||||
	if name, ok := s.Field.RequiresExactMatch("name"); ok {
 | 
						if name, ok := s.Field.RequiresExactMatch("metadata.name"); ok {
 | 
				
			||||||
		return name, true
 | 
							return name, true
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return "", false
 | 
						return "", false
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,9 +68,9 @@ func TestSelectionPredicate(t *testing.T) {
 | 
				
			|||||||
			shouldMatch:   false,
 | 
								shouldMatch:   false,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"D": {
 | 
							"D": {
 | 
				
			||||||
			fieldSelector:  "name=12345",
 | 
								fieldSelector:  "metadata.name=12345",
 | 
				
			||||||
			labels:         labels.Set{},
 | 
								labels:         labels.Set{},
 | 
				
			||||||
			fields:         fields.Set{"name": "12345"},
 | 
								fields:         fields.Set{"metadata.name": "12345"},
 | 
				
			||||||
			shouldMatch:    true,
 | 
								shouldMatch:    true,
 | 
				
			||||||
			matchSingleKey: "12345",
 | 
								matchSingleKey: "12345",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,7 +85,7 @@ type ResourceGetter interface {
 | 
				
			|||||||
// NodeToSelectableFields returns a label set that represents the object.
 | 
					// NodeToSelectableFields returns a label set that represents the object.
 | 
				
			||||||
func NodeToSelectableFields(node *api.Node) fields.Set {
 | 
					func NodeToSelectableFields(node *api.Node) fields.Set {
 | 
				
			||||||
	return fields.Set{
 | 
						return fields.Set{
 | 
				
			||||||
		"name": node.Name,
 | 
							"metadata.name": node.Name,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
func TestMatchNode(t *testing.T) {
 | 
					func TestMatchNode(t *testing.T) {
 | 
				
			||||||
	testFieldMap := map[bool][]fields.Set{
 | 
						testFieldMap := map[bool][]fields.Set{
 | 
				
			||||||
		true: {
 | 
							true: {
 | 
				
			||||||
			{"name": "foo"},
 | 
								{"metadata.name": "foo"},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		false: {
 | 
							false: {
 | 
				
			||||||
			{"foo": "bar"},
 | 
								{"foo": "bar"},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -291,7 +291,7 @@ func TestListPodListSelection(t *testing.T) {
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			expectedIDs: util.NewStringSet("foo", "bar", "baz", "qux", "zot"),
 | 
								expectedIDs: util.NewStringSet("foo", "bar", "baz", "qux", "zot"),
 | 
				
			||||||
		}, {
 | 
							}, {
 | 
				
			||||||
			field:       "name=zot",
 | 
								field:       "metadata.name=zot",
 | 
				
			||||||
			expectedIDs: util.NewStringSet("zot"),
 | 
								expectedIDs: util.NewStringSet("zot"),
 | 
				
			||||||
		}, {
 | 
							}, {
 | 
				
			||||||
			label:       "label=qux",
 | 
								label:       "label=qux",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -105,23 +105,26 @@ func (podStatusStrategy) ValidateUpdate(ctx api.Context, obj, old runtime.Object
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// MatchPod returns a generic matcher for a given label and field selector.
 | 
					// MatchPod returns a generic matcher for a given label and field selector.
 | 
				
			||||||
func MatchPod(label labels.Selector, field fields.Selector) generic.Matcher {
 | 
					func MatchPod(label labels.Selector, field fields.Selector) generic.Matcher {
 | 
				
			||||||
	return generic.MatcherFunc(func(obj runtime.Object) (bool, error) {
 | 
						return &generic.SelectionPredicate{
 | 
				
			||||||
		podObj, ok := obj.(*api.Pod)
 | 
							Label: label,
 | 
				
			||||||
		if !ok {
 | 
							Field: field,
 | 
				
			||||||
			return false, fmt.Errorf("not a pod")
 | 
							GetAttrs: func(obj runtime.Object) (labels.Set, fields.Set, error) {
 | 
				
			||||||
		}
 | 
								pod, ok := obj.(*api.Pod)
 | 
				
			||||||
		fields := PodToSelectableFields(podObj)
 | 
								if !ok {
 | 
				
			||||||
		return label.Matches(labels.Set(podObj.Labels)) && field.Matches(fields), nil
 | 
									return nil, nil, fmt.Errorf("not a pod")
 | 
				
			||||||
	})
 | 
								}
 | 
				
			||||||
 | 
								return labels.Set(pod.ObjectMeta.Labels), PodToSelectableFields(pod), nil
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PodToSelectableFields returns a label set that represents the object
 | 
					// PodToSelectableFields returns a label set that represents the object
 | 
				
			||||||
// TODO: fields are not labels, and the validation rules for them do not apply.
 | 
					// TODO: fields are not labels, and the validation rules for them do not apply.
 | 
				
			||||||
func PodToSelectableFields(pod *api.Pod) labels.Set {
 | 
					func PodToSelectableFields(pod *api.Pod) fields.Set {
 | 
				
			||||||
	return labels.Set{
 | 
						return fields.Set{
 | 
				
			||||||
		"name":         pod.Name,
 | 
							"metadata.name": pod.Name,
 | 
				
			||||||
		"spec.host":    pod.Spec.Host,
 | 
							"spec.host":     pod.Spec.Host,
 | 
				
			||||||
		"status.phase": string(pod.Status.Phase),
 | 
							"status.phase":  string(pod.Status.Phase),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user