forked from kubernetes/kubernetes
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request kubernetes#50871 from liyinan926/lister-v1beta2
Automatic merge from submit-queue (batch tested with PRs 50693, 50831, 47506, 49119, 50871) Added lister expansions for DaemonSet, Deployment, ReplicaSet, and StatefulSet for apps/v1beta2 **What this PR does / why we need it**: This PR copies list expansions for `DaemonSet`, `Deployment`, `ReplicaSet`, and `StatefulSet` to `apps/v1beta2` from `extensions/v1beta1` and `apps/v1beta1`. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes kubernetes#50870. **Special notes for your reviewer**: @kow3ns @janetkuo **Release note**: ```release-note NONE ```
- Loading branch information
Showing
6 changed files
with
339 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
113 changes: 113 additions & 0 deletions
113
staging/src/k8s.io/client-go/listers/apps/v1beta2/daemonset_expansion.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
/* | ||
Copyright 2017 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 v1beta2 | ||
|
||
import ( | ||
"fmt" | ||
|
||
apps "k8s.io/api/apps/v1beta2" | ||
"k8s.io/api/core/v1" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
"k8s.io/apimachinery/pkg/labels" | ||
) | ||
|
||
// DaemonSetListerExpansion allows custom methods to be added to | ||
// DaemonSetLister. | ||
type DaemonSetListerExpansion interface { | ||
GetPodDaemonSets(pod *v1.Pod) ([]*apps.DaemonSet, error) | ||
GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*apps.DaemonSet, error) | ||
} | ||
|
||
// DaemonSetNamespaceListerExpansion allows custom methods to be added to | ||
// DaemonSetNamespaceLister. | ||
type DaemonSetNamespaceListerExpansion interface{} | ||
|
||
// GetPodDaemonSets returns a list of DaemonSets that potentially match a pod. | ||
// Only the one specified in the Pod's ControllerRef will actually manage it. | ||
// Returns an error only if no matching DaemonSets are found. | ||
func (s *daemonSetLister) GetPodDaemonSets(pod *v1.Pod) ([]*apps.DaemonSet, error) { | ||
var selector labels.Selector | ||
var daemonSet *apps.DaemonSet | ||
|
||
if len(pod.Labels) == 0 { | ||
return nil, fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name) | ||
} | ||
|
||
list, err := s.DaemonSets(pod.Namespace).List(labels.Everything()) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var daemonSets []*apps.DaemonSet | ||
for i := range list { | ||
daemonSet = list[i] | ||
if daemonSet.Namespace != pod.Namespace { | ||
continue | ||
} | ||
selector, err = metav1.LabelSelectorAsSelector(daemonSet.Spec.Selector) | ||
if err != nil { | ||
// this should not happen if the DaemonSet passed validation | ||
return nil, err | ||
} | ||
|
||
// If a daemonSet with a nil or empty selector creeps in, it should match nothing, not everything. | ||
if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { | ||
continue | ||
} | ||
daemonSets = append(daemonSets, daemonSet) | ||
} | ||
|
||
if len(daemonSets) == 0 { | ||
return nil, fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) | ||
} | ||
|
||
return daemonSets, nil | ||
} | ||
|
||
// GetHistoryDaemonSets returns a list of DaemonSets that potentially | ||
// match a ControllerRevision. Only the one specified in the ControllerRevision's ControllerRef | ||
// will actually manage it. | ||
// Returns an error only if no matching DaemonSets are found. | ||
func (s *daemonSetLister) GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*apps.DaemonSet, error) { | ||
if len(history.Labels) == 0 { | ||
return nil, fmt.Errorf("no DaemonSet found for ControllerRevision %s because it has no labels", history.Name) | ||
} | ||
|
||
list, err := s.DaemonSets(history.Namespace).List(labels.Everything()) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var daemonSets []*apps.DaemonSet | ||
for _, ds := range list { | ||
selector, err := metav1.LabelSelectorAsSelector(ds.Spec.Selector) | ||
if err != nil { | ||
return nil, fmt.Errorf("invalid label selector: %v", err) | ||
} | ||
// If a DaemonSet with a nil or empty selector creeps in, it should match nothing, not everything. | ||
if selector.Empty() || !selector.Matches(labels.Set(history.Labels)) { | ||
continue | ||
} | ||
daemonSets = append(daemonSets, ds) | ||
} | ||
|
||
if len(daemonSets) == 0 { | ||
return nil, fmt.Errorf("could not find DaemonSets for ControllerRevision %s in namespace %s with labels: %v", history.Name, history.Namespace, history.Labels) | ||
} | ||
|
||
return daemonSets, nil | ||
} |
70 changes: 70 additions & 0 deletions
70
staging/src/k8s.io/client-go/listers/apps/v1beta2/deployment_expansion.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/* | ||
Copyright 2017 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 v1beta2 | ||
|
||
import ( | ||
"fmt" | ||
|
||
apps "k8s.io/api/apps/v1beta2" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
"k8s.io/apimachinery/pkg/labels" | ||
) | ||
|
||
// DeploymentListerExpansion allows custom methods to be added to | ||
// DeploymentLister. | ||
type DeploymentListerExpansion interface { | ||
GetDeploymentsForReplicaSet(rs *apps.ReplicaSet) ([]*apps.Deployment, error) | ||
} | ||
|
||
// DeploymentNamespaceListerExpansion allows custom methods to be added to | ||
// DeploymentNamespaceLister. | ||
type DeploymentNamespaceListerExpansion interface{} | ||
|
||
// GetDeploymentsForReplicaSet returns a list of Deployments that potentially | ||
// match a ReplicaSet. Only the one specified in the ReplicaSet's ControllerRef | ||
// will actually manage it. | ||
// Returns an error only if no matching Deployments are found. | ||
func (s *deploymentLister) GetDeploymentsForReplicaSet(rs *apps.ReplicaSet) ([]*apps.Deployment, error) { | ||
if len(rs.Labels) == 0 { | ||
return nil, fmt.Errorf("no deployments found for ReplicaSet %v because it has no labels", rs.Name) | ||
} | ||
|
||
// 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 nil, err | ||
} | ||
|
||
var deployments []*apps.Deployment | ||
for _, d := range dList { | ||
selector, err := metav1.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 { | ||
return nil, fmt.Errorf("could not find deployments set for ReplicaSet %s in namespace %s with labels: %v", rs.Name, rs.Namespace, rs.Labels) | ||
} | ||
|
||
return deployments, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
staging/src/k8s.io/client-go/listers/apps/v1beta2/replicaset_expansion.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/* | ||
Copyright 2017 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 v1beta2 | ||
|
||
import ( | ||
"fmt" | ||
|
||
apps "k8s.io/api/apps/v1beta2" | ||
"k8s.io/api/core/v1" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
"k8s.io/apimachinery/pkg/labels" | ||
) | ||
|
||
// ReplicaSetListerExpansion allows custom methods to be added to | ||
// ReplicaSetLister. | ||
type ReplicaSetListerExpansion interface { | ||
GetPodReplicaSets(pod *v1.Pod) ([]*apps.ReplicaSet, error) | ||
} | ||
|
||
// ReplicaSetNamespaceListerExpansion allows custom methods to be added to | ||
// ReplicaSetNamespaceLister. | ||
type ReplicaSetNamespaceListerExpansion interface{} | ||
|
||
// GetPodReplicaSets returns a list of ReplicaSets that potentially match a pod. | ||
// Only the one specified in the Pod's ControllerRef will actually manage it. | ||
// Returns an error only if no matching ReplicaSets are found. | ||
func (s *replicaSetLister) GetPodReplicaSets(pod *v1.Pod) ([]*apps.ReplicaSet, error) { | ||
if len(pod.Labels) == 0 { | ||
return nil, fmt.Errorf("no ReplicaSets found for pod %v because it has no labels", pod.Name) | ||
} | ||
|
||
list, err := s.ReplicaSets(pod.Namespace).List(labels.Everything()) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var rss []*apps.ReplicaSet | ||
for _, rs := range list { | ||
if rs.Namespace != pod.Namespace { | ||
continue | ||
} | ||
selector, err := metav1.LabelSelectorAsSelector(rs.Spec.Selector) | ||
if err != nil { | ||
return nil, fmt.Errorf("invalid selector: %v", err) | ||
} | ||
|
||
// If a ReplicaSet with a nil or empty selector creeps in, it should match nothing, not everything. | ||
if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { | ||
continue | ||
} | ||
rss = append(rss, rs) | ||
} | ||
|
||
if len(rss) == 0 { | ||
return nil, fmt.Errorf("could not find ReplicaSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) | ||
} | ||
|
||
return rss, nil | ||
} |
Oops, something went wrong.