From 3b46ede2a805f05647c505841155efb1f865721f Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Thu, 4 Jun 2026 22:59:18 +0300 Subject: [PATCH] PMM-13431 Fix long tmp directory names in pmm-agent --- agent/agents/supervisor/supervisor.go | 8 ++++---- agent/agents/supervisor/supervisor_test.go | 18 +++++++++--------- agent/commands/run.go | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/agent/agents/supervisor/supervisor.go b/agent/agents/supervisor/supervisor.go index b9a1c893cdc..17fcacdad8f 100644 --- a/agent/agents/supervisor/supervisor.go +++ b/agent/agents/supervisor/supervisor.go @@ -314,7 +314,7 @@ func (s *Supervisor) setAgentProcesses(agentProcesses map[string]*agentv1.SetSta delete(s.agentProcesses, agentID) - agentTmp := filepath.Join(s.cfg.Get().Paths.TempDir, strings.ToLower(agent.requestedState.Type.String()), agentID) + agentTmp := filepath.Join(s.cfg.Get().Paths.TempDir, trimPrefix(agent.requestedState.Type.String()), agentID) err := os.RemoveAll(agentTmp) if err != nil { s.l.Warnf("Failed to cleanup directory '%s': %s", agentTmp, err.Error()) @@ -370,7 +370,7 @@ func (s *Supervisor) setBuiltinAgents(builtinAgents map[string]*agentv1.SetState delete(s.builtinAgents, agentID) - agentTmp := filepath.Join(s.cfg.Get().Paths.TempDir, strings.ToLower(agent.requestedState.Type.String()), agentID) + agentTmp := filepath.Join(s.cfg.Get().Paths.TempDir, trimPrefix(agent.requestedState.Type.String()), agentID) err := os.RemoveAll(agentTmp) if err != nil { s.l.Warnf("Failed to cleanup directory '%s': %s", agentTmp, err.Error()) @@ -579,7 +579,7 @@ func (s *Supervisor) startBuiltin(agentID string, builtinAgent *agentv1.SetState var dsn string if builtinAgent.TextFiles != nil { - tempDir := filepath.Join(cfg.Paths.TempDir, strings.ToLower(builtinAgent.Type.String()), agentID) + tempDir := filepath.Join(cfg.Paths.TempDir, trimPrefix(builtinAgent.Type.String()), agentID) dsn, err = templates.RenderDSN(builtinAgent.Dsn, builtinAgent.TextFiles, tempDir) if err != nil { cancel() @@ -804,7 +804,7 @@ func (s *Supervisor) processParams(agentID string, agentProcess *agentv1.SetStat TextFiles: agentProcess.TextFiles, TemplateLeftDelim: agentProcess.TemplateLeftDelim, TemplateRightDelim: agentProcess.TemplateRightDelim, - TempDir: filepath.Join(cfg.Paths.TempDir, strings.ToLower(agentProcess.Type.String()), agentID), + TempDir: filepath.Join(cfg.Paths.TempDir, trimPrefix(agentProcess.Type.String()), agentID), } processParams.TemplateRenderer = tr diff --git a/agent/agents/supervisor/supervisor_test.go b/agent/agents/supervisor/supervisor_test.go index 3ced9eef431..ea5414b294c 100644 --- a/agent/agents/supervisor/supervisor_test.go +++ b/agent/agents/supervisor/supervisor_test.go @@ -371,18 +371,18 @@ func TestSupervisorProcessParams(t *testing.T) { actual, err := s.processParams("ID", p, 12345) require.NoError(t, err) - configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_mysqld_exporter", "ID", "Config") + configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "mysqld_exporter", "ID", "Config") expected := process.Params{ Path: "/path/to/mysql_exporter", Args: []string{ "-web.listen-address=:12345", - "-web.ssl-cert-file=" + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_mysqld_exporter", "ID", "Cert"), + "-web.ssl-cert-file=" + filepath.Join(s.cfg.Get().Paths.TempDir, "mysqld_exporter", "ID", "Cert"), "-web.config=" + configFilePath, }, Env: []string{ "MONGODB_URI=mongodb://username:s3cur3%20p%40$$w0r4.@1.2.3.4:12345/?connectTimeoutMS=1000&ssl=true&" + - "sslCaFile=" + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_mysqld_exporter", "ID", "caFilePlaceholder") + - "&sslCertificateKeyFile=" + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_mysqld_exporter", "ID", "certificateKeyFilePlaceholder"), + "sslCaFile=" + filepath.Join(s.cfg.Get().Paths.TempDir, "mysqld_exporter", "ID", "caFilePlaceholder") + + "&sslCertificateKeyFile=" + filepath.Join(s.cfg.Get().Paths.TempDir, "mysqld_exporter", "ID", "certificateKeyFilePlaceholder"), "HTTP_AUTH=pmm:secret", "TEST=:12345", }, @@ -520,9 +520,9 @@ server { tls { http = true rpc = true - ca_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_nomad_agent", "ID", "caCert") + `" # filled by PMM Agent - cert_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_nomad_agent", "ID", "certFile") + `" # filled by PMM Agent - key_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_nomad_agent", "ID", "keyFile") + `" # filled by PMM Agent + ca_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "nomad_agent", "ID", "caCert") + `" # filled by PMM Agent + cert_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "nomad_agent", "ID", "certFile") + `" # filled by PMM Agent + key_file = "` + filepath.Join(s.cfg.Get().Paths.TempDir, "nomad_agent", "ID", "keyFile") + `" # filled by PMM Agent verify_server_hostname = true } @@ -555,7 +555,7 @@ plugin "raw_exec" { actual, err := s.processParams("ID", p, 12345) require.NoError(t, err) - configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_nomad_agent", "ID", "nomadConfig") + configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "nomad_agent", "ID", "nomadConfig") expected := process.Params{ Path: "/path/to/nomad", Args: []string{ @@ -611,7 +611,7 @@ plugin "raw_exec" { actual, err := s.processParams("vmagent-id", p, 12345) require.NoError(t, err) - configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "agent_type_vm_agent", "vmagent-id", "vmagentscrapecfg") + configFilePath := filepath.Join(s.cfg.Get().Paths.TempDir, "vm_agent", "vmagent-id", "vmagentscrapecfg") tempDir := s.cfg.Get().Paths.TempDir expected := process.Params{ Path: "/path/to/vmagent", diff --git a/agent/commands/run.go b/agent/commands/run.go index b0c1c706ef5..ffac6e59276 100644 --- a/agent/commands/run.go +++ b/agent/commands/run.go @@ -159,7 +159,7 @@ func cleanupTmp(tmpRoot string, log *logrus.Entry) { continue } - agentTmp := filepath.Join(tmpRoot, strings.ToLower(agentType.String())) + agentTmp := filepath.Join(tmpRoot, strings.TrimPrefix(strings.ToLower(agentType.String()), "agent_type_")) err := os.RemoveAll(agentTmp) if err != nil { log.Warnf("Failed to cleanup directory '%s': %s", agentTmp, err.Error())