@@ -119,8 +119,6 @@ func (s *MachinerSuite) testMachinerMachineRefreshNotFoundOrUnauthorized(c *gc.C
119
119
func (s * MachinerSuite ) TestMachinerSetStatusStopped (c * gc.C ) {
120
120
s .accessor .machine .life = life .Dying
121
121
s .accessor .machine .SetErrors (
122
- nil , // SetMachineAddresses
123
- nil , // SetStatus (started)
124
122
nil , // Watch
125
123
nil , // Refresh
126
124
errors .New ("cannot set status" ), // SetStatus (stopped)
@@ -137,15 +135,14 @@ func (s *MachinerSuite) TestMachinerSetStatusStopped(c *gc.C) {
137
135
"machine-123 failed to set status stopped: cannot set status" ,
138
136
)
139
137
s .accessor .machine .CheckCallNames (c ,
140
- "SetMachineAddresses" ,
141
- "SetStatus" ,
138
+ "Life" ,
142
139
"Watch" ,
143
140
"Refresh" ,
144
141
"Life" ,
145
142
"SetStatus" ,
146
143
)
147
144
s .accessor .machine .CheckCall (
148
- c , 5 , "SetStatus" ,
145
+ c , 4 , "SetStatus" ,
149
146
status .Stopped ,
150
147
"" ,
151
148
map [string ]interface {}(nil ),
@@ -155,8 +152,6 @@ func (s *MachinerSuite) TestMachinerSetStatusStopped(c *gc.C) {
155
152
func (s * MachinerSuite ) TestMachinerMachineEnsureDeadError (c * gc.C ) {
156
153
s .accessor .machine .life = life .Dying
157
154
s .accessor .machine .SetErrors (
158
- nil , // SetMachineAddresses
159
- nil , // SetStatus
160
155
nil , // Watch
161
156
nil , // Refresh
162
157
nil , // SetStatus
@@ -174,7 +169,7 @@ func (s *MachinerSuite) TestMachinerMachineEnsureDeadError(c *gc.C) {
174
169
"machine-123 failed to set machine to dead: cannot ensure machine is dead" ,
175
170
)
176
171
s .accessor .machine .CheckCall (
177
- c , 7 , "SetStatus" ,
172
+ c , 6 , "SetStatus" ,
178
173
status .Error ,
179
174
"destroying machine: machine-123 failed to set machine to dead: cannot ensure machine is dead" ,
180
175
map [string ]interface {}(nil ),
@@ -184,8 +179,6 @@ func (s *MachinerSuite) TestMachinerMachineEnsureDeadError(c *gc.C) {
184
179
func (s * MachinerSuite ) TestMachinerMachineAssignedUnits (c * gc.C ) {
185
180
s .accessor .machine .life = life .Dying
186
181
s .accessor .machine .SetErrors (
187
- nil , // SetMachineAddresses
188
- nil , // SetStatus
189
182
nil , // Watch
190
183
nil , // Refresh
191
184
nil , // SetStatus
@@ -204,8 +197,37 @@ func (s *MachinerSuite) TestMachinerMachineAssignedUnits(c *gc.C) {
204
197
c .Check (err , jc .ErrorIsNil )
205
198
206
199
s .accessor .machine .CheckCallNames (c ,
207
- "SetMachineAddresses" ,
200
+ "Life" ,
201
+ "Watch" ,
202
+ "Refresh" ,
203
+ "Life" ,
208
204
"SetStatus" ,
205
+ "EnsureDead" ,
206
+ )
207
+ }
208
+
209
+ func (s * MachinerSuite ) TestMachinerMachineHasContainers (c * gc.C ) {
210
+ s .accessor .machine .life = life .Dying
211
+ s .accessor .machine .SetErrors (
212
+ nil , // Watch
213
+ nil , // Refresh
214
+ nil , // SetStatus
215
+ & params.Error {Code : params .CodeMachineHasContainers }, // EnsureDead
216
+ )
217
+ w , err := machiner .NewMachiner (machiner.Config {
218
+ MachineAccessor : s .accessor ,
219
+ Tag : s .machineTag ,
220
+ })
221
+ c .Assert (err , jc .ErrorIsNil )
222
+ s .accessor .machine .watcher .changes <- struct {}{}
223
+ err = stopWorker (w )
224
+
225
+ // If EnsureDead fails with "machine has containers", then
226
+ // the worker will fail and restart.
227
+ c .Check (err , jc .Satisfies , params .IsCodeMachineHasContainers )
228
+
229
+ s .accessor .machine .CheckCallNames (c ,
230
+ "Life" ,
209
231
"Watch" ,
210
232
"Refresh" ,
211
233
"Life" ,
@@ -220,8 +242,6 @@ func (s *MachinerSuite) TestMachinerStorageAttached(c *gc.C) {
220
242
// this should not cause an error.
221
243
s .accessor .machine .life = life .Dying
222
244
s .accessor .machine .SetErrors (
223
- nil , // SetMachineAddresses
224
- nil , // SetStatus
225
245
nil , // Watch
226
246
nil , // Refresh
227
247
nil , // SetStatus
@@ -242,20 +262,7 @@ func (s *MachinerSuite) TestMachinerStorageAttached(c *gc.C) {
242
262
}})
243
263
244
264
s .accessor .machine .CheckCalls (c , []gitjujutesting.StubCall {{
245
- FuncName : "SetMachineAddresses" ,
246
- Args : []interface {}{
247
- []corenetwork.MachineAddress {
248
- corenetwork .NewMachineAddress ("255.255.255.255" ),
249
- corenetwork .NewMachineAddress ("0.0.0.0" ),
250
- },
251
- },
252
- }, {
253
- FuncName : "SetStatus" ,
254
- Args : []interface {}{
255
- status .Started ,
256
- "" ,
257
- map [string ]interface {}(nil ),
258
- },
265
+ FuncName : "Life" ,
259
266
}, {
260
267
FuncName : "Watch" ,
261
268
}, {
@@ -278,6 +285,7 @@ func (s *MachinerSuite) TestRunStop(c *gc.C) {
278
285
mr := s .makeMachiner (c , false )
279
286
c .Assert (worker .Stop (mr ), jc .ErrorIsNil )
280
287
s .accessor .machine .CheckCallNames (c ,
288
+ "Life" ,
281
289
"SetMachineAddresses" ,
282
290
"SetStatus" ,
283
291
"Watch" ,
@@ -289,12 +297,13 @@ func (s *MachinerSuite) TestStartSetsStatus(c *gc.C) {
289
297
err := stopWorker (mr )
290
298
c .Assert (err , jc .ErrorIsNil )
291
299
s .accessor .machine .CheckCallNames (c ,
300
+ "Life" ,
292
301
"SetMachineAddresses" ,
293
302
"SetStatus" ,
294
303
"Watch" ,
295
304
)
296
305
s .accessor .machine .CheckCall (
297
- c , 1 , "SetStatus" ,
306
+ c , 2 , "SetStatus" ,
298
307
status .Started , "" , map [string ]interface {}(nil ),
299
308
)
300
309
}
@@ -357,7 +366,7 @@ LXC_BRIDGE="ignored"`[1:])
357
366
358
367
mr := s .makeMachiner (c , false )
359
368
c .Assert (stopWorker (mr ), jc .ErrorIsNil )
360
- s .accessor .machine .CheckCall (c , 0 , "SetMachineAddresses" , []corenetwork.MachineAddress {
369
+ s .accessor .machine .CheckCall (c , 1 , "SetMachineAddresses" , []corenetwork.MachineAddress {
361
370
corenetwork .NewScopedMachineAddress ("10.0.0.1" , corenetwork .ScopeCloudLocal ),
362
371
corenetwork .NewScopedMachineAddress ("127.0.0.1" , corenetwork .ScopeMachineLocal ),
363
372
corenetwork .NewScopedMachineAddress ("::1" , corenetwork .ScopeMachineLocal ),
@@ -370,13 +379,13 @@ func (s *MachinerSuite) TestSetMachineAddressesEmpty(c *gc.C) {
370
379
mr := s .makeMachiner (c , false )
371
380
c .Assert (stopWorker (mr ), jc .ErrorIsNil )
372
381
// No call to SetMachineAddresses
373
- s .accessor .machine .CheckCallNames (c , "SetStatus" , "Watch" )
382
+ s .accessor .machine .CheckCallNames (c , "Life" , " SetStatus" , "Watch" )
374
383
}
375
384
376
385
func (s * MachinerSuite ) TestMachineAddressesWithClearFlag (c * gc.C ) {
377
386
mr := s .makeMachiner (c , true )
378
387
c .Assert (stopWorker (mr ), jc .ErrorIsNil )
379
- s .accessor .machine .CheckCall (c , 0 , "SetMachineAddresses" , []corenetwork.MachineAddress (nil ))
388
+ s .accessor .machine .CheckCall (c , 1 , "SetMachineAddresses" , []corenetwork.MachineAddress (nil ))
380
389
}
381
390
382
391
func (s * MachinerSuite ) TestGetObservedNetworkConfigEmpty (c * gc.C ) {
@@ -389,6 +398,7 @@ func (s *MachinerSuite) TestGetObservedNetworkConfigEmpty(c *gc.C) {
389
398
c .Assert (stopWorker (mr ), jc .ErrorIsNil )
390
399
391
400
s .accessor .machine .CheckCallNames (c ,
401
+ "Life" ,
392
402
"SetMachineAddresses" ,
393
403
"SetStatus" ,
394
404
"Watch" ,
@@ -407,6 +417,7 @@ func (s *MachinerSuite) TestSetObservedNetworkConfig(c *gc.C) {
407
417
c .Assert (stopWorker (mr ), jc .ErrorIsNil )
408
418
409
419
s .accessor .machine .CheckCallNames (c ,
420
+ "Life" ,
410
421
"SetMachineAddresses" ,
411
422
"SetStatus" ,
412
423
"Watch" ,
@@ -426,6 +437,7 @@ func (s *MachinerSuite) TestAliveErrorGetObservedNetworkConfig(c *gc.C) {
426
437
c .Assert (stopWorker (mr ), gc .ErrorMatches , "cannot discover observed network config: no config!" )
427
438
428
439
s .accessor .machine .CheckCallNames (c ,
440
+ "Life" ,
429
441
"SetMachineAddresses" ,
430
442
"SetStatus" ,
431
443
"Watch" ,
0 commit comments