mongo-replica-initializer/mongo_replica_init.go

45 lines
974 B
Go

package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func initReplMongo() {
// Create a new client and connect to the servers
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:30000"))
if err != nil {
panic(err)
}
defer client.Disconnect(context.TODO())
// Get a handle to the admin database
admin := client.Database("admin")
// Define the replica set configuration
config := bson.M{
"_id": replicasetName,
"members": []bson.M{},
}
for i := 0; i < int(numberOfContainers); i++ {
member := bson.M{
"_id": i,
"host": fmt.Sprintf("mongo%d", i),
}
config["members"] = append(config["members"].([]bson.M), member)
}
// Initiate the replica set
res, err := admin.RunCommand(context.TODO(), bson.D{{"replSetInitiate", config}}).Raw()
if err != nil {
panic(err)
}
fmt.Println(res)
}