Skip to content

Commit ba78c55

Browse files
authored
Merge pull request #925 from l1b0k/feat/node
Feat/node
2 parents 8afb997 + f9ad19d commit ba78c55

File tree

17 files changed

+428
-166
lines changed

17 files changed

+428
-166
lines changed

daemon/builder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ func (b *NetworkServiceBuilder) InitK8S() *NetworkServiceBuilder {
124124
b.service.ipamType = types.IPAMTypeCRD
125125
}
126126

127-
if utils.ISLinJunNode(b.service.k8s.Node().Labels) {
128-
serviceLog.Info("linjun node detected")
127+
if utils.ISLingJunNode(b.service.k8s.Node().Labels) {
128+
serviceLog.Info("lingjun node detected")
129129
b.eflo = true
130130
}
131131
return b

hack/update-codegen.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-
3535
# --output-base because this script should also be able to run inside the vendor dir of
3636
# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
3737
# instead of the $GOPATH directly. For normal projects this can be dropped.
38-
bash "${CODEGEN_PKG}"/generate-groups.sh "deepcopy,client,informer,lister" \
38+
bash "${CODEGEN_PKG}"/generate-groups.sh "client,informer,lister" \
3939
${MODULE}/${OUTPUT_PKG} ${MODULE}/${APIS_PKG} \
4040
${GROUP_VERSION} \
4141
--go-header-file "${SCRIPT_ROOT}"/hack/boilerplate.go.txt
42+
43+
# Move generated code to the correct location
44+
rm -rf "${OUTPUT_PKG}"
45+
mv "${GOPATH}/src/${MODULE}/${OUTPUT_PKG}" ./pkg/

pkg/controller/common/types_default.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929
func NewNodeInfo(node *corev1.Node) (*NodeInfo, error) {
3030
res := &NodeInfo{NodeName: node.Name}
3131

32-
if utils.ISLinJunNode(node.Labels) {
32+
if utils.ISLingJunNode(node.Labels) {
3333
res.InstanceID = node.Spec.ProviderID
3434
} else {
3535
ids := strings.Split(node.Spec.ProviderID, ".")

pkg/controller/multi-ip/node/pool.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (n *ReconcileNode) Reconcile(ctx context.Context, request reconcile.Request
254254
return reconcile.Result{}, nil
255255
}
256256

257-
if utils.ISLinJunNode(node.Labels) {
257+
if utils.ISLingJunNode(node.Labels) {
258258
ctx = aliyunClient.SetBackendAPI(ctx, aliyunClient.BackendAPIEFLO)
259259
} else {
260260
ctx = aliyunClient.SetBackendAPI(ctx, aliyunClient.BackendAPIECS)

pkg/controller/node/node.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (r *ReconcileNode) Reconcile(ctx context.Context, request reconcile.Request
147147
r.record.Event(k8sNode, "Warning", "ConfigError", err.Error())
148148
}
149149
}()
150-
if utils.ISLinJunNode(k8sNode.Labels) {
150+
if utils.ISLingJunNode(k8sNode.Labels) {
151151
if !r.supportEFLO {
152152
return reconcile.Result{}, nil
153153
}
@@ -392,7 +392,7 @@ func (r *ReconcileNode) handleEFLO(ctx context.Context, k8sNode *corev1.Node, no
392392
node.Annotations = make(map[string]string)
393393
}
394394
node.Labels["name"] = k8sNode.Name
395-
node.Labels[types.LinJunNodeLabelKey] = "true"
395+
node.Labels[types.LingJunNodeLabelKey] = "true"
396396

397397
prev := node.Labels[types.ExclusiveENIModeLabel]
398398
if prev == "" {

pkg/controller/node/node_controller_test.go

Lines changed: 68 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,9 @@ var _ = Describe("Node Controller", func() {
134134

135135
Context("Shared ENI Mode (Default)", func() {
136136
It("should create Node CR with correct NetworkCardsCount", func() {
137-
k8sNode := testutil.CreateTestNode(nodeName)
138-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "ecs.g7.large"
137+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
138+
WithInstanceType("ecs.g7.large").
139+
Build()
139140
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
140141

141142
reconciler := createReconciler(true, false)
@@ -154,20 +155,20 @@ var _ = Describe("Node Controller", func() {
154155

155156
Context("Exclusive ENI Mode", func() {
156157
It("should create Node CR with NetworkCardsCount and correct allocatable resources", func() {
157-
k8sNode := testutil.CreateTestNode(nodeName)
158-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "ecs.g7.large"
159-
k8sNode.Labels["k8s.aliyun.com/exclusive-mode-eni-type"] = "eniOnly"
158+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
159+
WithInstanceType("ecs.g7.large").
160+
WithExclusiveENIMode().
161+
Build()
160162
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
161163

162-
resource := testutil.CreateTestNodeCRD(nodeName)
163-
resource.Spec.ENISpec.EnableTrunk = false
164-
resource.Spec.Flavor = []networkv1beta1.Flavor{
165-
{
164+
resource := testutil.NewNodeCRDBuilder(nodeName).
165+
WithEnableTrunk(false).
166+
WithFlavor(networkv1beta1.Flavor{
166167
NetworkInterfaceType: networkv1beta1.ENITypeSecondary,
167168
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
168169
Count: 2,
169-
},
170-
}
170+
}).
171+
Build()
171172
Expect(k8sClient.Create(ctx, resource)).To(Succeed())
172173

173174
resource.Status = networkv1beta1.NodeStatus{
@@ -209,19 +210,19 @@ var _ = Describe("Node Controller", func() {
209210

210211
Context("Trunk ENI Mode", func() {
211212
It("should set trunk annotation and calculate max-available-ip correctly", func() {
212-
k8sNode := testutil.CreateTestNode(nodeName)
213-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "ecs.g7.large"
213+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
214+
WithInstanceType("ecs.g7.large").
215+
Build()
214216
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
215217

216-
resource := testutil.CreateTestNodeCRD(nodeName)
217-
resource.Spec.ENISpec.EnableTrunk = true
218-
resource.Spec.Flavor = []networkv1beta1.Flavor{
219-
{
218+
resource := testutil.NewNodeCRDBuilder(nodeName).
219+
WithEnableTrunk(true).
220+
WithFlavor(networkv1beta1.Flavor{
220221
NetworkInterfaceType: networkv1beta1.ENITypeSecondary,
221222
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
222223
Count: 2,
223-
},
224-
}
224+
}).
225+
Build()
225226
Expect(k8sClient.Create(ctx, resource)).To(Succeed())
226227

227228
resource.Status = networkv1beta1.NodeStatus{
@@ -255,24 +256,26 @@ var _ = Describe("Node Controller", func() {
255256
})
256257

257258
It("should handle multiple flavors with trunk", func() {
258-
k8sNode := testutil.CreateTestNode(nodeName)
259-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "ecs.g7.large"
259+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
260+
WithInstanceType("ecs.g7.large").
261+
Build()
260262
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
261263

262-
resource := testutil.CreateTestNodeCRD(nodeName)
263-
resource.Spec.ENISpec.EnableTrunk = true
264-
resource.Spec.Flavor = []networkv1beta1.Flavor{
265-
{
266-
NetworkInterfaceType: networkv1beta1.ENITypeSecondary,
267-
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
268-
Count: 2,
269-
},
270-
{
271-
NetworkInterfaceType: networkv1beta1.ENITypeTrunk,
272-
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
273-
Count: 1,
274-
},
275-
}
264+
resource := testutil.NewNodeCRDBuilder(nodeName).
265+
WithEnableTrunk(true).
266+
WithFlavor(
267+
networkv1beta1.Flavor{
268+
NetworkInterfaceType: networkv1beta1.ENITypeSecondary,
269+
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
270+
Count: 2,
271+
},
272+
networkv1beta1.Flavor{
273+
NetworkInterfaceType: networkv1beta1.ENITypeTrunk,
274+
NetworkInterfaceTrafficMode: networkv1beta1.NetworkInterfaceTrafficModeStandard,
275+
Count: 1,
276+
},
277+
).
278+
Build()
276279
Expect(k8sClient.Create(ctx, resource)).To(Succeed())
277280

278281
resource.Status = networkv1beta1.NodeStatus{
@@ -313,11 +316,13 @@ var _ = Describe("Node Controller", func() {
313316
nodeName := "test-eflo-node-leni"
314317
defer cleanupNode(ctx, nodeName)
315318

316-
k8sNode := testutil.CreateEFLONode(nodeName)
317-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "eflo.instance"
318-
k8sNode.Spec.ProviderID = "instanceID-leni"
319-
k8sNode.Labels["topology.kubernetes.io/region"] = "regionID"
320-
k8sNode.Labels["topology.kubernetes.io/zone"] = "zoneID"
319+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
320+
WithEFLO().
321+
WithInstanceType("eflo.instance").
322+
WithProviderID("instanceID-leni").
323+
WithRegion("regionID").
324+
WithZone("zoneID").
325+
Build()
321326
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
322327

323328
efloClient.On("GetNodeInfoForPod", mock.Anything, "instanceID-leni").Return(&eflo.Content{
@@ -362,10 +367,12 @@ var _ = Describe("Node Controller", func() {
362367
nodeName := "test-eflo-node-ecs"
363368
defer cleanupNode(ctx, nodeName)
364369

365-
k8sNode := testutil.CreateEFLONode(nodeName)
366-
k8sNode.Labels["k8s.aliyun.com/exclusive-mode-eni-type"] = "eniOnly"
367-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "eflo.instance"
368-
k8sNode.Spec.ProviderID = "instanceID-ecs"
370+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
371+
WithEFLO().
372+
WithExclusiveENIMode().
373+
WithInstanceType("eflo.instance").
374+
WithProviderID("instanceID-ecs").
375+
Build()
369376
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
370377

371378
efloController := mocks.NewEFLOControl(GinkgoT())
@@ -412,10 +419,12 @@ var _ = Describe("Node Controller", func() {
412419
nodeName := "test-eflo-node-ecs-hd"
413420
defer cleanupNode(ctx, nodeName)
414421

415-
k8sNode := testutil.CreateEFLONode(nodeName)
416-
k8sNode.Labels["k8s.aliyun.com/exclusive-mode-eni-type"] = "eniOnly"
417-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "eflo.instance"
418-
k8sNode.Spec.ProviderID = "instanceID-ecs-hd"
422+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
423+
WithEFLO().
424+
WithExclusiveENIMode().
425+
WithInstanceType("eflo.instance").
426+
WithProviderID("instanceID-ecs-hd").
427+
Build()
419428
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
420429

421430
efloController := mocks.NewEFLOControl(GinkgoT())
@@ -460,10 +469,12 @@ var _ = Describe("Node Controller", func() {
460469
nodeName := "test-eflo-node-eno-hd"
461470
defer cleanupNode(ctx, nodeName)
462471

463-
k8sNode := testutil.CreateEFLONode(nodeName)
464-
k8sNode.Labels["k8s.aliyun.com/exclusive-mode-eni-type"] = "eniOnly"
465-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "eflo.instance"
466-
k8sNode.Spec.ProviderID = "instanceID-eno-hd"
472+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
473+
WithEFLO().
474+
WithExclusiveENIMode().
475+
WithInstanceType("eflo.instance").
476+
WithProviderID("instanceID-eno-hd").
477+
Build()
467478
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
468479

469480
efloClient.On("GetNodeInfoForPod", mock.Anything, "instanceID-eno-hd").Return(&eflo.Content{
@@ -496,9 +507,11 @@ var _ = Describe("Node Controller", func() {
496507
nodeName := "test-eflo-node-error"
497508
defer cleanupNode(ctx, nodeName)
498509

499-
k8sNode := testutil.CreateEFLONode(nodeName)
500-
k8sNode.Labels["node.kubernetes.io/instance-type"] = "eflo.instance"
501-
k8sNode.Spec.ProviderID = "instanceID-error"
510+
k8sNode := testutil.NewK8sNodeBuilder(nodeName).
511+
WithEFLO().
512+
WithInstanceType("eflo.instance").
513+
WithProviderID("instanceID-error").
514+
Build()
502515
Expect(k8sClient.Create(ctx, k8sNode)).To(Succeed())
503516

504517
openAPI.On("DescribeNetworkInterfaceV2", mock.Anything, mock.Anything).Return([]*aliyunClient.NetworkInterface{

pkg/controller/node/predict.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func (p *predicateForNodeEvent) predicateNode(o client.Object) bool {
7373
return false
7474
}
7575

76-
if !p.supportEFLO && utils.ISLinJunNode(node.Labels) {
76+
if !p.supportEFLO && utils.ISLingJunNode(node.Labels) {
7777
return false
7878
}
7979

pkg/controller/pod-eni/eni_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ func (m *ReconcilePodENI) attachENI(ctx context.Context, podENI *v1beta1.PodENI,
711711
}
712712

713713
var ecsHighDensity bool
714-
if utils.ISLinJunNode(node.Labels) {
714+
if utils.ISLingJunNode(node.Labels) {
715715
crNode := &v1beta1.Node{}
716716
err := m.client.Get(ctx, k8stypes.NamespacedName{Name: nodeName}, crNode)
717717
if err != nil {
@@ -1114,7 +1114,7 @@ func (m *ReconcilePodENI) getNetworkCardsCount(ctx context.Context, nodeName str
11141114
return -1
11151115
}
11161116

1117-
if utils.ISLinJunNode(crdNode.Labels) {
1117+
if utils.ISLingJunNode(crdNode.Labels) {
11181118
return 0
11191119
}
11201120

0 commit comments

Comments
 (0)