-
Notifications
You must be signed in to change notification settings - Fork 12
/
events.go
56 lines (47 loc) · 1.06 KB
/
events.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package shared
import (
"fmt"
)
const (
EventUp = "up"
EventDown = "down"
EventStartup = "startup"
)
type EventConfigHolder struct {
UpScript []string
DownScript []string
StartupScript []string
}
type EventConfig struct {
Up []string `yaml:"up"`
Down []string `yaml:"down"`
Startup []string `yaml:"startup"`
}
func (c *EventConfigHolder) RunEventScript(op string, remoteNet string, iface string, args ...string) error {
var script []string
switch op {
case EventUp:
script = c.UpScript
case EventDown:
script = c.DownScript
case EventStartup:
script = c.StartupScript
default:
return fmt.Errorf("invalid event %s", op)
}
if len(script) == 0 {
return nil
}
allArgs := []string{}
if len(script) > 1 {
allArgs = append(allArgs, script[1:]...)
}
allArgs = append(allArgs, op, remoteNet, iface)
allArgs = append(allArgs, args...)
return ExecCmd(script[0], allArgs...)
}
func (c *EventConfigHolder) LoadEventConfig(config *EventConfig) {
c.UpScript = config.Up
c.DownScript = config.Down
c.StartupScript = config.Startup
}