api: mount API client
This commit is contained in:
parent
91462a61a2
commit
0a6ad5b143
3
api/sys_acl.go
Normal file
3
api/sys_acl.go
Normal file
|
@ -0,0 +1,3 @@
|
|||
package api
|
||||
|
||||
// TODO: This file is a placeholder so I remember this needs to happen.
|
90
api/sys_mounts.go
Normal file
90
api/sys_mounts.go
Normal file
|
@ -0,0 +1,90 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func (c *Sys) ListMounts() (map[string]*Mount, error) {
|
||||
r := c.c.NewRequest("GET", "/sys/mounts")
|
||||
resp, err := c.c.RawRequest(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var result map[string]*Mount
|
||||
err = resp.DecodeJSON(&result)
|
||||
return result, err
|
||||
}
|
||||
|
||||
func (c *Sys) Mount(path, mountType, description string) error {
|
||||
if err := c.checkMountPath(path); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
body := map[string]string{
|
||||
"path": path,
|
||||
"type": mountType,
|
||||
"description": description,
|
||||
}
|
||||
|
||||
r := c.c.NewRequest("POST", "/sys/mounts")
|
||||
if err := r.SetJSONBody(body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := c.c.RawRequest(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Sys) Unmount(path string) error {
|
||||
if err := c.checkMountPath(path); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r := c.c.NewRequest("DELETE", fmt.Sprintf("/sys/mounts/%s", path))
|
||||
resp, err := c.c.RawRequest(r)
|
||||
defer resp.Body.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Sys) Remount(from, to string) error {
|
||||
if err := c.checkMountPath(from); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := c.checkMountPath(to); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
body := map[string]string{
|
||||
"from": from,
|
||||
"to": to,
|
||||
}
|
||||
|
||||
r := c.c.NewRequest("POST", "/sys/remount")
|
||||
if err := r.SetJSONBody(body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := c.c.RawRequest(r)
|
||||
defer resp.Body.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Sys) checkMountPath(path string) error {
|
||||
if path[0] == '/' {
|
||||
return fmt.Errorf("path must not start with /: %s", path)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type Mount struct {
|
||||
Type string
|
||||
Description string
|
||||
}
|
Loading…
Reference in a new issue