@@ -858,38 +858,26 @@ func retrieveMongoDBBuildInfo(ctx context.Context, client *mongo.Client, l *logr
858858 buildInfoCmd := bson.D {bson.E {Key : "buildInfo" , Value : 1 }}
859859 res := client .Database ("admin" ).RunCommand (ctx , buildInfoCmd )
860860
861- var buildInfoDoc bson. M
861+ var buildInfoDoc buildInfo
862862 err := res .Decode (& buildInfoDoc )
863863 if err != nil {
864864 return buildInfo {}, errors .Wrap (err , "Failed to run buildInfo command" )
865865 }
866866
867- modules , ok := buildInfoDoc ["modules" ].(bson.A )
868- if ! ok {
869- return buildInfo {}, errors .Wrap (err , "Failed to cast module information variable" )
870- }
871-
872- var bi buildInfo
873- if len (modules ) > 0 && modules [0 ].(string ) == "enterprise" {
874- bi .Edition = EnterpriseEdition
867+ if len (buildInfoDoc .Modules ) > 0 && buildInfoDoc .Modules [0 ] == "enterprise" {
868+ buildInfoDoc .Edition = EnterpriseEdition
875869 } else {
876- bi .Edition = CommunityEdition
870+ buildInfoDoc .Edition = CommunityEdition
877871 }
878- l .Debug ("MongoDB edition: " , bi .Edition )
872+ l .Debug ("MongoDB edition: " , buildInfoDoc .Edition )
879873
880- _ , ok = buildInfoDoc ["psmdbVersion" ]
881- if ok {
882- bi .Vendor = PerconaVendor
874+ if buildInfoDoc .PSMDBVersion != "" {
875+ buildInfoDoc .Vendor = PerconaVendor
883876 } else {
884- bi .Vendor = MongoDBVendor
885- }
886-
887- bi .Version , ok = buildInfoDoc ["version" ].(string )
888- if ! ok {
889- return buildInfo {}, errors .Wrap (err , "Failed to cast version information variable" )
877+ buildInfoDoc .Vendor = MongoDBVendor
890878 }
891879
892- return bi , nil
880+ return buildInfoDoc , nil
893881}
894882
895883func storageEngine (m bson.M ) (prometheus.Metric , error ) { //nolint:ireturn
@@ -1348,9 +1336,12 @@ type rawStatus struct {
13481336}
13491337
13501338type buildInfo struct {
1351- Version string
1352- Edition string
1353- Vendor string
1339+ Version string `bson:"version"`
1340+ PSMDBVersion string `bson:"psmdbVersion"`
1341+ VersionArray []int `bson:"versionArray"`
1342+ Edition string
1343+ Vendor string
1344+ Modules []string `bson:"modules"`
13541345}
13551346
13561347func getDatabaseStatList (ctx context.Context , client * mongo.Client , l * logrus.Entry ) * databaseStatList {
0 commit comments