feat(agent): add [debug] dump_dir config field
This commit is contained in:
parent
b798b462ca
commit
1c289a5a0d
3 changed files with 49 additions and 0 deletions
|
|
@ -5,6 +5,7 @@ defmodule ProxmoxAgent.Config do
|
||||||
:server_url,
|
:server_url,
|
||||||
:token,
|
:token,
|
||||||
:host_id,
|
:host_id,
|
||||||
|
:dump_dir,
|
||||||
fast_seconds: 30,
|
fast_seconds: 30,
|
||||||
medium_seconds: 300,
|
medium_seconds: 300,
|
||||||
slow_seconds: 1800
|
slow_seconds: 1800
|
||||||
|
|
@ -14,6 +15,7 @@ defmodule ProxmoxAgent.Config do
|
||||||
server_url: String.t(),
|
server_url: String.t(),
|
||||||
token: String.t(),
|
token: String.t(),
|
||||||
host_id: String.t(),
|
host_id: String.t(),
|
||||||
|
dump_dir: String.t() | nil,
|
||||||
fast_seconds: pos_integer(),
|
fast_seconds: pos_integer(),
|
||||||
medium_seconds: pos_integer(),
|
medium_seconds: pos_integer(),
|
||||||
slow_seconds: pos_integer()
|
slow_seconds: pos_integer()
|
||||||
|
|
@ -57,17 +59,24 @@ defmodule ProxmoxAgent.Config do
|
||||||
|
|
||||||
defp build(map) do
|
defp build(map) do
|
||||||
intervals = Map.get(map, "intervals", %{})
|
intervals = Map.get(map, "intervals", %{})
|
||||||
|
debug = Map.get(map, "debug", %{})
|
||||||
|
|
||||||
%__MODULE__{
|
%__MODULE__{
|
||||||
server_url: map["server_url"],
|
server_url: map["server_url"],
|
||||||
token: map["token"],
|
token: map["token"],
|
||||||
host_id: map["host_id"] || hostname(),
|
host_id: map["host_id"] || hostname(),
|
||||||
|
dump_dir: normalize_dump_dir(Map.get(debug, "dump_dir")),
|
||||||
fast_seconds: Map.get(intervals, "fast_seconds", 30),
|
fast_seconds: Map.get(intervals, "fast_seconds", 30),
|
||||||
medium_seconds: Map.get(intervals, "medium_seconds", 300),
|
medium_seconds: Map.get(intervals, "medium_seconds", 300),
|
||||||
slow_seconds: Map.get(intervals, "slow_seconds", 1800)
|
slow_seconds: Map.get(intervals, "slow_seconds", 1800)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp normalize_dump_dir(nil), do: nil
|
||||||
|
defp normalize_dump_dir(""), do: nil
|
||||||
|
defp normalize_dump_dir(s) when is_binary(s), do: s
|
||||||
|
defp normalize_dump_dir(_), do: nil
|
||||||
|
|
||||||
defp hostname do
|
defp hostname do
|
||||||
case :inet.gethostname() do
|
case :inet.gethostname() do
|
||||||
{:ok, name} -> List.to_string(name)
|
{:ok, name} -> List.to_string(name)
|
||||||
|
|
|
||||||
3
agent/test/fixtures/agent.toml
vendored
3
agent/test/fixtures/agent.toml
vendored
|
|
@ -6,3 +6,6 @@ host_id = "pve-test-01"
|
||||||
fast_seconds = 15
|
fast_seconds = 15
|
||||||
medium_seconds = 120
|
medium_seconds = 120
|
||||||
slow_seconds = 600
|
slow_seconds = 600
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
dump_dir = "/tmp/proxmox-monitor-test"
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,43 @@ defmodule ProxmoxAgent.ConfigTest do
|
||||||
assert cfg.fast_seconds == 15
|
assert cfg.fast_seconds == 15
|
||||||
assert cfg.medium_seconds == 120
|
assert cfg.medium_seconds == 120
|
||||||
assert cfg.slow_seconds == 600
|
assert cfg.slow_seconds == 600
|
||||||
|
assert cfg.dump_dir == "/tmp/proxmox-monitor-test"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "parses [debug] dump_dir when present" do
|
||||||
|
assert {:ok, cfg} = Config.load(@fixture)
|
||||||
|
assert cfg.dump_dir == "/tmp/proxmox-monitor-test"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "dump_dir is nil when [debug] is absent" do
|
||||||
|
tmp = Path.join(System.tmp_dir!(), "agent_nodebug.toml")
|
||||||
|
|
||||||
|
File.write!(tmp, """
|
||||||
|
server_url = "wss://x/socket/websocket"
|
||||||
|
token = "t"
|
||||||
|
""")
|
||||||
|
|
||||||
|
on_exit(fn -> File.rm(tmp) end)
|
||||||
|
|
||||||
|
assert {:ok, cfg} = Config.load(tmp)
|
||||||
|
assert cfg.dump_dir == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test "dump_dir is nil when set to empty string" do
|
||||||
|
tmp = Path.join(System.tmp_dir!(), "agent_emptydebug.toml")
|
||||||
|
|
||||||
|
File.write!(tmp, """
|
||||||
|
server_url = "wss://x/socket/websocket"
|
||||||
|
token = "t"
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
dump_dir = ""
|
||||||
|
""")
|
||||||
|
|
||||||
|
on_exit(fn -> File.rm(tmp) end)
|
||||||
|
|
||||||
|
assert {:ok, cfg} = Config.load(tmp)
|
||||||
|
assert cfg.dump_dir == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns error for missing file" do
|
test "returns error for missing file" do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue