mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
[Feature] Deprecate Actions (#1383)
This commit is contained in:
parent
90aca02ce1
commit
282a50e255
20 changed files with 600 additions and 473 deletions
|
@ -4,6 +4,7 @@
|
|||
- (Maintenance) Bump golang.org/x/net to v0.13.0
|
||||
- (Feature) PVCResize action concurrency limit
|
||||
- (Feature) Optional Assertions
|
||||
- (Feature) Deprecate Actions
|
||||
|
||||
## [1.2.32](https://github.com/arangodb/kube-arangodb/tree/1.2.32) (2023-08-07)
|
||||
- (Feature) Backup lifetime - remove Backup once its lifetime has been reached
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
| CleanTLSCACertificate | no | 30m0s | no | Enterprise Only | Remove Certificate from CA TrustStore |
|
||||
| CleanTLSKeyfileCertificate | no | 30m0s | no | Enterprise Only | Remove old TLS certificate from server |
|
||||
| ClusterMemberCleanup | no | 10m0s | no | Community & Enterprise | Remove member from Cluster if it is gone already (Coordinators) |
|
||||
| DisableClusterScaling | no | 10m0s | no | Community & Enterprise | (Deprecated) Disable Cluster Scaling integration |
|
||||
| ~~DisableClusterScaling~~ | no | 10m0s | no | Community & Enterprise | Disable Cluster Scaling integration |
|
||||
| DisableMaintenance | no | 10m0s | no | Community & Enterprise | Disable ArangoDB maintenance mode |
|
||||
| DisableMemberMaintenance | no | 10m0s | no | Enterprise Only | Disable ArangoDB DBServer maintenance mode |
|
||||
| EnableClusterScaling | no | 10m0s | no | Community & Enterprise | (Deprecated) Enable Cluster Scaling integration |
|
||||
| ~~EnableClusterScaling~~ | no | 10m0s | no | Community & Enterprise | Enable Cluster Scaling integration |
|
||||
| EnableMaintenance | no | 10m0s | no | Community & Enterprise | Enable ArangoDB maintenance mode |
|
||||
| EnableMemberMaintenance | no | 10m0s | no | Enterprise Only | Enable ArangoDB DBServer maintenance mode |
|
||||
| EncryptionKeyAdd | no | 10m0s | no | Enterprise Only | Add the encryption key to the pool |
|
||||
|
@ -40,7 +40,7 @@
|
|||
| LicenseSet | no | 10m0s | no | Community & Enterprise | Update Cluster license (3.9+) |
|
||||
| MarkToRemoveMember | no | 10m0s | no | Community & Enterprise | Marks member to be removed. Used when member Pod is annotated with replace annotation |
|
||||
| MemberPhaseUpdate | no | 10m0s | no | Community & Enterprise | Change member phase |
|
||||
| MemberRIDUpdate | no | 10m0s | no | Community & Enterprise | Update Run ID of member |
|
||||
| ~~MemberRIDUpdate~~ | no | 10m0s | no | Community & Enterprise | Update Run ID of member |
|
||||
| PVCResize | no | 30m0s | no | Community & Enterprise | Start the resize procedure. Updates PVC Requests field |
|
||||
| PVCResized | no | 15m0s | no | Community & Enterprise | Waits for PVC resize to be completed |
|
||||
| PlaceHolder | no | 10m0s | no | Community & Enterprise | Empty placeholder action |
|
||||
|
@ -65,12 +65,12 @@
|
|||
| RuntimeContainerArgsLogLevelUpdate | no | 10m0s | no | Community & Enterprise | Change ArangoDB Member log levels in runtime |
|
||||
| RuntimeContainerImageUpdate | no | 10m0s | no | Community & Enterprise | Update Container Image in runtime |
|
||||
| RuntimeContainerSyncTolerations | no | 10m0s | no | Community & Enterprise | Update Pod Tolerations in runtime |
|
||||
| SetCondition | no | 10m0s | no | Community & Enterprise | (Deprecated) Set deployment condition |
|
||||
| ~~SetCondition~~ | no | 10m0s | no | Community & Enterprise | Set deployment condition |
|
||||
| SetConditionV2 | no | 10m0s | no | Community & Enterprise | Set deployment condition |
|
||||
| SetCurrentImage | no | 6h0m0s | no | Community & Enterprise | Update deployment current image after image discovery |
|
||||
| SetCurrentMemberArch | no | 10m0s | no | Community & Enterprise | Set current member architecture |
|
||||
| SetMaintenanceCondition | no | 10m0s | no | Community & Enterprise | Update ArangoDB maintenance condition |
|
||||
| SetMemberCondition | no | 10m0s | no | Community & Enterprise | (Deprecated) Set member condition |
|
||||
| ~~SetMemberCondition~~ | no | 10m0s | no | Community & Enterprise | Set member condition |
|
||||
| SetMemberConditionV2 | no | 10m0s | no | Community & Enterprise | Set member condition |
|
||||
| SetMemberCurrentImage | no | 10m0s | no | Community & Enterprise | Update Member current image |
|
||||
| ShutdownMember | no | 30m0s | no | Community & Enterprise | Sends Shutdown requests and waits for container to be stopped |
|
||||
|
|
|
@ -34,6 +34,7 @@ import (
|
|||
|
||||
"github.com/arangodb/kube-arangodb/internal/md"
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/strings"
|
||||
)
|
||||
|
||||
|
@ -188,6 +189,14 @@ func (i ActionsInput) Configurable() []string {
|
|||
return r
|
||||
}
|
||||
|
||||
func (i ActionsInput) Deprecated() map[string]string {
|
||||
r := map[string]string{}
|
||||
for k, a := range i.Actions {
|
||||
r[k] = util.TypeOrDefault(a.Deprecated, "")
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
type Action struct {
|
||||
Timeout *meta.Duration `json:"timeout,omitempty"`
|
||||
StartupFailureGracePeriod *meta.Duration `json:"startupFailureGracePeriod,omitempty"`
|
||||
|
@ -203,6 +212,8 @@ type Action struct {
|
|||
Optional bool `json:"optional"`
|
||||
|
||||
Configurable bool `json:"configurable"`
|
||||
|
||||
Deprecated *string `json:"deprecated"`
|
||||
}
|
||||
|
||||
func (a Action) InScope(scope string) bool {
|
||||
|
@ -247,6 +258,7 @@ func RenderActions(root string) error {
|
|||
"timeouts": in.Timeouts(),
|
||||
"descriptions": in.Descriptions(),
|
||||
"optionals": in.Optionals(),
|
||||
"deprecated": in.Deprecated(),
|
||||
"defaultTimeout": fmt.Sprintf("%d * time.Second // %s", in.DefaultTimeout.Duration/time.Second, in.DefaultTimeout.Duration.String()),
|
||||
}); err != nil {
|
||||
return err
|
||||
|
@ -273,6 +285,7 @@ func RenderActions(root string) error {
|
|||
if err := i.Execute(out, map[string]interface{}{
|
||||
"actions": in.Keys(),
|
||||
"startupFailureGracePeriods": in.StartFailureGracePeriods(),
|
||||
"deprecated": in.Deprecated(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -324,6 +337,7 @@ func RenderActions(root string) error {
|
|||
"startupFailureGracePeriods": in.StartFailureGracePeriods(),
|
||||
"internal": in.Internal(),
|
||||
"optional": in.Optionals(),
|
||||
"deprecated": in.Deprecated(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -352,6 +366,11 @@ func RenderActions(root string) error {
|
|||
)
|
||||
|
||||
for _, k := range in.Keys() {
|
||||
name := k
|
||||
if in.Actions[k].Deprecated != nil {
|
||||
name = fmt.Sprintf("~~%s~~", name)
|
||||
}
|
||||
|
||||
a := in.Actions[k]
|
||||
v := in.DefaultTimeout.Duration.String()
|
||||
if t := a.Timeout; t != nil {
|
||||
|
@ -372,7 +391,7 @@ func RenderActions(root string) error {
|
|||
}
|
||||
|
||||
if err := t.AddRow(map[md.Column]string{
|
||||
action: k,
|
||||
action: name,
|
||||
timeout: v,
|
||||
description: a.Description,
|
||||
edition: vr,
|
||||
|
|
|
@ -26,16 +26,23 @@ const (
|
|||
|
||||
// ActionsDefaultTimeout define default timeout
|
||||
ActionsDefaultTimeout time.Duration = {{ $root.defaultTimeout }}
|
||||
{{- range .actions }}
|
||||
|
||||
{{ range .actions -}}
|
||||
// Action{{ . }}DefaultTimeout define default timeout for action Action{{ . }}
|
||||
Action{{ . }}DefaultTimeout time.Duration = {{ index $root.timeouts . }}
|
||||
{{- end }}
|
||||
|
||||
{{ end }}
|
||||
// Actions
|
||||
{{ range .actions }}
|
||||
|
||||
{{ range .actions -}}
|
||||
// ActionType{{ . }} in scopes {{ index $root.scopes . }}. {{ index $root.descriptions . }}
|
||||
{{ if (index $root.deprecated .) -}}
|
||||
//
|
||||
// Deprecated: {{ index $root.deprecated . }}
|
||||
{{ end -}}
|
||||
ActionType{{ . }} ActionType = "{{ . }}"
|
||||
{{- end }}
|
||||
|
||||
{{ end -}}
|
||||
)
|
||||
|
||||
func (a ActionType) DefaultTimeout() time.Duration {
|
||||
|
|
|
@ -27,30 +27,47 @@ import (
|
|||
var (
|
||||
// Ensure implementation
|
||||
{{- range .actions }}
|
||||
{{- if not (index $root.deprecated .) }}
|
||||
|
||||
_ Action = &action{{ . }}{}
|
||||
_ actionFactory = new{{ . }}Action
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register all actions
|
||||
{{- range .actions }}
|
||||
|
||||
{{ range .actions -}}
|
||||
// {{ . }}
|
||||
{
|
||||
// Get Action defition
|
||||
function := new{{ . }}Action
|
||||
// Get Action type
|
||||
{{ if (index $root.deprecated .) -}}
|
||||
// nolint:staticcheck
|
||||
{{ end -}}
|
||||
action := api.ActionType{{ . }}
|
||||
|
||||
{{ if (index $root.deprecated .) -}}
|
||||
// Get Empty (Deprecated) Action Definition
|
||||
function := newDeprecatedAction
|
||||
|
||||
{{ else -}}
|
||||
// Get Action defition
|
||||
function := new{{ . }}Action
|
||||
|
||||
// Wrap action main function
|
||||
{{- $startupFailureGracePeriod := index $root.startupFailureGracePeriods . -}}
|
||||
{{- if $startupFailureGracePeriod }}
|
||||
|
||||
{{ $startupFailureGracePeriod := index $root.startupFailureGracePeriods . -}}
|
||||
{{ if $startupFailureGracePeriod -}}
|
||||
// With StartupFailureGracePeriod
|
||||
function = withActionStartFailureGracePeriod(function, {{ $startupFailureGracePeriod }})
|
||||
{{- end }}
|
||||
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
// Register action
|
||||
registerAction(action, function)
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{ end -}}
|
||||
}
|
|
@ -33,6 +33,9 @@ func Test_Actions(t *testing.T) {
|
|||
{{- range .actions }}
|
||||
|
||||
t.Run("{{ . }}", func(t *testing.T) {
|
||||
{{ if (index $root.deprecated .) -}}
|
||||
// nolint:staticcheck
|
||||
{{ end -}}
|
||||
ActionsExistence(t, api.ActionType{{ . }})
|
||||
{{- $startupFailureGracePeriod := index $root.startupFailureGracePeriods . -}}
|
||||
{{- if $startupFailureGracePeriod }}
|
||||
|
@ -40,6 +43,9 @@ func Test_Actions(t *testing.T) {
|
|||
{{- end }}
|
||||
{{- $isInternal := index $root.internal . }}
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
{{- if (index $root.deprecated .) }}
|
||||
// nolint:staticcheck
|
||||
{{- end }}
|
||||
{{- if $isInternal }}
|
||||
require.True(t, api.ActionType{{ . }}.Internal())
|
||||
{{- else }}
|
||||
|
@ -48,6 +54,9 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
{{- $isOptional := index $root.optional . }}
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
{{- if (index $root.deprecated .) }}
|
||||
// nolint:staticcheck
|
||||
{{- end }}
|
||||
{{- if $isOptional }}
|
||||
require.True(t, api.ActionType{{ . }}.Optional())
|
||||
{{- else }}
|
||||
|
|
|
@ -100,9 +100,11 @@ actions:
|
|||
SetMemberCurrentImage:
|
||||
description: Update Member current image
|
||||
DisableClusterScaling:
|
||||
description: (Deprecated) Disable Cluster Scaling integration
|
||||
description: Disable Cluster Scaling integration
|
||||
deprecated: "action is not used anymore"
|
||||
EnableClusterScaling:
|
||||
description: (Deprecated) Enable Cluster Scaling integration
|
||||
description: Enable Cluster Scaling integration
|
||||
deprecated: "action is not used anymore"
|
||||
PVCResize:
|
||||
description: Start the resize procedure. Updates PVC Requests field
|
||||
timeout: 30m
|
||||
|
@ -176,17 +178,19 @@ actions:
|
|||
scopes:
|
||||
- High
|
||||
SetMemberCondition:
|
||||
description: (Deprecated) Set member condition
|
||||
description: Set member condition
|
||||
scopes:
|
||||
- High
|
||||
deprecated: "action is not used anymore"
|
||||
SetMemberConditionV2:
|
||||
description: Set member condition
|
||||
scopes:
|
||||
- High
|
||||
SetCondition:
|
||||
description: (Deprecated) Set deployment condition
|
||||
description: Set deployment condition
|
||||
scopes:
|
||||
- High
|
||||
deprecated: "action is not used anymore"
|
||||
SetConditionV2:
|
||||
description: Set deployment condition
|
||||
scopes:
|
||||
|
@ -195,6 +199,7 @@ actions:
|
|||
description: Update Run ID of member
|
||||
scopes:
|
||||
- High
|
||||
deprecated: "action is not used anymore"
|
||||
ArangoMemberUpdatePodSpec:
|
||||
description: Propagate Member Pod spec (requested)
|
||||
scopes:
|
||||
|
|
|
@ -25,168 +25,250 @@ const (
|
|||
|
||||
// ActionsDefaultTimeout define default timeout
|
||||
ActionsDefaultTimeout time.Duration = 600 * time.Second // 10m0s
|
||||
|
||||
// ActionAddMemberDefaultTimeout define default timeout for action ActionAddMember
|
||||
ActionAddMemberDefaultTimeout time.Duration = 600 * time.Second // 10m0s
|
||||
|
||||
// ActionAppendTLSCACertificateDefaultTimeout define default timeout for action ActionAppendTLSCACertificate
|
||||
ActionAppendTLSCACertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionArangoMemberUpdatePodSpecDefaultTimeout define default timeout for action ActionArangoMemberUpdatePodSpec
|
||||
ActionArangoMemberUpdatePodSpecDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionArangoMemberUpdatePodStatusDefaultTimeout define default timeout for action ActionArangoMemberUpdatePodStatus
|
||||
ActionArangoMemberUpdatePodStatusDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionBackupRestoreDefaultTimeout define default timeout for action ActionBackupRestore
|
||||
ActionBackupRestoreDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionBackupRestoreCleanDefaultTimeout define default timeout for action ActionBackupRestoreClean
|
||||
ActionBackupRestoreCleanDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionBootstrapSetPasswordDefaultTimeout define default timeout for action ActionBootstrapSetPassword
|
||||
ActionBootstrapSetPasswordDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionBootstrapUpdateDefaultTimeout define default timeout for action ActionBootstrapUpdate
|
||||
ActionBootstrapUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionCleanMemberServiceDefaultTimeout define default timeout for action ActionCleanMemberService
|
||||
ActionCleanMemberServiceDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionCleanOutMemberDefaultTimeout define default timeout for action ActionCleanOutMember
|
||||
ActionCleanOutMemberDefaultTimeout time.Duration = 172800 * time.Second // 48h0m0s
|
||||
|
||||
// ActionCleanTLSCACertificateDefaultTimeout define default timeout for action ActionCleanTLSCACertificate
|
||||
ActionCleanTLSCACertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionCleanTLSKeyfileCertificateDefaultTimeout define default timeout for action ActionCleanTLSKeyfileCertificate
|
||||
ActionCleanTLSKeyfileCertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionClusterMemberCleanupDefaultTimeout define default timeout for action ActionClusterMemberCleanup
|
||||
ActionClusterMemberCleanupDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionDisableClusterScalingDefaultTimeout define default timeout for action ActionDisableClusterScaling
|
||||
ActionDisableClusterScalingDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionDisableMaintenanceDefaultTimeout define default timeout for action ActionDisableMaintenance
|
||||
ActionDisableMaintenanceDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionDisableMemberMaintenanceDefaultTimeout define default timeout for action ActionDisableMemberMaintenance
|
||||
ActionDisableMemberMaintenanceDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEnableClusterScalingDefaultTimeout define default timeout for action ActionEnableClusterScaling
|
||||
ActionEnableClusterScalingDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEnableMaintenanceDefaultTimeout define default timeout for action ActionEnableMaintenance
|
||||
ActionEnableMaintenanceDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEnableMemberMaintenanceDefaultTimeout define default timeout for action ActionEnableMemberMaintenance
|
||||
ActionEnableMemberMaintenanceDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEncryptionKeyAddDefaultTimeout define default timeout for action ActionEncryptionKeyAdd
|
||||
ActionEncryptionKeyAddDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEncryptionKeyPropagatedDefaultTimeout define default timeout for action ActionEncryptionKeyPropagated
|
||||
ActionEncryptionKeyPropagatedDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEncryptionKeyRefreshDefaultTimeout define default timeout for action ActionEncryptionKeyRefresh
|
||||
ActionEncryptionKeyRefreshDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEncryptionKeyRemoveDefaultTimeout define default timeout for action ActionEncryptionKeyRemove
|
||||
ActionEncryptionKeyRemoveDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionEncryptionKeyStatusUpdateDefaultTimeout define default timeout for action ActionEncryptionKeyStatusUpdate
|
||||
ActionEncryptionKeyStatusUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionIdleDefaultTimeout define default timeout for action ActionIdle
|
||||
ActionIdleDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTAddDefaultTimeout define default timeout for action ActionJWTAdd
|
||||
ActionJWTAddDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTCleanDefaultTimeout define default timeout for action ActionJWTClean
|
||||
ActionJWTCleanDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTPropagatedDefaultTimeout define default timeout for action ActionJWTPropagated
|
||||
ActionJWTPropagatedDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTRefreshDefaultTimeout define default timeout for action ActionJWTRefresh
|
||||
ActionJWTRefreshDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTSetActiveDefaultTimeout define default timeout for action ActionJWTSetActive
|
||||
ActionJWTSetActiveDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionJWTStatusUpdateDefaultTimeout define default timeout for action ActionJWTStatusUpdate
|
||||
ActionJWTStatusUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionKillMemberPodDefaultTimeout define default timeout for action ActionKillMemberPod
|
||||
ActionKillMemberPodDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionLicenseSetDefaultTimeout define default timeout for action ActionLicenseSet
|
||||
ActionLicenseSetDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionMarkToRemoveMemberDefaultTimeout define default timeout for action ActionMarkToRemoveMember
|
||||
ActionMarkToRemoveMemberDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionMemberPhaseUpdateDefaultTimeout define default timeout for action ActionMemberPhaseUpdate
|
||||
ActionMemberPhaseUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionMemberRIDUpdateDefaultTimeout define default timeout for action ActionMemberRIDUpdate
|
||||
ActionMemberRIDUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionPVCResizeDefaultTimeout define default timeout for action ActionPVCResize
|
||||
ActionPVCResizeDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionPVCResizedDefaultTimeout define default timeout for action ActionPVCResized
|
||||
ActionPVCResizedDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionPlaceHolderDefaultTimeout define default timeout for action ActionPlaceHolder
|
||||
ActionPlaceHolderDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerCheckDefaultTimeout define default timeout for action ActionRebalancerCheck
|
||||
ActionRebalancerCheckDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerCheckV2DefaultTimeout define default timeout for action ActionRebalancerCheckV2
|
||||
ActionRebalancerCheckV2DefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerCleanDefaultTimeout define default timeout for action ActionRebalancerClean
|
||||
ActionRebalancerCleanDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerCleanV2DefaultTimeout define default timeout for action ActionRebalancerCleanV2
|
||||
ActionRebalancerCleanV2DefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerGenerateDefaultTimeout define default timeout for action ActionRebalancerGenerate
|
||||
ActionRebalancerGenerateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebalancerGenerateV2DefaultTimeout define default timeout for action ActionRebalancerGenerateV2
|
||||
ActionRebalancerGenerateV2DefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRebuildOutSyncedShardsDefaultTimeout define default timeout for action ActionRebuildOutSyncedShards
|
||||
ActionRebuildOutSyncedShardsDefaultTimeout time.Duration = 86400 * time.Second // 24h0m0s
|
||||
|
||||
// ActionRecreateMemberDefaultTimeout define default timeout for action ActionRecreateMember
|
||||
ActionRecreateMemberDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRefreshTLSKeyfileCertificateDefaultTimeout define default timeout for action ActionRefreshTLSKeyfileCertificate
|
||||
ActionRefreshTLSKeyfileCertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionRemoveMemberDefaultTimeout define default timeout for action ActionRemoveMember
|
||||
ActionRemoveMemberDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRemoveMemberPVCDefaultTimeout define default timeout for action ActionRemoveMemberPVC
|
||||
ActionRemoveMemberPVCDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRenewTLSCACertificateDefaultTimeout define default timeout for action ActionRenewTLSCACertificate
|
||||
ActionRenewTLSCACertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionRenewTLSCertificateDefaultTimeout define default timeout for action ActionRenewTLSCertificate
|
||||
ActionRenewTLSCertificateDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionResignLeadershipDefaultTimeout define default timeout for action ActionResignLeadership
|
||||
ActionResignLeadershipDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionResourceSyncDefaultTimeout define default timeout for action ActionResourceSync
|
||||
ActionResourceSyncDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRotateMemberDefaultTimeout define default timeout for action ActionRotateMember
|
||||
ActionRotateMemberDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRotateStartMemberDefaultTimeout define default timeout for action ActionRotateStartMember
|
||||
ActionRotateStartMemberDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRotateStopMemberDefaultTimeout define default timeout for action ActionRotateStopMember
|
||||
ActionRotateStopMemberDefaultTimeout time.Duration = 900 * time.Second // 15m0s
|
||||
|
||||
// ActionRuntimeContainerArgsLogLevelUpdateDefaultTimeout define default timeout for action ActionRuntimeContainerArgsLogLevelUpdate
|
||||
ActionRuntimeContainerArgsLogLevelUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRuntimeContainerImageUpdateDefaultTimeout define default timeout for action ActionRuntimeContainerImageUpdate
|
||||
ActionRuntimeContainerImageUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionRuntimeContainerSyncTolerationsDefaultTimeout define default timeout for action ActionRuntimeContainerSyncTolerations
|
||||
ActionRuntimeContainerSyncTolerationsDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetConditionDefaultTimeout define default timeout for action ActionSetCondition
|
||||
ActionSetConditionDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetConditionV2DefaultTimeout define default timeout for action ActionSetConditionV2
|
||||
ActionSetConditionV2DefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetCurrentImageDefaultTimeout define default timeout for action ActionSetCurrentImage
|
||||
ActionSetCurrentImageDefaultTimeout time.Duration = 21600 * time.Second // 6h0m0s
|
||||
|
||||
// ActionSetCurrentMemberArchDefaultTimeout define default timeout for action ActionSetCurrentMemberArch
|
||||
ActionSetCurrentMemberArchDefaultTimeout time.Duration = 600 * time.Second // 10m0s
|
||||
|
||||
// ActionSetMaintenanceConditionDefaultTimeout define default timeout for action ActionSetMaintenanceCondition
|
||||
ActionSetMaintenanceConditionDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetMemberConditionDefaultTimeout define default timeout for action ActionSetMemberCondition
|
||||
ActionSetMemberConditionDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetMemberConditionV2DefaultTimeout define default timeout for action ActionSetMemberConditionV2
|
||||
ActionSetMemberConditionV2DefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionSetMemberCurrentImageDefaultTimeout define default timeout for action ActionSetMemberCurrentImage
|
||||
ActionSetMemberCurrentImageDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionShutdownMemberDefaultTimeout define default timeout for action ActionShutdownMember
|
||||
ActionShutdownMemberDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionTLSKeyStatusUpdateDefaultTimeout define default timeout for action ActionTLSKeyStatusUpdate
|
||||
ActionTLSKeyStatusUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionTLSPropagatedDefaultTimeout define default timeout for action ActionTLSPropagated
|
||||
ActionTLSPropagatedDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionTimezoneSecretSetDefaultTimeout define default timeout for action ActionTimezoneSecretSet
|
||||
ActionTimezoneSecretSetDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionTopologyDisableDefaultTimeout define default timeout for action ActionTopologyDisable
|
||||
ActionTopologyDisableDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionTopologyEnableDefaultTimeout define default timeout for action ActionTopologyEnable
|
||||
ActionTopologyEnableDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionTopologyMemberAssignmentDefaultTimeout define default timeout for action ActionTopologyMemberAssignment
|
||||
ActionTopologyMemberAssignmentDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionTopologyZonesUpdateDefaultTimeout define default timeout for action ActionTopologyZonesUpdate
|
||||
ActionTopologyZonesUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionUpToDateUpdateDefaultTimeout define default timeout for action ActionUpToDateUpdate
|
||||
ActionUpToDateUpdateDefaultTimeout time.Duration = ActionsDefaultTimeout
|
||||
|
||||
// ActionUpdateTLSSNIDefaultTimeout define default timeout for action ActionUpdateTLSSNI
|
||||
ActionUpdateTLSSNIDefaultTimeout time.Duration = 600 * time.Second // 10m0s
|
||||
|
||||
// ActionUpgradeMemberDefaultTimeout define default timeout for action ActionUpgradeMember
|
||||
ActionUpgradeMemberDefaultTimeout time.Duration = 21600 * time.Second // 6h0m0s
|
||||
|
||||
// ActionWaitForMemberInSyncDefaultTimeout define default timeout for action ActionWaitForMemberInSync
|
||||
ActionWaitForMemberInSyncDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionWaitForMemberReadyDefaultTimeout define default timeout for action ActionWaitForMemberReady
|
||||
ActionWaitForMemberReadyDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
// ActionWaitForMemberUpDefaultTimeout define default timeout for action ActionWaitForMemberUp
|
||||
ActionWaitForMemberUpDefaultTimeout time.Duration = 1800 * time.Second // 30m0s
|
||||
|
||||
|
@ -194,166 +276,257 @@ const (
|
|||
|
||||
// ActionTypeAddMember in scopes Normal. Adds new member to the Member list
|
||||
ActionTypeAddMember ActionType = "AddMember"
|
||||
|
||||
// ActionTypeAppendTLSCACertificate in scopes Normal. Append Certificate into CA TrustStore
|
||||
ActionTypeAppendTLSCACertificate ActionType = "AppendTLSCACertificate"
|
||||
|
||||
// ActionTypeArangoMemberUpdatePodSpec in scopes High. Propagate Member Pod spec (requested)
|
||||
ActionTypeArangoMemberUpdatePodSpec ActionType = "ArangoMemberUpdatePodSpec"
|
||||
|
||||
// ActionTypeArangoMemberUpdatePodStatus in scopes High. Propagate Member Pod status (current)
|
||||
ActionTypeArangoMemberUpdatePodStatus ActionType = "ArangoMemberUpdatePodStatus"
|
||||
|
||||
// ActionTypeBackupRestore in scopes Normal. Restore selected Backup
|
||||
ActionTypeBackupRestore ActionType = "BackupRestore"
|
||||
|
||||
// ActionTypeBackupRestoreClean in scopes Normal. Clean restore status in case of restore spec change
|
||||
ActionTypeBackupRestoreClean ActionType = "BackupRestoreClean"
|
||||
|
||||
// ActionTypeBootstrapSetPassword in scopes Normal. Change password during bootstrap procedure
|
||||
ActionTypeBootstrapSetPassword ActionType = "BootstrapSetPassword"
|
||||
|
||||
// ActionTypeBootstrapUpdate in scopes Normal. Update bootstrap status
|
||||
ActionTypeBootstrapUpdate ActionType = "BootstrapUpdate"
|
||||
|
||||
// ActionTypeCleanMemberService in scopes Normal. Removes Server Service
|
||||
ActionTypeCleanMemberService ActionType = "CleanMemberService"
|
||||
|
||||
// ActionTypeCleanOutMember in scopes Normal. Run the CleanOut job on member
|
||||
ActionTypeCleanOutMember ActionType = "CleanOutMember"
|
||||
|
||||
// ActionTypeCleanTLSCACertificate in scopes Normal. Remove Certificate from CA TrustStore
|
||||
ActionTypeCleanTLSCACertificate ActionType = "CleanTLSCACertificate"
|
||||
|
||||
// ActionTypeCleanTLSKeyfileCertificate in scopes Normal. Remove old TLS certificate from server
|
||||
ActionTypeCleanTLSKeyfileCertificate ActionType = "CleanTLSKeyfileCertificate"
|
||||
|
||||
// ActionTypeClusterMemberCleanup in scopes Normal. Remove member from Cluster if it is gone already (Coordinators)
|
||||
ActionTypeClusterMemberCleanup ActionType = "ClusterMemberCleanup"
|
||||
// ActionTypeDisableClusterScaling in scopes Normal. (Deprecated) Disable Cluster Scaling integration
|
||||
|
||||
// ActionTypeDisableClusterScaling in scopes Normal. Disable Cluster Scaling integration
|
||||
//
|
||||
// Deprecated: action is not used anymore
|
||||
ActionTypeDisableClusterScaling ActionType = "DisableClusterScaling"
|
||||
|
||||
// ActionTypeDisableMaintenance in scopes Normal. Disable ArangoDB maintenance mode
|
||||
ActionTypeDisableMaintenance ActionType = "DisableMaintenance"
|
||||
|
||||
// ActionTypeDisableMemberMaintenance in scopes Normal. Disable ArangoDB DBServer maintenance mode
|
||||
ActionTypeDisableMemberMaintenance ActionType = "DisableMemberMaintenance"
|
||||
// ActionTypeEnableClusterScaling in scopes Normal. (Deprecated) Enable Cluster Scaling integration
|
||||
|
||||
// ActionTypeEnableClusterScaling in scopes Normal. Enable Cluster Scaling integration
|
||||
//
|
||||
// Deprecated: action is not used anymore
|
||||
ActionTypeEnableClusterScaling ActionType = "EnableClusterScaling"
|
||||
|
||||
// ActionTypeEnableMaintenance in scopes Normal. Enable ArangoDB maintenance mode
|
||||
ActionTypeEnableMaintenance ActionType = "EnableMaintenance"
|
||||
|
||||
// ActionTypeEnableMemberMaintenance in scopes Normal. Enable ArangoDB DBServer maintenance mode
|
||||
ActionTypeEnableMemberMaintenance ActionType = "EnableMemberMaintenance"
|
||||
|
||||
// ActionTypeEncryptionKeyAdd in scopes Normal. Add the encryption key to the pool
|
||||
ActionTypeEncryptionKeyAdd ActionType = "EncryptionKeyAdd"
|
||||
|
||||
// ActionTypeEncryptionKeyPropagated in scopes Normal. Update condition of encryption propagation
|
||||
ActionTypeEncryptionKeyPropagated ActionType = "EncryptionKeyPropagated"
|
||||
|
||||
// ActionTypeEncryptionKeyRefresh in scopes Normal. Refresh the encryption keys on member
|
||||
ActionTypeEncryptionKeyRefresh ActionType = "EncryptionKeyRefresh"
|
||||
|
||||
// ActionTypeEncryptionKeyRemove in scopes Normal. Remove the encryption key to the pool
|
||||
ActionTypeEncryptionKeyRemove ActionType = "EncryptionKeyRemove"
|
||||
|
||||
// ActionTypeEncryptionKeyStatusUpdate in scopes Normal. Update status of encryption propagation
|
||||
ActionTypeEncryptionKeyStatusUpdate ActionType = "EncryptionKeyStatusUpdate"
|
||||
|
||||
// ActionTypeIdle in scopes Normal. Define idle operation in case if preconditions are not meet
|
||||
ActionTypeIdle ActionType = "Idle"
|
||||
|
||||
// ActionTypeJWTAdd in scopes Normal. Adds new JWT to the pool
|
||||
ActionTypeJWTAdd ActionType = "JWTAdd"
|
||||
|
||||
// ActionTypeJWTClean in scopes Normal. Remove JWT key from the pool
|
||||
ActionTypeJWTClean ActionType = "JWTClean"
|
||||
|
||||
// ActionTypeJWTPropagated in scopes Normal. Update condition of JWT propagation
|
||||
ActionTypeJWTPropagated ActionType = "JWTPropagated"
|
||||
|
||||
// ActionTypeJWTRefresh in scopes Normal. Refresh current JWT secrets on the member
|
||||
ActionTypeJWTRefresh ActionType = "JWTRefresh"
|
||||
|
||||
// ActionTypeJWTSetActive in scopes Normal. Change active JWT key on the cluster
|
||||
ActionTypeJWTSetActive ActionType = "JWTSetActive"
|
||||
|
||||
// ActionTypeJWTStatusUpdate in scopes Normal. Update status of JWT propagation
|
||||
ActionTypeJWTStatusUpdate ActionType = "JWTStatusUpdate"
|
||||
|
||||
// ActionTypeKillMemberPod in scopes Normal. Execute Delete on Pod 9put pod in Terminating state)
|
||||
ActionTypeKillMemberPod ActionType = "KillMemberPod"
|
||||
|
||||
// ActionTypeLicenseSet in scopes Normal. Update Cluster license (3.9+)
|
||||
ActionTypeLicenseSet ActionType = "LicenseSet"
|
||||
|
||||
// ActionTypeMarkToRemoveMember in scopes Normal. Marks member to be removed. Used when member Pod is annotated with replace annotation
|
||||
ActionTypeMarkToRemoveMember ActionType = "MarkToRemoveMember"
|
||||
|
||||
// ActionTypeMemberPhaseUpdate in scopes High. Change member phase
|
||||
ActionTypeMemberPhaseUpdate ActionType = "MemberPhaseUpdate"
|
||||
|
||||
// ActionTypeMemberRIDUpdate in scopes High. Update Run ID of member
|
||||
//
|
||||
// Deprecated: action is not used anymore
|
||||
ActionTypeMemberRIDUpdate ActionType = "MemberRIDUpdate"
|
||||
|
||||
// ActionTypePVCResize in scopes Normal. Start the resize procedure. Updates PVC Requests field
|
||||
ActionTypePVCResize ActionType = "PVCResize"
|
||||
|
||||
// ActionTypePVCResized in scopes Normal. Waits for PVC resize to be completed
|
||||
ActionTypePVCResized ActionType = "PVCResized"
|
||||
|
||||
// ActionTypePlaceHolder in scopes Normal. Empty placeholder action
|
||||
ActionTypePlaceHolder ActionType = "PlaceHolder"
|
||||
|
||||
// ActionTypeRebalancerCheck in scopes Normal. Check Rebalancer job progress
|
||||
ActionTypeRebalancerCheck ActionType = "RebalancerCheck"
|
||||
|
||||
// ActionTypeRebalancerCheckV2 in scopes Normal. Check Rebalancer job progress
|
||||
ActionTypeRebalancerCheckV2 ActionType = "RebalancerCheckV2"
|
||||
|
||||
// ActionTypeRebalancerClean in scopes Normal. Cleans Rebalancer jobs
|
||||
ActionTypeRebalancerClean ActionType = "RebalancerClean"
|
||||
|
||||
// ActionTypeRebalancerCleanV2 in scopes Normal. Cleans Rebalancer jobs
|
||||
ActionTypeRebalancerCleanV2 ActionType = "RebalancerCleanV2"
|
||||
|
||||
// ActionTypeRebalancerGenerate in scopes Normal. Generates the Rebalancer plan
|
||||
ActionTypeRebalancerGenerate ActionType = "RebalancerGenerate"
|
||||
|
||||
// ActionTypeRebalancerGenerateV2 in scopes Normal. Generates the Rebalancer plan
|
||||
ActionTypeRebalancerGenerateV2 ActionType = "RebalancerGenerateV2"
|
||||
|
||||
// ActionTypeRebuildOutSyncedShards in scopes High. Run Rebuild Out Synced Shards procedure for DBServers
|
||||
ActionTypeRebuildOutSyncedShards ActionType = "RebuildOutSyncedShards"
|
||||
|
||||
// ActionTypeRecreateMember in scopes Normal. Recreate member with same ID and Data
|
||||
ActionTypeRecreateMember ActionType = "RecreateMember"
|
||||
|
||||
// ActionTypeRefreshTLSKeyfileCertificate in scopes Normal. Recreate Server TLS Certificate secret
|
||||
ActionTypeRefreshTLSKeyfileCertificate ActionType = "RefreshTLSKeyfileCertificate"
|
||||
|
||||
// ActionTypeRemoveMember in scopes Normal. Removes member from the Cluster and Status
|
||||
ActionTypeRemoveMember ActionType = "RemoveMember"
|
||||
|
||||
// ActionTypeRemoveMemberPVC in scopes Normal. Removes member PVC and enforce recreate procedure
|
||||
ActionTypeRemoveMemberPVC ActionType = "RemoveMemberPVC"
|
||||
|
||||
// ActionTypeRenewTLSCACertificate in scopes Normal. Recreate Managed CA secret
|
||||
ActionTypeRenewTLSCACertificate ActionType = "RenewTLSCACertificate"
|
||||
|
||||
// ActionTypeRenewTLSCertificate in scopes Normal. Recreate Server TLS Certificate secret
|
||||
ActionTypeRenewTLSCertificate ActionType = "RenewTLSCertificate"
|
||||
|
||||
// ActionTypeResignLeadership in scopes Normal. Run the ResignLeadership job on DBServer
|
||||
ActionTypeResignLeadership ActionType = "ResignLeadership"
|
||||
|
||||
// ActionTypeResourceSync in scopes Normal. Runs the Resource sync
|
||||
ActionTypeResourceSync ActionType = "ResourceSync"
|
||||
|
||||
// ActionTypeRotateMember in scopes Normal. Waits for Pod restart and recreation
|
||||
ActionTypeRotateMember ActionType = "RotateMember"
|
||||
|
||||
// ActionTypeRotateStartMember in scopes Normal. Start member rotation. After this action member is down
|
||||
ActionTypeRotateStartMember ActionType = "RotateStartMember"
|
||||
|
||||
// ActionTypeRotateStopMember in scopes Normal. Finalize member rotation. After this action member is started back
|
||||
ActionTypeRotateStopMember ActionType = "RotateStopMember"
|
||||
|
||||
// ActionTypeRuntimeContainerArgsLogLevelUpdate in scopes Normal. Change ArangoDB Member log levels in runtime
|
||||
ActionTypeRuntimeContainerArgsLogLevelUpdate ActionType = "RuntimeContainerArgsLogLevelUpdate"
|
||||
|
||||
// ActionTypeRuntimeContainerImageUpdate in scopes Normal. Update Container Image in runtime
|
||||
ActionTypeRuntimeContainerImageUpdate ActionType = "RuntimeContainerImageUpdate"
|
||||
|
||||
// ActionTypeRuntimeContainerSyncTolerations in scopes Normal. Update Pod Tolerations in runtime
|
||||
ActionTypeRuntimeContainerSyncTolerations ActionType = "RuntimeContainerSyncTolerations"
|
||||
// ActionTypeSetCondition in scopes High. (Deprecated) Set deployment condition
|
||||
|
||||
// ActionTypeSetCondition in scopes High. Set deployment condition
|
||||
//
|
||||
// Deprecated: action is not used anymore
|
||||
ActionTypeSetCondition ActionType = "SetCondition"
|
||||
|
||||
// ActionTypeSetConditionV2 in scopes High. Set deployment condition
|
||||
ActionTypeSetConditionV2 ActionType = "SetConditionV2"
|
||||
|
||||
// ActionTypeSetCurrentImage in scopes Normal. Update deployment current image after image discovery
|
||||
ActionTypeSetCurrentImage ActionType = "SetCurrentImage"
|
||||
|
||||
// ActionTypeSetCurrentMemberArch in scopes Normal. Set current member architecture
|
||||
ActionTypeSetCurrentMemberArch ActionType = "SetCurrentMemberArch"
|
||||
|
||||
// ActionTypeSetMaintenanceCondition in scopes Normal. Update ArangoDB maintenance condition
|
||||
ActionTypeSetMaintenanceCondition ActionType = "SetMaintenanceCondition"
|
||||
// ActionTypeSetMemberCondition in scopes High. (Deprecated) Set member condition
|
||||
|
||||
// ActionTypeSetMemberCondition in scopes High. Set member condition
|
||||
//
|
||||
// Deprecated: action is not used anymore
|
||||
ActionTypeSetMemberCondition ActionType = "SetMemberCondition"
|
||||
|
||||
// ActionTypeSetMemberConditionV2 in scopes High. Set member condition
|
||||
ActionTypeSetMemberConditionV2 ActionType = "SetMemberConditionV2"
|
||||
|
||||
// ActionTypeSetMemberCurrentImage in scopes Normal. Update Member current image
|
||||
ActionTypeSetMemberCurrentImage ActionType = "SetMemberCurrentImage"
|
||||
|
||||
// ActionTypeShutdownMember in scopes Normal. Sends Shutdown requests and waits for container to be stopped
|
||||
ActionTypeShutdownMember ActionType = "ShutdownMember"
|
||||
|
||||
// ActionTypeTLSKeyStatusUpdate in scopes Normal. Update Status of TLS propagation process
|
||||
ActionTypeTLSKeyStatusUpdate ActionType = "TLSKeyStatusUpdate"
|
||||
|
||||
// ActionTypeTLSPropagated in scopes Normal. Update TLS propagation condition
|
||||
ActionTypeTLSPropagated ActionType = "TLSPropagated"
|
||||
|
||||
// ActionTypeTimezoneSecretSet in scopes Normal. Set timezone details in cluster
|
||||
ActionTypeTimezoneSecretSet ActionType = "TimezoneSecretSet"
|
||||
|
||||
// ActionTypeTopologyDisable in scopes Normal. Disable TopologyAwareness
|
||||
ActionTypeTopologyDisable ActionType = "TopologyDisable"
|
||||
|
||||
// ActionTypeTopologyEnable in scopes Normal. Enable TopologyAwareness
|
||||
ActionTypeTopologyEnable ActionType = "TopologyEnable"
|
||||
|
||||
// ActionTypeTopologyMemberAssignment in scopes Normal. Update TopologyAwareness Members assignments
|
||||
ActionTypeTopologyMemberAssignment ActionType = "TopologyMemberAssignment"
|
||||
|
||||
// ActionTypeTopologyZonesUpdate in scopes Normal. Update TopologyAwareness Zones info
|
||||
ActionTypeTopologyZonesUpdate ActionType = "TopologyZonesUpdate"
|
||||
|
||||
// ActionTypeUpToDateUpdate in scopes Normal. Update UpToDate condition
|
||||
ActionTypeUpToDateUpdate ActionType = "UpToDateUpdate"
|
||||
|
||||
// ActionTypeUpdateTLSSNI in scopes Normal. Update certificate in SNI
|
||||
ActionTypeUpdateTLSSNI ActionType = "UpdateTLSSNI"
|
||||
|
||||
// ActionTypeUpgradeMember in scopes Normal. Run the Upgrade procedure on member
|
||||
ActionTypeUpgradeMember ActionType = "UpgradeMember"
|
||||
|
||||
// ActionTypeWaitForMemberInSync in scopes Normal. Wait for member to be in sync. In case of DBServer waits for shards. In case of Agents to catch-up on Agency index
|
||||
ActionTypeWaitForMemberInSync ActionType = "WaitForMemberInSync"
|
||||
|
||||
// ActionTypeWaitForMemberReady in scopes Normal. Wait for member Ready condition
|
||||
ActionTypeWaitForMemberReady ActionType = "WaitForMemberReady"
|
||||
|
||||
// ActionTypeWaitForMemberUp in scopes Normal. Wait for member to be responsive
|
||||
ActionTypeWaitForMemberUp ActionType = "WaitForMemberUp"
|
||||
)
|
||||
|
|
|
@ -286,6 +286,19 @@ func (p Plan) Before(action ...Action) Plan {
|
|||
return n
|
||||
}
|
||||
|
||||
// WrapWithPlan wraps plan with plan
|
||||
func (p Plan) WrapWithPlan(before, after Plan) Plan {
|
||||
n := Plan{}
|
||||
|
||||
n = append(n, before...)
|
||||
|
||||
n = append(n, p...)
|
||||
|
||||
n = append(n, after...)
|
||||
|
||||
return n
|
||||
}
|
||||
|
||||
// Wrap wraps plan with actions
|
||||
func (p Plan) Wrap(before, after Action) Plan {
|
||||
n := Plan{}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -161,11 +161,14 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("DisableClusterScaling", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
ActionsExistence(t, api.ActionTypeDisableClusterScaling)
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeDisableClusterScaling.Internal())
|
||||
})
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeDisableClusterScaling.Optional())
|
||||
})
|
||||
})
|
||||
|
@ -191,11 +194,14 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("EnableClusterScaling", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
ActionsExistence(t, api.ActionTypeEnableClusterScaling)
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeEnableClusterScaling.Internal())
|
||||
})
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeEnableClusterScaling.Optional())
|
||||
})
|
||||
})
|
||||
|
@ -381,11 +387,14 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("MemberRIDUpdate", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
ActionsExistence(t, api.ActionTypeMemberRIDUpdate)
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeMemberRIDUpdate.Internal())
|
||||
})
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeMemberRIDUpdate.Optional())
|
||||
})
|
||||
})
|
||||
|
@ -633,11 +642,14 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("SetCondition", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
ActionsExistence(t, api.ActionTypeSetCondition)
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeSetCondition.Internal())
|
||||
})
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeSetCondition.Optional())
|
||||
})
|
||||
})
|
||||
|
@ -683,11 +695,14 @@ func Test_Actions(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("SetMemberCondition", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
ActionsExistence(t, api.ActionTypeSetMemberCondition)
|
||||
t.Run("Internal", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeSetMemberCondition.Internal())
|
||||
})
|
||||
t.Run("Optional", func(t *testing.T) {
|
||||
// nolint:staticcheck
|
||||
require.False(t, api.ActionTypeSetMemberCondition.Optional())
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package reconcile
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
)
|
||||
|
||||
// newDisableClusterScalingAction creates the new action with disabling scaling DBservers and coordinators.
|
||||
func newDisableClusterScalingAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := &actionDisableClusterScaling{}
|
||||
|
||||
a.actionImpl = newActionImpl(action, actionCtx, util.NewType[string](""))
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
// actionDisableClusterScaling implements disabling scaling DBservers and coordinators.
|
||||
type actionDisableClusterScaling struct {
|
||||
// actionImpl implement timeout and member id functions
|
||||
actionImpl
|
||||
|
||||
// actionEmptyCheckProgress implement check progress with empty implementation
|
||||
actionEmptyCheckProgress
|
||||
}
|
||||
|
||||
// Start disables scaling DBservers and coordinators
|
||||
func (a *actionDisableClusterScaling) Start(ctx context.Context) (bool, error) {
|
||||
err := a.actionCtx.DisableScalingCluster(ctx)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package reconcile
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
)
|
||||
|
||||
// newEnableClusterScalingAction creates the new action with enabling scaling DBservers and coordinators.
|
||||
func newEnableClusterScalingAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := &actionEnableClusterScaling{}
|
||||
|
||||
a.actionImpl = newActionImpl(action, actionCtx, util.NewType[string](""))
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
// actionEnableClusterScaling implements enabling scaling DBservers and coordinators.
|
||||
type actionEnableClusterScaling struct {
|
||||
// actionImpl implement timeout and member id functions
|
||||
actionImpl
|
||||
|
||||
// actionEmptyCheckProgress implement check progress with empty implementation
|
||||
actionEmptyCheckProgress
|
||||
}
|
||||
|
||||
// Start enables scaling DBservers and coordinators
|
||||
func (a *actionEnableClusterScaling) Start(ctx context.Context) (bool, error) {
|
||||
err := a.actionCtx.EnableScalingCluster(ctx)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -27,6 +27,7 @@ import (
|
|||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/assertion"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -123,3 +124,25 @@ func (a actionImpl) wrap(in *zerolog.Event) *zerolog.Event {
|
|||
func (a actionImpl) MemberID() string {
|
||||
return *a.memberIDRef
|
||||
}
|
||||
|
||||
func newDeprecatedAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := actionDeprecated{}
|
||||
|
||||
a.actionImpl = newActionImplDefRef(action, actionCtx)
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
type actionDeprecated struct {
|
||||
actionImpl
|
||||
|
||||
actionEmptyCheckProgress
|
||||
}
|
||||
|
||||
func (a actionDeprecated) Start(ctx context.Context) (bool, error) {
|
||||
a.log.Warn("Deprecated Action call")
|
||||
|
||||
assertion.Assert(true, assertion.DeprecatedActionKey, "Action %s is deprecated", a.action.Type.String())
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package reconcile
|
||||
|
||||
import (
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
)
|
||||
|
||||
func newMemberRIDUpdateAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := &actionMemberRIDUpdate{}
|
||||
|
||||
a.actionImpl = newActionImplDefRef(action, actionCtx)
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
type actionMemberRIDUpdate struct {
|
||||
actionEmpty
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package reconcile
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
)
|
||||
|
||||
func newSetConditionAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := &actionSetCondition{}
|
||||
|
||||
a.actionImpl = newActionImplDefRef(action, actionCtx)
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
type actionSetCondition struct {
|
||||
// actionImpl implement timeout and member id functions
|
||||
actionImpl
|
||||
|
||||
actionEmptyCheckProgress
|
||||
}
|
||||
|
||||
// Start starts the action for changing conditions on the provided member.
|
||||
func (a actionSetCondition) Start(ctx context.Context) (bool, error) {
|
||||
if len(a.action.Params) == 0 {
|
||||
a.log.Info("can not start the action with the empty list of conditions")
|
||||
return true, nil
|
||||
}
|
||||
|
||||
if err := a.actionCtx.WithStatusUpdate(ctx, func(s *api.DeploymentStatus) bool {
|
||||
changed := false
|
||||
for condition, value := range a.action.Params {
|
||||
if value == "" {
|
||||
a.log.Debug("remove the condition")
|
||||
|
||||
if s.Conditions.Remove(api.ConditionType(condition)) {
|
||||
changed = true
|
||||
}
|
||||
} else {
|
||||
set, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
a.log.Err(err).Str("value", value).Error("can not parse string to boolean")
|
||||
continue
|
||||
}
|
||||
|
||||
a.log.Debug("set the condition")
|
||||
|
||||
if s.Conditions.Update(api.ConditionType(condition), set, a.action.Reason, "action set the member condition") {
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return changed
|
||||
}); err != nil {
|
||||
a.log.Err(err).Warn("Unable to set condition")
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package reconcile
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
)
|
||||
|
||||
func newSetMemberConditionAction(action api.Action, actionCtx ActionContext) Action {
|
||||
a := &actionSetMemberCondition{}
|
||||
|
||||
a.actionImpl = newActionImplDefRef(action, actionCtx)
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
type actionSetMemberCondition struct {
|
||||
// actionImpl implement timeout and member id functions
|
||||
actionImpl
|
||||
|
||||
actionEmptyCheckProgress
|
||||
}
|
||||
|
||||
// Start starts the action for changing conditions on the provided member.
|
||||
func (a actionSetMemberCondition) Start(ctx context.Context) (bool, error) {
|
||||
m, ok := a.actionCtx.GetMemberStatusByID(a.action.MemberID)
|
||||
if !ok {
|
||||
a.log.Info("can not set the condition because the member is gone already")
|
||||
return true, nil
|
||||
}
|
||||
|
||||
if len(a.action.Params) == 0 {
|
||||
a.log.Info("can not start the action with the empty list of conditions")
|
||||
return true, nil
|
||||
}
|
||||
|
||||
for condition, value := range a.action.Params {
|
||||
if value == "" {
|
||||
a.log.Debug("remove the condition")
|
||||
|
||||
m.Conditions.Remove(api.ConditionType(condition))
|
||||
} else {
|
||||
set, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
a.log.Err(err).Str("value", value).Error("can not parse string to boolean")
|
||||
continue
|
||||
}
|
||||
|
||||
a.log.Debug("set the condition")
|
||||
|
||||
m.Conditions.Update(api.ConditionType(condition), set, a.action.Reason, "action set the member condition")
|
||||
}
|
||||
}
|
||||
|
||||
if err := a.actionCtx.UpdateMember(ctx, m); err != nil {
|
||||
return false, errors.Wrap(errors.WithStack(err), "can not update the member")
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
|
@ -123,15 +123,18 @@ func (r *Reconciler) updateMemberPhasePlan(ctx context.Context, apiObject k8suti
|
|||
}
|
||||
|
||||
func pendingRestartMemberConditionAction(group api.ServerGroup, memberID string, reason string) api.Action {
|
||||
return actions.NewAction(api.ActionTypeSetMemberCondition, group, shared.WithPredefinedMember(memberID), reason).AddParam(api.ConditionTypePendingRestart.String(), "T")
|
||||
return shared.UpdateMemberConditionActionV2(reason, api.ConditionTypePendingRestart, group, memberID, true, reason, "", "")
|
||||
}
|
||||
|
||||
func restartMemberConditionAction(group api.ServerGroup, memberID string, reason string) api.Action {
|
||||
return pendingRestartMemberConditionAction(group, memberID, reason).AddParam(api.ConditionTypeRestart.String(), "T")
|
||||
func restartMemberConditionAction(group api.ServerGroup, memberID string, reason string) api.Plan {
|
||||
return api.Plan{
|
||||
pendingRestartMemberConditionAction(group, memberID, reason),
|
||||
shared.UpdateMemberConditionActionV2(reason, api.ConditionTypeRestart, group, memberID, true, reason, "", ""),
|
||||
}
|
||||
}
|
||||
|
||||
func tlsRotateConditionAction(group api.ServerGroup, memberID string, reason string) api.Action {
|
||||
return actions.NewAction(api.ActionTypeSetMemberCondition, group, shared.WithPredefinedMember(memberID), reason).AddParam(api.ConditionTypePendingTLSRotation.String(), "T")
|
||||
return shared.UpdateMemberConditionActionV2(reason, api.ConditionTypePendingTLSRotation, group, memberID, true, reason, "", "")
|
||||
}
|
||||
|
||||
func (r *Reconciler) updateMemberUpdateConditionsPlan(ctx context.Context, apiObject k8sutil.APIObject,
|
||||
|
@ -144,13 +147,11 @@ func (r *Reconciler) updateMemberUpdateConditionsPlan(ctx context.Context, apiOb
|
|||
// We are in updating phase
|
||||
if status.Plan.IsEmpty() {
|
||||
// If plan is empty then something went wrong
|
||||
plan = append(plan,
|
||||
actions.NewAction(api.ActionTypeSetMemberCondition, e.Group, e.Member, "Clean update actions after failure").
|
||||
AddParam(api.ConditionTypePendingUpdate.String(), "").
|
||||
AddParam(api.ConditionTypeUpdating.String(), "").
|
||||
AddParam(api.ConditionTypeUpdateFailed.String(), "T").
|
||||
AddParam(api.ConditionTypePendingRestart.String(), "T"),
|
||||
)
|
||||
plan = append(plan, shared.RemoveMemberConditionActionV2("Clean update actions after failure", api.ConditionTypePendingUpdate, e.Group, e.Member.ID),
|
||||
shared.RemoveMemberConditionActionV2("Clean update actions after failure", api.ConditionTypeUpdating, e.Group, e.Member.ID),
|
||||
shared.UpdateMemberConditionActionV2("Clean update actions after failure", api.ConditionTypeUpdateFailed, e.Group, e.Member.ID, true, "Clean update actions after failure", "", ""),
|
||||
shared.UpdateMemberConditionActionV2("Clean update actions after failure", api.ConditionTypePendingRestart, e.Group, e.Member.ID, true, "Clean update actions after failure", "", ""))
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -207,7 +208,7 @@ func (r *Reconciler) updateMemberRotationConditions(apiObject k8sutil.APIObject,
|
|||
r.log.Bool("enforced", true).Info("Unknown reason")
|
||||
}
|
||||
// We need to do enforced rotation
|
||||
return api.Plan{restartMemberConditionAction(group, member.ID, reason)}, nil
|
||||
return restartMemberConditionAction(group, member.ID, reason), nil
|
||||
case rotation.InPlaceRotation:
|
||||
if member.Conditions.IsTrue(api.ConditionTypeUpdateFailed) {
|
||||
if !(member.Conditions.IsTrue(api.ConditionTypePendingRestart) || member.Conditions.IsTrue(api.ConditionTypeRestart)) {
|
||||
|
@ -217,7 +218,7 @@ func (r *Reconciler) updateMemberRotationConditions(apiObject k8sutil.APIObject,
|
|||
} else if member.Conditions.IsTrue(api.ConditionTypeUpdating) || member.Conditions.IsTrue(api.ConditionTypePendingUpdate) {
|
||||
return nil, nil
|
||||
}
|
||||
return api.Plan{actions.NewAction(api.ActionTypeSetMemberCondition, group, member, reason).AddParam(api.ConditionTypePendingUpdate.String(), "T")}, nil
|
||||
return api.Plan{shared.UpdateMemberConditionActionV2(reason, api.ConditionTypePendingUpdate, group, member.ID, true, reason, "", "")}, nil
|
||||
case rotation.SilentRotation:
|
||||
// Propagate changes without restart, but apply plan if required
|
||||
plan = append(plan, actions.NewAction(api.ActionTypeArangoMemberUpdatePodStatus, group, member, "Propagating status of pod").AddParam(ActionTypeArangoMemberUpdatePodStatusChecksum, checksum))
|
||||
|
@ -234,7 +235,7 @@ func (r *Reconciler) updateMemberRotationConditions(apiObject k8sutil.APIObject,
|
|||
}
|
||||
|
||||
if spec.MemberPropagationMode.Get() == api.DeploymentMemberPropagationModeAlways {
|
||||
return api.Plan{restartMemberConditionAction(group, member.ID, reason)}, nil
|
||||
return restartMemberConditionAction(group, member.ID, reason), nil
|
||||
} else {
|
||||
return api.Plan{pendingRestartMemberConditionAction(group, member.ID, reason)}, nil
|
||||
}
|
||||
|
|
|
@ -203,9 +203,10 @@ func (r *Reconciler) createUpdatePlanInternal(apiObject k8sutil.APIObject, spec
|
|||
|
||||
if svc, ok := cache.Service().V1().GetSimple(arangoMember.GetName()); ok {
|
||||
if k8sutil.IsServiceRotationRequired(spec, svc) {
|
||||
return api.Plan{actions.NewAction(api.ActionTypeSetMemberCondition, m.Group, m.Member, "Cleaning update").
|
||||
AddParam(api.ConditionTypePendingUpdate.String(), "").
|
||||
AddParam(api.ConditionTypeUpdating.String(), "T")}, false
|
||||
return api.Plan{
|
||||
shared.RemoveMemberConditionActionV2("Cleaning update", api.ConditionTypePendingUpdate, m.Group, m.Member.ID),
|
||||
shared.UpdateMemberConditionActionV2("Cleaning update", api.ConditionTypeUpdating, m.Group, m.Member.ID, true, "Cleaning update", "", ""),
|
||||
}, false
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -213,18 +214,20 @@ func (r *Reconciler) createUpdatePlanInternal(apiObject k8sutil.APIObject, spec
|
|||
r.planLogger.Err(err).Str("member", m.Member.ID).Error("Error while generating update plan")
|
||||
continue
|
||||
} else if mode != rotation.InPlaceRotation {
|
||||
return api.Plan{actions.NewAction(api.ActionTypeSetMemberCondition, m.Group, m.Member, "Cleaning update").
|
||||
AddParam(api.ConditionTypePendingUpdate.String(), "").
|
||||
AddParam(api.ConditionTypeUpdating.String(), "T")}, false
|
||||
return api.Plan{
|
||||
shared.RemoveMemberConditionActionV2(reason, api.ConditionTypePendingUpdate, m.Group, m.Member.ID),
|
||||
shared.UpdateMemberConditionActionV2(reason, api.ConditionTypeUpdating, m.Group, m.Member.ID, true, reason, "", ""),
|
||||
}, false
|
||||
} else {
|
||||
p = withWaitForMember(p, m.Group, m.Member)
|
||||
|
||||
p = append(p, actions.NewAction(api.ActionTypeArangoMemberUpdatePodStatus, m.Group, m.Member, "Propagating status of pod").AddParam(ActionTypeArangoMemberUpdatePodStatusChecksum, checksum))
|
||||
|
||||
p = p.Wrap(actions.NewAction(api.ActionTypeSetMemberCondition, m.Group, m.Member, reason).
|
||||
AddParam(api.ConditionTypePendingUpdate.String(), "").AddParam(api.ConditionTypeUpdating.String(), "T"),
|
||||
actions.NewAction(api.ActionTypeSetMemberCondition, m.Group, m.Member, reason).
|
||||
AddParam(api.ConditionTypeUpdating.String(), ""))
|
||||
p.WrapWithPlan(api.Plan{
|
||||
shared.RemoveMemberConditionActionV2(reason, api.ConditionTypePendingUpdate, m.Group, m.Member.ID),
|
||||
shared.UpdateMemberConditionActionV2(reason, api.ConditionTypeUpdating, m.Group, m.Member.ID, true, reason, "", ""),
|
||||
}, api.Plan{
|
||||
shared.RemoveMemberConditionActionV2(reason, api.ConditionTypeUpdating, m.Group, m.Member.ID),
|
||||
})
|
||||
|
||||
return p, false
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ type Key string
|
|||
|
||||
const (
|
||||
KeyUnknown Key = ""
|
||||
DeprecatedActionKey Key = "DeprecatedAction"
|
||||
)
|
||||
|
||||
func (k Key) Assert(condition bool, msg string, args ...interface{}) {
|
||||
|
|
Loading…
Reference in a new issue