@ -6,7 +6,7 @@ import (
"strings"
)
func MakeMonQuery( cephconn * C ephconnection, query map [ string ] string ) [ ] byte {
func makeMonQuery( cephconn * c ephconnection, query map [ string ] string ) [ ] byte {
monjson , err := json . Marshal ( query )
if err != nil {
log . Fatalf ( "Can't marshal json mon query. Error: %v" , err )
@ -19,8 +19,8 @@ func MakeMonQuery(cephconn *Cephconnection, query map[string]string) []byte {
return monrawanswer
}
func GetPoolSize( cephconn * Cephconnection , params P arams) Poolinfo {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd pool get" , "pool" : params . pool ,
func getPoolSize( cephconn * cephconnection , params p arams) Poolinfo {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd pool get" , "pool" : params . pool ,
"format" : "json" , "var" : "size" } )
monanswer := Poolinfo { }
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
@ -30,8 +30,8 @@ func GetPoolSize(cephconn *Cephconnection, params Params) Poolinfo {
}
func GetPgByPool( cephconn * Cephconnection , params P arams) [ ] PlacementGroup {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "pg ls-by-pool" , "poolstr" : params . pool ,
func getPgByPool( cephconn * cephconnection , params p arams) [ ] PlacementGroup {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "pg ls-by-pool" , "poolstr" : params . pool ,
"format" : "json" } )
var monanswer [ ] PlacementGroup
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
@ -40,8 +40,8 @@ func GetPgByPool(cephconn *Cephconnection, params Params) []PlacementGroup {
return monanswer
}
func GetOsdCrushDump( cephconn * C ephconnection) OsdCrushDump {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd crush dump" , "format" : "json" } )
func getOsdCrushDump( cephconn * c ephconnection) OsdCrushDump {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd crush dump" , "format" : "json" } )
var monanswer OsdCrushDump
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
log . Fatalf ( "Can't parse monitor answer. Error: %v" , err )
@ -49,8 +49,8 @@ func GetOsdCrushDump(cephconn *Cephconnection) OsdCrushDump {
return monanswer
}
func GetOsdDump( cephconn * C ephconnection) OsdDump {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd dump" , "format" : "json" } )
func getOsdDump( cephconn * c ephconnection) OsdDump {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd dump" , "format" : "json" } )
var monanswer OsdDump
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
log . Fatalf ( "Can't parse monitor answer. Error: %v" , err )
@ -58,8 +58,8 @@ func GetOsdDump(cephconn *Cephconnection) OsdDump {
return monanswer
}
func GetOsdMetadata( cephconn * C ephconnection) [ ] OsdMetadata {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd metadata" , "format" : "json" } )
func getOsdMetadata( cephconn * c ephconnection) [ ] OsdMetadata {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd metadata" , "format" : "json" } )
var monanswer [ ] OsdMetadata
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
log . Fatalf ( "Can't parse monitor answer. Error: %v" , err )
@ -67,8 +67,8 @@ func GetOsdMetadata(cephconn *Cephconnection) []OsdMetadata {
return monanswer
}
func GetObjActingPrimary( cephconn * Cephconnection , params P arams, objname string ) int64 {
monrawanswer := M akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd map" , "pool" : params . pool ,
func getObjActingPrimary( cephconn * cephconnection , params p arams, objname string ) int64 {
monrawanswer := m akeMonQuery( cephconn , map [ string ] string { "prefix" : "osd map" , "pool" : params . pool ,
"object" : objname , "format" : "json" } )
var monanswer OsdMap
if err := json . Unmarshal ( [ ] byte ( monrawanswer ) , & monanswer ) ; err != nil {
@ -77,7 +77,7 @@ func GetObjActingPrimary(cephconn *Cephconnection, params Params, objname string
return monanswer . UpPrimary
}
func G etCrushHostBuckets( buckets [ ] Bucket , itemid int64 ) [ ] Bucket {
func g etCrushHostBuckets( buckets [ ] Bucket , itemid int64 ) [ ] Bucket {
var rootbuckets [ ] Bucket
for _ , bucket := range buckets {
if bucket . ID == itemid {
@ -85,7 +85,7 @@ func GetCrushHostBuckets(buckets []Bucket, itemid int64) []Bucket {
rootbuckets = append ( rootbuckets , bucket )
} else {
for _ , item := range bucket . Items {
result := G etCrushHostBuckets( buckets , item . ID )
result := g etCrushHostBuckets( buckets , item . ID )
for _ , it := range result {
rootbuckets = append ( rootbuckets , it )
}
@ -96,7 +96,7 @@ func GetCrushHostBuckets(buckets []Bucket, itemid int64) []Bucket {
return rootbuckets
}
func GetOsdForLocations( params P arams, osdcrushdump OsdCrushDump , osddump OsdDump , poolinfo Poolinfo , osdsmetadata [ ] OsdMetadata ) [ ] Device {
func getOsdForLocations( params p arams, osdcrushdump OsdCrushDump , osddump OsdDump , poolinfo Poolinfo , osdsmetadata [ ] OsdMetadata ) [ ] Device {
var crushrule , rootid int64
var crushrulename string
for _ , pool := range osddump . Pools {
@ -120,7 +120,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
}
var osddevices [ ] Device
bucketitems := G etCrushHostBuckets( osdcrushdump . Buckets , rootid )
bucketitems := g etCrushHostBuckets( osdcrushdump . Buckets , rootid )
if params . define != "" {
if strings . HasPrefix ( params . define , "osd." ) {
for _ , hostbucket := range bucketitems {
@ -185,7 +185,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
return osddevices
}
func C ontainsPg( pgs [ ] PlacementGroup , i int64 ) bool {
func c ontainsPg( pgs [ ] PlacementGroup , i int64 ) bool {
for _ , pg := range pgs {
if i == pg . ActingPrimary {
return true
@ -194,19 +194,19 @@ func ContainsPg(pgs []PlacementGroup, i int64) bool {
return false
}
func GetOsds( cephconn * Cephconnection , params P arams) [ ] Device {
poolinfo := G etPoolSize( cephconn , params )
func getOsds( cephconn * cephconnection , params p arams) [ ] Device {
poolinfo := g etPoolSize( cephconn , params )
if poolinfo . Size != 1 {
log . Fatalf ( "Pool size must be 1. Current size for pool %v is %v. Don't forget that it must be useless pool (not production). Do:\n # ceph osd pool set %v min_size 1\n # ceph osd pool set %v size 1" ,
poolinfo . Pool , poolinfo . Size , poolinfo . Pool , poolinfo . Pool )
}
placementGroups := G etPgByPool( cephconn , params )
crushosddump := G etOsdCrushDump( cephconn )
osddump := G etOsdDump( cephconn )
osdsmetadata := G etOsdMetadata( cephconn )
osddevices := G etOsdForLocations( params , crushosddump , osddump , poolinfo , osdsmetadata )
placementGroups := g etPgByPool( cephconn , params )
crushosddump := g etOsdCrushDump( cephconn )
osddump := g etOsdDump( cephconn )
osdsmetadata := g etOsdMetadata( cephconn )
osddevices := g etOsdForLocations( params , crushosddump , osddump , poolinfo , osdsmetadata )
for _ , device := range osddevices {
if exist := C ontainsPg( placementGroups , device . ID ) ; exist == false {
if exist := c ontainsPg( placementGroups , device . ID ) ; exist == false {
log . Fatalln ( "Not enough pg for test. Some osd haven't placement group at all. Increase pg_num and pgp_num" )
}
}