mirror of https://github.com/ceph/go-ceph
implemment MonCommand
This commit is contained in:
parent
a06dd37546
commit
ca76480b0b
|
@ -261,11 +261,10 @@ func (c *Conn) DeletePool(name string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MonCommand sends a command to one of the monitors
|
// MonCommand sends a command to one of the monitors
|
||||||
func (c *Conn) MonCommand(args []string) (buffer, info string, err error) {
|
func (c *Conn) MonCommand(args []byte) (buffer, info string, err error) {
|
||||||
argv := make([]*C.char, len(commands))
|
argv := make([]*C.char, len(args))
|
||||||
for i, arg := range args {
|
for i, _ := range args {
|
||||||
argv[i] = C.CString(arg)
|
argv[i] = (*C.char)(unsafe.Pointer(&args[i]))
|
||||||
defer C.free(unsafe.Pointer(argv[i]))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -276,7 +275,7 @@ func (c *Conn) MonCommand(args []string) (buffer, info string, err error) {
|
||||||
defer C.free(unsafe.Pointer(inbuf))
|
defer C.free(unsafe.Pointer(inbuf))
|
||||||
|
|
||||||
ret := C.rados_mon_command(c.cluster,
|
ret := C.rados_mon_command(c.cluster,
|
||||||
&argv[0], C.size_t(len(commands)),
|
&argv[0], C.size_t(len(args)),
|
||||||
inbuf, // inbuf
|
inbuf, // inbuf
|
||||||
C.size_t(0), // length inbuf
|
C.size_t(0), // length inbuf
|
||||||
&outbuf, // actual data
|
&outbuf, // actual data
|
||||||
|
|
|
@ -12,6 +12,7 @@ import "time"
|
||||||
import "net"
|
import "net"
|
||||||
import "fmt"
|
import "fmt"
|
||||||
import "sort"
|
import "sort"
|
||||||
|
import "encoding/json"
|
||||||
|
|
||||||
func GetUUID() string {
|
func GetUUID() string {
|
||||||
out, _ := exec.Command("uuidgen").Output()
|
out, _ := exec.Command("uuidgen").Output()
|
||||||
|
@ -375,6 +376,23 @@ func TestGetPoolName(t *testing.T) {
|
||||||
conn.Shutdown()
|
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) {
|
func TestObjectIterator(t *testing.T) {
|
||||||
conn, _ := rados.NewConn()
|
conn, _ := rados.NewConn()
|
||||||
conn.ReadDefaultConfigFile()
|
conn.ReadDefaultConfigFile()
|
||||||
|
|
Loading…
Reference in New Issue