// runTriggers executes the triggers for each // monitored resource if it's state has changed func (c *Catalog) runTriggers(r resource.Resource) error { c.status.Lock() defer c.status.Unlock() for subscribed, trigger := range r.SubscribedTo() { item := c.status.Items[subscribed] if !item.StateChanged { continue } c.config.Logger.Printf("%s running trigger, because %s has changed\n", r.ID(), subscribed) c.config.L.Push(trigger) if err := c.config.L.PCall(0, 0, nil); err != nil { c.config.Logger.Printf("%s trigger exited with an error: %s\n", r.ID(), err) return err } } return nil }