Add datastore list, filter and sort, add snapshot sorting
This commit is contained in:
@ -6,6 +6,8 @@ import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -26,12 +28,22 @@ func MigrateJail(args []string) {
|
||||
}
|
||||
|
||||
for _, jn := range jailNames {
|
||||
// Check if destination dataset exist
|
||||
cmd := fmt.Sprintf("zfs list %s/iocage/jails", gMigrateDestPool)
|
||||
// Check if destination datastore exist
|
||||
/*cmd := fmt.Sprintf("zfs list %s/iocage/jails", gMigrateDestDatastore)
|
||||
out, err := executeCommand(cmd)
|
||||
if err != nil {
|
||||
fmt.Printf("Error executing command %s: %v; command returned: %s\n", cmd, err, out)
|
||||
return
|
||||
}*/
|
||||
found := false
|
||||
for _, ds := range viper.GetStringSlice("datastore") {
|
||||
if strings.EqualFold(gMigrateDestDatastore, ds) {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
if false == found {
|
||||
fmt.Printf("Unkown datastore: %s\n", gMigrateDestDatastore)
|
||||
return
|
||||
}
|
||||
|
||||
cj, err := getJailFromArray(jn, gJails)
|
||||
@ -52,7 +64,7 @@ func MigrateJail(args []string) {
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO : Check dest pool (gMigrateDestPool) existence
|
||||
/* TODO : Check dest pool (gMigrateDestDatastore) existence
|
||||
zfs snapshot /iocage/jails/$jail@gocage_mig_first_snap
|
||||
zfs snapshot /iocage/jails/$jail/root@gocage_mig_first_snap
|
||||
zfs send jail@gocage_mig_first_snap | zfs receive destpool/jails/jail_name
|
||||
@ -84,14 +96,16 @@ func MigrateJail(args []string) {
|
||||
}
|
||||
fmt.Printf("Done\n")
|
||||
|
||||
dsconfdest := strings.Join([]string{gMigrateDestPool, "iocage", "jails", jn}, "/")
|
||||
// FIXME: Must use zfs dataset, not mountpoint stored in gMigrateDestDatastore
|
||||
dsconfdest := strings.Join([]string{gMigrateDestDatastore, "iocage", "jails", jn}, "/")
|
||||
fmt.Printf("Migrate jail config dataset to %s: ", dsconfdest)
|
||||
if err := zfsCopy(fmt.Sprintf("%s@gocage_mig_init", dsconf), dsconfdest); err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
}
|
||||
fmt.Printf("Done\n")
|
||||
|
||||
dsdatadest := strings.Join([]string{gMigrateDestPool, "iocage", "jails", jn, "root"}, "/")
|
||||
// FIXME: Must use zfs dataset, not mountpoint stored in gMigrateDestDatastore
|
||||
dsdatadest := strings.Join([]string{gMigrateDestDatastore, "iocage", "jails", jn, "root"}, "/")
|
||||
fmt.Printf("Migrate jail filesystem dataset to %s: ", dsdatadest)
|
||||
if err := zfsCopy(fmt.Sprintf("%s@gocage_mig_init", dsdata), dsdatadest); err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
|
Reference in New Issue
Block a user