binding

package
v0.7.2-beta.23 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2023 License: AGPL-3.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ReadWrite AccessMode = "ReadWrite"
	Readonly  AccessMode = "Readonly"
	None      AccessMode = "None"

	// keys from response's metadata.
	RespOpKey           = "operation"
	RespStartTimeKey    = "start-time"
	RespRowsAffectedKey = "rows-affected"
	RespEndTimeKey      = "end-time"
	RespDurationKey     = "duration"
	StatusCode          = "status-code"
	// 451 Unavailable For Legal Reasons, used to indicate operation failed.
	OperationFailedHTTPCode = "451"
	// 404 Not Found, used to indicate operation not found.
	OperationNotFoundHTTPCode = "404"

	// CommandSQLKey keys from request's metadata.
	CommandSQLKey = "sql"

	RSMRoleUpdateMechanismVarName = "KB_RSM_ROLE_UPDATE_MECHANISM"
)
View Source
const (
	PRIMARY   = "primary"
	SECONDARY = "secondary"
	MASTER    = "master"
	SLAVE     = "slave"
	LEADER    = "Leader"
	FOLLOWER  = "Follower"
	LEARNER   = "Learner"
	CANDIDATE = "Candidate"
)

Variables

View Source
var (
	ErrNoSQL           = fmt.Errorf(errMsgNoSQL)
	ErrNoUserName      = fmt.Errorf(errMsgNoUserName)
	ErrNoPassword      = fmt.Errorf(errMsgNoPassword)
	ErrNoRoleName      = fmt.Errorf(errMsgNoRoleName)
	ErrInvalidRoleName = fmt.Errorf(errMsgInvalidRoleName)
	ErrNoSuchUser      = fmt.Errorf(errMsgNoSuchUser)
)

Functions

func DefaultUserInfoParser

func DefaultUserInfoParser(req *ProbeRequest, object *UserInfo) error

func ParseObjFromRequest

func ParseObjFromRequest[T customizedObjType](req *ProbeRequest, parse objectParser[T], validator objectValidator[T], object *T) error

func SentProbeEvent

func SentProbeEvent(ctx context.Context, opsResult OpsResult, resp *ProbeResponse, log logr.Logger)

func SortRoleByWeight

func SortRoleByWeight(r1, r2 RoleType) bool

func String2RoleType

func String2RoleType(roleName string) RoleType

func UserNameAndPasswdValidator

func UserNameAndPasswdValidator(user UserInfo) error

func UserNameAndRoleValidator

func UserNameAndRoleValidator(user UserInfo) error

func UserNameValidator

func UserNameValidator(user UserInfo) error

Types

type AccessMode

type AccessMode string

AccessMode defines SVC access mode enums. +enum

type BaseInternalOps

type BaseInternalOps interface {
	InternalQuery(ctx context.Context, sql string) ([]byte, error)
	InternalExec(ctx context.Context, sql string) (int64, error)
	GetLogger() logr.Logger
	GetRunningPort() int
	Invoke(ctx context.Context, req *ProbeRequest) (*ProbeResponse, error)
}

type BaseOperations

type BaseOperations struct {
	CheckRunningFailedCount    int
	CheckStatusFailedCount     int
	CheckRoleFailedCount       int
	RoleUnchangedCount         int
	FailedEventReportFrequency int
	// RoleDetectionThreshold is used to set the report duration of role event after role changed,
	// then event controller can always get rolechanged events to maintain pod label accurately
	// in cases of:
	// 1 rolechanged event lost;
	// 2 pod role label deleted or updated incorrectly.
	RoleDetectionThreshold int
	DBPort                 int
	DBAddress              string
	DBType                 string
	OriRole                string
	DBRoles                map[string]AccessMode
	Logger                 logr.Logger
	Metadata               map[string]string
	InitIfNeed             func() bool
	Manager                component.DBManager
	GetRole                func(context.Context, *ProbeRequest, *ProbeResponse) (string, error)

	OperationsMap map[OperationKind]Operation
}

func (*BaseOperations) CheckRoleOps

func (ops *BaseOperations) CheckRoleOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

func (*BaseOperations) CheckRunningOps

func (ops *BaseOperations) CheckRunningOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

CheckRunningOps checks whether the binding service is in running status, If check fails continuously, report an event at FailedEventReportFrequency frequency

func (*BaseOperations) GetRoleOps

func (ops *BaseOperations) GetRoleOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

func (*BaseOperations) Init

func (ops *BaseOperations) Init(properties component.Properties)

func (*BaseOperations) Invoke

func (ops *BaseOperations) Invoke(ctx context.Context, req *ProbeRequest) (*ProbeResponse, error)

Invoke handles all invoke operations.

func (*BaseOperations) JoinMemberOps

func (ops *BaseOperations) JoinMemberOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

JoinMemberOps is used to join the current member into the DB cluster. If OpsResult["event"] == "success" and err == nil, it indicates that the member has successfully Joined. In any other situation, it signifies a failure.

func (*BaseOperations) LeaveMemberOps

func (ops *BaseOperations) LeaveMemberOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

LeaveMemberOps is used to remove the current member from the DB cluster. If OpsResult["event"] == "success" and err == nil, it indicates that the member has successfully left. In any other situation, it signifies a failure. - "error": is used to indicate if the leave operation has failed. If error is nil, it signifies a successful leave, and if it is not nil, it indicates a failure. - "OpsResult": provides additional detailed messages regarding the operation.

  • "OpsResult['event']" can hold either "fail" or "success" based on the outcome of the leave operation.
  • "OpsResult['message']" provides a specific reason explaining the event.

func (*BaseOperations) LockOps

func (ops *BaseOperations) LockOps(ctx context.Context, req *ProbeRequest, rsp *ProbeResponse) (OpsResult, error)

func (*BaseOperations) Operations

func (ops *BaseOperations) Operations() []OperationKind

Operations returns list of operations supported by the binding.

func (*BaseOperations) RegisterOperation

func (ops *BaseOperations) RegisterOperation(opsKind OperationKind, operation Operation)

func (*BaseOperations) RegisterOperationOnDBReady

func (ops *BaseOperations) RegisterOperationOnDBReady(opsKind OperationKind, operation Operation, manager component.DBManager)

func (*BaseOperations) SwitchoverOps

func (ops *BaseOperations) SwitchoverOps(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

func (*BaseOperations) UnlockOps

func (ops *BaseOperations) UnlockOps(ctx context.Context, req *ProbeRequest, rsp *ProbeResponse) (OpsResult, error)

func (*BaseOperations) VolumeProtectionOps

func (ops *BaseOperations) VolumeProtectionOps(ctx context.Context, req *ProbeRequest, rsp *ProbeResponse) (OpsResult, error)

type Operation

type Operation func(ctx context.Context, req *ProbeRequest, resp *ProbeResponse) (OpsResult, error)

func StartupCheckWraper

func StartupCheckWraper(manager component.DBManager, operation Operation) Operation

type OpsResult

type OpsResult map[string]interface{}

func ExecuteObject

func ExecuteObject[T customizedObjType](ctx context.Context, ops BaseInternalOps, req *ProbeRequest,
	opsKind OperationKind, sqlTplRend cmdRender[T], msgTplRend cmdRender[T], object T) (OpsResult, error)

func QueryObject

func QueryObject[T customizedObjType](ctx context.Context, ops BaseInternalOps, req *ProbeRequest,
	opsKind OperationKind, sqlTplRend cmdRender[T], dataProcessor resultRender[T], object T) (OpsResult, error)

type ProbeRequest

type ProbeRequest struct {
	Data      []byte            `json:"data"`
	Metadata  map[string]string `json:"metadata"`
	Operation OperationKind     `json:"operation"`
}

type ProbeResponse

type ProbeResponse struct {
	Data     []byte            `json:"data"`
	Metadata map[string]string `json:"metadata"`
}

type RedisEntry

type RedisEntry struct {
	Key  string `json:"key"`
	Data []byte `json:"data,omitempty"`
}

type SlaveStatus

type SlaveStatus struct {
	SecondsBehindMaster int64 `json:"Seconds_Behind_Master"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL