@@ -439,15 +439,19 @@ func (z *zedrouter) handleAppNetworkCreate(ctxArg interface{}, key string,
439
439
// Start by marking with PendingAdd
440
440
status := types.AppNetworkStatus {
441
441
UUIDandVersion : config .UUIDandVersion ,
442
- PendingAdd : true ,
443
442
DisplayName : config .DisplayName ,
444
443
}
445
444
z .doCopyAppNetworkConfigToStatus (config , & status )
445
+ status .PendingAdd = true
446
+ z .publishAppNetworkStatus (& status )
447
+ defer func () {
448
+ status .PendingAdd = false
449
+ z .publishAppNetworkStatus (& status )
450
+ }()
446
451
447
452
if err := z .validateAppNetworkConfig (config ); err != nil {
448
453
z .log .Errorf ("handleAppNetworkCreate(%v): validation failed: %v" ,
449
454
config .UUIDandVersion .UUID , err )
450
- status .PendingAdd = false
451
455
z .addAppNetworkError (& status , "handleAppNetworkCreate" , err )
452
456
return
453
457
}
@@ -460,7 +464,6 @@ func (z *zedrouter) handleAppNetworkCreate(ctxArg interface{}, key string,
460
464
err = fmt .Errorf ("failed to allocate appNum for %s/%s: %v" ,
461
465
config .UUIDandVersion .UUID , config .DisplayName , err )
462
466
z .log .Errorf ("handleAppNetworkCreate(%v): %v" , config .UUIDandVersion .UUID , err )
463
- status .PendingAdd = false
464
467
z .addAppNetworkError (& status , "handleAppNetworkCreate" , err )
465
468
return
466
469
}
@@ -474,7 +477,6 @@ func (z *zedrouter) handleAppNetworkCreate(ctxArg interface{}, key string,
474
477
err = fmt .Errorf ("failed to allocate numbers for VIFs of the app %s/%s: %v" ,
475
478
config .UUIDandVersion .UUID , config .DisplayName , err )
476
479
z .log .Errorf ("handleAppNetworkCreate(%v): %v" , config .UUIDandVersion .UUID , err )
477
- status .PendingAdd = false
478
480
z .addAppNetworkError (& status , "handleAppNetworkCreate" , err )
479
481
return
480
482
}
@@ -485,20 +487,14 @@ func (z *zedrouter) handleAppNetworkCreate(ctxArg interface{}, key string,
485
487
if err != nil {
486
488
z .log .Errorf ("handleAppNetworkCreate(%v): %v" , config .UUIDandVersion .UUID , err )
487
489
status .AwaitNetworkInstance = true
488
- status .PendingAdd = false
489
490
if netInErrState {
490
491
z .addAppNetworkError (& status , "handleAppNetworkCreate" , err )
491
- } else {
492
- z .publishAppNetworkStatus (& status )
493
492
}
494
493
return
495
494
}
496
495
497
496
if config .Activate {
498
497
z .doActivateAppNetwork (config , & status )
499
- } else {
500
- status .PendingAdd = false
501
- z .publishAppNetworkStatus (& status )
502
498
}
503
499
504
500
z .maybeScheduleRetry ()
@@ -519,12 +515,15 @@ func (z *zedrouter) handleAppNetworkModify(ctxArg interface{}, key string,
519
515
status .ClearError ()
520
516
status .PendingModify = true
521
517
z .publishAppNetworkStatus (status )
518
+ defer func () {
519
+ status .PendingModify = false
520
+ z .publishAppNetworkStatus (status )
521
+ }()
522
522
523
523
// Check for unsupported/invalid changes.
524
524
if err := z .validateAppNetworkConfigForModify (newConfig , oldConfig ); err != nil {
525
525
z .log .Errorf ("handleAppNetworkModify(%v): validation failed: %v" ,
526
526
newConfig .UUIDandVersion .UUID , err )
527
- status .PendingModify = false
528
527
z .addAppNetworkError (status , "handleAppNetworkModify" , err )
529
528
return
530
529
}
@@ -538,27 +537,21 @@ func (z *zedrouter) handleAppNetworkModify(ctxArg interface{}, key string,
538
537
if err != nil {
539
538
z .log .Errorf ("handleAppNetworkModify(%v): %v" , newConfig .UUIDandVersion .UUID , err )
540
539
status .AwaitNetworkInstance = true
541
- status .PendingModify = false
542
540
if netInErrState {
543
541
z .addAppNetworkError (status , "handleAppNetworkModify" , err )
544
- } else {
545
- z .publishAppNetworkStatus (status )
546
542
}
547
543
return
548
544
}
549
545
550
546
if ! newConfig .Activate && status .Activated {
551
547
z .doInactivateAppNetwork (newConfig , status )
552
548
z .doCopyAppNetworkConfigToStatus (newConfig , status )
553
- z .publishAppNetworkStatus (status )
554
549
} else if newConfig .Activate && ! status .Activated {
555
550
z .doCopyAppNetworkConfigToStatus (newConfig , status )
556
551
z .doActivateAppNetwork (newConfig , status )
557
552
} else if ! status .Activated {
558
553
// Just copy in newConfig
559
554
z .doCopyAppNetworkConfigToStatus (newConfig , status )
560
- status .PendingModify = false
561
- z .publishAppNetworkStatus (status )
562
555
} else { // Config change while application network is active.
563
556
z .doUpdateActivatedAppNetwork (oldConfig , newConfig , status )
564
557
}
@@ -584,6 +577,8 @@ func (z *zedrouter) handleAppNetworkDelete(ctxArg interface{}, key string,
584
577
585
578
// Deactivate app network if it is currently activated.
586
579
if status .Activated {
580
+ // No need to clear PendingDelete later. Instead, we un-publish
581
+ // the status completely few lines below.
587
582
status .PendingDelete = true
588
583
z .publishAppNetworkStatus (status )
589
584
z .doInactivateAppNetwork (config , status )
0 commit comments