github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/lorry/engines/base.go (about)

     1  /*
     2  Copyright (C) 2022-2023 ApeCloud Co., Ltd
     3  
     4  This file is part of KubeBlocks project
     5  
     6  This program is free software: you can redistribute it and/or modify
     7  it under the terms of the GNU Affero General Public License as published by
     8  the Free Software Foundation, either version 3 of the License, or
     9  (at your option) any later version.
    10  
    11  This program is distributed in the hope that it will be useful
    12  but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14  GNU Affero General Public License for more details.
    15  
    16  You should have received a copy of the GNU Affero General Public License
    17  along with this program.  If not, see <http://www.gnu.org/licenses/>.
    18  */
    19  
    20  package engines
    21  
    22  import (
    23  	"context"
    24  	"errors"
    25  	"fmt"
    26  	"strings"
    27  
    28  	"github.com/go-logr/logr"
    29  	"github.com/spf13/viper"
    30  
    31  	"github.com/1aal/kubeblocks/pkg/lorry/dcs"
    32  	"github.com/1aal/kubeblocks/pkg/lorry/engines/models"
    33  )
    34  
    35  type DBManagerBase struct {
    36  	CurrentMemberName string
    37  	ClusterCompName   string
    38  	Namespace         string
    39  	DataDir           string
    40  	Logger            logr.Logger
    41  	DBStartupReady    bool
    42  	IsLocked          bool
    43  	DBState           *dcs.DBState
    44  }
    45  
    46  func NewDBManagerBase(logger logr.Logger) (*DBManagerBase, error) {
    47  	currentMemberName := viper.GetString("KB_POD_NAME")
    48  	if currentMemberName == "" {
    49  		return nil, fmt.Errorf("KB_POD_NAME is not set")
    50  	}
    51  
    52  	mgr := DBManagerBase{
    53  		CurrentMemberName: currentMemberName,
    54  		ClusterCompName:   viper.GetString("KB_CLUSTER_COMP_NAME"),
    55  		Namespace:         viper.GetString("KB_NAMESPACE"),
    56  		Logger:            logger,
    57  	}
    58  	return &mgr, nil
    59  }
    60  
    61  func (mgr *DBManagerBase) IsDBStartupReady() bool {
    62  	return true
    63  }
    64  
    65  func (mgr *DBManagerBase) GetLogger() logr.Logger {
    66  	return mgr.Logger
    67  }
    68  
    69  func (mgr *DBManagerBase) SetLogger(logger logr.Logger) {
    70  	mgr.Logger = logger
    71  }
    72  
    73  func (mgr *DBManagerBase) GetCurrentMemberName() string {
    74  	return mgr.CurrentMemberName
    75  }
    76  
    77  func (mgr *DBManagerBase) IsFirstMember() bool {
    78  	return strings.HasSuffix(mgr.CurrentMemberName, "-0")
    79  }
    80  
    81  func (mgr *DBManagerBase) IsPromoted(context.Context) bool {
    82  	return true
    83  }
    84  
    85  func (mgr *DBManagerBase) Promote(context.Context, *dcs.Cluster) error {
    86  	return errors.New("not implemented")
    87  }
    88  
    89  func (mgr *DBManagerBase) Demote(context.Context) error {
    90  	return errors.New("not implemented")
    91  }
    92  
    93  func (mgr *DBManagerBase) Follow(context.Context, *dcs.Cluster) error {
    94  	return errors.New("not implemented")
    95  }
    96  
    97  func (mgr *DBManagerBase) Recover(context.Context) error {
    98  	return errors.New("not implemented")
    99  }
   100  
   101  func (mgr *DBManagerBase) IsLeader(context.Context, *dcs.Cluster) (bool, error) {
   102  	return false, nil
   103  }
   104  
   105  func (mgr *DBManagerBase) IsLeaderMember(context.Context, *dcs.Cluster, *dcs.Member) (bool, error) {
   106  	return false, errors.New("not implemented")
   107  }
   108  
   109  func (mgr *DBManagerBase) GetMemberAddrs(context.Context, *dcs.Cluster) []string {
   110  	return nil
   111  }
   112  
   113  func (mgr *DBManagerBase) InitializeCluster(context.Context, *dcs.Cluster) error {
   114  	return nil
   115  }
   116  
   117  func (mgr *DBManagerBase) IsClusterInitialized(context.Context, *dcs.Cluster) (bool, error) {
   118  	return true, nil
   119  }
   120  
   121  func (mgr *DBManagerBase) IsClusterHealthy(context.Context, *dcs.Cluster) bool {
   122  	return true
   123  }
   124  
   125  func (mgr *DBManagerBase) HasOtherHealthyLeader(context.Context, *dcs.Cluster) *dcs.Member {
   126  	return nil
   127  }
   128  
   129  func (mgr *DBManagerBase) HasOtherHealthyMembers(context.Context, *dcs.Cluster, string) []*dcs.Member {
   130  	return nil
   131  }
   132  
   133  func (mgr *DBManagerBase) IsMemberHealthy(context.Context, *dcs.Cluster, *dcs.Member) bool {
   134  	return false
   135  }
   136  
   137  func (mgr *DBManagerBase) IsCurrentMemberHealthy(context.Context, *dcs.Cluster) bool {
   138  	return true
   139  }
   140  
   141  func (mgr *DBManagerBase) IsCurrentMemberInCluster(context.Context, *dcs.Cluster) bool {
   142  	return true
   143  }
   144  
   145  func (mgr *DBManagerBase) JoinCurrentMemberToCluster(context.Context, *dcs.Cluster) error {
   146  	return nil
   147  }
   148  
   149  func (mgr *DBManagerBase) LeaveMemberFromCluster(context.Context, *dcs.Cluster, string) error {
   150  	return nil
   151  }
   152  
   153  func (mgr *DBManagerBase) IsMemberLagging(context.Context, *dcs.Cluster, *dcs.Member) (bool, int64) {
   154  	return false, 0
   155  }
   156  
   157  func (mgr *DBManagerBase) GetLag(context.Context, *dcs.Cluster) (int64, error) {
   158  	return 0, errors.New("not implemented")
   159  }
   160  
   161  func (mgr *DBManagerBase) GetDBState(context.Context, *dcs.Cluster) *dcs.DBState {
   162  	// mgr.DBState = DBState
   163  	return nil
   164  }
   165  
   166  func (mgr *DBManagerBase) MoveData(context.Context, *dcs.Cluster) error {
   167  	return nil
   168  }
   169  
   170  func (mgr *DBManagerBase) GetReplicaRole(context.Context, *dcs.Cluster) (string, error) {
   171  	return "", errors.New("not implemented")
   172  }
   173  
   174  func (mgr *DBManagerBase) Exec(context.Context, string) (int64, error) {
   175  	return 0, errors.New("not implemented")
   176  }
   177  
   178  func (mgr *DBManagerBase) Query(context.Context, string) ([]byte, error) {
   179  	return []byte{}, errors.New("not implemented")
   180  }
   181  
   182  func (mgr *DBManagerBase) GetPort() (int, error) {
   183  	return 0, errors.New("not implemented")
   184  }
   185  
   186  func (mgr *DBManagerBase) IsRootCreated(context.Context) (bool, error) {
   187  	return true, nil
   188  }
   189  
   190  func (mgr *DBManagerBase) ListUsers(context.Context) ([]models.UserInfo, error) {
   191  	return nil, errors.New("not implemented")
   192  }
   193  
   194  func (mgr *DBManagerBase) ListSystemAccounts(context.Context) ([]models.UserInfo, error) {
   195  	return nil, errors.New("not implemented")
   196  }
   197  
   198  func (mgr *DBManagerBase) CreateUser(context.Context, string, string) error {
   199  	return errors.New("not implemented")
   200  }
   201  
   202  func (mgr *DBManagerBase) DeleteUser(context.Context, string) error {
   203  	return errors.New("not implemented")
   204  }
   205  
   206  func (mgr *DBManagerBase) DescribeUser(context.Context, string) (*models.UserInfo, error) {
   207  	return nil, errors.New("not implemented")
   208  }
   209  
   210  func (mgr *DBManagerBase) GrantUserRole(context.Context, string, string) error {
   211  	return errors.New("not implemented")
   212  }
   213  
   214  func (mgr *DBManagerBase) RevokeUserRole(context.Context, string, string) error {
   215  	return errors.New("not implemented")
   216  }
   217  
   218  func (mgr *DBManagerBase) IsRunning() bool {
   219  	return false
   220  }
   221  
   222  func (mgr *DBManagerBase) Lock(context.Context, string) error {
   223  	return errors.New("not implemented")
   224  }
   225  
   226  func (mgr *DBManagerBase) Unlock(context.Context) error {
   227  	return errors.New("not implemented")
   228  }
   229  
   230  func (mgr *DBManagerBase) Start(context.Context, *dcs.Cluster) error {
   231  	return nil
   232  }
   233  
   234  func (mgr *DBManagerBase) Stop() error {
   235  	return nil
   236  }
   237  
   238  func (mgr *DBManagerBase) CreateRoot(context.Context) error {
   239  	return nil
   240  }
   241  
   242  func (mgr *DBManagerBase) ShutDownWithWait() {
   243  	mgr.Logger.Info("Override me if need")
   244  }