Correctly display multiple jails snapshots
This commit is contained in:
parent
a12c268be2
commit
966a3d57c1
@ -11,6 +11,7 @@ import (
|
||||
*******************************************************************************/
|
||||
func ListJailsSnapshots(args []string) {
|
||||
var jailNames []string
|
||||
var snapshots []Snapshot
|
||||
|
||||
if len(args) > 0 {
|
||||
for _, a := range args {
|
||||
@ -20,24 +21,25 @@ func ListJailsSnapshots(args []string) {
|
||||
|
||||
if len(jailNames) == 0 || len(args) == 0 {
|
||||
for _, j := range gJails {
|
||||
listJailSnapshots(j)
|
||||
snapshots = append(snapshots, listJailSnapshots(j)...)
|
||||
}
|
||||
} else {
|
||||
for _, cj := range gJails {
|
||||
for _, jn := range jailNames {
|
||||
if strings.EqualFold(cj.Name, jn) {
|
||||
listJailSnapshots(cj)
|
||||
snapshots = append(snapshots, listJailSnapshots(cj)...)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
displaySnapshotsFields(snapshots, []string{"Jailname","Name","Creation","Referenced","Used"})
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
* List all snapshots a jail have
|
||||
*******************************************************************************/
|
||||
func listJailSnapshots(jail Jail) {
|
||||
func listJailSnapshots(jail Jail) []Snapshot {
|
||||
var snapshots []Snapshot
|
||||
|
||||
// 1. List all datasets
|
||||
@ -48,7 +50,7 @@ func listJailSnapshots(jail Jail) {
|
||||
out, err := executeCommand(cmd)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s\n", err.Error())
|
||||
return
|
||||
return snapshots
|
||||
}
|
||||
|
||||
dateLayout := "Mon Jan _2 15:04 2006"
|
||||
@ -61,7 +63,7 @@ func listJailSnapshots(jail Jail) {
|
||||
creationts, err := time.ParseInLocation(dateLayout, ls[4], loc)
|
||||
if err != nil {
|
||||
fmt.Println("Error while parsing date %s:", ls[4], err)
|
||||
return
|
||||
return snapshots
|
||||
}
|
||||
// Get subdir to append to snapshot name
|
||||
subdir := strings.Replace(strings.Split(ls[0], "@")[0],
|
||||
@ -69,6 +71,7 @@ func listJailSnapshots(jail Jail) {
|
||||
|
||||
snapshots = append(snapshots, Snapshot{Dsname: ls[0],
|
||||
Name: fmt.Sprintf("%s%s", strings.Split(ls[0], "@")[1], subdir),
|
||||
Jailname: jail.Name,
|
||||
Mountpoint: ls[1],
|
||||
Used: ls[2],
|
||||
Referenced: ls[3],
|
||||
@ -80,9 +83,5 @@ func listJailSnapshots(jail Jail) {
|
||||
ss := initSnapshotSortStruct()
|
||||
SnapshotsOrderedBy(ss.CreationInc).Sort(snapshots)
|
||||
|
||||
// TODO : Pretty display. Make an interface of displayStructFields?
|
||||
displaySnapshotsFields(snapshots, []string{"Name","Creation","Referenced","Used"})
|
||||
/*for _, s := range snapshots {
|
||||
fmt.Printf("| %s | %s | %s | %s |\n", s.Name, s.Creation.String(), s.Referenced, s.Used)
|
||||
}*/
|
||||
return snapshots
|
||||
}
|
||||
|
@ -181,6 +181,7 @@ type Snapshot struct {
|
||||
// snapshot name is stored after '@' in dataset name
|
||||
Name string
|
||||
Dsname string
|
||||
Jailname string
|
||||
Mountpoint string
|
||||
Used string
|
||||
Referenced string
|
||||
@ -486,8 +487,10 @@ type JailConfigSort struct {
|
||||
type SnapshotSort struct {
|
||||
NameInc snapshotLessFunc
|
||||
NameDec snapshotLessFunc
|
||||
DsNameInc snapshotLessFunc
|
||||
DsNameDec snapshotLessFunc
|
||||
DsnameInc snapshotLessFunc
|
||||
DsnameDec snapshotLessFunc
|
||||
JailnameInc snapshotLessFunc
|
||||
JailnameDec snapshotLessFunc
|
||||
MountpointInc snapshotLessFunc
|
||||
MountpointDec snapshotLessFunc
|
||||
UsedInc snapshotLessFunc
|
||||
|
10
cmd/utils.go
10
cmd/utils.go
@ -1659,12 +1659,18 @@ func initSnapshotSortStruct() SnapshotSort {
|
||||
NameDec: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Name > s2.Name
|
||||
},
|
||||
DsNameInc: func(s1, s2 *Snapshot) bool {
|
||||
DsnameInc: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Dsname < s2.Dsname
|
||||
},
|
||||
DsNameDec: func(s1, s2 *Snapshot) bool {
|
||||
DsnameDec: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Dsname > s2.Dsname
|
||||
},
|
||||
JailnameInc: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Jailname < s2.Jailname
|
||||
},
|
||||
JailnameDec: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Jailname > s2.Jailname
|
||||
},
|
||||
MountpointInc: func(s1, s2 *Snapshot) bool {
|
||||
return s1.Mountpoint < s2.Mountpoint
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user