@@ -29,6 +29,7 @@ import (
2929 "github.com/argoproj/gitops-engine/pkg/diff"
3030 "github.com/argoproj/gitops-engine/pkg/health"
3131 synccommon "github.com/argoproj/gitops-engine/pkg/sync/common"
32+ "github.com/argoproj/gitops-engine/pkg/sync/hook"
3233 "github.com/argoproj/gitops-engine/pkg/utils/kube"
3334 "github.com/argoproj/gitops-engine/pkg/utils/kube/kubetest"
3435 testingutils "github.com/argoproj/gitops-engine/pkg/utils/testing"
@@ -1285,15 +1286,19 @@ func (r resourceNameHealthOverride) GetResourceHealth(obj *unstructured.Unstruct
12851286}
12861287
12871288func TestRunSync_HooksNotDeletedIfPhaseNotCompleted (t * testing.T ) {
1288- completedHook := newHook (synccommon .HookTypePreSync )
1289- completedHook .SetName ("completed-hook" )
1290- completedHook .SetNamespace (testingutils .FakeArgoCDNamespace )
1291- _ = testingutils .Annotate (completedHook , synccommon .AnnotationKeyHookDeletePolicy , "HookSucceeded" )
1292-
1293- inProgressHook := newHook (synccommon .HookTypePreSync )
1294- inProgressHook .SetNamespace (testingutils .FakeArgoCDNamespace )
1295- inProgressHook .SetName ("in-progress-hook" )
1296- _ = testingutils .Annotate (inProgressHook , synccommon .AnnotationKeyHookDeletePolicy , "HookSucceeded" )
1289+ hook1 := newHook (synccommon .HookTypePreSync )
1290+ hook1 .SetName ("completed-hook" )
1291+ hook1 .SetNamespace (testingutils .FakeArgoCDNamespace )
1292+ _ = testingutils .Annotate (hook1 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookSucceeded ))
1293+ completedHook := hook1 .DeepCopy ()
1294+ completedHook .SetFinalizers (append (completedHook .GetFinalizers (), hook .HookFinalizer ))
1295+
1296+ hook2 := newHook (synccommon .HookTypePreSync )
1297+ hook2 .SetNamespace (testingutils .FakeArgoCDNamespace )
1298+ hook2 .SetName ("in-progress-hook" )
1299+ _ = testingutils .Annotate (hook2 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookSucceeded ))
1300+ inProgressHook := hook2 .DeepCopy ()
1301+ inProgressHook .SetFinalizers (append (inProgressHook .GetFinalizers (), hook .HookFinalizer ))
12971302
12981303 syncCtx := newTestSyncCtx (nil ,
12991304 WithHealthOverride (resourceNameHealthOverride (map [string ]health.HealthStatusCode {
@@ -1312,6 +1317,12 @@ func TestRunSync_HooksNotDeletedIfPhaseNotCompleted(t *testing.T) {
13121317 ))
13131318 fakeDynamicClient := fake .NewSimpleDynamicClient (runtime .NewScheme ())
13141319 syncCtx .dynamicIf = fakeDynamicClient
1320+ updatedCount := 0
1321+ fakeDynamicClient .PrependReactor ("update" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
1322+ // Removing the finalizers
1323+ updatedCount ++
1324+ return true , nil , nil
1325+ })
13151326 deletedCount := 0
13161327 fakeDynamicClient .PrependReactor ("delete" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
13171328 deletedCount ++
@@ -1321,7 +1332,7 @@ func TestRunSync_HooksNotDeletedIfPhaseNotCompleted(t *testing.T) {
13211332 Live : []* unstructured.Unstructured {completedHook , inProgressHook },
13221333 Target : []* unstructured.Unstructured {nil , nil },
13231334 })
1324- syncCtx .hooks = []* unstructured.Unstructured {completedHook , inProgressHook }
1335+ syncCtx .hooks = []* unstructured.Unstructured {hook1 , hook2 }
13251336
13261337 syncCtx .kubectl = & kubetest.MockKubectlCmd {
13271338 Commands : map [string ]kubetest.KubectlOutput {},
@@ -1330,19 +1341,24 @@ func TestRunSync_HooksNotDeletedIfPhaseNotCompleted(t *testing.T) {
13301341 syncCtx .Sync ()
13311342
13321343 assert .Equal (t , synccommon .OperationRunning , syncCtx .phase )
1344+ assert .Equal (t , 0 , updatedCount )
13331345 assert .Equal (t , 0 , deletedCount )
13341346}
13351347
13361348func TestRunSync_HooksDeletedAfterPhaseCompleted (t * testing.T ) {
1337- completedHook1 := newHook (synccommon .HookTypePreSync )
1338- completedHook1 .SetName ("completed-hook1" )
1339- completedHook1 .SetNamespace (testingutils .FakeArgoCDNamespace )
1340- _ = testingutils .Annotate (completedHook1 , synccommon .AnnotationKeyHookDeletePolicy , "HookSucceeded" )
1341-
1342- completedHook2 := newHook (synccommon .HookTypePreSync )
1343- completedHook2 .SetNamespace (testingutils .FakeArgoCDNamespace )
1344- completedHook2 .SetName ("completed-hook2" )
1345- _ = testingutils .Annotate (completedHook2 , synccommon .AnnotationKeyHookDeletePolicy , "HookSucceeded" )
1349+ hook1 := newHook (synccommon .HookTypePreSync )
1350+ hook1 .SetName ("completed-hook1" )
1351+ hook1 .SetNamespace (testingutils .FakeArgoCDNamespace )
1352+ _ = testingutils .Annotate (hook1 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookSucceeded ))
1353+ completedHook1 := hook1 .DeepCopy ()
1354+ completedHook1 .SetFinalizers (append (completedHook1 .GetFinalizers (), hook .HookFinalizer ))
1355+
1356+ hook2 := newHook (synccommon .HookTypePreSync )
1357+ hook2 .SetNamespace (testingutils .FakeArgoCDNamespace )
1358+ hook2 .SetName ("completed-hook2" )
1359+ _ = testingutils .Annotate (hook2 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookSucceeded ))
1360+ completedHook2 := hook2 .DeepCopy ()
1361+ completedHook2 .SetFinalizers (append (completedHook1 .GetFinalizers (), hook .HookFinalizer ))
13461362
13471363 syncCtx := newTestSyncCtx (nil ,
13481364 WithInitialState (synccommon .OperationRunning , "" , []synccommon.ResourceSyncResult {{
@@ -1358,6 +1374,12 @@ func TestRunSync_HooksDeletedAfterPhaseCompleted(t *testing.T) {
13581374 ))
13591375 fakeDynamicClient := fake .NewSimpleDynamicClient (runtime .NewScheme ())
13601376 syncCtx .dynamicIf = fakeDynamicClient
1377+ updatedCount := 0
1378+ fakeDynamicClient .PrependReactor ("update" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
1379+ // Removing the finalizers
1380+ updatedCount ++
1381+ return true , nil , nil
1382+ })
13611383 deletedCount := 0
13621384 fakeDynamicClient .PrependReactor ("delete" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
13631385 deletedCount ++
@@ -1367,7 +1389,7 @@ func TestRunSync_HooksDeletedAfterPhaseCompleted(t *testing.T) {
13671389 Live : []* unstructured.Unstructured {completedHook1 , completedHook2 },
13681390 Target : []* unstructured.Unstructured {nil , nil },
13691391 })
1370- syncCtx .hooks = []* unstructured.Unstructured {completedHook1 , completedHook2 }
1392+ syncCtx .hooks = []* unstructured.Unstructured {hook1 , hook2 }
13711393
13721394 syncCtx .kubectl = & kubetest.MockKubectlCmd {
13731395 Commands : map [string ]kubetest.KubectlOutput {},
@@ -1376,19 +1398,24 @@ func TestRunSync_HooksDeletedAfterPhaseCompleted(t *testing.T) {
13761398 syncCtx .Sync ()
13771399
13781400 assert .Equal (t , synccommon .OperationSucceeded , syncCtx .phase )
1401+ assert .Equal (t , 2 , updatedCount )
13791402 assert .Equal (t , 2 , deletedCount )
13801403}
13811404
13821405func TestRunSync_HooksDeletedAfterPhaseCompletedFailed (t * testing.T ) {
1383- completedHook1 := newHook (synccommon .HookTypeSync )
1384- completedHook1 .SetName ("completed-hook1" )
1385- completedHook1 .SetNamespace (testingutils .FakeArgoCDNamespace )
1386- _ = testingutils .Annotate (completedHook1 , synccommon .AnnotationKeyHookDeletePolicy , "HookFailed" )
1387-
1388- completedHook2 := newHook (synccommon .HookTypeSync )
1389- completedHook2 .SetNamespace (testingutils .FakeArgoCDNamespace )
1390- completedHook2 .SetName ("completed-hook2" )
1391- _ = testingutils .Annotate (completedHook2 , synccommon .AnnotationKeyHookDeletePolicy , "HookFailed" )
1406+ hook1 := newHook (synccommon .HookTypeSync )
1407+ hook1 .SetName ("completed-hook1" )
1408+ hook1 .SetNamespace (testingutils .FakeArgoCDNamespace )
1409+ _ = testingutils .Annotate (hook1 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookFailed ))
1410+ completedHook1 := hook1 .DeepCopy ()
1411+ completedHook1 .SetFinalizers (append (completedHook1 .GetFinalizers (), hook .HookFinalizer ))
1412+
1413+ hook2 := newHook (synccommon .HookTypeSync )
1414+ hook2 .SetNamespace (testingutils .FakeArgoCDNamespace )
1415+ hook2 .SetName ("completed-hook2" )
1416+ _ = testingutils .Annotate (hook2 , synccommon .AnnotationKeyHookDeletePolicy , string (synccommon .HookDeletePolicyHookFailed ))
1417+ completedHook2 := hook2 .DeepCopy ()
1418+ completedHook2 .SetFinalizers (append (completedHook1 .GetFinalizers (), hook .HookFinalizer ))
13921419
13931420 syncCtx := newTestSyncCtx (nil ,
13941421 WithInitialState (synccommon .OperationRunning , "" , []synccommon.ResourceSyncResult {{
@@ -1404,6 +1431,12 @@ func TestRunSync_HooksDeletedAfterPhaseCompletedFailed(t *testing.T) {
14041431 ))
14051432 fakeDynamicClient := fake .NewSimpleDynamicClient (runtime .NewScheme ())
14061433 syncCtx .dynamicIf = fakeDynamicClient
1434+ updatedCount := 0
1435+ fakeDynamicClient .PrependReactor ("update" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
1436+ // Removing the finalizers
1437+ updatedCount ++
1438+ return true , nil , nil
1439+ })
14071440 deletedCount := 0
14081441 fakeDynamicClient .PrependReactor ("delete" , "*" , func (_ testcore.Action ) (handled bool , ret runtime.Object , err error ) {
14091442 deletedCount ++
@@ -1413,7 +1446,7 @@ func TestRunSync_HooksDeletedAfterPhaseCompletedFailed(t *testing.T) {
14131446 Live : []* unstructured.Unstructured {completedHook1 , completedHook2 },
14141447 Target : []* unstructured.Unstructured {nil , nil },
14151448 })
1416- syncCtx .hooks = []* unstructured.Unstructured {completedHook1 , completedHook2 }
1449+ syncCtx .hooks = []* unstructured.Unstructured {hook1 , hook2 }
14171450
14181451 syncCtx .kubectl = & kubetest.MockKubectlCmd {
14191452 Commands : map [string ]kubetest.KubectlOutput {},
@@ -1422,6 +1455,7 @@ func TestRunSync_HooksDeletedAfterPhaseCompletedFailed(t *testing.T) {
14221455 syncCtx .Sync ()
14231456
14241457 assert .Equal (t , synccommon .OperationFailed , syncCtx .phase )
1458+ assert .Equal (t , 2 , updatedCount )
14251459 assert .Equal (t , 2 , deletedCount )
14261460}
14271461
0 commit comments