Documentation ¶
Index ¶
- Constants
- Variables
- func CreateRole(ctx context.Context, client *mongo.Client, role string, ...) error
- func CreateUser(ctx context.Context, client *mongo.Client, user, pwd string, ...) error
- func DropUser(ctx context.Context, client *mongo.Client, userName string) error
- func NewLocalUnauthClient(ctx context.Context) (*mongo.Client, error)
- func NewMongodbClient(ctx context.Context, config *Config) (*mongo.Client, error)
- func NewMongosClient(ctx context.Context, hosts []string) (*mongo.Client, error)
- func NewReplSetClient(ctx context.Context, hosts []string) (*mongo.Client, error)
- func NewStandaloneClient(ctx context.Context, host string) (*mongo.Client, error)
- func SetReplSetConfig(ctx context.Context, rsClient *mongo.Client, cfg *RSConfig) error
- func UpdateRole(ctx context.Context, client *mongo.Client, role string, ...) error
- func UpdateUserPass(ctx context.Context, client *mongo.Client, name, pass string) error
- func UpdateUserRoles(ctx context.Context, client *mongo.Client, userName string, ...) error
- type BalancerStatus
- type BuildInfo
- type Config
- type ConfigMember
- type ConfigMembers
- type DBList
- type FCV
- type IsMasterResp
- type LockResp
- type Manager
- func (mgr *Manager) CreateRoot(ctx context.Context) error
- func (mgr *Manager) Demote(context.Context) error
- func (mgr *Manager) Follow(ctx context.Context, cluster *dcs.Cluster) error
- func (mgr *Manager) GetHealthiestMember(cluster *dcs.Cluster, candidate string) *dcs.Member
- func (mgr *Manager) GetLeaderClient(ctx context.Context, cluster *dcs.Cluster) (*mongo.Client, error)
- func (mgr *Manager) GetMemberAddrs(ctx context.Context, cluster *dcs.Cluster) []string
- func (mgr *Manager) GetMemberAddrsFromRSConfig(rsConfig *RSConfig) []string
- func (mgr *Manager) GetMemberState(ctx context.Context) (string, error)
- func (mgr *Manager) GetReplSetClient(ctx context.Context, cluster *dcs.Cluster) (*mongo.Client, error)
- func (mgr *Manager) GetReplSetClientWithHosts(ctx context.Context, hosts []string) (*mongo.Client, error)
- func (mgr *Manager) GetReplSetConfig(ctx context.Context) (*RSConfig, error)
- func (mgr *Manager) GetReplSetStatus(ctx context.Context) (*ReplSetStatus, error)
- func (mgr *Manager) HasOtherHealthyLeader(ctx context.Context, cluster *dcs.Cluster) *dcs.Member
- func (mgr *Manager) HasOtherHealthyMembers(ctx context.Context, cluster *dcs.Cluster, leader string) []*dcs.Member
- func (mgr *Manager) InitializeCluster(ctx context.Context, cluster *dcs.Cluster) error
- func (mgr *Manager) InitiateReplSet(ctx context.Context, cluster *dcs.Cluster) error
- func (mgr *Manager) IsClusterHealthy(ctx context.Context, cluster *dcs.Cluster) bool
- func (mgr *Manager) IsClusterInitialized(ctx context.Context, cluster *dcs.Cluster) (bool, error)
- func (mgr *Manager) IsCurrentMemberHealthy(ctx context.Context, cluster *dcs.Cluster) bool
- func (mgr *Manager) IsCurrentMemberInCluster(ctx context.Context, cluster *dcs.Cluster) bool
- func (mgr *Manager) IsDBStartupReady() bool
- func (mgr *Manager) IsLeader(ctx context.Context, cluster *dcs.Cluster) (bool, error)
- func (mgr *Manager) IsLeaderMember(ctx context.Context, cluster *dcs.Cluster, dcsMember *dcs.Member) (bool, error)
- func (mgr *Manager) IsMemberHealthy(ctx context.Context, cluster *dcs.Cluster, member *dcs.Member) bool
- func (mgr *Manager) IsPromoted(ctx context.Context) bool
- func (mgr *Manager) IsRootCreated(ctx context.Context) (bool, error)
- func (mgr *Manager) IsRunning() bool
- func (mgr *Manager) JoinCurrentMemberToCluster(ctx context.Context, cluster *dcs.Cluster) error
- func (mgr *Manager) LeaveMemberFromCluster(ctx context.Context, cluster *dcs.Cluster, memberName string) error
- func (mgr *Manager) Lock(ctx context.Context, reason string) error
- func (mgr *Manager) Promote(ctx context.Context, cluster *dcs.Cluster) error
- func (mgr *Manager) Recover(context.Context) error
- func (mgr *Manager) Unlock(ctx context.Context) error
- type Member
- type MemberHealth
- type MemberState
- type OKResponse
- type Optime
- type RSConfig
- type ReplSetGetConfig
- type ReplSetStatus
- type ReplsetTags
- type Role
- type RoleInfo
- type RolePrivilege
- type Settings
- type ShardList
- type ShardRemoveResp
- type StatusOptimes
- type User
- type UsersInfo
- type WriteConcern
Constants ¶
const ( PrimaryPriority = 2 SecondaryPriority = 1 )
const ( MinVotingMembers = 1 MaxVotingMembers = 7 MaxMembers = 50 DefaultPriority = 2 DefaultVotes = 1 DefaultReadConcern = "majority" DefaultWriteConcern = "majority" )
const ( MemberHealthDown MemberHealth = iota MemberHealthUp MemberStateStartup MemberState = 0 MemberStatePrimary MemberState = 1 MemberStateSecondary MemberState = 2 MemberStateRecovering MemberState = 3 MemberStateStartup2 MemberState = 5 MemberStateUnknown MemberState = 6 MemberStateArbiter MemberState = 7 MemberStateDown MemberState = 8 MemberStateRollback MemberState = 9 MemberStateRemoved MemberState = 10 )
const ShardRemoveCompleted string = "completed"
Variables ¶
var MemberStateStrings = map[MemberState]string{ MemberStateStartup: "STARTUP", MemberStatePrimary: "PRIMARY", MemberStateSecondary: "SECONDARY", MemberStateRecovering: "RECOVERING", MemberStateStartup2: "STARTUP2", MemberStateUnknown: "UNKNOWN", MemberStateArbiter: "ARBITER", MemberStateDown: "DOWN", MemberStateRollback: "ROLLBACK", MemberStateRemoved: "REMOVED", }
Functions ¶
func CreateRole ¶
func CreateUser ¶
func NewMongodbClient ¶
func NewMongosClient ¶
func NewReplSetClient ¶
func NewStandaloneClient ¶
func SetReplSetConfig ¶
func UpdateRole ¶
func UpdateUserPass ¶
UpdateUserPass updates user's password
Types ¶
type BalancerStatus ¶
type BalancerStatus struct { Mode string `json:"mode"` OKResponse `bson:",inline"` }
type BuildInfo ¶
type BuildInfo struct { Version string `json:"version" bson:"version"` OKResponse `bson:",inline"` }
BuildInfo contains information about mongod build params
type ConfigMember ¶
type ConfigMember struct { ID int `bson:"_id" json:"_id"` Host string `bson:"host" json:"host"` ArbiterOnly *bool `bson:"arbiterOnly,omitempty" json:"arbiterOnly,omitempty"` BuildIndexes *bool `bson:"buildIndexes,omitempty" json:"buildIndexes,omitempty"` Hidden *bool `bson:"hidden,omitempty" json:"hidden,omitempty"` Priority int `bson:"priority,omitempty" json:"priority,omitempty"` Tags ReplsetTags `bson:"tags,omitempty" json:"tags,omitempty"` SlaveDelay *int64 `bson:"slaveDelay,omitempty" json:"slaveDelay,omitempty"` SecondaryDelaySecs *int64 `bson:"secondaryDelaySecs,omitempty" json:"secondaryDelaySecs,omitempty"` Votes *int `bson:"votes,omitempty" json:"votes,omitempty"` }
ConfigMember document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig
type ConfigMembers ¶
type ConfigMembers []ConfigMember
type DBList ¶
type DBList struct { DBs []struct { Name string `bson:"name" json:"name"` } `bson:"databases" json:"databases"` OKResponse `bson:",inline"` }
type FCV ¶
type FCV struct { FCV struct { Version string `json:"version" bson:"version"` } `json:"featureCompatibilityVersion" bson:"featureCompatibilityVersion"` OKResponse `bson:",inline"` }
type IsMasterResp ¶
type LockResp ¶
type LockResp struct { Info string `bson:"info" json:"info"` LockCount int64 `bson:"lockCount" json:"lockCount"` OKResponse `bson:",inline"` }
type Manager ¶
var Mgr *Manager
func (*Manager) GetHealthiestMember ¶
func (*Manager) GetLeaderClient ¶
func (*Manager) GetMemberAddrs ¶
func (*Manager) GetMemberAddrsFromRSConfig ¶
func (*Manager) GetMemberState ¶
func (*Manager) GetReplSetClient ¶
func (*Manager) GetReplSetClientWithHosts ¶
func (*Manager) GetReplSetConfig ¶
func (*Manager) GetReplSetStatus ¶
func (mgr *Manager) GetReplSetStatus(ctx context.Context) (*ReplSetStatus, error)
func (*Manager) HasOtherHealthyLeader ¶
func (*Manager) HasOtherHealthyMembers ¶
func (mgr *Manager) HasOtherHealthyMembers(ctx context.Context, cluster *dcs.Cluster, leader string) []*dcs.Member
HasOtherHealthyMembers Are there any healthy members other than the leader?
func (*Manager) InitializeCluster ¶
func (*Manager) InitiateReplSet ¶
InitiateReplSet is a method to create MongoDB cluster
func (*Manager) IsClusterHealthy ¶
func (*Manager) IsClusterInitialized ¶
IsClusterInitialized is a method to check if cluster is initailized or not
func (*Manager) IsCurrentMemberHealthy ¶
func (*Manager) IsCurrentMemberInCluster ¶
func (*Manager) IsDBStartupReady ¶
func (*Manager) IsLeaderMember ¶
func (*Manager) IsMemberHealthy ¶
func (*Manager) IsRootCreated ¶
func (*Manager) JoinCurrentMemberToCluster ¶
func (*Manager) LeaveMemberFromCluster ¶
type Member ¶
type Member struct { ID int `bson:"_id" json:"_id"` Name string `bson:"name" json:"name"` Health MemberHealth `bson:"health" json:"health"` State MemberState `bson:"state" json:"state"` StateStr string `bson:"stateStr" json:"stateStr"` Uptime int64 `bson:"uptime" json:"uptime"` Optime *Optime `bson:"optime" json:"optime"` OptimeDate time.Time `bson:"optimeDate" json:"optimeDate"` ConfigVersion int `bson:"configVersion" json:"configVersion"` ElectionTime primitive.Timestamp `bson:"electionTime,omitempty" json:"electionTime,omitempty"` ElectionDate time.Time `bson:"electionDate,omitempty" json:"electionDate,omitempty"` InfoMessage string `bson:"infoMessage,omitempty" json:"infoMessage,omitempty"` OptimeDurable *Optime `bson:"optimeDurable,omitempty" json:"optimeDurable,omitempty"` OptimeDurableDate time.Time `bson:"optimeDurableDate,omitempty" json:"optimeDurableDate,omitempty"` LastHeartbeat time.Time `bson:"lastHeartbeat,omitempty" json:"lastHeartbeat,omitempty"` LastHeartbeatRecv time.Time `bson:"lastHeartbeatRecv,omitempty" json:"lastHeartbeatRecv,omitempty"` PingMs int64 `bson:"pingMs,omitempty" json:"pingMs,omitempty"` Self bool `bson:"self,omitempty" json:"self,omitempty"` SyncingTo string `bson:"syncingTo,omitempty" json:"syncingTo,omitempty"` }
type MemberHealth ¶
type MemberHealth int
type MemberState ¶
type MemberState int
type OKResponse ¶
type OKResponse struct { Errmsg string `bson:"errmsg,omitempty" json:"errmsg,omitempty"` OK int `bson:"ok" json:"ok"` }
OKResponse is a standard MongoDB response
type RSConfig ¶
type RSConfig struct { ID string `bson:"_id,omitempty" json:"_id,omitempty"` Version int `bson:"version,omitempty" json:"version,omitempty"` Members ConfigMembers `bson:"members" json:"members"` Configsvr bool `bson:"configsvr,omitempty" json:"configsvr,omitempty"` ProtocolVersion int `bson:"protocolVersion,omitempty" json:"protocolVersion,omitempty"` Settings Settings `bson:"-" json:"settings,omitempty"` WriteConcernMajorityJournalDefault bool `bson:"writeConcernMajorityJournalDefault,omitempty" json:"writeConcernMajorityJournalDefault,omitempty"` }
type ReplSetGetConfig ¶
type ReplSetGetConfig struct { Config *RSConfig `bson:"config" json:"config"` OKResponse `bson:",inline"` }
ReplSetGetConfig Response document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig
type ReplSetStatus ¶
type ReplSetStatus struct { Set string `bson:"set" json:"set"` Date time.Time `bson:"date" json:"date"` MyState MemberState `bson:"myState" json:"myState"` Members []*Member `bson:"members" json:"members"` Term int64 `bson:"term,omitempty" json:"term,omitempty"` HeartbeatIntervalMillis int64 `bson:"heartbeatIntervalMillis,omitempty" json:"heartbeatIntervalMillis,omitempty"` Optimes *StatusOptimes `bson:"optimes,omitempty" json:"optimes,omitempty"` OKResponse `bson:",inline"` }
func GetReplSetStatus ¶
func (*ReplSetStatus) GetMembersByState ¶
func (s *ReplSetStatus) GetMembersByState(state MemberState, limit int) []*Member
func (*ReplSetStatus) GetSelf ¶
func (s *ReplSetStatus) GetSelf() *Member
func (*ReplSetStatus) Primary ¶
func (s *ReplSetStatus) Primary() *Member
type ReplsetTags ¶
ReplsetTags Set tags: https://docs.mongodb.com/manual/tutorial/configure-replica-set-tag-sets/#add-tag-sets-to-a-replica-set
type Role ¶
type Role struct { Role string `bson:"role" json:"role"` DB string `bson:"db" json:"db"` IsBuiltin string `bson:"isBuiltin" json:"isBuiltin"` Roles []map[string]interface{} `bson:"roles" json:"roles"` Privileges []RolePrivilege `bson:"privileges" json:"privileges"` }
type RoleInfo ¶
type RoleInfo struct { Roles []Role `bson:"roles" json:"roles"` OKResponse `bson:",inline"` }
type RolePrivilege ¶
type Settings ¶
type Settings struct { ChainingAllowed bool `bson:"chainingAllowed,omitempty" json:"chainingAllowed,omitempty"` HeartbeatIntervalMillis int64 `bson:"heartbeatIntervalMillis,omitempty" json:"heartbeatIntervalMillis,omitempty"` HeartbeatTimeoutSecs int `bson:"heartbeatTimeoutSecs,omitempty" json:"heartbeatTimeoutSecs,omitempty"` ElectionTimeoutMillis int64 `bson:"electionTimeoutMillis,omitempty" json:"electionTimeoutMillis,omitempty"` CatchUpTimeoutMillis int64 `bson:"catchUpTimeoutMillis,omitempty" json:"catchUpTimeoutMillis,omitempty"` GetLastErrorModes map[string]ReplsetTags `bson:"getLastErrorModes,omitempty" json:"getLastErrorModes,omitempty"` GetLastErrorDefaults WriteConcern `bson:"getLastErrorDefaults,omitempty" json:"getLastErrorDefaults,omitempty"` ReplicaSetID primitive.ObjectID `bson:"replicaSetId,omitempty" json:"replicaSetId,omitempty"` }
Settings document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig
type ShardList ¶
type ShardList struct { Shards []struct { ID string `json:"_id" bson:"_id"` Host string `json:"host" bson:"host"` State int `json:"state" bson:"state"` } `json:"shards" bson:"shards"` OKResponse `bson:",inline"` }
type ShardRemoveResp ¶
type ShardRemoveResp struct { Msg string `json:"msg" bson:"msg"` State string `json:"state" bson:"state"` Remaining struct { Chunks int `json:"chunks" bson:"chunks"` JumboChunks int `json:"jumboChunks" bson:"jumboChunks"` } `json:"remaining" bson:"remaining"` OKResponse `bson:",inline"` }
type StatusOptimes ¶
type User ¶
type UsersInfo ¶
type UsersInfo struct { Users []User `bson:"users" json:"users"` OKResponse `bson:",inline"` }
type WriteConcern ¶
type WriteConcern struct { WriteConcern interface{} `bson:"w" json:"w"` WriteTimeout int `bson:"wtimeout" json:"wtimeout"` Journal bool `bson:"j,omitempty" json:"j,omitempty"` }
WriteConcern document: https://docs.mongodb.com/manual/reference/write-concern/