Skip to content

Commit 9b8de6a

Browse files
authored
Merge pull request #449 from mars1024/bugfix/flannel_clean
flannel: remove net conf file after DEL succeed
2 parents dacb671 + 53854dd commit 9b8de6a

3 files changed

Lines changed: 29 additions & 12 deletions

File tree

plugins/meta/flannel/flannel.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,19 @@ func saveScratchNetConf(containerID, dataDir string, netconf []byte) error {
146146
return ioutil.WriteFile(path, netconf, 0600)
147147
}
148148

149-
func consumeScratchNetConf(containerID, dataDir string) ([]byte, error) {
149+
func consumeScratchNetConf(containerID, dataDir string) (func(error), []byte, error) {
150150
path := filepath.Join(dataDir, containerID)
151-
// Ignore errors when removing - Per spec safe to continue during DEL
152-
defer os.Remove(path)
153151

154-
return ioutil.ReadFile(path)
152+
// cleanup will do clean job when no error happens in consuming/using process
153+
cleanup := func(err error) {
154+
if err == nil {
155+
// Ignore errors when removing - Per spec safe to continue during DEL
156+
_ = os.Remove(path)
157+
}
158+
}
159+
netConfBytes, err := ioutil.ReadFile(path)
160+
161+
return cleanup, netConfBytes, err
155162
}
156163

157164
func delegateAdd(cid, dataDir string, netconf map[string]interface{}) error {

plugins/meta/flannel/flannel_linux.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ func doCmdAdd(args *skel.CmdArgs, n *NetConf, fenv *subnetEnv) error {
6868
return delegateAdd(args.ContainerID, n.DataDir, n.Delegate)
6969
}
7070

71-
func doCmdDel(args *skel.CmdArgs, n *NetConf) error {
72-
netconfBytes, err := consumeScratchNetConf(args.ContainerID, n.DataDir)
71+
func doCmdDel(args *skel.CmdArgs, n *NetConf) (err error) {
72+
cleanup, netConfBytes, err := consumeScratchNetConf(args.ContainerID, n.DataDir)
7373
if err != nil {
7474
if os.IsNotExist(err) {
7575
// Per spec should ignore error if resources are missing / already removed
@@ -78,10 +78,15 @@ func doCmdDel(args *skel.CmdArgs, n *NetConf) error {
7878
return err
7979
}
8080

81+
// cleanup will work when no error happens
82+
defer func() {
83+
cleanup(err)
84+
}()
85+
8186
nc := &types.NetConf{}
82-
if err = json.Unmarshal(netconfBytes, nc); err != nil {
87+
if err = json.Unmarshal(netConfBytes, nc); err != nil {
8388
return fmt.Errorf("failed to parse netconf: %v", err)
8489
}
8590

86-
return invoke.DelegateDel(context.TODO(), nc.Type, netconfBytes, nil)
91+
return invoke.DelegateDel(context.TODO(), nc.Type, netConfBytes, nil)
8792
}

plugins/meta/flannel/flannel_windows.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ func doCmdAdd(args *skel.CmdArgs, n *NetConf, fenv *subnetEnv) error {
5555
return delegateAdd(hns.GetSandboxContainerID(args.ContainerID, args.Netns), n.DataDir, n.Delegate)
5656
}
5757

58-
func doCmdDel(args *skel.CmdArgs, n *NetConf) error {
59-
netconfBytes, err := consumeScratchNetConf(hns.GetSandboxContainerID(args.ContainerID, args.Netns), n.DataDir)
58+
func doCmdDel(args *skel.CmdArgs, n *NetConf) (err error) {
59+
cleanup, netConfBytes, err := consumeScratchNetConf(hns.GetSandboxContainerID(args.ContainerID, args.Netns), n.DataDir)
6060
if err != nil {
6161
if os.IsNotExist(err) {
6262
// Per spec should ignore error if resources are missing / already removed
@@ -65,10 +65,15 @@ func doCmdDel(args *skel.CmdArgs, n *NetConf) error {
6565
return err
6666
}
6767

68+
// cleanup will work when no error happens
69+
defer func() {
70+
cleanup(err)
71+
}()
72+
6873
nc := &types.NetConf{}
69-
if err = json.Unmarshal(netconfBytes, nc); err != nil {
74+
if err = json.Unmarshal(netConfBytes, nc); err != nil {
7075
return fmt.Errorf("failed to parse netconf: %v", err)
7176
}
7277

73-
return invoke.DelegateDel(context.TODO(), nc.Type, netconfBytes, nil)
78+
return invoke.DelegateDel(context.TODO(), nc.Type, netConfBytes, nil)
7479
}

0 commit comments

Comments
 (0)