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
 - type WriteConcernReplsetTags
 
Constants ¶
const ( 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 ...Role) 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 []Role) 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]WriteConcernReplsetTags `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"`
	Note      string   `json:"note" bson:"note"`
	DBsToMove []string `json:"dbsToMove" bson:"dbsToMove"`
	Remaining struct {
		DBs         int `json:"dbs" bson:"dbs"`
		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/
type WriteConcernReplsetTags ¶ added in v1.20.0
getLastErrorModes expects a replicaset tag and an integer associated with it: https://www.mongodb.com/docs/manual/reference/replica-configuration/#mongodb-rsconf-rsconf.settings.getLastErrorModes