зеркало из https://github.com/mozilla/mig.git
send tags and environment with persist module config
This commit is contained in:
Родитель
dbb9fcce39
Коммит
bcc795666f
|
@ -205,7 +205,8 @@ func managePersistModule(ctx *Context, name string) {
|
||||||
|
|
||||||
// The module is now running, send any configuration parameters we have
|
// The module is now running, send any configuration parameters we have
|
||||||
// to it.
|
// to it.
|
||||||
cm, err := modules.MakeMessageConfig(cfg)
|
cm, err := modules.MakeMessageConfig(cfg, ctx.Agent.Hostname,
|
||||||
|
ctx.Agent.Env, ctx.Agent.Tags)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// This should never happen, but if it does we will just
|
// This should never happen, but if it does we will just
|
||||||
// kill the executing module as we are unable to send any
|
// kill the executing module as we are unable to send any
|
||||||
|
|
|
@ -48,13 +48,18 @@ func buildResults(e elements, r *modules.Result) (buf []byte, err error) {
|
||||||
var logChan chan string
|
var logChan chan string
|
||||||
var alertChan chan string
|
var alertChan chan string
|
||||||
var handlerErrChan chan error
|
var handlerErrChan chan error
|
||||||
var configChan chan []byte
|
var configChan chan modules.ConfigParams
|
||||||
|
|
||||||
func moduleMain() {
|
func moduleMain() {
|
||||||
var cfg config
|
var cfg config
|
||||||
|
|
||||||
incfg := <-configChan
|
incfg := <-configChan
|
||||||
err := json.Unmarshal(incfg, &cfg)
|
buf, err := json.Marshal(incfg.Config)
|
||||||
|
if err != nil {
|
||||||
|
handlerErrChan <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(buf, &cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handlerErrChan <- err
|
handlerErrChan <- err
|
||||||
return
|
return
|
||||||
|
@ -111,7 +116,7 @@ func (r *run) RunPersist(in modules.ModuleReader, out modules.ModuleWriter) {
|
||||||
logChan = make(chan string, 64)
|
logChan = make(chan string, 64)
|
||||||
regChan := make(chan string, 64)
|
regChan := make(chan string, 64)
|
||||||
handlerErrChan = make(chan error, 64)
|
handlerErrChan = make(chan error, 64)
|
||||||
configChan = make(chan []byte, 1)
|
configChan = make(chan modules.ConfigParams, 1)
|
||||||
|
|
||||||
go moduleMain()
|
go moduleMain()
|
||||||
l, spec, err := modules.GetPersistListener("audit")
|
l, spec, err := modules.GetPersistListener("audit")
|
||||||
|
|
|
@ -48,7 +48,7 @@ func buildResults(e elements, r *modules.Result) (buf []byte, err error) {
|
||||||
var logChan chan string
|
var logChan chan string
|
||||||
var alertChan chan string
|
var alertChan chan string
|
||||||
var handlerErrChan chan error
|
var handlerErrChan chan error
|
||||||
var configChan chan []byte
|
var configChan chan modules.ConfigParams
|
||||||
|
|
||||||
// messageBuf is a queue used to store incoming messages, and is drained by
|
// messageBuf is a queue used to store incoming messages, and is drained by
|
||||||
// runDispatch
|
// runDispatch
|
||||||
|
@ -58,7 +58,12 @@ func moduleMain() {
|
||||||
var cfg config
|
var cfg config
|
||||||
|
|
||||||
incfg := <-configChan
|
incfg := <-configChan
|
||||||
err := json.Unmarshal(incfg, &cfg)
|
buf, err := json.Marshal(incfg.Config)
|
||||||
|
if err != nil {
|
||||||
|
handlerErrChan <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(buf, &cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handlerErrChan <- err
|
handlerErrChan <- err
|
||||||
return
|
return
|
||||||
|
@ -140,7 +145,7 @@ func (r *run) RunPersist(in modules.ModuleReader, out modules.ModuleWriter) {
|
||||||
logChan = make(chan string, 64)
|
logChan = make(chan string, 64)
|
||||||
regChan := make(chan string, 64)
|
regChan := make(chan string, 64)
|
||||||
handlerErrChan = make(chan error, 64)
|
handlerErrChan = make(chan error, 64)
|
||||||
configChan = make(chan []byte, 1)
|
configChan = make(chan modules.ConfigParams, 1)
|
||||||
|
|
||||||
go moduleMain()
|
go moduleMain()
|
||||||
l, spec, err := modules.GetPersistListener("dispatch")
|
l, spec, err := modules.GetPersistListener("dispatch")
|
||||||
|
|
|
@ -67,8 +67,8 @@ var alertChan chan string
|
||||||
var handlerErrChan chan error
|
var handlerErrChan chan error
|
||||||
|
|
||||||
// When the agent sends the persistent module it's configuration, it will come in via
|
// When the agent sends the persistent module it's configuration, it will come in via
|
||||||
// the config channel as a JSON byte slice so we can unmarshal it into our configuration
|
// the config channel as a ConfigParams type so we can load it into our configuration
|
||||||
var configChan chan []byte
|
var configChan chan modules.ConfigParams
|
||||||
|
|
||||||
// An example background task the module will execute while it is being supervised by
|
// An example background task the module will execute while it is being supervised by
|
||||||
// the agent. This example just logs the current time up to the agent every 30
|
// the agent. This example just logs the current time up to the agent every 30
|
||||||
|
@ -81,7 +81,12 @@ func runSomeTasks() {
|
||||||
// which we can read immediately here. The configuration will come in via
|
// which we can read immediately here. The configuration will come in via
|
||||||
// configChan as a JSON document, which we unmarshal into our config struct.
|
// configChan as a JSON document, which we unmarshal into our config struct.
|
||||||
incfg := <-configChan
|
incfg := <-configChan
|
||||||
err := json.Unmarshal(incfg, &cfg)
|
buf, err := json.Marshal(incfg.Config)
|
||||||
|
if err != nil {
|
||||||
|
handlerErrChan <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(buf, &cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handlerErrChan <- err
|
handlerErrChan <- err
|
||||||
return
|
return
|
||||||
|
@ -178,7 +183,7 @@ func (r *run) RunPersist(in modules.ModuleReader, out modules.ModuleWriter) {
|
||||||
// and the module to exit.
|
// and the module to exit.
|
||||||
handlerErrChan = make(chan error, 64)
|
handlerErrChan = make(chan error, 64)
|
||||||
// Create a config channel we will read our configuration from.
|
// Create a config channel we will read our configuration from.
|
||||||
configChan = make(chan []byte, 1)
|
configChan = make(chan modules.ConfigParams, 1)
|
||||||
// Initialize the alert channel
|
// Initialize the alert channel
|
||||||
alertChan = make(chan string, 64)
|
alertChan = make(chan string, 64)
|
||||||
// Start up an example background task we want our module to run
|
// Start up an example background task we want our module to run
|
||||||
|
|
|
@ -41,7 +41,7 @@ func buildResults(e elements, r *modules.Result) (buf []byte, err error) {
|
||||||
var logChan chan string
|
var logChan chan string
|
||||||
var agentAlertChan chan string
|
var agentAlertChan chan string
|
||||||
var handlerErrChan chan error
|
var handlerErrChan chan error
|
||||||
var configChan chan []byte
|
var configChan chan modules.ConfigParams
|
||||||
|
|
||||||
var alertChan chan Alert
|
var alertChan chan Alert
|
||||||
|
|
||||||
|
@ -95,7 +95,12 @@ func moduleMain() {
|
||||||
alertChan = make(chan Alert, 16)
|
alertChan = make(chan Alert, 16)
|
||||||
|
|
||||||
incfg := <-configChan
|
incfg := <-configChan
|
||||||
err := json.Unmarshal(incfg, &cfg)
|
buf, err := json.Marshal(incfg.Config)
|
||||||
|
if err != nil {
|
||||||
|
handlerErrChan <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(buf, &cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handlerErrChan <- err
|
handlerErrChan <- err
|
||||||
return
|
return
|
||||||
|
@ -143,7 +148,7 @@ func (r *run) RunPersist(in modules.ModuleReader, out modules.ModuleWriter) {
|
||||||
agentAlertChan = make(chan string, 64)
|
agentAlertChan = make(chan string, 64)
|
||||||
regChan := make(chan string, 64)
|
regChan := make(chan string, 64)
|
||||||
handlerErrChan = make(chan error, 64)
|
handlerErrChan = make(chan error, 64)
|
||||||
configChan = make(chan []byte, 1)
|
configChan = make(chan modules.ConfigParams, 1)
|
||||||
|
|
||||||
go moduleMain()
|
go moduleMain()
|
||||||
l, spec, err := modules.GetPersistListener("fswatch")
|
l, spec, err := modules.GetPersistListener("fswatch")
|
||||||
|
|
|
@ -64,7 +64,10 @@ type RegParams struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ConfigParams struct {
|
type ConfigParams struct {
|
||||||
Config interface{} `json:"config"`
|
Config interface{} `json:"config"`
|
||||||
|
Hostname string `json:"hostname"`
|
||||||
|
Env interface{} `json:"environment"`
|
||||||
|
Tags map[string]string `json:"tags"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AlertParams describes the parameters used in an alert message
|
// AlertParams describes the parameters used in an alert message
|
||||||
|
@ -206,8 +209,14 @@ func MakeMessageRegister(spec string) (rawMsg []byte, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new message of class config.
|
// Creates a new message of class config.
|
||||||
func MakeMessageConfig(cfgdata interface{}) (rawMsg []byte, err error) {
|
func MakeMessageConfig(cfgdata interface{}, hostname string, env interface{},
|
||||||
param := ConfigParams{Config: cfgdata}
|
tags map[string]string) (rawMsg []byte, err error) {
|
||||||
|
param := ConfigParams{
|
||||||
|
Config: cfgdata,
|
||||||
|
Hostname: hostname,
|
||||||
|
Env: env,
|
||||||
|
Tags: tags,
|
||||||
|
}
|
||||||
msg := Message{Class: MsgClassConfig, Parameters: param}
|
msg := Message{Class: MsgClassConfig, Parameters: param}
|
||||||
rawMsg, err = json.Marshal(&msg)
|
rawMsg, err = json.Marshal(&msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -377,7 +386,7 @@ func RegisterDispatchFunction(f func(string)) {
|
||||||
// RunPersist function. Looks after replying to ping messages, writing logs, and other
|
// RunPersist function. Looks after replying to ping messages, writing logs, and other
|
||||||
// communication between the agent and the running persistent module.
|
// communication between the agent and the running persistent module.
|
||||||
func DefaultPersistHandlers(in ModuleReader, out ModuleWriter, logch chan string,
|
func DefaultPersistHandlers(in ModuleReader, out ModuleWriter, logch chan string,
|
||||||
errch chan error, regch chan string, alertch chan string, confch chan []byte) {
|
errch chan error, regch chan string, alertch chan string, confch chan ConfigParams) {
|
||||||
inChan := make(chan Message, 0)
|
inChan := make(chan Message, 0)
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
|
@ -470,12 +479,7 @@ func DefaultPersistHandlers(in ModuleReader, out ModuleWriter, logch chan string
|
||||||
failed = true
|
failed = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
buf, err = json.Marshal(confparam.Config)
|
confch <- confparam
|
||||||
if err != nil {
|
|
||||||
failed = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
confch <- buf
|
|
||||||
case "alert":
|
case "alert":
|
||||||
if dispatchFunc != nil {
|
if dispatchFunc != nil {
|
||||||
var alparam AlertParams
|
var alparam AlertParams
|
||||||
|
|
Загрузка…
Ссылка в новой задаче