| /* |
| Copyright 2016 The Kubernetes Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package v1 |
| |
| // 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 *LabelSelector, labelKey, labelValue string) *LabelSelector { |
| if labelKey == "" { |
| // Don't need to add a label. |
| return selector |
| } |
| |
| // Clone. |
| newSelector := selector.DeepCopy() |
| |
| if newSelector.MatchLabels == nil { |
| newSelector.MatchLabels = make(map[string]string) |
| } |
| |
| newSelector.MatchLabels[labelKey] = labelValue |
| |
| return newSelector |
| } |
| |
| // AddLabelToSelector returns a selector with the given key and value added to the given selector's MatchLabels. |
| func AddLabelToSelector(selector *LabelSelector, labelKey, labelValue string) *LabelSelector { |
| if labelKey == "" { |
| // Don't need to add a label. |
| return selector |
| } |
| if selector.MatchLabels == nil { |
| selector.MatchLabels = make(map[string]string) |
| } |
| selector.MatchLabels[labelKey] = labelValue |
| return selector |
| } |
| |
| // SelectorHasLabel checks if the given selector contains the given label key in its MatchLabels |
| func SelectorHasLabel(selector *LabelSelector, labelKey string) bool { |
| return len(selector.MatchLabels[labelKey]) > 0 |
| } |