implemment MonCommand

This commit is contained in:
Kai Storbeck 2015-02-10 22:11:37 +01:00
parent a06dd37546
commit ca76480b0b
2 changed files with 23 additions and 6 deletions

View File

@ -261,11 +261,10 @@ func (c *Conn) DeletePool(name string) error {
}
// MonCommand sends a command to one of the monitors
func (c *Conn) MonCommand(args []string) (buffer, info string, err error) {
argv := make([]*C.char, len(commands))
for i, arg := range args {
argv[i] = C.CString(arg)
defer C.free(unsafe.Pointer(argv[i]))
func (c *Conn) MonCommand(args []byte) (buffer, info string, err error) {
argv := make([]*C.char, len(args))
for i, _ := range args {
argv[i] = (*C.char)(unsafe.Pointer(&args[i]))
}
var (
@ -276,7 +275,7 @@ func (c *Conn) MonCommand(args []string) (buffer, info string, err error) {
defer C.free(unsafe.Pointer(inbuf))
ret := C.rados_mon_command(c.cluster,
&argv[0], C.size_t(len(commands)),
&argv[0], C.size_t(len(args)),
inbuf, // inbuf
C.size_t(0), // length inbuf
&outbuf, // actual data

View File

@ -12,6 +12,7 @@ import "time"
import "net"
import "fmt"
import "sort"
import "encoding/json"
func GetUUID() string {
out, _ := exec.Command("uuidgen").Output()
@ -375,6 +376,23 @@ func TestGetPoolName(t *testing.T) {
conn.Shutdown()
}
func TestMonCommand(t *testing.T) {
conn, _ := rados.NewConn()
conn.ReadDefaultConfigFile()
conn.Connect()
command, err := json.Marshal(map[string]string{"prefix": "df", "format": "json"})
buf, info, err := conn.MonCommand(command)
assert.NoError(t, err)
var message map[string]interface{}
err = json.Unmarshal([]byte(buf), &message)
assert.NoError(t, err)
fmt.Println("Use ", info)
os.Stdout.Write([]byte(buf))
}
func TestObjectIterator(t *testing.T) {
conn, _ := rados.NewConn()
conn.ReadDefaultConfigFile()