@cryptotaxi247 / netdata-1 / commits / 964fe1607

improvement(go.d dyncfg): add user to source (#19666)

Ilya Mashchenko committed Feb 18, 2025 at 11:42 UTC 964fe16073a8203611b897cc5c4b96878d05c515
3 files changed +29 -11
src/go/plugin/go.d/agent/jobmgr/dyncfg.go
+10
@@ -75,3 +75,13 @@ func unmarshalPayload(dst any, fn functions.Function) error {
75 }
76 return yaml.Unmarshal(fn.Payload, dst)
77 }
78 +
79 +func getFnSourceValue(fn functions.Function, key string) string {
80 + prefix := key + "="
81 + for _, part := range strings.Split(fn.Source, ",") {
82 + if v, ok := strings.CutPrefix(part, prefix); ok {
83 + return strings.TrimSpace(v)
84 + }
85 + }
86 + return ""
87 +}
src/go/plugin/go.d/agent/jobmgr/dyncfg_collector.go
+8 -4
@@ -533,7 +533,7 @@ func (m *Manager) dyncfgConfigAdd(fn functions.Function) {
533 return
534 }
535
536 - m.dyncfgSetConfigMeta(cfg, mn, jn)
536 + m.dyncfgSetConfigMeta(cfg, mn, jn, fn)
537
538 if _, err := m.createCollectorJob(cfg); err != nil {
539 m.Warningf("dyncfg: add: module %s job %s: failed to apply config: %v", mn, jn, err)
@@ -614,7 +614,7 @@ func (m *Manager) dyncfgConfigUpdate(fn functions.Function) {
614 return
615 }
616
617 - m.dyncfgSetConfigMeta(cfg, mn, jn)
617 + m.dyncfgSetConfigMeta(cfg, mn, jn, fn)
618
619 if ecfg.status == dyncfgRunning && ecfg.cfg.UID() == cfg.UID() {
620 m.dyncfgRespf(fn, 200, "")
@@ -680,9 +680,13 @@ func (m *Manager) dyncfgConfigUpdate(fn functions.Function) {
680 m.dyncfgJobStatus(scfg.cfg, scfg.status)
681 }
682
683 -func (m *Manager) dyncfgSetConfigMeta(cfg confgroup.Config, module, name string) {
683 +func (m *Manager) dyncfgSetConfigMeta(cfg confgroup.Config, module, name string, fn functions.Function) {
684 + src := fmt.Sprintf("type=dyncfg,module=%s,job=%s", module, name)
685 + if v := getFnSourceValue(fn, "user"); v != "" {
686 + src += fmt.Sprintf(", user=%s", v)
687 + }
688 cfg.SetProvider("dyncfg")
685 - cfg.SetSource(fmt.Sprintf("type=dyncfg,module=%s,job=%s", module, name))
689 + cfg.SetSource(src)
690 cfg.SetSourceType("dyncfg")
691 cfg.SetModule(module)
692 cfg.SetName(name)
src/go/plugin/go.d/agent/jobmgr/dyncfg_vnode.go
+11 -7
@@ -139,7 +139,7 @@ func (m *Manager) dyncfgVnodeAdd(fn functions.Function) {
139 return
140 }
141
142 - dyncfgUpdateVnodeConfig(cfg, name)
142 + dyncfgUpdateVnodeConfig(cfg, name, fn)
143
144 if err := m.verifyVnodeUnique(cfg); err != nil {
145 m.Warningf("dyncfg: add: vnode job %s: %v", name, err)
@@ -213,7 +213,7 @@ func (m *Manager) dyncfgVnodeTest(fn functions.Function) {
213 return
214 }
215
216 - dyncfgUpdateVnodeConfig(cfg, name)
216 + dyncfgUpdateVnodeConfig(cfg, name, fn)
217
218 if err := m.verifyVnodeUnique(cfg); err != nil {
219 m.Warningf("dyncfg: test: vnode job %s: %v", name, err)
@@ -252,7 +252,7 @@ func (m *Manager) dyncfgVnodeUpdate(fn functions.Function) {
252 return
253 }
254
255 - dyncfgUpdateVnodeConfig(cfg, name)
255 + dyncfgUpdateVnodeConfig(cfg, name, fn)
256
257 if orig.Equal(cfg) {
258 m.dyncfgRespf(fn, 202, "")
@@ -309,13 +309,17 @@ func (m *Manager) verifyVnodeUnique(newCfg *vnodes.VirtualNode) error {
309 return nil
310 }
311
312 -func dyncfgUpdateVnodeConfig(cfg *vnodes.VirtualNode, name string) {
312 +func dyncfgUpdateVnodeConfig(cfg *vnodes.VirtualNode, name string, fn functions.Function) {
313 + cfg.SourceType = confgroup.TypeDyncfg
314 + src := "type=dyncfg"
315 + if v := getFnSourceValue(fn, "user"); v != "" {
316 + src += fmt.Sprintf(", user=%s", v)
317 + }
318 + cfg.Source = src
319 cfg.Name = name
320 if cfg.Hostname == "" {
321 cfg.Hostname = name
322 }
317 - cfg.SourceType = confgroup.TypeDyncfg
318 - cfg.Source = "type=dyncfg"
323 }
324
325 func vnodeConfigFromPayload(fn functions.Function) (*vnodes.VirtualNode, error) {
@@ -339,7 +343,7 @@ func vnodeUserconfigFromPayload(fn functions.Function) ([]byte, error) {
343 name = fn.Args[2]
344 }
345
342 - dyncfgUpdateVnodeConfig(cfg, name)
346 + dyncfgUpdateVnodeConfig(cfg, name, fn)
347
348 bs, err := yaml.Marshal([]any{cfg})
349 if err != nil {