Documentation ¶
Index ¶
- Constants
- Variables
- type BalancerStatus
- type BuildInfo
- type Client
- type ClientDatabase
- type Config
- type ConfigMember
- type ConfigMembers
- func (m *ConfigMembers) AddNew(ctx context.Context, from ConfigMembers) bool
- func (m *ConfigMembers) ExternalNodesChanged(compareWith ConfigMembers) bool
- func (m *ConfigMembers) FixMemberConfigs(ctx context.Context, compareWith ConfigMembers) (changes bool)
- func (m *ConfigMembers) FixMemberHostnames(ctx context.Context, compareWith ConfigMembers, rsStatus Status) (member *Member, changes bool)
- func (m *ConfigMembers) RemoveOld(ctx context.Context, compareWith ConfigMembers) bool
- func (m *ConfigMembers) SetVotes(compareWith ConfigMembers, unsafePSA bool)
- type DBList
- type FCV
- type GetRoleResult
- type InheritenceRole
- type IsMasterResp
- type Member
- type MemberHealth
- type MemberState
- type OKResponse
- type Optime
- type RSConfig
- type ReplSetGetConfig
- type ReplsetTags
- type Role
- type RoleAuthenticationRestriction
- type RoleInfo
- type RolePrivilege
- type Settings
- type ShardList
- type ShardRemoveResp
- type Status
- type StatusOptimes
- type User
- type UsersInfo
- type WriteConcern
Constants ¶
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 ¶
This section is empty.
Types ¶
type BalancerStatus ¶ added in v1.6.0
type BalancerStatus struct { Mode string `json:"mode"` OKResponse `bson:",inline"` }
type BuildInfo ¶ added in v1.5.0
type BuildInfo struct { Version string `json:"version" bson:"version"` OKResponse `bson:",inline"` }
BuildInfo contains information about mongod build params
type Client ¶ added in v1.15.0
type Client interface { Disconnect(ctx context.Context) error Database(name string, opts ...*options.DatabaseOptions) ClientDatabase Ping(ctx context.Context, rp *readpref.ReadPref) error SetDefaultRWConcern(ctx context.Context, readConcern, writeConcern string) error ReadConfig(ctx context.Context) (RSConfig, error) CreateRole(ctx context.Context, db string, role Role) error UpdateRole(ctx context.Context, db string, role Role) error GetRole(ctx context.Context, db, role string) (*Role, error) CreateUser(ctx context.Context, db, user, pwd string, roles ...map[string]interface{}) error AddShard(ctx context.Context, rsName, host string) error WriteConfig(ctx context.Context, cfg RSConfig, force bool) error RSStatus(ctx context.Context) (Status, error) StartBalancer(ctx context.Context) error StopBalancer(ctx context.Context) error IsBalancerRunning(ctx context.Context) (bool, error) GetFCV(ctx context.Context) (string, error) SetFCV(ctx context.Context, version string) error ListDBs(ctx context.Context) (DBList, error) ListShard(ctx context.Context) (ShardList, error) RemoveShard(ctx context.Context, shard string) (ShardRemoveResp, error) RSBuildInfo(ctx context.Context) (BuildInfo, error) StepDown(ctx context.Context, seconds int, force bool) error Freeze(ctx context.Context, seconds int) error IsMaster(ctx context.Context) (*IsMasterResp, error) GetUserInfo(ctx context.Context, username, db string) (*User, error) UpdateUserRoles(ctx context.Context, db, username string, roles []map[string]interface{}) error UpdateUserPass(ctx context.Context, db, name, pass string) error UpdateUser(ctx context.Context, currName, newName, pass string) error }
func ToInterface ¶ added in v1.15.0
type ClientDatabase ¶ added in v1.15.0
type ClientDatabase interface {
RunCommand(ctx context.Context, runCommand interface{}, opts ...*options.RunCmdOptions) *mongo.SingleResult
}
type ConfigMember ¶ added in v1.5.0
type ConfigMember struct { ID int `bson:"_id" json:"_id"` Host string `bson:"host" json:"host"` ArbiterOnly bool `bson:"arbiterOnly" json:"arbiterOnly"` BuildIndexes bool `bson:"buildIndexes" json:"buildIndexes"` Hidden bool `bson:"hidden" json:"hidden"` Priority int `bson:"priority" json:"priority"` 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" json:"votes"` Horizons map[string]string `bson:"horizons,omitempty" json:"horizons,omitempty"` }
RSMember document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig
func (ConfigMember) String ¶ added in v1.5.0
func (m ConfigMember) String() string
type ConfigMembers ¶ added in v1.5.0
type ConfigMembers []ConfigMember
func (*ConfigMembers) AddNew ¶ added in v1.5.0
func (m *ConfigMembers) AddNew(ctx context.Context, from ConfigMembers) bool
AddNew adds a new member from given list to the config. It adds only one at a time. Returns true if it adds any member.
func (*ConfigMembers) ExternalNodesChanged ¶ added in v1.10.0
func (m *ConfigMembers) ExternalNodesChanged(compareWith ConfigMembers) bool
ExternalNodesChanged checks if votes or priority fields changed for external nodes
func (*ConfigMembers) FixMemberConfigs ¶ added in v1.18.0
func (m *ConfigMembers) FixMemberConfigs(ctx context.Context, compareWith ConfigMembers) (changes bool)
func (*ConfigMembers) FixMemberHostnames ¶ added in v1.18.0
func (m *ConfigMembers) FixMemberHostnames(ctx context.Context, compareWith ConfigMembers, rsStatus Status) (member *Member, changes bool)
func (*ConfigMembers) RemoveOld ¶ added in v1.5.0
func (m *ConfigMembers) RemoveOld(ctx context.Context, compareWith ConfigMembers) bool
RemoveOld removes from the list those members which are not present in the given list. It always should leave at least one element. The config won't be valid for mongo otherwise. Better, if the last element has the smallest ID in order not to produce defragmentation when the next element will be added (ID = maxID + 1). Mongo replica set member ID must be between 0 and 255, so it matters.
func (*ConfigMembers) SetVotes ¶ added in v1.5.0
func (m *ConfigMembers) SetVotes(compareWith ConfigMembers, unsafePSA bool)
SetVotes sets voting parameters for members list
type DBList ¶ added in v1.7.0
type DBList struct { DBs []struct { Name string `bson:"name" json:"name"` } `bson:"databases" json:"databases"` OKResponse `bson:",inline"` }
type FCV ¶ added in v1.8.0
type FCV struct { FCV struct { Version string `json:"version" bson:"version"` } `json:"featureCompatibilityVersion" bson:"featureCompatibilityVersion"` OKResponse `bson:",inline"` }
type GetRoleResult ¶ added in v1.18.0
type GetRoleResult struct { Role string `bson:"role" json:"role"` DB string `bson:"db" json:"db"` Roles []InheritenceRole `bson:"roles" json:"roles"` Privileges []RolePrivilege `bson:"privileges" json:"privileges"` AuthenticationRestrictions [][]RoleAuthenticationRestriction `bson:"authenticationRestrictions" json:"authenticationRestrictions"` }
type InheritenceRole ¶ added in v1.18.0
type IsMasterResp ¶ added in v1.10.0
type IsMasterResp struct { IsMaster bool `bson:"ismaster" json:"ismaster"` IsArbiter bool `bson:"arbiterOnly" json:"arbiterOnly"` Msg string `bson:"msg" json:"msg"` OKResponse `bson:",inline"` }
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 ¶ added in v1.5.0
type MemberHealth int
type MemberState ¶ added in v1.5.0
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" json:"_id"` Version int `bson:"version" json:"version"` 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:"settings,omitempty" json:"settings,omitempty"` WriteConcernMajorityJournalDefault bool `bson:"writeConcernMajorityJournalDefault" json:"writeConcernMajorityJournalDefault"` }
type ReplSetGetConfig ¶
type ReplSetGetConfig struct { Config *RSConfig `bson:"config" json:"config"` OKResponse `bson:",inline"` }
Response document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig
type ReplsetTags ¶
Replica Set tags: https://docs.mongodb.com/manual/tutorial/configure-replica-set-tag-sets/#add-tag-sets-to-a-replica-set
type Role ¶ added in v1.12.0
type Role struct { Role string `bson:"role" json:"role"` DB string `bson:"db" json:"db"` Roles []InheritenceRole `bson:"roles" json:"roles"` Privileges []RolePrivilege `bson:"privileges" json:"privileges"` AuthenticationRestrictions []RoleAuthenticationRestriction `bson:"authenticationRestrictions" json:"authenticationRestrictions"` }
type RoleAuthenticationRestriction ¶ added in v1.18.0
type RoleInfo ¶ added in v1.12.0
type RoleInfo struct { Roles []GetRoleResult `bson:"roles" json:"roles"` OKResponse `bson:",inline"` }
type RolePrivilege ¶ added in v1.12.0
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 ¶ added in v1.6.0
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 ¶ added in v1.7.0
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 Status ¶ added in v1.5.0
type Status 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 (*Status) GetMembersByState ¶ added in v1.5.0
func (s *Status) GetMembersByState(state MemberState, limit int) []*Member
type StatusOptimes ¶ added in v1.5.0
type UsersInfo ¶ added in v1.12.0
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/