// Clones the given selector and returns a new selector with the given key and value added. // Returns the given selector, if labelKey is empty. func CloneSelectorAndAddLabel(selector *unversioned.LabelSelector, labelKey string, labelValue uint32) *unversioned.LabelSelector { if labelKey == "" { // Don't need to add a label. return selector } // Clone. newSelector := new(unversioned.LabelSelector) // TODO(madhusudancs): Check if you can use deepCopy_extensions_LabelSelector here. newSelector.MatchLabels = make(map[string]string) if selector.MatchLabels != nil { for key, val := range selector.MatchLabels { newSelector.MatchLabels[key] = val } } newSelector.MatchLabels[labelKey] = fmt.Sprintf("%d", labelValue) if selector.MatchExpressions != nil { newMExps := make([]unversioned.LabelSelectorRequirement, len(selector.MatchExpressions)) for i, me := range selector.MatchExpressions { newMExps[i].Key = me.Key newMExps[i].Operator = me.Operator if me.Values != nil { newMExps[i].Values = make([]string, len(me.Values)) copy(newMExps[i].Values, me.Values) } else { newMExps[i].Values = nil } } newSelector.MatchExpressions = newMExps } else { newSelector.MatchExpressions = nil } return newSelector }
func autoConvert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { out.MatchLabels = in.MatchLabels if in.MatchExpressions != nil { in, out := &in.MatchExpressions, &out.MatchExpressions *out = make([]unversioned.LabelSelectorRequirement, len(*in)) for i := range *in { if err := Convert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { return err } } } else { out.MatchExpressions = nil } return nil }