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 (
"encoding/json"
"fmt"
"log"
"strings"
)
@ -93,7 +92,7 @@ func GetCrushHostBuckets(buckets []Bucket, itemid int64) []Bucket {
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 crushrulename string
for _, pool := range osddump.Pools {
@ -113,8 +112,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.") {
@ -122,13 +121,19 @@ 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 {
devices = append(devices, &device)
for _, osdmetadata := range osdsmetadata {
if osdmetadata.ID == device.ID {
device.Info = osdmetadata
}
}
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 {
@ -141,14 +146,20 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
for _, item := range hostbucket.Items {
for _, device := range osdcrushdump.Devices {
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 {
osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices}
devices = []*Device{}
osdhosts[hostbucket.Name] = BenchOsd{Osds: devices}
devices = []Device{}
}
}
if len(osdhosts) == 0 {
@ -160,13 +171,19 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
for _, item := range hostbucket.Items {
for _, device := range osdcrushdump.Devices {
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 {
osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices}
devices = []*Device{}
osdhosts[hostbucket.Name] = BenchOsd{Osds: devices}
devices = []Device{}
}
}
if len(osdhosts) == 0 {
@ -185,7 +202,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",
@ -194,8 +211,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 := GetOsdMetadata(cephconn)
osddevices := GetOsdForLocations(params, crushosddump, osddump, poolinfo, osdsmetadata)
for _, values := range osddevices {
for _, item := range values.Osds {
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
}

View File

@ -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
}