Compare commits
2 Commits
812c77790a
...
v0.34
Author | SHA1 | Date | |
---|---|---|---|
dc4213a8d5 | |||
5eed121f0b |
@ -1,3 +1,3 @@
|
||||
v.0.33b : Support jaling datasets on differents pools : jail_zfs_dataset now have to include the pool name
|
||||
v.0.33b : Support jailing datasets on differents pools : jail_zfs_dataset now have to include the pool name
|
||||
v.0.33c : Parallelize start/stop of jails with same priority
|
||||
|
||||
v.0.34 : jail name can be shortened
|
||||
|
10
cmd/root.go
10
cmd/root.go
@ -1,11 +1,12 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"fmt"
|
||||
"sync"
|
||||
"strings"
|
||||
"io/ioutil"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
@ -14,7 +15,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
gVersion = "0.33c"
|
||||
gVersion = "0.34"
|
||||
|
||||
// TODO : Get from $jail_zpool/defaults.json
|
||||
MIN_DYN_DEVFS_RULESET = 1000
|
||||
@ -55,6 +56,7 @@ var (
|
||||
gFetchIntoDS string
|
||||
gFetchFrom string
|
||||
|
||||
gMdevfs sync.Mutex
|
||||
|
||||
rootCmd = &cobra.Command{
|
||||
Use: "gocage",
|
||||
|
13
cmd/start.go
13
cmd/start.go
@ -476,12 +476,17 @@ func genNatIpv4(jail *Jail) ([]string, error) {
|
||||
return ippair, nil
|
||||
}
|
||||
|
||||
func buildDevfsRuleSet(jail *Jail) (error, int) {
|
||||
// FIXME : Must lock this function so parallel start do not
|
||||
func buildDevfsRuleSet(jail *Jail, m *sync.Mutex) (error, int) {
|
||||
rulesets := []int{}
|
||||
|
||||
m.Lock()
|
||||
//defer m.Unlock()
|
||||
|
||||
// Get known rulesets
|
||||
out, err := executeCommand("devfs rule showsets")
|
||||
if err != nil {
|
||||
m.Unlock()
|
||||
return errors.New(fmt.Sprintf("Error executing command \"devfs rule showsets\": %v; command returned: %s\n", err, out)), 0
|
||||
}
|
||||
srs := strings.Split(out, "\n")
|
||||
@ -509,19 +514,23 @@ func buildDevfsRuleSet(jail *Jail) (error, int) {
|
||||
// UPDATE: We don't need this as every jail have a default Devfs_ruleset value
|
||||
/*ds, err := getDatastoreFromArray(jail.Datastore, gDatastores)
|
||||
if err != nil {
|
||||
m.Unlock()
|
||||
return errors.New(fmt.Sprintf("Error getting datastore %s for jail %s", jail.Datastore, jail.Name)), 0
|
||||
}
|
||||
defaultrs, err := strconv.ParseInt(ds.DefaultJailConfig.Devfs_ruleset, 10, 64)
|
||||
if err != nil {
|
||||
m.Unlock()
|
||||
return errors.New(fmt.Sprintf("Error parsing default devfs_ruleset for datastore %s", jail.Datastore)), 0
|
||||
}*/
|
||||
|
||||
// Clone configured devfs_ruleset to a dynamic ruleset
|
||||
if false == isStringInArray(srs, jail.Config.Devfs_ruleset) {
|
||||
m.Unlock()
|
||||
return errors.New(fmt.Sprintf("Unknown ruleset: %s", jail.Config.Devfs_ruleset)), 0
|
||||
}
|
||||
rs, _ := strconv.Atoi(jail.Config.Devfs_ruleset)
|
||||
err = copyDevfsRuleset(ruleset, rs)
|
||||
m.Unlock()
|
||||
if err != nil {
|
||||
return err, 0
|
||||
}
|
||||
@ -1343,7 +1352,7 @@ func StartJail(args []string) {
|
||||
net = append(net, strings.Split(cj.Config.Vnet_interfaces, " ")...)
|
||||
}
|
||||
|
||||
err, dynrs := buildDevfsRuleSet(cj)
|
||||
err, dynrs := buildDevfsRuleSet(cj, &gMdevfs)
|
||||
if err != nil {
|
||||
fmt.Printf("%s\n", err.Error())
|
||||
return
|
||||
|
@ -772,7 +772,8 @@ func getJailFromArray(name string, jarray []Jail) (*Jail, error) {
|
||||
}
|
||||
|
||||
for i, j := range jarray {
|
||||
if jail == j.Name {
|
||||
//if jail == j.Name {
|
||||
if strings.HasPrefix(j.Name, jail) {
|
||||
if len(ds) > 0 {
|
||||
if strings.EqualFold(ds, j.Datastore) {
|
||||
return &jarray[i], nil
|
||||
@ -786,7 +787,7 @@ func getJailFromArray(name string, jarray []Jail) (*Jail, error) {
|
||||
}
|
||||
if len(jails) > 0 {
|
||||
if len(jails) > 1 {
|
||||
return &Jail{}, errors.New("More than one jail found with this name, please use datastore/jail format")
|
||||
return &Jail{}, errors.New("More than one jail matching, please use datastore/jail format or full name")
|
||||
} else {
|
||||
return &jails[0], nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user