use managed attribute
This commit is contained in:
61
addr.go
61
addr.go
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
@@ -50,7 +51,7 @@ func (a Addr) BoxExec(cmd string) (string, error) {
|
||||
|
||||
if b, ok := cfg.box[a.Box()]; !ok {
|
||||
err := errors.New("box doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box()}).Errorf("")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box(), "error": err}).Errorf("")
|
||||
return "", err
|
||||
} else {
|
||||
return b.Exec(cmd)
|
||||
@@ -70,26 +71,78 @@ func (a Addr) ValidSnapshots() ([]*ZfsSnapshot, error) {
|
||||
|
||||
if b, ok := cfg.box[a.Box()]; !ok {
|
||||
err := errors.New("box doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box()}).Errorf("")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box(), "error": err}).Errorf("")
|
||||
return nil, err
|
||||
} else {
|
||||
if fs, ok := b.zfs.filesystems[a.Path()]; ok {
|
||||
return fs.ValidSnapshots(), nil
|
||||
} else {
|
||||
err := errors.New("path doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a}).Errorf("")
|
||||
log.WithFields(log.Fields{"addr": a, "error": err}).Errorf("")
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (a Addr) SetManaged(val bool) error {
|
||||
log.WithFields(log.Fields{"addr": a}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"addr": a}).Debugf("done")
|
||||
|
||||
if b, ok := cfg.box[a.Box()]; !ok {
|
||||
err := errors.New("box doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box(), "error": err}).Errorf("")
|
||||
return err
|
||||
} else if fs, ok := b.zfs.filesystems[a.Path()]; !ok {
|
||||
err := errors.New("path doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
||||
return err
|
||||
} else {
|
||||
fs.mx.Lock()
|
||||
defer fs.mx.Unlock()
|
||||
if fs.managed != val {
|
||||
var cmd string
|
||||
if val {
|
||||
cmd = fmt.Sprintf("zfs set %s=+ %s", zfsManagedPropertyName, a.Path())
|
||||
} else {
|
||||
cmd = fmt.Sprintf("zfs set %s=- %s", zfsManagedPropertyName, a.Path())
|
||||
}
|
||||
if _, err := b.Exec(cmd); err != nil {
|
||||
log.WithFields(log.Fields{"addr": a, "call": "Exec", "attr": cmd, "error": err}).Errorf("")
|
||||
return err
|
||||
}
|
||||
}
|
||||
fs.managed = val
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (a Addr) SetBackedUp(val bool) error {
|
||||
log.WithFields(log.Fields{"addr": a}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"addr": a}).Debugf("done")
|
||||
|
||||
if b, ok := cfg.box[a.Box()]; !ok {
|
||||
err := errors.New("box doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box(), "error": err}).Errorf("")
|
||||
return err
|
||||
} else if fs, ok := b.zfs.filesystems[a.Path()]; !ok {
|
||||
err := errors.New("path doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
||||
return err
|
||||
} else {
|
||||
fs.mx.Lock()
|
||||
defer fs.mx.Unlock()
|
||||
fs.backedUp = val
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (a Addr) Mkdir() error {
|
||||
log.WithFields(log.Fields{"addr": a}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"addr": a}).Debugf("done")
|
||||
|
||||
if b, ok := cfg.box[a.Box()]; !ok {
|
||||
err := errors.New("box doesn't exist")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box()}).Errorf("")
|
||||
log.WithFields(log.Fields{"addr": a, "box": a.Box(), "error": err}).Errorf("")
|
||||
return err
|
||||
} else {
|
||||
return b.zfs.Mkdir(a.Path())
|
||||
|
||||
Reference in New Issue
Block a user