// GetDeploymentsForPods returns a list of deployments managing a pod. Returns an error only if no matching deployments are found. func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *api.Pod) (deployments []extensions.Deployment, err error) { if len(pod.Labels) == 0 { err = fmt.Errorf("no deployments found for Pod %v because it has no labels", pod.Name) return } if len(pod.Labels[extensions.DefaultDeploymentUniqueLabelKey]) == 0 { return } dList, err := s.Deployments(pod.Namespace).List(labels.Everything()) if err != nil { return } for _, d := range dList { selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector) if err != nil { return nil, fmt.Errorf("invalid label selector: %v", err) } // If a deployment with a nil or empty selector creeps in, it should match nothing, not everything. if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { continue } deployments = append(deployments, d) } if len(deployments) == 0 { err = fmt.Errorf("could not find deployments set for Pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) } return }
// GetDeploymentsForReplicaSet returns a list of deployments managing a replica set. Returns an error only if no matching deployments are found. func (s *StoreToDeploymentLister) GetDeploymentsForReplicaSet(rs *extensions.ReplicaSet) (deployments []extensions.Deployment, err error) { if len(rs.Labels) == 0 { err = fmt.Errorf("no deployments found for ReplicaSet %v because it has no labels", rs.Name) return } // TODO: MODIFY THIS METHOD so that it checks for the podTemplateSpecHash label dList, err := s.Deployments(rs.Namespace).List(labels.Everything()) if err != nil { return } for _, d := range dList { selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector) if err != nil { return nil, fmt.Errorf("invalid label selector: %v", err) } // If a deployment with a nil or empty selector creeps in, it should match nothing, not everything. if selector.Empty() || !selector.Matches(labels.Set(rs.Labels)) { continue } deployments = append(deployments, d) } if len(deployments) == 0 { err = fmt.Errorf("could not find deployments set for ReplicaSet %s in namespace %s with labels: %v", rs.Name, rs.Namespace, rs.Labels) } return }
func addDefaultingFuncs(scheme *runtime.Scheme) error { return scheme.AddDefaultingFuncs( func(obj *ListOptions) { if obj.LabelSelector == nil { obj.LabelSelector = labels.Everything() } if obj.FieldSelector == nil { obj.FieldSelector = fields.Everything() } }, ) }
func init() { Scheme.AddDefaultingFuncs( func(obj *ListOptions) { if obj.LabelSelector == nil { obj.LabelSelector = labels.Everything() } if obj.FieldSelector == nil { obj.FieldSelector = fields.Everything() } }, ) Scheme.AddConversionFuncs( Convert_unversioned_TypeMeta_To_unversioned_TypeMeta, Convert_unversioned_ListMeta_To_unversioned_ListMeta, Convert_intstr_IntOrString_To_intstr_IntOrString, Convert_unversioned_Time_To_unversioned_Time, Convert_Slice_string_To_unversioned_Time, Convert_resource_Quantity_To_resource_Quantity, Convert_string_To_labels_Selector, Convert_labels_Selector_To_string, Convert_string_To_fields_Selector, Convert_fields_Selector_To_string, Convert_Pointer_bool_To_bool, Convert_bool_To_Pointer_bool, Convert_Pointer_string_To_string, Convert_string_To_Pointer_string, Convert_Pointer_int64_To_int, Convert_int_To_Pointer_int64, Convert_Pointer_int32_To_int32, Convert_int32_To_Pointer_int32, Convert_Pointer_float64_To_float64, Convert_float64_To_Pointer_float64, Convert_map_to_unversioned_LabelSelector, Convert_unversioned_LabelSelector_to_map, ) }
func NewRootListAction(resource unversioned.GroupVersionResource, opts api.ListOptions) ListActionImpl { action := ListActionImpl{} action.Verb = "list" action.Resource = resource labelSelector := opts.LabelSelector if labelSelector == nil { labelSelector = labels.Everything() } fieldSelector := opts.FieldSelector if fieldSelector == nil { fieldSelector = fields.Everything() } action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} return action }
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts api.ListOptions) WatchActionImpl { action := WatchActionImpl{} action.Verb = "watch" action.Resource = resource labelSelector := opts.LabelSelector if labelSelector == nil { labelSelector = labels.Everything() } fieldSelector := opts.FieldSelector if fieldSelector == nil { fieldSelector = fields.Everything() } action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion} return action }
func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) DeleteCollectionActionImpl { action := DeleteCollectionActionImpl{} action.Verb = "delete-collection" action.Resource = resource action.Namespace = namespace labelSelector := opts.LabelSelector if labelSelector == nil { labelSelector = labels.Everything() } fieldSelector := opts.FieldSelector if fieldSelector == nil { fieldSelector = fields.Everything() } action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} return action }
func (c *FakeThirdPartyResources) List(opts api.ListOptions) (result *v1beta1.ThirdPartyResourceList, err error) { obj, err := c.Fake. Invokes(testing.NewRootListAction(thirdpartyresourcesResource, opts), &v1beta1.ThirdPartyResourceList{}) if obj == nil { return nil, err } label := opts.LabelSelector if label == nil { label = labels.Everything() } list := &v1beta1.ThirdPartyResourceList{} for _, item := range obj.(*v1beta1.ThirdPartyResourceList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } } return list, err }
func (c *FakeCertificateSigningRequests) List(opts api.ListOptions) (result *v1alpha1.CertificateSigningRequestList, err error) { obj, err := c.Fake. Invokes(testing.NewRootListAction(certificatesigningrequestsResource, opts), &v1alpha1.CertificateSigningRequestList{}) if obj == nil { return nil, err } label := opts.LabelSelector if label == nil { label = labels.Everything() } list := &v1alpha1.CertificateSigningRequestList{} for _, item := range obj.(*v1alpha1.CertificateSigningRequestList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } } return list, err }
func (c *FakeHorizontalPodAutoscalers) List(opts api.ListOptions) (result *v1beta1.HorizontalPodAutoscalerList, err error) { obj, err := c.Fake. Invokes(testing.NewListAction(horizontalpodautoscalersResource, c.ns, opts), &v1beta1.HorizontalPodAutoscalerList{}) if obj == nil { return nil, err } label := opts.LabelSelector if label == nil { label = labels.Everything() } list := &v1beta1.HorizontalPodAutoscalerList{} for _, item := range obj.(*v1beta1.HorizontalPodAutoscalerList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } } return list, err }
func (c *FakeConfigMaps) List(opts api.ListOptions) (result *v1.ConfigMapList, err error) { obj, err := c.Fake. Invokes(testing.NewListAction(configmapsResource, c.ns, opts), &v1.ConfigMapList{}) if obj == nil { return nil, err } label := opts.LabelSelector if label == nil { label = labels.Everything() } list := &v1.ConfigMapList{} for _, item := range obj.(*v1.ConfigMapList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } } return list, err }
// LabelSelectorAsSelector converts the LabelSelector api type into a struct that implements // labels.Selector // Note: This function should be kept in sync with the selector methods in pkg/labels/selector.go func LabelSelectorAsSelector(ps *LabelSelector) (labels.Selector, error) { if ps == nil { return labels.Nothing(), nil } if len(ps.MatchLabels)+len(ps.MatchExpressions) == 0 { return labels.Everything(), nil } selector := labels.NewSelector() for k, v := range ps.MatchLabels { r, err := labels.NewRequirement(k, labels.EqualsOperator, sets.NewString(v)) if err != nil { return nil, err } selector = selector.Add(*r) } for _, expr := range ps.MatchExpressions { var op labels.Operator switch expr.Operator { case LabelSelectorOpIn: op = labels.InOperator case LabelSelectorOpNotIn: op = labels.NotInOperator case LabelSelectorOpExists: op = labels.ExistsOperator case LabelSelectorOpDoesNotExist: op = labels.DoesNotExistOperator default: return nil, fmt.Errorf("%q is not a valid pod selector operator", expr.Operator) } r, err := labels.NewRequirement(expr.Key, op, sets.NewString(expr.Values...)) if err != nil { return nil, err } selector = selector.Add(*r) } return selector, nil }