@@ -36,7 +36,7 @@ func Register(ctx context.Context, management *config.Management) error {
36
36
return nil
37
37
}
38
38
39
- func (h Handler ) OnChange (_ string , nad * nadv1.NetworkAttachmentDefinition ) (* nadv1.NetworkAttachmentDefinition , error ) {
39
+ func (h Handler ) OnChange (key string , nad * nadv1.NetworkAttachmentDefinition ) (* nadv1.NetworkAttachmentDefinition , error ) {
40
40
if nad == nil || nad .DeletionTimestamp != nil {
41
41
return nil , nil
42
42
}
@@ -54,7 +54,7 @@ func (h Handler) OnChange(_ string, nad *nadv1.NetworkAttachmentDefinition) (*na
54
54
return nad , nil
55
55
}
56
56
57
- func (h Handler ) OnRemove (_ string , nad * nadv1.NetworkAttachmentDefinition ) (* nadv1.NetworkAttachmentDefinition , error ) {
57
+ func (h Handler ) OnRemove (key string , nad * nadv1.NetworkAttachmentDefinition ) (* nadv1.NetworkAttachmentDefinition , error ) {
58
58
if nad == nil {
59
59
return nil , nil
60
60
}
@@ -78,26 +78,19 @@ func (h Handler) OnRemove(_ string, nad *nadv1.NetworkAttachmentDefinition) (*na
78
78
}
79
79
80
80
func (h Handler ) addLocalArea (nad * nadv1.NetworkAttachmentDefinition ) error {
81
- vlanID , err := strconv .Atoi (nad .Labels [utils .KeyVlanLabel ])
82
- if err != nil {
83
- return fmt .Errorf ("invalid vlanconfig %s" , nad .Labels [utils .KeyVlanLabel ])
84
- }
85
-
86
81
v , err := vlan .GetVlan (nad .Labels [utils .KeyClusterNetworkLabel ])
87
82
if err != nil && ! errors .As (err , & netlink.LinkNotFoundError {}) {
88
83
return err
89
84
} else if errors .As (err , & netlink.LinkNotFoundError {}) {
90
85
return nil
91
86
}
92
87
93
- layer3NetworkConf := & utils.Layer3NetworkConf {}
94
- if nad .Annotations != nil && nad .Annotations [utils .KeyNetworkConf ] != "" {
95
- if layer3NetworkConf , err = utils .NewLayer3NetworkConf (nad .Annotations [utils .KeyNetworkConf ]); err != nil {
96
- return err
97
- }
88
+ localArea , err := GetLocalArea (nad )
89
+ if err != nil {
90
+ return fmt .Errorf ("failed to get local area from nad %s/%s, error: %w" , nad .Namespace , nad .Name , err )
98
91
}
99
92
100
- return v .AddLocalArea (uint16 ( vlanID ), layer3NetworkConf . CIDR )
93
+ return v .AddLocalArea (localArea )
101
94
}
102
95
103
96
func (h Handler ) existDuplicateNad (vlanIdStr , cn string ) (bool , error ) {
@@ -113,25 +106,36 @@ func (h Handler) existDuplicateNad(vlanIdStr, cn string) (bool, error) {
113
106
}
114
107
115
108
func (h Handler ) removeLocalArea (nad * nadv1.NetworkAttachmentDefinition ) error {
116
- vlanID , err := strconv .Atoi (nad .Labels [utils .KeyVlanLabel ])
117
- if err != nil {
118
- return fmt .Errorf ("invalid vlanconfig %s" , nad .Labels [utils .KeyVlanLabel ])
119
- }
120
-
121
109
v , err := vlan .GetVlan (nad .Labels [utils .KeyClusterNetworkLabel ])
122
110
if err != nil && ! errors .As (err , & netlink.LinkNotFoundError {}) {
123
111
return err
124
112
} else if errors .As (err , & netlink.LinkNotFoundError {}) {
125
113
return nil
126
114
}
127
115
116
+ localArea , err := GetLocalArea (nad )
117
+ if err != nil {
118
+ return fmt .Errorf ("failed to get local area from nad %s/%s, error: %w" , nad .Namespace , nad .Name , err )
119
+ }
120
+
121
+ return v .RemoveLocalArea (localArea )
122
+ }
123
+
124
+ func GetLocalArea (nad * nadv1.NetworkAttachmentDefinition ) (* vlan.LocalArea , error ) {
125
+ vlanID , err := strconv .Atoi (nad .Labels [utils .KeyVlanLabel ])
126
+ if err != nil {
127
+ return nil , fmt .Errorf ("invalid vlanconfig %s" , nad .Labels [utils .KeyVlanLabel ])
128
+ }
129
+
128
130
layer3NetworkConf := & utils.Layer3NetworkConf {}
129
131
if nad .Annotations != nil && nad .Annotations [utils .KeyNetworkConf ] != "" {
130
- layer3NetworkConf , err = utils .NewLayer3NetworkConf (nad .Annotations [utils .KeyNetworkConf ])
131
- if err != nil {
132
- return err
132
+ if layer3NetworkConf , err = utils .NewLayer3NetworkConf (nad .Annotations [utils .KeyNetworkConf ]); err != nil {
133
+ return nil , err
133
134
}
134
135
}
135
136
136
- return v .RemoveLocalArea (uint16 (vlanID ), layer3NetworkConf .CIDR )
137
+ return & vlan.LocalArea {
138
+ Vid : uint16 (vlanID ),
139
+ Cidr : layer3NetworkConf .CIDR ,
140
+ }, nil
137
141
}
0 commit comments