commit
13a1a33dc7
|
@ -0,0 +1,82 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"code.cloudfoundry.org/bytefmt"
|
||||
"github.com/ceph/go-ceph/rados"
|
||||
"github.com/juju/gnuflag"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var duration int
|
||||
var bs, cluster, user, keyring, config, pool string
|
||||
gnuflag.IntVar(&duration, "duration", 30,
|
||||
"Time limit for each test in seconds")
|
||||
gnuflag.IntVar(&duration, "d", 30,
|
||||
"Time limit for each test in seconds")
|
||||
gnuflag.StringVar(&bs, "blocksize", "4K",
|
||||
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
||||
gnuflag.StringVar(&bs, "s", "4K",
|
||||
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
||||
gnuflag.StringVar(&user, "user", "admin",
|
||||
"Ceph user (cephx)")
|
||||
gnuflag.StringVar(&user, "u", "client.admin",
|
||||
"Ceph user (cephx)")
|
||||
gnuflag.StringVar(&cluster, "cluster", "ceph",
|
||||
"Ceph cluster name")
|
||||
gnuflag.StringVar(&cluster, "n", "ceph",
|
||||
"Ceph cluster name")
|
||||
gnuflag.StringVar(&keyring, "keyring", "/etc/ceph/ceph.client.admin.keyring",
|
||||
"Ceph user keyring")
|
||||
gnuflag.StringVar(&keyring, "k", "/etc/ceph/ceph.client.admin.keyring",
|
||||
"Ceph user keyring")
|
||||
gnuflag.StringVar(&config, "config", "/etc/ceph/ceph.conf",
|
||||
"Ceph config")
|
||||
gnuflag.StringVar(&config, "c", "/etc/ceph/ceph.conf",
|
||||
"Ceph config")
|
||||
gnuflag.StringVar(&pool, "pool", "bench",
|
||||
"Ceph pool")
|
||||
gnuflag.StringVar(&pool, "p", "bench",
|
||||
"Ceph pool")
|
||||
gnuflag.Parse(true)
|
||||
|
||||
if _, err := os.Stat(config); os.IsNotExist(err) {
|
||||
log.Fatalf("Congif file not exists. Error: %v\n", err)
|
||||
}
|
||||
|
||||
if _, err := os.Stat(keyring); os.IsNotExist(err) {
|
||||
log.Fatalf("Keyring file not exists. Error: %v\n", err)
|
||||
}
|
||||
|
||||
conn, err := rados.NewConnWithClusterAndUser(cluster, user)
|
||||
if err != nil {
|
||||
log.Fatalf("Can't create connection with cluster:%v and user:%v. Error: %v\n", cluster, user, err)
|
||||
}
|
||||
|
||||
if err := conn.ReadConfigFile(config); err != nil {
|
||||
log.Fatalf("Can't read config file. Error: err\n", err)
|
||||
}
|
||||
|
||||
if err := conn.SetConfigOption("keyring", keyring); err != nil {
|
||||
log.Fatalf("Can't set config option. Error: err\n", err)
|
||||
}
|
||||
|
||||
if err := conn.Connect(); err != nil {
|
||||
log.Fatalf("Failed to connect cluster. Error: %v\n", err)
|
||||
}
|
||||
|
||||
ioctx, err := conn.OpenIOContext(pool)
|
||||
if err != nil {
|
||||
log.Fatalf("Can't open pool %v. Error: %v\n", pool, err)
|
||||
}
|
||||
stats, _ := ioctx.GetPoolStats()
|
||||
conn.Shutdown()
|
||||
log.Println(stats)
|
||||
blocksize, err := bytefmt.ToBytes(bs)
|
||||
if err != nil {
|
||||
log.Println("Can't convert defined block size. 4K block size will be used\n")
|
||||
blocksize = 4096
|
||||
}
|
||||
log.Printf("%v\n", blocksize)
|
||||
}
|
Loading…
Reference in New Issue