allow offline box
This commit is contained in:
53
config.go
53
config.go
@@ -53,6 +53,7 @@ func (c *Config) Load() error {
|
||||
|
||||
for k, v := range c.Box {
|
||||
v.Name = k
|
||||
v.online = false
|
||||
v.zfs = NewZFSConfig()
|
||||
s := &SSHConfig{
|
||||
logged: false,
|
||||
@@ -97,31 +98,32 @@ func (c *Config) Load() error {
|
||||
log.Printf("Config.Load : ssh.Dial(%s) : %s", k, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
session, err := s.client.NewSession()
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : client.NewSession(%s) : %s", k, err)
|
||||
} else {
|
||||
v.online = true
|
||||
session, err := s.client.NewSession()
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : client.NewSession(%s) : %s", k, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
var b bytes.Buffer
|
||||
session.Stdout = &b
|
||||
var b bytes.Buffer
|
||||
session.Stdout = &b
|
||||
|
||||
err = session.Run("TZ=\"" + cfg.Timezone + "\" zfsnap --version")
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : client.NewSession(%s) : %s", k, err)
|
||||
err = session.Run("TZ=\"" + cfg.Timezone + "\" zfsnap --version")
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : client.NewSession(%s) : %s", k, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
return err
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : logged into %s : %s", k, b.String())
|
||||
}
|
||||
session.Close()
|
||||
s.logged = true
|
||||
}
|
||||
if *debugFlag {
|
||||
log.Printf("Config.Load : logged into %s : %s", k, b.String())
|
||||
}
|
||||
session.Close()
|
||||
s.logged = true
|
||||
}
|
||||
|
||||
for _, app := range c.Apps {
|
||||
@@ -132,7 +134,11 @@ func (c *Config) Load() error {
|
||||
if _, ok := cfg.Box[src.Box()]; !ok {
|
||||
return fmt.Errorf("No box defined for source : %s", string(src))
|
||||
}
|
||||
if !cfg.Box[src.Box()].online {
|
||||
return fmt.Errorf("Source box offline for app : %s", app.Name)
|
||||
}
|
||||
}
|
||||
var allOffline bool = true
|
||||
for _, dest := range app.Destinations {
|
||||
if !dest.Valid() {
|
||||
return fmt.Errorf("Destination not valid : %s", string(dest))
|
||||
@@ -140,7 +146,14 @@ func (c *Config) Load() error {
|
||||
if _, ok := cfg.Box[dest.Box()]; !ok {
|
||||
return fmt.Errorf("No box defined for destination : %s", string(dest))
|
||||
}
|
||||
if cfg.Box[dest.Box()].online {
|
||||
allOffline = false
|
||||
}
|
||||
}
|
||||
if allOffline {
|
||||
return fmt.Errorf("No online destination box for app : %s", app.Name)
|
||||
}
|
||||
|
||||
for val, before := range app.Before {
|
||||
_, err = regexp.Compile(val)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user