Skip to content

Commit 3511e26

Browse files
committed
get trunk eni id by node annotation
trunkENIID is obtained by node annotation when wait trunk eni feature is enabled
1 parent 16bfa42 commit 3511e26

File tree

5 files changed

+18
-62
lines changed

5 files changed

+18
-62
lines changed

daemon/daemon.go

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
podENITypes "github.com/AliyunContainerService/terway/pkg/apis/network.alibabacloud.com/v1beta1"
2020
"github.com/AliyunContainerService/terway/pkg/backoff"
2121
terwayIP "github.com/AliyunContainerService/terway/pkg/ip"
22-
"github.com/AliyunContainerService/terway/pkg/ipam"
2322
"github.com/AliyunContainerService/terway/pkg/link"
2423
"github.com/AliyunContainerService/terway/pkg/logger"
2524
"github.com/AliyunContainerService/terway/pkg/metric"
@@ -1452,10 +1451,6 @@ func newNetworkService(configFilePath, kubeconfig, master, daemonMode string) (r
14521451
}
14531452
serviceLog.Infof("init pool config: %+v", poolConfig)
14541453

1455-
err = restoreLocalENIRes(ecs, netSrv.k8s, netSrv.resourceDB)
1456-
if err != nil {
1457-
return nil, errors.Wrapf(err, "error restore local eni resources")
1458-
}
14591454
localResource := make(map[string]map[string]resourceManagerInitItem)
14601455
resObjList, err := netSrv.resourceDB.List()
14611456
if err != nil {
@@ -1549,51 +1544,6 @@ func newNetworkService(configFilePath, kubeconfig, master, daemonMode string) (r
15491544
return netSrv, nil
15501545
}
15511546

1552-
// restore local eni resources for old terway migration
1553-
func restoreLocalENIRes(ecs ipam.API, k8s Kubernetes, resourceDB storage.Storage) error {
1554-
resList, err := resourceDB.List()
1555-
if err != nil {
1556-
return errors.Wrapf(err, "error list resourceDB storage")
1557-
}
1558-
if len(resList) != 0 {
1559-
serviceLog.Debugf("skip restore for upgraded")
1560-
return nil
1561-
}
1562-
1563-
eniList, err := ecs.GetAttachedENIs(context.Background(), false)
1564-
if err != nil {
1565-
return errors.Wrapf(err, "error get attached eni for restore")
1566-
}
1567-
ipEniMap := map[string]*types.ENI{}
1568-
for _, eni := range eniList {
1569-
ipEniMap[eni.PrimaryIP.IPv4.String()] = eni
1570-
}
1571-
1572-
podList, err := k8s.GetLocalPods()
1573-
if err != nil {
1574-
return errors.Wrapf(err, "error get local pod for restore")
1575-
}
1576-
for _, pod := range podList {
1577-
if pod.PodNetworkType != podNetworkTypeVPCENI {
1578-
continue
1579-
}
1580-
serviceLog.Debugf("restore for local pod: %+v, enis: %+v", pod, ipEniMap)
1581-
eni, ok := ipEniMap[pod.PodIPs.IPv4.String()]
1582-
if ok {
1583-
err = resourceDB.Put(podInfoKey(pod.Namespace, pod.Name), types.PodResources{
1584-
PodInfo: pod,
1585-
Resources: eni.ToResItems(),
1586-
})
1587-
if err != nil {
1588-
return errors.Wrapf(err, "error put resource into store")
1589-
}
1590-
} else {
1591-
serviceLog.Warnf("error found pod relate eni, pod: %+v", pod)
1592-
}
1593-
}
1594-
return nil
1595-
}
1596-
15971547
// setup default value
15981548
func setDefault(cfg *daemon.Config) error {
15991549
if cfg.EniCapRatio == 0 {

daemon/eni-multi-ip.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,7 @@ func (f *eniIPFactory) checkAccount(message chan<- string) {
781781
// get ENIs via Aliyun API
782782
message <- "fetching attached ENIs from aliyun\n"
783783
ctx := context.Background()
784-
enis, err := f.eniFactory.ecs.GetAttachedENIs(ctx, false)
784+
enis, err := f.eniFactory.ecs.GetAttachedENIs(ctx, false, f.trunkOnEni)
785785
if err != nil {
786786
message <- fmt.Sprintf("error while fetching from remote: %s\n", err.Error())
787787
return
@@ -943,7 +943,7 @@ func newENIIPResourceManager(poolConfig *types.PoolConfig, ecs ipam.API, k8s Kub
943943
Initializer: func(holder pool.ResourceHolder) error {
944944
ctx := context.Background()
945945
// not use main ENI for ENI multiple ip allocate
946-
enis, err := ecs.GetAttachedENIs(ctx, false)
946+
enis, err := ecs.GetAttachedENIs(ctx, false, factory.trunkOnEni)
947947
if err != nil {
948948
return fmt.Errorf("error get attach ENI on pool init, %w", err)
949949
}

daemon/eni.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func newENIResourceManager(poolConfig *types.PoolConfig, ecs ipam.API, allocated
106106
Factory: factory,
107107
Initializer: func(holder pool.ResourceHolder) error {
108108
ctx := context.Background()
109-
enis, err := ecs.GetAttachedENIs(ctx, false)
109+
enis, err := ecs.GetAttachedENIs(ctx, false, factory.trunkOnEni)
110110
if err != nil {
111111
return fmt.Errorf("error get attach ENI on pool init, %w", err)
112112
}
@@ -425,7 +425,7 @@ func (f *eniFactory) Check(res types.NetworkResource) error {
425425
}
426426

427427
func (f *eniFactory) ListResource() (map[string]types.NetworkResource, error) {
428-
enis, err := f.ecs.GetAttachedENIs(context.Background(), false)
428+
enis, err := f.ecs.GetAttachedENIs(context.Background(), false, f.trunkOnEni)
429429
if err != nil {
430430
return nil, err
431431
}

pkg/aliyun/aliyun.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (e *Impl) destroyInterface(ctx context.Context, eniID, instanceID, trunkENI
177177

178178
// GetAttachedENIs of instanceId
179179
// containsMainENI is contains the main interface(eth0) of instance
180-
func (e *Impl) GetAttachedENIs(ctx context.Context, containsMainENI bool) ([]*types.ENI, error) {
180+
func (e *Impl) GetAttachedENIs(ctx context.Context, containsMainENI bool, trunkENIID string) ([]*types.ENI, error) {
181181
enis, err := e.metadata.GetENIs(containsMainENI)
182182
if err != nil {
183183
return nil, fmt.Errorf("error get eni config by mac, %w", err)
@@ -188,14 +188,20 @@ func (e *Impl) GetAttachedENIs(ctx context.Context, containsMainENI bool) ([]*ty
188188
for _, eni := range enis {
189189
eniIDs = append(eniIDs, eni.ID)
190190
enisMap[eni.ID] = eni
191+
192+
if trunkENIID == eni.ID {
193+
eni.Trunk = true
194+
}
191195
}
192196
if e.eniTypeAttr && len(eniIDs) > 0 {
193-
eniSet, err := e.DescribeNetworkInterface(ctx, "", eniIDs, "", "", "", nil)
194-
if err != nil {
195-
return nil, err
196-
}
197-
for _, eni := range eniSet {
198-
enisMap[eni.NetworkInterfaceID].Trunk = eni.Type == client.ENITypeTrunk
197+
if trunkENIID == "" {
198+
eniSet, err := e.DescribeNetworkInterface(ctx, "", eniIDs, "", "", "", nil)
199+
if err != nil {
200+
return nil, err
201+
}
202+
for _, eni := range eniSet {
203+
enisMap[eni.NetworkInterfaceID].Trunk = eni.Type == client.ENITypeTrunk
204+
}
199205
}
200206
}
201207
return enis, nil

pkg/ipam/ipam.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
// API the interface of ecs operation set
1313
type API interface {
1414
AllocateENI(ctx context.Context, vSwitch string, securityGroup []string, instanceID string, trunk bool, ipCount int, eniTags map[string]string) (*types.ENI, error)
15-
GetAttachedENIs(ctx context.Context, containsMainENI bool) ([]*types.ENI, error)
15+
GetAttachedENIs(ctx context.Context, containsMainENI bool, trunkENIID string) ([]*types.ENI, error)
1616
GetSecondaryENIMACs(ctx context.Context) ([]string, error)
1717
GetENIByMac(ctx context.Context, mac string) (*types.ENI, error)
1818
FreeENI(ctx context.Context, eniID string, instanceID string) error

0 commit comments

Comments
 (0)