tailscale/util/syspolicy/setting
Nick Khyl 4df02bbb48 util/syspolicy/setting: use a custom marshaler for time.Duration
jsonv2 now returns an error when you marshal or unmarshal a time.Duration
without an explicit format flag. This is an intentional, temporary choice until
the default [time.Duration] representation is decided (see golang/go#71631).

setting.Snapshot can hold time.Duration values inside a map[string]any,
so the jsonv2 update breaks marshaling. In this PR, we start using
a custom marshaler until that decision is made or golang/go#71664
lets us specify the format explicitly.

This fixes `tailscale syspolicy list` failing when KeyExpirationNotice
or any other time.Duration policy setting is configured.

Fixes #16683

Signed-off-by: Nick Khyl <nickk@tailscale.com>
2025-07-28 12:57:39 -05:00
..
errors.go util/syspolicy/source: add package for reading policy settings from external stores 2024-09-03 14:51:14 -05:00
key.go util/syspolicy: implement a syspolicy store that reads settings from environment variables 2024-10-30 11:12:22 -05:00
origin.go all: statically enforce json/v2 interface satisfaction (#15154) 2025-02-27 12:33:31 -08:00
policy_scope_test.go util/syspolicy/setting: add package that contains types for the next syspolicy PRs 2024-08-12 21:02:35 -05:00
policy_scope.go util/syspolicy: add rsop package that provides access to the resultant policy 2024-10-16 00:06:14 -05:00
raw_item_test.go util/syspolicy/setting: make setting.RawItem JSON-marshallable 2024-10-30 12:50:29 -05:00
raw_item.go all: statically enforce json/v2 interface satisfaction (#15154) 2025-02-27 12:33:31 -08:00
setting_test.go util/syspolicy/setting: add package that contains types for the next syspolicy PRs 2024-08-12 21:02:35 -05:00
setting.go all: unify some redundant testing.TB interface copies 2025-04-08 08:19:29 -07:00
snapshot_test.go util/syspolicy/setting: use a custom marshaler for time.Duration 2025-07-28 12:57:39 -05:00
snapshot.go util/syspolicy/setting: use a custom marshaler for time.Duration 2025-07-28 12:57:39 -05:00
summary.go all: statically enforce json/v2 interface satisfaction (#15154) 2025-02-27 12:33:31 -08:00
types.go util/syspolicy/setting: add package that contains types for the next syspolicy PRs 2024-08-12 21:02:35 -05:00