Skip to content

Commit eb8b0b8

Browse files
committed
refactor, resourcetopo informer
1 parent 249890d commit eb8b0b8

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

resourcetopo/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import (
2222
"sync"
2323

2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25+
2526
"k8s.io/apimachinery/pkg/types"
26-
"k8s.io/client-go/tools/cache"
2727
"k8s.io/klog/v2"
2828
)
2929

@@ -151,7 +151,7 @@ func (m *manager) GetNode(meta metav1.TypeMeta, name types.NamespacedName) (Node
151151
return s.GetNode(name)
152152
}
153153

154-
func (m *manager) getOrCreateStorage(typeMeta metav1.TypeMeta, getInformer func(meta metav1.TypeMeta) cache.SharedInformer) (*nodeStorage, error) {
154+
func (m *manager) getOrCreateStorage(typeMeta metav1.TypeMeta, getInformer func(meta metav1.TypeMeta) Informer) (*nodeStorage, error) {
155155
if getInformer == nil {
156156
return nil, fmt.Errorf("unexpected nil getInformer func")
157157
}

resourcetopo/node_storage.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424
"k8s.io/apimachinery/pkg/labels"
2525
"k8s.io/apimachinery/pkg/types"
26-
"k8s.io/client-go/tools/cache"
2726
"k8s.io/klog/v2"
2827
)
2928

@@ -53,7 +52,7 @@ type nodeStorage struct {
5352
namespacedInfo map[string]map[string]*nodeInfo // namespace => name => object info
5453
}
5554

56-
func newNodeStorage(manager *manager, informer cache.SharedInformer, meta metav1.TypeMeta) *nodeStorage {
55+
func newNodeStorage(manager *manager, informer Informer, meta metav1.TypeMeta) *nodeStorage {
5756
s := &nodeStorage{
5857
manager: manager,
5958
meta: meta,

resourcetopo/resourcetopo_utils_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/types"
2929
"k8s.io/client-go/informers"
30-
"k8s.io/client-go/tools/cache"
3130
"k8s.io/klog/v2"
3231
)
3332

@@ -45,7 +44,7 @@ var (
4544
ServiceAccountMeta = metav1.TypeMeta{Kind: "ServiceAccount", APIVersion: "core/v1"}
4645
)
4746

48-
func GetInformer(meta metav1.TypeMeta, k8sInformerFactory informers.SharedInformerFactory) cache.SharedIndexInformer {
47+
func GetInformer(meta metav1.TypeMeta, k8sInformerFactory informers.SharedInformerFactory) Informer {
4948
gvk := meta.String()
5049
switch gvk {
5150
case PodMeta.String():
@@ -78,7 +77,7 @@ func buildManagerConfig(config *TopologyConfig) *ManagerConfig {
7877

7978
func buildInspectTopoConfig(k8sInformerFactory informers.SharedInformerFactory) *TopologyConfig {
8079
return &TopologyConfig{
81-
GetInformer: func(meta metav1.TypeMeta) cache.SharedInformer {
80+
GetInformer: func(meta metav1.TypeMeta) Informer {
8281
return GetInformer(meta, k8sInformerFactory)
8382
},
8483
Resolvers: []RelationResolver{
@@ -121,7 +120,7 @@ func buildInspectTopoConfig(k8sInformerFactory informers.SharedInformerFactory)
121120

122121
func buildClusterTest(k8sInformerFactory informers.SharedInformerFactory) *TopologyConfig {
123122
return &TopologyConfig{
124-
GetInformer: func(meta metav1.TypeMeta) cache.SharedInformer {
123+
GetInformer: func(meta metav1.TypeMeta) Informer {
125124
return GetInformer(meta, k8sInformerFactory)
126125
},
127126
Resolvers: []RelationResolver{
@@ -163,12 +162,11 @@ func buildClusterTest(k8sInformerFactory informers.SharedInformerFactory) *Topol
163162

164163
func buildSvcPodTest(k8sInformerFactory informers.SharedInformerFactory) *TopologyConfig {
165164
return &TopologyConfig{
166-
GetInformer: func(meta metav1.TypeMeta) cache.SharedInformer {
165+
GetInformer: func(meta metav1.TypeMeta) Informer {
167166
return GetInformer(meta, k8sInformerFactory)
168167
},
169168
Resolvers: []RelationResolver{
170169
{
171-
172170
PreMeta: ServiceMeta,
173171
PostMetas: []metav1.TypeMeta{PodMeta},
174172
ReverseNotice: []metav1.TypeMeta{PodMeta},
@@ -194,7 +192,7 @@ func buildSvcPodTest(k8sInformerFactory informers.SharedInformerFactory) *Topolo
194192

195193
func buildDeployTopoConfig(k8sInformerFactory informers.SharedInformerFactory) *TopologyConfig {
196194
return &TopologyConfig{
197-
GetInformer: func(meta metav1.TypeMeta) cache.SharedInformer {
195+
GetInformer: func(meta metav1.TypeMeta) Informer {
198196
return GetInformer(meta, k8sInformerFactory)
199197
},
200198
Resolvers: []RelationResolver{

resourcetopo/types.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@ package resourcetopo
1919
import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
"k8s.io/apimachinery/pkg/types"
22-
"k8s.io/client-go/tools/cache"
22+
toolscache "k8s.io/client-go/tools/cache"
2323
)
2424

25+
type Informer interface {
26+
// AddEventHandler adds an event handler which will process related resource toppologies
27+
AddEventHandler(handler toolscache.ResourceEventHandler)
28+
}
29+
2530
// TopologyConfig offers a way to describe the relation among kubernetes or kubernetes-likely resource.
2631
type TopologyConfig struct {
2732
// GetInformer return a working SharedInformer for objects of meta type
28-
GetInformer func(meta metav1.TypeMeta) cache.SharedInformer
33+
GetInformer func(meta metav1.TypeMeta) Informer
2934
Resolvers []RelationResolver
3035
Discoverers []VirtualResourceDiscoverer
3136
}

0 commit comments

Comments
 (0)