func (a *actionShutdownMember) Start(ctx context.Context) (bool, error) {
	log := a.log
	m, ok := a.actionCtx.GetMemberStatusByID(a.action.MemberID)
	if !ok {
		log.Error().Msg("No such member")
		return true, nil
	}
	if ready, err := getShutdownHelper(&a.action, a.actionCtx, a.log).Start(ctx); err != nil {
		return false, err
	} else if ready {
		return true, nil
	}
	m.Phase = api.MemberPhaseShuttingDown
	if err := a.actionCtx.UpdateMember(ctx, m); err != nil {
		return false, errors.WithStack(err)
	}
	return false, nil
}
Start performs the start of the action.
Returns true if the action is completely finished, false in case
the start time needs to be recorded and a ready condition needs to be checked.
package reconcile
import (
	"context"
	"github.com/arangodb/kube-arangodb/pkg/util/errors"
	api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
	"github.com/rs/zerolog"
)
func init() {
	registerAction(api.ActionTypeShutdownMember, newShutdownMemberAction)
}
func newShutdownMemberAction(log zerolog.Logger, action api.Action, actionCtx ActionContext) Action {
	a := &actionShutdownMember{}
	a.actionImpl = newActionImplDefRef(log, action, actionCtx, shutdownMemberTimeout)
	return a
}
type actionShutdownMember struct {
	actionImpl
}