domain

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2021 License: Apache-2.0 Imports: 15 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetCanUpdateNotChangeableParams

func GetCanUpdateNotChangeableParams(logger logr.Logger) bool

Types

type Account

type Account struct {
	Account        string `json:"account"`
	Password       string `json:"password"`
	PrivilegedType int    `json:"priviledge_type"`
}

func CreateAccountWithPassword

func CreateAccountWithPassword(account, password string, privilegedType int) *Account

func CreateAccountWithRandPassword

func CreateAccountWithRandPassword(account string, privilegedType int) *Account

type ChangedParamItemValue

type ChangedParamItemValue struct {
	OldValue    string
	NewValue    string
	NeedRestart bool
}

type ClassInfo

type ClassInfo struct {
	ClassName string
	CPU       string
	Memory    string
}

type ClusterManagerInfo

type ClusterManagerInfo struct {
	Port          int
	ConsensusPort int
}

type ClusterStatus

type ClusterStatus struct {
	Phase   string      `json:"phase"`
	Rw      InsStatus   `json:"rw"`
	Ro      []InsStatus `json:"ro"`
	Standby []InsStatus `json:"standby,omitempty"`
}

type CmWorkMode

type CmWorkMode string
const (
	CmWorkModePure CmWorkMode = "PolarPure"
)

type CopyType

type CopyType string
const (
	CopyTypeSync  CopyType = "sync"
	CopyTypeAsync CopyType = "async"
)

type DbClusterBase

type DbClusterBase struct {
	Name                    string
	Namespace               string
	Description             string
	LogicInsId              string
	ClusterStatus           string
	ClusterManager          *ClusterManagerInfo
	ImageInfo               *ImageInfo
	ClassInfo               *ClassInfo
	Resources               map[string]*InstanceResource
	DbClusterType           DbClusterType
	Interrupt               bool
	InterruptMsg            string
	InterruptReason         string
	EngineType              EngineType
	ResourceVersion         string
	PrimarySystemIdentifier string
	UseModifyClass          bool
	UseUpgradeImageInfo     bool
	OldClassInfo            *ClassInfo
	OldImageInfo            *ImageInfo

	ParamsTemplateQuery   IEngineParamsTemplateQuery
	ParamsClassQuery      IEngineParamsClassQuery
	EngineParamsRepo      IEngineParamsRepository
	MinorVersionQuery     IMinorVersionQuery
	AccountRepo           IAccountRepository
	HostClusterQuery      IHostClusterQuery
	IdGenerator           IIdGenerator
	PortGenerator         IPortGenerator
	ClassQuery            IClassQuery
	ClusterManagerClient  IClusterManagerClient
	ClusterManagerRemover IClusterManagerRemover

	Logger logr.Logger
	// contains filtered or unexported fields
}

DB集群基类

func (*DbClusterBase) DeleteCm

func (dbCluster *DbClusterBase) DeleteCm(ctx context.Context) error

*

  • @Description: 删除DB集群对应的ClusterManager及其元数据
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) DisableHA

func (dbCluster *DbClusterBase) DisableHA(ctx context.Context) error

*

  • @Description: 禁用HA
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) EnableHA

func (dbCluster *DbClusterBase) EnableHA(ctx context.Context) error

*

  • @Description: 启用HA
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) EnsureCmAffinity

func (dbCluster *DbClusterBase) EnsureCmAffinity(ctx context.Context, rwHostName string) error

func (*DbClusterBase) FlushParams

func (dbCluster *DbClusterBase) FlushParams(ins *DbIns, ctx context.Context) error

*

  • @Description: 执行刷参
  • @receiver ins
  • @return error

func (*DbClusterBase) GetClusterResourceName

func (dbCluster *DbClusterBase) GetClusterResourceName() string

func (*DbClusterBase) GetEffectiveParams

func (dbCluster *DbClusterBase) GetEffectiveParams(inoperative bool, canUpdateNotChangeableParams bool) (paramItems map[string]string, changed bool, needRestart bool, err error)

*

  • @Description: 获得最终生效的参数,创建实例和刷参场景,参数合并规则参考 https://yuque.antfin.com/pg-hdb-dev/polardb-o-machine/vozb6o
  • @receiver dbCluster
  • @param inoperative 是否使未生效值生效
  • @param canUpdateNotChangeableParams 是否可以更改不可变参数
  • @return paramItems 最终生效参数
  • @return changed 参数是否有变更
  • @return needRestart 是否需要重启
  • @return err

func (*DbClusterBase) GetEffectiveUserParams

func (dbCluster *DbClusterBase) GetEffectiveUserParams(resetClassChangeableValue bool, canUpdateNotChangeableParams bool) (map[string]*EffectiveUserParamValue, bool, bool, error)

当变配时,UserParams要和RunningParams一致,否则管控无法判断以谁为准,要做前置校验。 resetClassChangeableValue 如果前端提示用户规格参数和用户设置的有冲突,console负责把用户解决的冲突写回UserParams,这里设置为false 变配执行时,当前UserParams要合并参数模板中不可变部分和规格默认参数

func (*DbClusterBase) GetRunningParams

func (dbCluster *DbClusterBase) GetRunningParams() (map[string]*ParamItem, error)

获取运行中的参数值

func (*DbClusterBase) GetUserParams

func (dbCluster *DbClusterBase) GetUserParams() (map[string]*ParamItem, string, error)

获取用户设置的参数值

func (*DbClusterBase) Init

func (dbCluster *DbClusterBase) Init(
	paramsTemplateQuery IEngineParamsTemplateQuery,
	paramsClassQuery IEngineParamsClassQuery,
	paramsRepo IEngineParamsRepository,
	minorVersionQuery IMinorVersionQuery,
	accountRepo IAccountRepository,
	idGenerator IIdGenerator,
	portGenerator IPortGenerator,
	classQuery IClassQuery,
	clusterManagerClient IClusterManagerClient,
	hostClusterQuery IHostClusterQuery,
	clusterManagerRemover IClusterManagerRemover,
	logger logr.Logger,
)

func (*DbClusterBase) InitAccount

func (dbCluster *DbClusterBase) InitAccount() error

*

  • @Description: 初始化账户元数据
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) InitClass

func (dbCluster *DbClusterBase) InitClass() error

*

  • @Description: 初始化规格元数据
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) InitEngineParams

func (dbCluster *DbClusterBase) InitEngineParams() error

*

  • @Description: 初始化引擎参数
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) InitVersion

func (dbCluster *DbClusterBase) InitVersion() (err error)

*

  • @Description: 初始化版本元数据
  • @receiver dm
  • @return error

func (*DbClusterBase) ModifyClassParams

func (dbCluster *DbClusterBase) ModifyClassParams() error

*

  • @Description: 变配时应用新规格参数,或者参数模板不可变参数默认值更新后应用新默认值
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) SaveLatestFlushTime

func (dbCluster *DbClusterBase) SaveLatestFlushTime() error

*

  • @Description: 保存最后刷参成功时间
  • @receiver dbCluster
  • @return error

func (*DbClusterBase) UpgradeCmVersion

func (dbCluster *DbClusterBase) UpgradeCmVersion(ctx context.Context, cmImage string) error

type DbClusterType

type DbClusterType string
const (
	DbClusterTypeStandby DbClusterType = "Standby"
	DbClusterTypeDataMax DbClusterType = "Datamax"
	DbClusterTypeMaster  DbClusterType = "Master"
)

type DbIns

type DbIns struct {
	DbInsId
	ResourceName      string
	ResourceNamespace string
	Host              string
	HostIP            string
	ClientIP          string
	NetInfo           *NetInfo      // 网络信息
	EngineState       *EngineStatus // 实例状态
	Installed         bool          // 是否已经安装完成
	StorageHostId     string        // pfs每个节点需要一个ID
	TargetNode        string        // 指定调度节点
	ExcludedNodes     []string      // 排除的节点

	ManagerClient IManagerClient
	PodManager    IEnginePodManager
	// contains filtered or unexported fields
}

func (*DbIns) CreateAccount

func (ins *DbIns) CreateAccount(ctx context.Context) error

*

  • @Description: 根据账户元数据信息创建账户
  • @receiver ins
  • @return error

func (*DbIns) CreatePod

func (ins *DbIns) CreatePod(ctx context.Context) error

*

  • @Description: 创建Pod
  • @receiver ins
  • @return error

func (*DbIns) CreateReplicationSlot

func (ins *DbIns) CreateReplicationSlot(ctx context.Context, roResourceName string) error

*

  • @Description: 创建复制槽
  • @receiver ins
  • @return error

func (*DbIns) DeletePod

func (ins *DbIns) DeletePod(ctx context.Context) error

*

  • @Description: 删除Pod
  • @receiver ins
  • @return error

func (*DbIns) DoHealthCheck

func (ins *DbIns) DoHealthCheck(ctx context.Context) error

*

  • @Description: 健康检查
  • @receiver ins
  • @return error

func (*DbIns) DoHealthCheckWithTimeout

func (ins *DbIns) DoHealthCheckWithTimeout(ctx context.Context, timeout time.Duration) error

*

  • @Description: 健康检查
  • @receiver ins
  • @return error

func (*DbIns) EnsureInsTypeMeta

func (ins *DbIns) EnsureInsTypeMeta(ctx context.Context, insType string) error

func (*DbIns) FlushParams

func (ins *DbIns) FlushParams(ctx context.Context, paramItems map[string]string, restart bool) error

*

  • @Description: 执行刷参
  • @receiver ins
  • @return error

func (*DbIns) GetPrimarySystemIdentifier

func (ins *DbIns) GetPrimarySystemIdentifier(ctx context.Context) (string, error)

*

  • @Description: 安装DB引擎
  • @receiver ins
  • @return error

func (*DbIns) GracefulStopEngine

func (ins *DbIns) GracefulStopEngine(ctx context.Context) error

*

  • @Description: 安全停止引擎
  • @return error

func (*DbIns) GrowStorage

func (ins *DbIns) GrowStorage(ctx context.Context) error

*

  • @Description: 存储扩容
  • @return error

func (*DbIns) Init

func (ins *DbIns) Init(managerClient IManagerClient, podManager IEnginePodManager)

func (*DbIns) InstallDbIns

func (ins *DbIns) InstallDbIns(ctx context.Context) error

*

  • @Description: 安装DB引擎
  • @receiver ins
  • @return error

func (*DbIns) Restart

func (ins *DbIns) Restart(ctx context.Context) error

*

  • @Description: 重启实例
  • @receiver ins
  • @return error

func (*DbIns) SetDbInsInstalled

func (ins *DbIns) SetDbInsInstalled() error

*

  • @Description: 记录引擎安装完毕
  • @receiver ins
  • @return error

func (*DbIns) SetupLogAgent

func (ins *DbIns) SetupLogAgent(ctx context.Context) error

*

  • @Description: 创建UE所需元数据
  • @receiver ins
  • @return error

func (*DbIns) StartEngine

func (ins *DbIns) StartEngine(ctx context.Context) error

*

  • @Description: 启动引擎
  • @return error

func (*DbIns) StopEngineAndDeletePod

func (ins *DbIns) StopEngineAndDeletePod(ctx context.Context, ignoreStopError bool) error

*

  • @Description: 先停止引擎运行再删除Pod
  • @receiver ins
  • @return error

func (*DbIns) WaitForInstallReady

func (ins *DbIns) WaitForInstallReady(ctx context.Context) error

*

  • @Description: 等待复制初始数据完成
  • @receiver ins
  • @return error

type DbInsId

type DbInsId struct {
	PhysicalInsId string // 物理ID
	InsId         string // 实例ID
	InsName       string // 等于InsId的初始值,后续重建实例该值不会变
}

type EffectiveUserParamValue

type EffectiveUserParamValue struct {
	Value             string
	NeedFlush         bool
	RunningUpdateTime string
}

type EngineClass

type EngineClass struct {
	Name          string
	ClassKey      string
	CpuRequest    *resource.Quantity
	CpuLimit      *resource.Quantity
	MemoryRequest *resource.Quantity
	MemoryLimit   *resource.Quantity
	HugePageLimit *resource.Quantity
	MemoryShow    *resource.Quantity
	StorageMin    *resource.Quantity
	StorageMax    *resource.Quantity
	Resource      map[string]*InstanceResource
}

type EngineClasses

type EngineClasses struct {
	EngineType EngineType
	// contains filtered or unexported fields
}

func NewEngineClasses

func NewEngineClasses(engineType EngineType, classQuery IClassQuery) (result *EngineClasses, err error)

func (*EngineClasses) GetClass

func (c *EngineClasses) GetClass(classKey string) (item *EngineClass, err error)

func (*EngineClasses) GetClassList

func (c *EngineClasses) GetClassList() (list []*EngineClass, err error)

type EngineState

type EngineState struct {
	StartedAt *time.Time
	Reason    string
	State     string
}

type EngineStatus

type EngineStatus struct {
	CurrentState EngineState
	LastState    EngineState
}

type EngineType

type EngineType string
const (
	EngineTypeSingle  EngineType = "Single"
	EngineTypeRwo     EngineType = "Rwo"
	EngineTypeDataMax EngineType = "standbyDataMax"
	EngineTypeStandby EngineType = "Standby"
)

type HealthCheckError

type HealthCheckError struct {
	Name   HealthErrorEnum
	Error  error  // 错误
	Reason string // 出错原因
}

func CreateHealthError

func CreateHealthError(name HealthErrorEnum, reason string, err error) *HealthCheckError

type HealthErrorEnum

type HealthErrorEnum string
const (
	HealthErrorStartingUp        HealthErrorEnum = "StartingUp"
	HealthErrorContainerNotFound HealthErrorEnum = "ContainerNotFound"
	HealthErrorUnKnown           HealthErrorEnum = "Unknown"
)

type HostCluster

type HostCluster struct {
	Id              string
	HostClusterName string
	Endpoint        string
	AccessKey       string
	IsLocal         bool
}

type IAccountRepository

type IAccountRepository interface {
	/**
	 * @Description: 保存账户元数据
	 * @param engine
	 * @param account
	 * @return error
	 */
	EnsureAccountMeta(cluster *DbClusterBase, account *Account) error

	/**
	 * @Description: 获取账户元数据
	 * @param clusterName
	 * @param namespace
	 * @return accounts
	 * @return error
	 */
	GetAccounts(clusterName, namespace string) (accounts map[string]*Account, err error)
}

*

  • @Description: 引擎内置账户元数据持久化

type IClassQuery

type IClassQuery interface {
	/**
	 * @Description: 获取所有规格清单
	 * @param engineType 引擎类型
	 * @param classKey 规格名称,如果为空则获取所有规格,不为空则获取指定规格
	 * @return classList
	 * @return err
	 */
	GetClasses(engineType EngineType, classKey string) (classList []*EngineClass, err error)
}

*

  • @Description: 规格元数据查询

type IClusterManagerClient

type IClusterManagerClient interface {

	/**
	 * @Description: 设置跨域主集群
	 * @param ctx
	 * @return error
	 */
	SetLeader(ctx context.Context) error

	/**
	 * @Description: 取消跨域主集群
	 * @param ctx
	 * @return error
	 */
	SetFollower(ctx context.Context) error

	/**
	 * @Description: 初始化
	 * @param ctx
	 * @param dbClusterNamespace
	 * @param dbClusterName
	 * @param waitCmReady
	 * @return error
	 */
	InitWithLocalDbCluster(ctx context.Context, dbClusterNamespace, dbClusterName string, waitCmReady bool) error

	/**
	 * @Description: 添加DataMax节点
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param podName
	 * @param port
	 * @return error
	 */
	AddDataMax(ctx context.Context, id, ip, podName string, port int) error

	/**
	 * @Description: 更新DataMax节点
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param podName
	 * @param port
	 * @return error
	 */
	UpdateDataMax(ctx context.Context, id, ip, podName string, port int) error

	/**
	 * @Description: 删除DataMax节点
	 * @param ctx
	 * @param id
	 * @return error
	 */
	DeleteDataMax(ctx context.Context, id string) error

	/**
	 * @Description: 添加集群节点
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param port
	 * @param isClientIP
	 * @return error
	 */
	AddCluster(ctx context.Context, id, ip string, port int, isClientIP bool) error

	/**
	 * @Description: 更新集群节点
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param port
	 * @param isClientIP
	 * @return error
	 */
	UpdateCluster(ctx context.Context, id, ip string, port int, isClientIP bool) error

	/**
	 * @Description: 删除集群节点
	 * @param ctx
	 * @param id
	 * @return error
	 */
	DeleteCluster(ctx context.Context, id string) error

	/**
	 * @Description: 创建拓扑关系
	 * @param ctx
	 * @param upStreamId 上游节点ID
	 * @param downStreamId 下游节点ID
	 * @param copyType 复制关系类型
	 * @return error
	 */
	AddTopologyEdge(ctx context.Context, upStreamId, downStreamId string, copyType CopyType) error

	/**
	 * @Description: 删除拓扑关系
	 * @param ctx
	 * @param upStreamId 上游节点ID
	 * @param downStreamId 下游节点ID
	 * @return error
	 */
	DeleteTopologyEdge(ctx context.Context, upStreamId, downStreamId string) error

	/**
	 * @Description: 设置standby订阅DataMax
	 * @param ctx
	 * @param id 集群ID
	 * @param ip 上游 client IP
	 * @param port 上游 端口
	 * @param copyType 复制关系类型
	 * @param upStreamId 上游ID
	 * @return error
	 */
	DemoteStandby(ctx context.Context, id, ip string, port int, copyType CopyType, upStreamId string) error

	/**
	 * @Description: standby promote
	 * @param ctx
	 * @return error
	 */
	PromoteStandby(ctx context.Context) error

	/**
	 * @Description: 禁用HA
	 * @param ctx
	 * @return error
	 */
	DisableHA(ctx context.Context) error

	/**
	 * @Description: 启用HA
	 * @param ctx
	 * @return error
	 */
	EnableHA(ctx context.Context) error

	/**
	 * @Description: 添加实例
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param port
	 * @return error
	 */
	AddIns(ctx context.Context, id, ip, role, sync, hostName string, port int, isClientIP bool) error

	/**
	 * @Description: 删除实例
	 * @param ctx
	 * @param id
	 * @param ip
	 * @param port
	 * @return error
	 */
	RemoveIns(ctx context.Context, id, ip, role, sync, hostName string, port int, isClientIP bool) error

	/**
	 * @Description: 读写切换
	 * @param ctx
	 * @param oriRwIp
	 * @param oriRoIp
	 * @param port
	 * @return error
	 */
	Switchover(ctx context.Context, oriRwIp, oriRoIp, port string, isClientIP bool) error

	/**
	 * @Description: 获取集群状态
	 * @param ctx
	 * @return error
	 */
	GetClusterStatus(ctx context.Context) (*ClusterStatus, error)

	EnsureAffinity(ctx context.Context, clusterNamespace, clusterName, rwHostName string) error

	UpgradeVersion(ctx context.Context, clusterNamespace, clusterName, image string) error
}

*

  • @Description: Cluster Manager Client

type IClusterManagerCreator

type IClusterManagerCreator interface {

	/**
	 * @Description: 创建ClusterManager
	 * @param ctx
	 * @param kubeObj dbcluster/standby k8s对象
	 * @param logicInsId
	 * @param rwPhyId
	 * @param cmImage
	 * @param port
	 * @return error
	 */
	CreateClusterManager(ctx context.Context, kubeObj metav1.Object, workMode CmWorkMode, logicInsId, rwPhyId, cmImage string, port int, pluginConf map[string]interface{}, consensusPort int) error
}

*

  • @Description: Cluster Manager Creator

type IClusterManagerRemover

type IClusterManagerRemover interface {

	/**
	 * @Description: 删除ClusterManager
	 * @return error
	 */
	Remove(dbClusterName, dbClusterNamespace string, ctx context.Context) error
}

*

  • @Description: Cluster Manager Remover

type IEngineParamsClassQuery

type IEngineParamsClassQuery interface {
	/**
	 * @Description: 获得某规格特定内核参数
	 * @param engineType 引擎类型
	 * @param classKey 规格名称
	 * @return params 规格特定参数
	 * @return err
	 */
	GetClassParams(engineType EngineType, classKey string) (params map[string]string, err error)
}

*

  • @Description: 规格参数元数据查询

type IEngineParamsRepository

type IEngineParamsRepository interface {
	/**
	 * @Description: 保存用户设置的参数
	 * @param engine
	 * @param initParams
	 * @return error
	 */
	SaveUserParams(engine *DbClusterBase, initParams map[string]string) error

	/**
	 * @Description: 获取用户设置的参数
	 * @param engine
	 * @return map[string]string
	 * @return string 最后一次成功刷参的时间
	 * @return error
	 */
	GetUserParams(engine *DbClusterBase) (map[string]*ParamItem, string, error)

	/**
	 * @Description: 保存生效参数,初始化时使用,后面由cm更新
	 * @param engine
	 * @param initParams
	 * @return error
	 */
	SaveRunningParams(engine *DbClusterBase, initParams map[string]string) error

	/**
	 * @Description: 获取运行中的参数
	 * @param engine
	 * @return map[string]string
	 * @return error
	 */
	GetRunningParams(engine *DbClusterBase) (map[string]*ParamItem, error)

	/**
	 * @Description: 保存最后刷参成功时间
	 * @param dbClusterName
	 * @return map[string]string
	 * @return error
	 */
	SaveLatestFlushTime(engine *DbClusterBase) error

	/**
	 * @Description: 更新UserParam
	 * @param dbClusterName
	 * @return map[string]string
	 * @return error
	 */
	UpdateUserParams(engine *DbClusterBase, userParams map[string]*EffectiveUserParamValue) error
}

*

  • @Description: 引擎参数元数据

type IEngineParamsTemplateQuery

type IEngineParamsTemplateQuery interface {
	/**
	 * @Description: 获取参数模板
	 * @param engineType 引擎类型
	 * @return params 参数模板
	 * @return err
	 */
	GetTemplateParams(engineType EngineType) (params []*ParamTemplateItem, err error)
}

*

  • @Description: 参数模板元数据查询

type IEnginePodManager

type IEnginePodManager interface {

	/**
	 * @Description: 初始化
	 * @param domainModel datamax领域模型
	 */
	Init(domainModel interface{})

	/**
	 * @Description: 设置对应的实例
	 * @param ins 因为一个DB集群会可能包含多个实例,这里指定操作哪个实例
	 */
	SetIns(ins *DbIns)

	/**
	 * @Description: 创建Pod并等待Pod就绪
	 * @param resourceName pod名称
	 * @param ctx
	 * @return error
	 */
	CreatePodAndWaitReady(ctx context.Context) error

	/**
	 * @Description: 删除Pod
	 * @param resourceName pod名称
	 * @param ctx
	 * @return error
	 */
	DeletePod(ctx context.Context) error

	/**
	 * @Description: pod是否已经被删除
	 * @param ctx
	 * @return error
	 */
	IsDeleted(ctx context.Context) (bool, error)

	/**
	 * @Description: 确保pod的读写类型正确
	 * @param ctx
	 * @param insType
	 * @return error
	 */
	EnsureInsTypeMeta(ctx context.Context, insType string) error
}

*

  • @Description: DataMax容器管理

type IHostClusterQuery

type IHostClusterQuery interface {
	/**
	 * @Description: 获得所有HostCluster
	 * @return []*domain.HostCluster
	 * @return error
	 */
	GetAllHostCluster() ([]*HostCluster, error)

	/**
	 * @Description: 根据名称获取某个HostCluster
	 * @param name
	 * @return *domain.HostCluster
	 * @return error
	 */
	GetHostCluster(name string) (*HostCluster, error)

	/**
	 * @Description: 获得本地HostCluster信息
	 * @param name
	 * @return *domain.HostCluster
	 * @return error
	 */
	GetLocalHostCluster() (*HostCluster, error)
}

*

  • @Description: HostCluster元数据查询

type IIdGenerator

type IIdGenerator interface {
	/**
	 * @Description: 获得下一批实例ID
	 * @param n 获得几个ID
	 * @return []int
	 * @return error
	 */
	GetNextClusterScopeHostInsIds(n int) ([]int, error)
}

*

  • @Description: 实例ID生成器

type IManagerClient

type IManagerClient interface {

	/**
	 * @Description: 初始化ManagerClient
	 * @param ctx
	 * @param domainModel 资源对应的领域模型
	 */
	Init(domainModel interface{})

	/**
	 * @Description: 设置ManagerClient对应的实例
	 * @param ins 因为一个DB集群会可能包含多个实例,这里指定操作哪个实例
	 * @return error
	 */
	SetIns(ins *DbIns) error

	/**
	 * @Description: 安装引擎
	 * @param ctx
	 * @return error
	 */
	InstallEngine(ctx context.Context) error

	/**
	 * @Description: 创建UE所需元数据
	 * @param ctx
	 * @return error
	 */
	SetupLogAgent(ctx context.Context) error

	/**
	 * @Description: 启动引擎
	 * @param ctx
	 * @return error
	 */
	StartEngine(ctx context.Context) error

	/**
	 * @Description: 安全停止引擎
	 * @param ctx
	 * @return error
	 */
	GracefulStopEngine(ctx context.Context) error

	/**
	 * @Description: 重启引擎
	 * @param ctx
	 * @return error
	 */
	RestartEngine(ctx context.Context) error

	/**
	 * @Description: 锁定引擎
	 * @param ctx
	 * @return error
	 */
	LockEngine(ctx context.Context) error

	/**
	 * @Description: 创建账户
	 * @param ctx
	 * @return error
	 */
	CreateEngineAccount(ctx context.Context) error

	/**
	 * @Description: 更新引擎参数
	 * @param ctx
	 * @return error
	 */
	UpdateEngineParams(ctx context.Context, engineParams map[string]string) error

	/**
	 * @Description: 存储扩容
	 * @param ctx
	 * @return error
	 */
	GrowStorage(ctx context.Context) error

	/**
	 * @Description: 健康检查
	 * @param ctx
	 * @return error
	 */
	CheckHealth(ctx context.Context) (err *HealthCheckError)

	/**
	 * @Description: 强制停止引擎
	 * @param ctx
	 * @return error
	 */
	ForceStopEngine(ctx context.Context) error

	/**
	 * @Description: 获取PrimarySystemIdentifier
	 * @param ctx
	 * @return error
	 */
	GetPrimarySystemIdentifier(ctx context.Context) (string, error)

	/**
	 * @Description: 创建slot
	 * @param ctx
	 * @return error
	 */
	CreateReplicationSlot(ctx context.Context, roResourceName string) error

	/**
	 * @Description: 异步install是否执行成功
	 * @receiver m
	 * @return err
	 */
	CheckInstallIsReady(ctx context.Context) (bool, error)
}

*

  • @Description: Manager客户端

type IMinorVersionQuery

type IMinorVersionQuery interface {
	/**
	 * @Description: 获取所有内核小版本信息
	 * @param engineType 引擎类型
	 * @return latestVersion 最新版本
	 * @return versionList 内核小版本列表
	 * @return err
	 */
	GetMinorVersions(engineType EngineType) (latestVersion string, versionList []*MinorVersion, err error)

	/**
	 * @Description: 获得最新的内核小版本信息
	 * @param engineType
	 * @return version
	 * @return err
	 */
	GetLatestMinorVersion(engineType EngineType) (version *MinorVersion, err error)

	/**
	 * @Description: 获得内核小版本信息
	 * @param engineType
	 * @param versionName
	 * @return version
	 * @return err
	 */
	GetMinorVersion(engineType EngineType, versionName string) (version *MinorVersion, err error)
}

*

  • @Description: 小版本元数据查询

type IPfsdToolClient

type IPfsdToolClient interface {

	/**
	 * @Description: 初始化Pfsd tool
	 * @param ins 实例领域模型
	 * @param resources 给容器分配的资源
	 * @param volumeId
	 * @return error
	 */
	Init(ins *DbIns, resources map[string]*InstanceResource, volumeId string)
	/**
	 * @Description: 启动pfsd
	 * @return error
	 */
	StartPfsd(ctx context.Context) error
}

*

  • @Description: Pfsd tool客户端

type IPortGenerator

type IPortGenerator interface {
	/**
	 * @Description: 获取一个新端口
	 * @return int
	 * @return error
	 */
	GetNextClusterExternalPort() (int, error)

	/**
	 * @Description: 检测Port是否被占用
	 * @param port
	 * @param rangeName
	 * @return bool
	 * @return error
	 */
	CheckPortUsed(port int, rangeName string) (bool, error)
}

*

  • @Description: 端口生成器

type IStorageManager

type IStorageManager interface {
	/**
	 * @Description: 初始化
	 * @param ip
	 * @param port
	 * @return error
	 */
	InitWithAddress(ip, port string) error

	/**
	 * @Description: 使用存储
	 * @param ctx
	 * @param name pvc名称
	 * @param name pvc namespace
	 * @param volumeId
	 * @param resourceName 关联资源名称
	 * @param volumeType
	 * @param format 是否格式化
	 * @return error
	 */
	UseStorage(ctx context.Context, name, namespace, volumeId, resourceName string, volumeType string, format bool) error

	/**
	 * @Description: 设置写锁
	 * @param ctx
	 * @param name pvc名称
	 * @param name pvc namespace
	 * @param nodeId 写节点ID
	 * @return *StorageTopo 设置后的读写节点拓扑关系
	 * @return error
	 */
	SetWriteLock(ctx context.Context, name, namespace, nodeId string) (*StorageTopo, error)

	/**
	 * @Description: 获取读写节点拓扑关系
	 * @param ctx
	 * @param name pvc名称
	 * @param name pvc namespace
	 * @return *StorageTopo 最新的读写节点拓扑关系
	 * @return error
	 */
	GetTopo(ctx context.Context, name, namespace string) (*StorageTopo, error)

	/**
	 * @Description: 扩容
	 * @param ctx
	 * @param name pvc名称
	 * @param name pvc namespace
	 * @param volumeId
	 * @param resourceName 关联资源名称
	 * @param volumeType
	 * @param reqSize 扩容后容量
	 * @return error
	 */
	Expand(ctx context.Context, name, namespace, volumeId, resourceName string, volumeType int, reqSize int64) error

	/**
	 * @Description: 释放存储
	 * @param ctx
	 * @param name pvc名称
	 * @param name pvc namespace
	 * @param cluster 防止误释放其它集群使用的存储;为空则不校验存储是否被该集群使用,直接释放
	 * @return error
	 */
	Release(ctx context.Context, name, namespace, clusterName string) error
}

type ImageInfo

type ImageInfo struct {
	Version string
	Images  map[string]string
}

type InsStatus

type InsStatus struct {
	Endpoint   string `json:"endpoint"`
	PodName    string `json:"pod_name"`
	Phase      string `json:"phase"`
	StartAt    string `json:"start_at"`
	SyncStatus string `json:"sync_status,omitempty"`
	Role       string `json:"role,omitempty"`
}

type InstanceResource

type InstanceResource struct {
	CPUCores    resource.Quantity `json:"cpu_cores"`
	LimitMemory resource.Quantity `json:"limit_memory"`
	Config      string            `json:"config"`
}

type MinorVersion

type MinorVersion struct {
	Name   string
	Images map[string]string
}

type MinorVersions

type MinorVersions struct {
	EngineType EngineType
	// contains filtered or unexported fields
}

func NewMinorVersion

func NewMinorVersion(engineType EngineType, repository IMinorVersionQuery) (result *MinorVersions, err error)

func (*MinorVersions) GetLatestMinorVersion

func (v *MinorVersions) GetLatestMinorVersion() (version *MinorVersion, err error)

*

  • @Description: 获取最新内核小版本信息
  • @receiver v *MinorVersions
  • @param engineType
  • @return *MinorVersion

func (*MinorVersions) GetMinorVersionList

func (v *MinorVersions) GetMinorVersionList() (list []*MinorVersion, err error)

*

  • @Description: 获取内核小版本列表
  • @receiver v
  • @return list
  • @return err

type NetInfo

type NetInfo struct {
	FloatingIP      string
	Port            int
	ReplicationIP   string
	ReplicationPort int
}

type OnPfsdContainerReady

type OnPfsdContainerReady func() error

type ParamItem

type ParamItem struct {
	Name        string `json:"name"`              // 参数名称
	Value       string `json:"value"`             // 参数值
	UpdateTime  string `json:"updateTime"`        // 更新时间
	Inoperative string `json:"inoperative_value"` // 未生效值,等待重启成效
}

type ParamTemplateItem

type ParamTemplateItem struct {
	Name             string `json:"name"`              // 参数名
	DefaultValue     string `json:"default_value"`     // 默认值
	IsDynamic        int    `json:"is_dynamic"`        // 是否需要重启
	IsVisible        int    `json:"is_visible"`        // 控制台是否可见
	IsUserChangeable int    `json:"is_user_changable"` // 用户是否可更改
	Optional         string `json:"optional"`          // 正则表达式
	Unit             string `json:"unit"`              //
	DivideBase       string `json:"divide_base"`       //
	IsDeleted        int    `json:"is_deleted"`        //
	Comment          string `json:"comment"`           //
}

type ParamsTemplate

type ParamsTemplate struct {
	EngineType EngineType
	ClassKey   string
	// contains filtered or unexported fields
}

func NewParamsTemplate

func NewParamsTemplate(
	engineType EngineType,
	classKey string,
	paramsTemplateRepo IEngineParamsTemplateQuery,
	paramsClassRepo IEngineParamsClassQuery,
	logger logr.Logger,
) (result *ParamsTemplate, err error)

func (*ParamsTemplate) GetClassInitParams

func (t *ParamsTemplate) GetClassInitParams() map[string]string

*

  • @Description: 获得某规格默认参数值
  • @receiver t *ParamsTemplate
  • @return map[string]string

func (*ParamsTemplate) GetMergedTemplateParams

func (t *ParamsTemplate) GetMergedTemplateParams() []*ParamTemplateItem

*

  • @Description: 获得合并了规格默认参数之后的参数模板
  • @receiver t *ParamsTemplate
  • @return []*ParamTemplateItem

type SharedStorageDbClusterBase

type SharedStorageDbClusterBase struct {
	DbClusterBase
	StorageInfo    *StorageInfo
	StorageManager IStorageManager
	// contains filtered or unexported fields
}

基于共享存储的DB集群基类

func (*SharedStorageDbClusterBase) Init

func (dbCluster *SharedStorageDbClusterBase) Init(
	paramsTemplateQuery IEngineParamsTemplateQuery,
	paramsClassQuery IEngineParamsClassQuery,
	paramsRepo IEngineParamsRepository,
	minorVersionQuery IMinorVersionQuery,
	accountRepo IAccountRepository,
	idGenerator IIdGenerator,
	portGenerator IPortGenerator,
	storageManager IStorageManager,
	classQuery IClassQuery,
	clusterManagerClient IClusterManagerClient,
	hostClusterQuery IHostClusterQuery,
	clusterManagerRemover IClusterManagerRemover,
	logger logr.Logger,
)

func (*SharedStorageDbClusterBase) ReleaseStorage

func (dbCluster *SharedStorageDbClusterBase) ReleaseStorage(ctx context.Context) error

*

  • @Description: 释放存储
  • @receiver dbCluster
  • @return error

func (*SharedStorageDbClusterBase) SetStorageWriteLock

func (dbCluster *SharedStorageDbClusterBase) SetStorageWriteLock(ctx context.Context, nodeId string) error

*

  • @Description: 为存储设置写锁
  • @receiver dbCluster
  • @return error

func (*SharedStorageDbClusterBase) UseStorage

func (dbCluster *SharedStorageDbClusterBase) UseStorage(ctx context.Context, format bool) error

*

  • @Description: 使用存储
  • @receiver dbCluster
  • @return error

type StorageInfo

type StorageInfo struct {
	DiskID     string
	DiskQuota  string
	VolumeId   string
	VolumeType string
}

type StorageTopo

type StorageTopo struct {
	ReadNodes []*StorageTopoNode `json:"read_nodes"`
	WriteNode *StorageTopoNode   `json:"write_node"`
}

type StorageTopoNode

type StorageTopoNode struct {
	NodeId string `json:"node_id"`
	NodeIP string `json:"node_ip"`
}

Jump to

Keyboard shortcuts

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