Struct pointers
parent
53189e2d59
commit
b81a43bfd0
50
getosd.go
50
getosd.go
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
)
|
||||
|
@ -92,7 +93,7 @@ func GetCrushHostBuckets(buckets []Bucket, itemid int64) []Bucket {
|
|||
return rootbuckets
|
||||
}
|
||||
|
||||
func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDump, poolinfo Poolinfo, osdsmetadata []OsdMetadata) map[string]BenchOsd {
|
||||
func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDump, poolinfo Poolinfo) map[string]*BenchOsd {
|
||||
var crushrule int64
|
||||
var crushrulename string
|
||||
for _, pool := range osddump.Pools {
|
||||
|
@ -112,8 +113,8 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
|
|||
}
|
||||
}
|
||||
|
||||
osdhosts := make(map[string]BenchOsd)
|
||||
var devices []Device
|
||||
osdhosts := make(map[string]*BenchOsd)
|
||||
var devices []*Device
|
||||
bucketitems := GetCrushHostBuckets(osdcrushdump.Buckets, rootid)
|
||||
if params.define != "" {
|
||||
if strings.HasPrefix(params.define, "osd.") {
|
||||
|
@ -121,19 +122,13 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
|
|||
for _, item := range hostbucket.Items {
|
||||
for _, device := range osdcrushdump.Devices {
|
||||
if device.ID == item.ID && params.define == device.Name {
|
||||
for _, osdmetadata := range osdsmetadata {
|
||||
if osdmetadata.ID == device.ID {
|
||||
device.Info = osdmetadata
|
||||
}
|
||||
|
||||
}
|
||||
devices = append(devices, device)
|
||||
devices = append(devices, &device)
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(devices) != 0 {
|
||||
osdhosts[hostbucket.Name] = BenchOsd{Osds: devices}
|
||||
devices = []Device{}
|
||||
osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices}
|
||||
devices = []*Device{}
|
||||
}
|
||||
}
|
||||
if len(osdhosts) == 0 {
|
||||
|
@ -146,20 +141,14 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
|
|||
for _, item := range hostbucket.Items {
|
||||
for _, device := range osdcrushdump.Devices {
|
||||
if device.ID == item.ID {
|
||||
for _, osdmetadata := range osdsmetadata {
|
||||
if osdmetadata.ID == device.ID {
|
||||
device.Info = osdmetadata
|
||||
}
|
||||
|
||||
}
|
||||
devices = append(devices, device)
|
||||
devices = append(devices, &device)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(devices) != 0 {
|
||||
osdhosts[hostbucket.Name] = BenchOsd{Osds: devices}
|
||||
devices = []Device{}
|
||||
osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices}
|
||||
devices = []*Device{}
|
||||
}
|
||||
}
|
||||
if len(osdhosts) == 0 {
|
||||
|
@ -171,19 +160,13 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
|
|||
for _, item := range hostbucket.Items {
|
||||
for _, device := range osdcrushdump.Devices {
|
||||
if device.ID == item.ID {
|
||||
for _, osdmetadata := range osdsmetadata {
|
||||
if osdmetadata.ID == device.ID {
|
||||
device.Info = osdmetadata
|
||||
}
|
||||
|
||||
}
|
||||
devices = append(devices, device)
|
||||
devices = append(devices, &device)
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(devices) != 0 {
|
||||
osdhosts[hostbucket.Name] = BenchOsd{Osds: devices}
|
||||
devices = []Device{}
|
||||
osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices}
|
||||
devices = []*Device{}
|
||||
}
|
||||
}
|
||||
if len(osdhosts) == 0 {
|
||||
|
@ -202,7 +185,7 @@ func ContainsPg(pgs []PlacementGroup, i int64) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func GetOsds(cephconn *Cephconnection, params Params) map[string]BenchOsd {
|
||||
func GetOsds(cephconn *Cephconnection, params Params) map[string]*BenchOsd {
|
||||
poolinfo := GetPoolSize(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",
|
||||
|
@ -211,8 +194,8 @@ func GetOsds(cephconn *Cephconnection, params Params) map[string]BenchOsd {
|
|||
placementGroups := GetPgByPool(cephconn, params)
|
||||
crushosddump := GetOsdCrushDump(cephconn)
|
||||
osddump := GetOsdDump(cephconn)
|
||||
osdsmetadata := GetOsdMetadata(cephconn)
|
||||
osddevices := GetOsdForLocations(params, crushosddump, osddump, poolinfo, osdsmetadata)
|
||||
//osdsmetadata := GetOsdMetadata(cephconn)
|
||||
osddevices := GetOsdForLocations(params, crushosddump, osddump, poolinfo)
|
||||
for _, values := range osddevices {
|
||||
for _, item := range values.Osds {
|
||||
if exist := ContainsPg(placementGroups, item.ID); exist == false {
|
||||
|
@ -220,5 +203,6 @@ func GetOsds(cephconn *Cephconnection, params Params) map[string]BenchOsd {
|
|||
}
|
||||
}
|
||||
}
|
||||
fmt.Printf("%+v", osddevices)
|
||||
return osddevices
|
||||
}
|
||||
|
|
6
types.go
6
types.go
|
@ -62,7 +62,7 @@ type Device struct {
|
|||
Class string `json:"class"`
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Info OsdMetadata
|
||||
Info *OsdMetadata
|
||||
}
|
||||
|
||||
type OsdCrushDump struct {
|
||||
|
@ -375,7 +375,7 @@ type OsdMetadata struct {
|
|||
}
|
||||
|
||||
type BenchOsd struct {
|
||||
Osds []Device
|
||||
Osds []*Device
|
||||
Buffs *[][]byte
|
||||
Offsets []int64
|
||||
Offsets *[]int64
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue