Skip to content

Commit 43b0bb2

Browse files
committed
engine VirtualizationRemove return ErrWorkloadNotExists
1 parent fc584f7 commit 43b0bb2

15 files changed

+34
-39
lines changed

cluster/calcium/create.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ func (c *Calcium) doCreateWorkloads(ctx context.Context, opts *types.DeployOptio
5656
cctx, cancel := context.WithTimeout(utils.InheritTracingInfo(ctx, context.TODO()), c.config.GlobalTimeout)
5757
for nodename := range deployMap {
5858
processing := opts.GetProcessing(nodename)
59-
if e := c.store.DeleteProcessing(cctx, processing); e != nil {
60-
logger.Errorf(ctx, "[Calcium.doCreateWorkloads] delete processing failed for %s: %+v", nodename, e)
59+
if err := c.store.DeleteProcessing(cctx, processing); err != nil {
60+
logger.Errorf(ctx, "[Calcium.doCreateWorkloads] delete processing failed for %s: %+v", nodename, err)
6161
}
6262
}
6363
close(ch)

cluster/calcium/create_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ func TestCreateWorkloadTxn(t *testing.T) {
233233
engine.On("ImageLocalDigests", mock.Anything, mock.Anything).Return([]string{""}, nil)
234234
engine.On("ImageRemoteDigest", mock.Anything, mock.Anything).Return("", nil)
235235
engine.On("VirtualizationCreate", mock.Anything, mock.Anything).Return(nil, errors.Wrap(context.DeadlineExceeded, "VirtualizationCreate")).Twice()
236-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
236+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
237237
store.On("ListNodeWorkloads", mock.Anything, mock.Anything, mock.Anything).Return(nil, types.ErrNoETCD)
238238
walCommitted = false
239239
ch, err = c.CreateWorkload(ctx, opts)

cluster/calcium/lambda_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ func newLambdaCluster(t *testing.T) (*Calcium, []*types.Node) {
268268
// doCreateAndStartWorkload fails: AddWorkload
269269
engine.On("VirtualizationCreate", mock.Anything, mock.Anything).Return(&enginetypes.VirtualizationCreated{ID: "workloadfortonictest"}, nil)
270270
engine.On("VirtualizationStart", mock.Anything, mock.Anything).Return(nil)
271-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
271+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
272272
store.On("ListNodeWorkloads", mock.Anything, mock.Anything, mock.Anything).Return(nil, types.ErrNoETCD)
273273
engine.On("VirtualizationInspect", mock.Anything, mock.Anything).Return(&enginetypes.VirtualizationInfo{}, nil)
274274
store.On("AddWorkload", mock.Anything, mock.Anything, mock.Anything).Return(nil)

cluster/calcium/remove_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestRemoveWorkload(t *testing.T) {
6565
// success
6666
engine := &enginemocks.API{}
6767
workload.Engine = engine
68-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
68+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
6969
store.On("GetWorkloads", mock.Anything, mock.Anything).Return([]*types.Workload{workload}, nil)
7070
store.On("RemoveWorkload", mock.Anything, mock.Anything).Return(nil)
7171
store.On("UpdateNodeResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)

cluster/calcium/replace_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,6 @@ func TestReplaceWorkload(t *testing.T) {
168168
// failed by VirtualizationCreate
169169
engine.On("VirtualizationCreate", mock.Anything, mock.Anything).Return(nil, types.ErrCannotGetEngine).Once()
170170
engine.On("VirtualizationStart", mock.Anything, mock.Anything).Return(types.ErrCannotGetEngine).Once()
171-
//store.On("UpdateNodeResource", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once()
172-
//engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil).Once()
173-
//store.On("RemoveWorkload", mock.Anything, mock.Anything).Return(nil).Once()
174171
ch, err = c.ReplaceWorkload(ctx, opts)
175172
assert.NoError(t, err)
176173
for r := range ch {
@@ -200,7 +197,7 @@ func TestReplaceWorkload(t *testing.T) {
200197
store.AssertExpectations(t)
201198
engine.AssertExpectations(t)
202199

203-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
200+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
204201
store.On("RemoveWorkload", mock.Anything, mock.Anything).Return(nil)
205202
store.On("ListNodeWorkloads", mock.Anything, mock.Anything, mock.Anything).Return(nil, types.ErrNoETCD)
206203
// succ

cluster/calcium/wal.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"time"
77

8+
"github.com/pkg/errors"
89
"github.com/projecteru2/core/log"
910
"github.com/projecteru2/core/types"
1011
"github.com/projecteru2/core/utils"
@@ -123,7 +124,7 @@ func (h *CreateWorkloadHandler) Handle(ctx context.Context, raw interface{}) (er
123124
if err != nil {
124125
return logger.Err(ctx, err)
125126
}
126-
if _, err = node.Engine.VirtualizationRemove(ctx, wrk.ID, true, true); err != nil {
127+
if err = node.Engine.VirtualizationRemove(ctx, wrk.ID, true, true); err != nil && !errors.Is(err, types.ErrWorkloadNotExists) {
127128
return logger.Err(ctx, err)
128129
}
129130

cluster/calcium/wal_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ func TestHandleCreateWorkloadError(t *testing.T) {
7272

7373
store.On("GetWorkload", mock.Anything, mock.Anything).Return(wrk, err).Once()
7474
store.On("GetNode", mock.Anything, wrk.Nodename).Return(node, nil).Once()
75-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(0, err).Once()
75+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(err).Once()
7676
c.wal.Recover(context.TODO())
7777
store.AssertExpectations(t)
7878
engine.AssertExpectations(t)
7979

8080
store.On("GetWorkload", mock.Anything, wrkid).Return(wrk, fmt.Errorf("err")).Once()
8181
store.On("GetNode", mock.Anything, mock.Anything).Return(node, nil).Once()
82-
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil).Once()
82+
engine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(types.ErrWorkloadNotExists).Once()
8383
c.wal.Recover(context.TODO())
8484
store.AssertExpectations(t)
8585
engine.AssertExpectations(t)
@@ -117,7 +117,7 @@ func TestHandleCreateWorkloadHandled(t *testing.T) {
117117
eng, ok := node.Engine.(*enginemocks.API)
118118
require.True(t, ok)
119119
eng.On("VirtualizationRemove", mock.Anything, wrk.ID, true, true).
120-
Return(1, nil).
120+
Return(nil).
121121
Once()
122122

123123
c.wal.Recover(context.TODO())
@@ -163,7 +163,7 @@ func TestHandleCreateLambda(t *testing.T) {
163163
eng := wrk.Engine.(*enginemocks.API)
164164
eng.On("VirtualizationWait", mock.Anything, wrk.ID, "").Return(&enginetypes.VirtualizationWaitResult{Code: 0}, nil).Once()
165165
eng.On("VirtualizationRemove", mock.Anything, wrk.ID, true, true).
166-
Return(1, nil).
166+
Return(nil).
167167
Once()
168168
eng.On("VirtualizationResourceRemap", mock.Anything, mock.Anything).Return(nil, nil).Once()
169169
store.On("GetWorkloads", mock.Anything, []string{wrk.ID}).

engine/docker/container.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
corecluster "github.com/projecteru2/core/cluster"
1818
enginetypes "github.com/projecteru2/core/engine/types"
1919
"github.com/projecteru2/core/log"
20+
"github.com/projecteru2/core/types"
2021
coretypes "github.com/projecteru2/core/types"
2122
"github.com/projecteru2/core/utils"
2223

@@ -346,12 +347,12 @@ func (e *Engine) VirtualizationStop(ctx context.Context, ID string, gracefulTime
346347
}
347348

348349
// VirtualizationRemove remove virtualization
349-
func (e *Engine) VirtualizationRemove(ctx context.Context, ID string, removeVolumes, force bool) (removed int, err error) {
350+
func (e *Engine) VirtualizationRemove(ctx context.Context, ID string, removeVolumes, force bool) (err error) {
350351
if err = e.client.ContainerRemove(ctx, ID, dockertypes.ContainerRemoveOptions{RemoveVolumes: removeVolumes, Force: force}); err == nil {
351-
return 1, nil
352+
return nil
352353
}
353354
if strings.Contains(err.Error(), "No such container") {
354-
return 0, nil
355+
return types.ErrWorkloadNotExists
355356
}
356357
return
357358
}

engine/engine.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ type API interface {
4141
VirtualizationCopyTo(ctx context.Context, ID, target string, content []byte, uid, gid int, mode int64) error
4242
VirtualizationStart(ctx context.Context, ID string) error
4343
VirtualizationStop(ctx context.Context, ID string, gracefulTimeout time.Duration) error
44-
VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) (int, error)
44+
VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) error
4545
VirtualizationInspect(ctx context.Context, ID string) (*enginetypes.VirtualizationInfo, error)
4646
VirtualizationLogs(ctx context.Context, opts *enginetypes.VirtualizationLogStreamOptions) (stdout, stderr io.ReadCloser, err error)
4747
VirtualizationAttach(ctx context.Context, ID string, stream, openStdin bool) (stdout, stderr io.ReadCloser, stdin io.WriteCloser, err error)

engine/fake/fake.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ func (f *Engine) VirtualizationStop(ctx context.Context, ID string, gracefulTime
139139
}
140140

141141
// VirtualizationRemove .
142-
func (f *Engine) VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) (int, error) {
143-
return 0, types.ErrNilEngine
142+
func (f *Engine) VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) error {
143+
return types.ErrNilEngine
144144
}
145145

146146
// VirtualizationInspect .

engine/mocks/API.go

+5-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/mocks/fakeengine/mock.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func MakeClient(ctx context.Context, config coretypes.Config, nodename, endpoint
9797
e.On("VirtualizationCopyTo", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
9898
e.On("VirtualizationStart", mock.Anything, mock.Anything).Return(nil)
9999
e.On("VirtualizationStop", mock.Anything, mock.Anything, mock.Anything).Return(nil)
100-
e.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
100+
e.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
101101
vcJSON := &enginetypes.VirtualizationInfo{ID: ID, Image: "mock-image", Running: true, Networks: map[string]string{"mock-network": "1.1.1.1"}}
102102
e.On("VirtualizationInspect", mock.Anything, mock.Anything).Return(vcJSON, nil)
103103
logs := ioutil.NopCloser(bytes.NewBufferString("logs1...\nlogs2...\n"))

engine/virt/virt.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
enginetypes "github.com/projecteru2/core/engine/types"
2020
"github.com/projecteru2/core/log"
2121
coresource "github.com/projecteru2/core/source"
22+
"github.com/projecteru2/core/types"
2223
coretypes "github.com/projecteru2/core/types"
2324
)
2425

@@ -228,12 +229,12 @@ func (v *Virt) VirtualizationStop(ctx context.Context, ID string, gracefulTimeou
228229
}
229230

230231
// VirtualizationRemove removes a guest.
231-
func (v *Virt) VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) (removed int, err error) {
232+
func (v *Virt) VirtualizationRemove(ctx context.Context, ID string, volumes, force bool) (err error) {
232233
if _, err = v.client.DestroyGuest(ctx, ID, force); err == nil {
233-
return 1, nil
234+
return nil
234235
}
235236
if strings.Contains(err.Error(), "key not exists") {
236-
return 0, nil
237+
return types.ErrWorkloadNotExists
237238
}
238239
return
239240
}

types/workload.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,13 @@ func (c *Workload) Stop(ctx context.Context, force bool) error {
8181
}
8282

8383
// Remove a workload
84-
func (c *Workload) Remove(ctx context.Context, force bool) error {
84+
func (c *Workload) Remove(ctx context.Context, force bool) (err error) {
8585
if c.Engine == nil {
8686
return errors.WithStack(ErrNilEngine)
8787
}
88-
_, err := c.Engine.VirtualizationRemove(ctx, c.ID, true, force)
88+
if err = c.Engine.VirtualizationRemove(ctx, c.ID, true, force); errors.Is(err, ErrWorkloadNotExists) {
89+
err = nil
90+
}
8991
return errors.WithStack(err)
9092
}
9193

types/workload_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func TestWorkloadControl(t *testing.T) {
2727
mockEngine := &mocks.API{}
2828
mockEngine.On("VirtualizationStart", mock.Anything, mock.Anything).Return(nil)
2929
mockEngine.On("VirtualizationStop", mock.Anything, mock.Anything, mock.Anything).Return(nil)
30-
mockEngine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(1, nil)
30+
mockEngine.On("VirtualizationRemove", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
3131

3232
ctx := context.Background()
3333
c := Workload{}

0 commit comments

Comments
 (0)