...
1
16
17 package v1
18
19 import (
20 "fmt"
21
22 apps "k8s.io/api/apps/v1"
23 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 "k8s.io/apimachinery/pkg/labels"
26 )
27
28
29
30 type DaemonSetListerExpansion interface {
31 GetPodDaemonSets(pod *v1.Pod) ([]*apps.DaemonSet, error)
32 GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*apps.DaemonSet, error)
33 }
34
35
36
37 type DaemonSetNamespaceListerExpansion interface{}
38
39
40
41
42 func (s *daemonSetLister) GetPodDaemonSets(pod *v1.Pod) ([]*apps.DaemonSet, error) {
43 var selector labels.Selector
44 var daemonSet *apps.DaemonSet
45
46 if len(pod.Labels) == 0 {
47 return nil, fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name)
48 }
49
50 list, err := s.DaemonSets(pod.Namespace).List(labels.Everything())
51 if err != nil {
52 return nil, err
53 }
54
55 var daemonSets []*apps.DaemonSet
56 for i := range list {
57 daemonSet = list[i]
58 if daemonSet.Namespace != pod.Namespace {
59 continue
60 }
61 selector, err = metav1.LabelSelectorAsSelector(daemonSet.Spec.Selector)
62 if err != nil {
63
64 continue
65 }
66
67
68 if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) {
69 continue
70 }
71 daemonSets = append(daemonSets, daemonSet)
72 }
73
74 if len(daemonSets) == 0 {
75 return nil, fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels)
76 }
77
78 return daemonSets, nil
79 }
80
81
82
83
84
85 func (s *daemonSetLister) GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*apps.DaemonSet, error) {
86 if len(history.Labels) == 0 {
87 return nil, fmt.Errorf("no DaemonSet found for ControllerRevision %s because it has no labels", history.Name)
88 }
89
90 list, err := s.DaemonSets(history.Namespace).List(labels.Everything())
91 if err != nil {
92 return nil, err
93 }
94
95 var daemonSets []*apps.DaemonSet
96 for _, ds := range list {
97 selector, err := metav1.LabelSelectorAsSelector(ds.Spec.Selector)
98 if err != nil {
99
100 continue
101 }
102
103 if selector.Empty() || !selector.Matches(labels.Set(history.Labels)) {
104 continue
105 }
106 daemonSets = append(daemonSets, ds)
107 }
108
109 if len(daemonSets) == 0 {
110 return nil, fmt.Errorf("could not find DaemonSets for ControllerRevision %s in namespace %s with labels: %v", history.Name, history.Namespace, history.Labels)
111 }
112
113 return daemonSets, nil
114 }
115
View as plain text