2019-02-14 17:35:18 +03:00
package main
import (
2019-02-14 17:59:40 +03:00
"code.cloudfoundry.org/bytefmt"
"github.com/juju/gnuflag"
"log"
2019-02-14 17:35:18 +03:00
"strings"
2019-02-26 18:09:59 +03:00
"time"
2019-02-14 17:35:18 +03:00
)
2019-02-19 10:16:11 +03:00
func Route ( ) Params {
2019-02-14 17:35:18 +03:00
params := Params { }
2019-02-26 18:09:59 +03:00
gnuflag . DurationVar ( & params . duration , "duration" , 30 * time . Second ,
2019-02-14 17:35:18 +03:00
"Time limit for each test in seconds" )
2019-02-26 18:09:59 +03:00
gnuflag . DurationVar ( & params . duration , "d" , 30 * time . Second ,
2019-02-14 17:35:18 +03:00
"Time limit for each test in seconds" )
gnuflag . StringVar ( & params . 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 ( & params . 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" )
2019-02-22 17:58:31 +03:00
gnuflag . StringVar ( & params . os , "objectsize" , "4M" ,
"Object size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G" )
gnuflag . StringVar ( & params . os , "o" , "4M" ,
"Object size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G" )
2019-02-14 17:35:18 +03:00
gnuflag . StringVar ( & params . user , "user" , "admin" ,
"Ceph user (cephx)" )
gnuflag . StringVar ( & params . user , "u" , "client.admin" ,
"Ceph user (cephx)" )
gnuflag . StringVar ( & params . cluster , "cluster" , "ceph" ,
"Ceph cluster name" )
gnuflag . StringVar ( & params . cluster , "n" , "ceph" ,
"Ceph cluster name" )
gnuflag . StringVar ( & params . keyring , "keyring" , "/etc/ceph/ceph.client.admin.keyring" ,
"Ceph user keyring" )
gnuflag . StringVar ( & params . keyring , "k" , "/etc/ceph/ceph.client.admin.keyring" ,
"Ceph user keyring" )
gnuflag . StringVar ( & params . config , "config" , "/etc/ceph/ceph.conf" ,
"Ceph config" )
gnuflag . StringVar ( & params . config , "c" , "/etc/ceph/ceph.conf" ,
"Ceph config" )
gnuflag . StringVar ( & params . pool , "pool" , "bench" ,
"Ceph pool" )
gnuflag . StringVar ( & params . pool , "p" , "bench" ,
"Ceph pool" )
gnuflag . StringVar ( & params . define , "define" , "" ,
2019-02-19 18:25:44 +03:00
"Define specifically osd or host. osd.X or ceph-host-X" )
2019-02-22 17:58:31 +03:00
gnuflag . Int64Var ( & params . threadsCount , "threads" , 1 ,
2019-02-14 17:35:18 +03:00
"Threads count" )
2019-02-22 17:58:31 +03:00
gnuflag . Int64Var ( & params . threadsCount , "t" , 1 ,
2019-02-14 17:35:18 +03:00
"Threads count on each osd" )
gnuflag . BoolVar ( & params . parallel , "parallel" , false ,
"Do test all osd in parallel mode" )
gnuflag . Parse ( true )
2019-02-22 17:58:31 +03:00
2019-02-14 17:35:18 +03:00
if params . mode == "osd" && len ( params . define ) != 0 {
if i := strings . HasPrefix ( params . define , "osd." ) ; i != true {
log . Fatalln ( "Define correct osd in format osd.X" )
}
}
2019-02-22 17:58:31 +03:00
blocksize , err := bytefmt . ToBytes ( params . bs )
params . blocksize = int64 ( blocksize )
2019-02-14 17:59:40 +03:00
if err != nil {
2019-02-19 18:25:44 +03:00
log . Println ( "Can't convert defined block size. 4K block size will be used" )
2019-02-14 17:59:40 +03:00
params . blocksize = 4096
}
2019-02-22 17:58:31 +03:00
//uint64(params.objectsize), err = bytefmt.ToBytes(params.os)
objsize , err := bytefmt . ToBytes ( params . os )
params . objectsize = int64 ( objsize )
if err != nil {
log . Println ( "Can't convert defined block size. 4K block size will be used" )
params . objectsize = 4194304
}
if params . objectsize / params . blocksize < 2 {
log . Fatalf ( "Current block size: %v\nCurrent object size: %v\nObject size must be at least 2 times bigger than block size" , params . blocksize , params . objectsize )
}
2019-02-19 10:16:11 +03:00
return params
2019-02-14 17:59:40 +03:00
}