Revert "Struct pointers"

This reverts commit b81a43bf
master
Alexey Kostin 2019-02-22 11:34:55 +03:00
parent b81a43bfd0
commit beed73e03e
2 changed files with 36 additions and 20 deletions

View File

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

View File

@ -62,7 +62,7 @@ type Device struct {
Class string `json:"class"` Class string `json:"class"`
ID int64 `json:"id"` ID int64 `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Info *OsdMetadata Info OsdMetadata
} }
type OsdCrushDump struct { type OsdCrushDump struct {
@ -375,7 +375,7 @@ type OsdMetadata struct {
} }
type BenchOsd struct { type BenchOsd struct {
Osds []*Device Osds []Device
Buffs *[][]byte Buffs *[][]byte
Offsets *[]int64 Offsets []int64
} }