package main import ( "encoding/json" "fmt" "log" "github.com/ceph/go-ceph/rados" ) func makeMonQuery(cephConn *cephConnection, query map[string]string) []byte { monJson, err := json.Marshal(query) if err != nil { log.Fatalf("Can't marshal json mon query. Error: %v", err) } monRawAnswer, _, err := cephConn.conn.MonCommand(monJson) if err != nil { log.Fatalf("Failed exec monCommand. Error: %v", err) } return monRawAnswer } func getPoolSize(cephConn *cephConnection, params string) Poolinfo { monRawAnswer := makeMonQuery(cephConn, map[string]string{"prefix": "osd pool get", "pool": params, "format": "json", "var": "size"}) monAnswer := Poolinfo{} if err := json.Unmarshal([]byte(monRawAnswer), &monAnswer); err != nil { log.Fatalf("Can't parse monitor answer. Error: %v", err) } return monAnswer } func main() { var connect cephConnection var err error var poolInfo Poolinfo fmt.Println("Creating connection object") connect.conn,err = rados.NewConn() if err != nil { log.Fatal("Cannot create Connection object\n") } connect.conn.ReadConfigFile("/etc/ceph/ceph.conf") connect.conn.Connect() defer connect.conn.Shutdown() poolInfo = getPoolSize(&connect,"test") fmt.Println(poolInfo) // poolnames,err := connect.conn.ListPools() // if err != nil { // log.Fatal("Cannot list pools") // } // for i,j := range poolnames { // fmt.Printf("%d %s\n",i,j) }