2020// Author Adam Janikowski
2121//
2222
23- package reconcile
23+ package member
2424
2525import (
2626 api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
@@ -31,31 +31,53 @@ type phaseMapFunc func(action api.Action, m *api.MemberStatus)
3131type phaseMapTo map [api.MemberPhase ]phaseMapFunc
3232type phaseMap map [api.MemberPhase ]phaseMapTo
3333
34+ type PhaseExecutor interface {
35+ Execute (m * api.MemberStatus , action api.Action , to api.MemberPhase ) bool
36+ }
37+
38+ func GetPhaseExecutor () PhaseExecutor {
39+ return phase
40+ }
41+
3442var phase = phaseMap {
3543 api .MemberPhaseNone : {
3644 api .MemberPhasePending : func (action api.Action , m * api.MemberStatus ) {
37- // Clean conditions
38- m .Conditions .Remove (api .ConditionTypeReady )
39- m .Conditions .Remove (api .ConditionTypeTerminated )
40- m .Conditions .Remove (api .ConditionTypeTerminating )
41- m .Conditions .Remove (api .ConditionTypeAgentRecoveryNeeded )
42- m .Conditions .Remove (api .ConditionTypeAutoUpgrade )
43- m .Conditions .Remove (api .ConditionTypeUpgradeFailed )
44- m .Conditions .Remove (api .ConditionTypePendingTLSRotation )
45- m .Conditions .Remove (api .ConditionTypePendingRestart )
46- m .Conditions .Remove (api .ConditionTypeRestart )
47- m .Conditions .Remove (api .ConditionTypePendingUpdate )
48- m .Conditions .Remove (api .ConditionTypeUpdating )
49- m .Conditions .Remove (api .ConditionTypeUpdateFailed )
50- m .Conditions .Remove (api .ConditionTypeCleanedOut )
51-
5245 // Change member RID
5346 m .RID = uuid .NewUUID ()
5447
5548 // Clean Pod details
5649 m .PodUID = ""
5750 },
5851 },
52+ api .MemberPhasePending : {
53+ api .MemberPhaseCreated : func (action api.Action , m * api.MemberStatus ) {
54+ // Clean conditions
55+ removeMemberConditionsMapFunc (m )
56+ },
57+ api .MemberPhaseUpgrading : func (action api.Action , m * api.MemberStatus ) {
58+ removeMemberConditionsMapFunc (m )
59+ },
60+ },
61+ }
62+
63+ func removeMemberConditionsMapFunc (m * api.MemberStatus ) {
64+ // Clean conditions
65+ m .Conditions .Remove (api .ConditionTypeReady )
66+ m .Conditions .Remove (api .ConditionTypeTerminated )
67+ m .Conditions .Remove (api .ConditionTypeTerminating )
68+ m .Conditions .Remove (api .ConditionTypeAgentRecoveryNeeded )
69+ m .Conditions .Remove (api .ConditionTypeAutoUpgrade )
70+ m .Conditions .Remove (api .ConditionTypeUpgradeFailed )
71+ m .Conditions .Remove (api .ConditionTypePendingTLSRotation )
72+ m .Conditions .Remove (api .ConditionTypePendingRestart )
73+ m .Conditions .Remove (api .ConditionTypeRestart )
74+ m .Conditions .Remove (api .ConditionTypePendingUpdate )
75+ m .Conditions .Remove (api .ConditionTypeUpdating )
76+ m .Conditions .Remove (api .ConditionTypeUpdateFailed )
77+ m .Conditions .Remove (api .ConditionTypeCleanedOut )
78+ m .Conditions .Remove (api .ConditionTypeTopologyAware )
79+
80+ m .Upgrade = false
5981}
6082
6183func (p phaseMap ) empty (action api.Action , m * api.MemberStatus ) {
0 commit comments