1
1
// Copyright 2018 Microsoft. All rights reserved.
2
2
// MIT License
3
- package npm
3
+ package controller
4
4
5
5
import (
6
6
"encoding/json"
9
9
npmconfig "github.com/Azure/azure-container-networking/npm/config"
10
10
controllersv2 "github.com/Azure/azure-container-networking/npm/pkg/controlplane/controllers/v2"
11
11
"github.com/Azure/azure-container-networking/npm/pkg/dataplane"
12
+ "github.com/Azure/azure-container-networking/npm/pkg/models"
12
13
"github.com/Azure/azure-container-networking/npm/pkg/transport"
13
14
"github.com/pkg/errors"
14
15
"k8s.io/apimachinery/pkg/version"
@@ -17,6 +18,8 @@ import (
17
18
"k8s.io/klog"
18
19
)
19
20
21
+ var aiMetadata string //nolint // aiMetadata is set in Makefile
22
+
20
23
type NetworkPolicyServer struct {
21
24
config npmconfig.Config
22
25
@@ -25,20 +28,20 @@ type NetworkPolicyServer struct {
25
28
26
29
// Informers are the Kubernetes Informer
27
30
// https://pkg.go.dev/k8s.io/client-go/informers
28
- Informers
31
+ models. Informers
29
32
30
33
// Controllers for handling Kubernetes resource watcher events
31
- K8SControllersV2
34
+ models. K8SControllersV2
32
35
33
36
// Azure-specific variables
34
- AzureConfig
37
+ models. AzureConfig
35
38
}
36
39
37
40
var (
38
- ErrInformerFactoryNil = errors .New ("informer factory is nil" )
39
- ErrTransportManagerNil = errors .New ("transport manager is nil" )
40
- ErrK8SServerVersionNil = errors .New ("k8s server version is nil" )
41
- ErrInformerSyncFailure = errors .New ("informer sync failure " )
41
+ ErrInformerFactoryNil = errors .New ("informer factory is nil" )
42
+ ErrTransportManagerNil = errors .New ("transport manager is nil" )
43
+ ErrK8SServerVersionNil = errors .New ("k8s server version is nil" )
44
+ ErrDataplaneNotInitialized = errors .New ("dataplane is not initialized " )
42
45
)
43
46
44
47
func NewNetworkPolicyServer (
@@ -70,87 +73,87 @@ func NewNetworkPolicyServer(
70
73
n := & NetworkPolicyServer {
71
74
config : config ,
72
75
tm : mgr ,
73
- Informers : Informers {
74
- informerFactory : informerFactory ,
75
- podInformer : informerFactory .Core ().V1 ().Pods (),
76
- nsInformer : informerFactory .Core ().V1 ().Namespaces (),
77
- npInformer : informerFactory .Networking ().V1 ().NetworkPolicies (),
76
+ Informers : models. Informers {
77
+ InformerFactory : informerFactory ,
78
+ PodInformer : informerFactory .Core ().V1 ().Pods (),
79
+ NsInformer : informerFactory .Core ().V1 ().Namespaces (),
80
+ NpInformer : informerFactory .Networking ().V1 ().NetworkPolicies (),
78
81
},
79
- AzureConfig : AzureConfig {
80
- k8sServerVersion : k8sServerVersion ,
81
- NodeName : GetNodeName (),
82
- version : npmVersion ,
82
+ AzureConfig : models. AzureConfig {
83
+ K8sServerVersion : k8sServerVersion ,
84
+ NodeName : models . GetNodeName (),
85
+ Version : npmVersion ,
83
86
TelemetryEnabled : true ,
84
87
},
85
88
}
86
89
87
- n .npmNamespaceCacheV2 = & controllersv2.NpmNamespaceCache {NsMap : make (map [string ]* controllersv2.Namespace )}
88
- n .podControllerV2 = controllersv2 .NewPodController (n .podInformer , dp , n .npmNamespaceCacheV2 )
89
- n .namespaceControllerV2 = controllersv2 .NewNamespaceController (n .nsInformer , dp , n .npmNamespaceCacheV2 )
90
- n .netPolControllerV2 = controllersv2 .NewNetworkPolicyController (n .npInformer , dp )
90
+ n .NpmNamespaceCacheV2 = & controllersv2.NpmNamespaceCache {NsMap : make (map [string ]* controllersv2.Namespace )}
91
+ n .PodControllerV2 = controllersv2 .NewPodController (n .PodInformer , dp , n .NpmNamespaceCacheV2 )
92
+ n .NamespaceControllerV2 = controllersv2 .NewNamespaceController (n .NsInformer , dp , n .NpmNamespaceCacheV2 )
93
+ n .NetPolControllerV2 = controllersv2 .NewNetworkPolicyController (n .NpInformer , dp )
91
94
92
95
return n , nil
93
96
}
94
97
95
98
func (n * NetworkPolicyServer ) MarshalJSON () ([]byte , error ) {
96
- m := map [CacheKey ]json.RawMessage {}
99
+ m := map [models. CacheKey ]json.RawMessage {}
97
100
98
101
var npmNamespaceCacheRaw []byte
99
102
var err error
100
- npmNamespaceCacheRaw , err = json .Marshal (n .npmNamespaceCacheV2 )
103
+ npmNamespaceCacheRaw , err = json .Marshal (n .NpmNamespaceCacheV2 )
101
104
102
105
if err != nil {
103
- return nil , errors .Errorf ("%s: %v" , errMarshalNPMCache , err )
106
+ return nil , errors .Errorf ("%s: %v" , models . ErrMarshalNPMCache , err )
104
107
}
105
- m [NsMap ] = npmNamespaceCacheRaw
108
+ m [models . NsMap ] = npmNamespaceCacheRaw
106
109
107
110
var podControllerRaw []byte
108
- podControllerRaw , err = json .Marshal (n .podControllerV2 )
111
+ podControllerRaw , err = json .Marshal (n .PodControllerV2 )
109
112
110
113
if err != nil {
111
- return nil , errors .Errorf ("%s: %v" , errMarshalNPMCache , err )
114
+ return nil , errors .Errorf ("%s: %v" , models . ErrMarshalNPMCache , err )
112
115
}
113
- m [PodMap ] = podControllerRaw
116
+ m [models . PodMap ] = podControllerRaw
114
117
115
118
nodeNameRaw , err := json .Marshal (n .NodeName )
116
119
if err != nil {
117
- return nil , errors .Errorf ("%s: %v" , errMarshalNPMCache , err )
120
+ return nil , errors .Errorf ("%s: %v" , models . ErrMarshalNPMCache , err )
118
121
}
119
- m [NodeName ] = nodeNameRaw
122
+ m [models . NodeName ] = nodeNameRaw
120
123
121
124
npmCacheRaw , err := json .Marshal (m )
122
125
if err != nil {
123
- return nil , errors .Errorf ("%s: %v" , errMarshalNPMCache , err )
126
+ return nil , errors .Errorf ("%s: %v" , models . ErrMarshalNPMCache , err )
124
127
}
125
128
126
129
return npmCacheRaw , nil
127
130
}
128
131
129
132
func (n * NetworkPolicyServer ) GetAppVersion () string {
130
- return n .version
133
+ return n .Version
131
134
}
132
135
133
136
func (n * NetworkPolicyServer ) Start (config npmconfig.Config , stopCh <- chan struct {}) error {
134
- // Starts all informers manufactured by n's informerFactory .
135
- n .informerFactory .Start (stopCh )
137
+ // Starts all informers manufactured by n's InformerFactory .
138
+ n .InformerFactory .Start (stopCh )
136
139
137
140
// Wait for the initial sync of local cache.
138
- if ! cache .WaitForCacheSync (stopCh , n .podInformer .Informer ().HasSynced ) {
139
- return fmt .Errorf ("Pod informer error: %w" , ErrInformerSyncFailure )
141
+ if ! cache .WaitForCacheSync (stopCh , n .PodInformer .Informer ().HasSynced ) {
142
+ return fmt .Errorf ("Pod informer error: %w" , models . ErrInformerSyncFailure )
140
143
}
141
144
142
- if ! cache .WaitForCacheSync (stopCh , n .nsInformer .Informer ().HasSynced ) {
143
- return fmt .Errorf ("Namespace informer error: %w" , ErrInformerSyncFailure )
145
+ if ! cache .WaitForCacheSync (stopCh , n .NsInformer .Informer ().HasSynced ) {
146
+ return fmt .Errorf ("Namespace informer error: %w" , models . ErrInformerSyncFailure )
144
147
}
145
148
146
- if ! cache .WaitForCacheSync (stopCh , n .npInformer .Informer ().HasSynced ) {
147
- return fmt .Errorf ("NetworkPolicy informer error: %w" , ErrInformerSyncFailure )
149
+ if ! cache .WaitForCacheSync (stopCh , n .NpInformer .Informer ().HasSynced ) {
150
+ return fmt .Errorf ("NetworkPolicy informer error: %w" , models . ErrInformerSyncFailure )
148
151
}
149
152
150
153
// start v2 NPM controllers after synced
151
- go n .podControllerV2 .Run (stopCh )
152
- go n .namespaceControllerV2 .Run (stopCh )
153
- go n .netPolControllerV2 .Run (stopCh )
154
+ go n .PodControllerV2 .Run (stopCh )
155
+ go n .NamespaceControllerV2 .Run (stopCh )
156
+ go n .NetPolControllerV2 .Run (stopCh )
154
157
155
158
// start the transport layer (gRPC) server
156
159
// We block the main thread here until the server is stopped.
0 commit comments