Skip to content

Commit 8afb997

Browse files
authored
Merge pull request #924 from l1b0k/feat/node
feat(node): add NetworkCards field to NodeCap and implement deepcopy …
2 parents 63f44ed + 800f9b9 commit 8afb997

File tree

8 files changed

+794
-716
lines changed

8 files changed

+794
-716
lines changed

pkg/apis/crds/network.alibabacloud.com_nodes.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ spec:
125125
type: integer
126126
memberAdapterLimit:
127127
type: integer
128+
networkCards:
129+
items:
130+
properties:
131+
index:
132+
type: integer
133+
type: object
134+
type: array
135+
networkCardsCount:
136+
type: integer
128137
totalAdapters:
129138
type: integer
130139
type: object

pkg/apis/crds/register.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func getCRD(name string) apiextensionsv1.CustomResourceDefinition {
5858
version = "v0.1.0"
5959
case CRDNode:
6060
crdBytes = crdsNode
61-
version = "v0.5.0"
61+
version = "v0.6.0"
6262
case CRDNodeRuntime:
6363
crdBytes = crdsNodeRuntime
6464
version = "v0.1.0"

pkg/apis/network.alibabacloud.com/v1beta1/node_types.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,21 @@ type NodeMetadata struct {
6060
}
6161

6262
type NodeCap struct {
63-
Adapters int `json:"adapters,omitempty"`
64-
EriQuantity int `json:"eriQuantity,omitempty"`
65-
TotalAdapters int `json:"totalAdapters,omitempty"`
66-
IPv4PerAdapter int `json:"ipv4PerAdapter,omitempty"`
67-
IPv6PerAdapter int `json:"ipv6PerAdapter,omitempty"`
68-
MemberAdapterLimit int `json:"memberAdapterLimit,omitempty"`
69-
MaxMemberAdapterLimit int `json:"maxMemberAdapterLimit,omitempty"`
70-
InstanceBandwidthRx int `json:"instanceBandwidthRx,omitempty"`
71-
InstanceBandwidthTx int `json:"instanceBandwidthTx,omitempty"`
63+
Adapters int `json:"adapters,omitempty"`
64+
EriQuantity int `json:"eriQuantity,omitempty"`
65+
TotalAdapters int `json:"totalAdapters,omitempty"`
66+
IPv4PerAdapter int `json:"ipv4PerAdapter,omitempty"`
67+
IPv6PerAdapter int `json:"ipv6PerAdapter,omitempty"`
68+
MemberAdapterLimit int `json:"memberAdapterLimit,omitempty"`
69+
MaxMemberAdapterLimit int `json:"maxMemberAdapterLimit,omitempty"`
70+
InstanceBandwidthRx int `json:"instanceBandwidthRx,omitempty"`
71+
InstanceBandwidthTx int `json:"instanceBandwidthTx,omitempty"`
72+
NetworkCards []NetworkCard `json:"networkCards,omitempty"`
73+
NetworkCardsCount *int `json:"networkCardsCount,omitempty"`
74+
}
75+
76+
type NetworkCard struct {
77+
Index int `json:"index,omitempty"`
7278
}
7379

7480
type ENISpec struct {

pkg/apis/network.alibabacloud.com/v1beta1/zz_generated.deepcopy.go

Lines changed: 26 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/controller/node/node.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,7 @@ func (r *ReconcileNode) createOrUpdate(ctx context.Context, k8sNode *corev1.Node
183183
return err
184184
}
185185

186-
if node.Spec.NodeMetadata.InstanceType != nodeInfo.InstanceType ||
187-
node.Spec.NodeMetadata.InstanceID != nodeInfo.InstanceID ||
188-
node.Spec.NodeMetadata.ZoneID != nodeInfo.ZoneID ||
189-
node.Spec.NodeMetadata.RegionID != nodeInfo.RegionID {
186+
if needUpdate(node, nodeInfo) {
190187

191188
node.Spec.NodeMetadata = networkv1beta1.NodeMetadata{
192189
InstanceType: nodeInfo.InstanceType,
@@ -210,7 +207,14 @@ func (r *ReconcileNode) createOrUpdate(ctx context.Context, k8sNode *corev1.Node
210207
MemberAdapterLimit: limit.MemberAdapterLimit,
211208
IPv4PerAdapter: limit.IPv4PerAdapter,
212209
MaxMemberAdapterLimit: limit.MaxMemberAdapterLimit,
210+
NetworkCards: lo.Map(limit.NetworkCards, func(item aliyunClient.NetworkCard, index int) networkv1beta1.NetworkCard {
211+
return networkv1beta1.NetworkCard{
212+
Index: item.Index,
213+
}
214+
}),
213215
}
216+
217+
node.Spec.NodeCap.NetworkCardsCount = ptr.To(len(node.Spec.NodeCap.NetworkCards))
214218
}
215219

216220
update := node.DeepCopy()
@@ -403,16 +407,16 @@ func (r *ReconcileNode) handleEFLO(ctx context.Context, k8sNode *corev1.Node, no
403407
return reconcile.Result{}, err
404408
}
405409

406-
if node.Spec.NodeMetadata.InstanceID != nodeInfo.InstanceID ||
407-
node.Spec.NodeMetadata.InstanceType != nodeInfo.InstanceType ||
408-
node.Spec.NodeMetadata.ZoneID != nodeInfo.ZoneID ||
409-
node.Spec.NodeMetadata.RegionID != nodeInfo.RegionID {
410+
if needUpdate(node, nodeInfo) {
410411

411412
node.Spec.NodeMetadata.InstanceID = nodeInfo.InstanceID
412413
node.Spec.NodeMetadata.InstanceType = nodeInfo.InstanceType
413414
node.Spec.NodeMetadata.ZoneID = nodeInfo.ZoneID
414415
node.Spec.NodeMetadata.RegionID = nodeInfo.RegionID
415416

417+
node.Spec.NodeCap.NetworkCardsCount = ptr.To(0)
418+
node.Spec.NodeCap.NetworkCards = nil
419+
416420
isEni, err := r.hasPrimaryENI(ctx, node.Spec.NodeMetadata.InstanceID)
417421
if err != nil {
418422
return reconcile.Result{}, err
@@ -532,3 +536,11 @@ func (r *ReconcileNode) delete(ctx context.Context, request reconcile.Request) (
532536
l.Info("delete node finished")
533537
return reconcile.Result{}, err
534538
}
539+
540+
func needUpdate(node *networkv1beta1.Node, nodeInfo *common.NodeInfo) bool {
541+
return node.Spec.NodeMetadata.InstanceType != nodeInfo.InstanceType ||
542+
node.Spec.NodeMetadata.InstanceID != nodeInfo.InstanceID ||
543+
node.Spec.NodeMetadata.ZoneID != nodeInfo.ZoneID ||
544+
node.Spec.NodeMetadata.RegionID != nodeInfo.RegionID ||
545+
node.Spec.NodeCap.NetworkCardsCount == nil
546+
}

0 commit comments

Comments
 (0)