Skip to content

docs: sync CONFIG-PROPERTIES.md with pkg/pillar/types/global.go#5960

Open
mvanhorn wants to merge 3 commits into
lf-edge:masterfrom
mvanhorn:osc/5298-sync-config-properties
Open

docs: sync CONFIG-PROPERTIES.md with pkg/pillar/types/global.go#5960
mvanhorn wants to merge 3 commits into
lf-edge:masterfrom
mvanhorn:osc/5298-sync-config-properties

Conversation

@mvanhorn
Copy link
Copy Markdown
Contributor

This reconciles docs/CONFIG-PROPERTIES.md against the canonical source in NewConfigItemSpecMap() (pkg/pillar/types/global.go), as the issue requests.

Changes

Fixed defaults that had drifted from the code

  • app.allow.vnc: false (was false (only local access) - dropped the editorial aside since the default is already documented in the description)
  • app.fml.resolution: "" (was notset; FmlResolutionUnset = "")
  • debug.enable.ssh: "" (was empty string(ssh disabled); moved the explanation into the description)
  • debug.default.loglevel: info (was debug; AddStringItem(DefaultLogLevel, "info", ...))
  • debug.default.remote.loglevel: info (was warning; same source)
  • diag.probe.remote.http.endpoint / diag.probe.remote.https.endpoint: unquoted www.google.com matches the AddStringItem default
  • maintenance.mode / airgap.mode: none (was "none"; matches the TS_NONE TriState default)

Added keys present in NewConfigItemSpecMap but missing from the doc

  • storage.dom0.disk.maxusagebytes (Dom0DiskUsageMaxBytes)
  • memory.eve.limit.bytes (EveMemoryLimitInBytes) - marked deprecated, points readers at the MiB variant
  • memory.eve.limit.MiB (EveMemoryLimitInMiB)
  • drain.skip.k8sapinotreachable.timeout (DrainSkipK8sAPINotReachableTimeout)
  • k3s.config.override (K3sConfigOverride)
  • k3s.version (K3sVersionOverride)
  • debug.disable.dhcp.all-ones.netmask (DisableDHCPAllOnesNetMask) - marked deprecated, matching the in-code comment

Removed

  • timer.hardwareinfo.interval - no longer in NewConfigItemSpecMap(). The previous entry described it as deprecated; this PR removes it rather than keeping a deprecated row for a key that has fully been retired from the spec map.

Reorganized

  • Moved debug.tui.loglevel into the log-level table, since it's a log-level setting and the surrounding entries (default/syslog/kernel) already live there.

Header

  • Added a short lead paragraph naming NewConfigItemSpecMap() in pkg/pillar/types/global.go as the single source of truth for these properties.

Verification

  • For every entry in NewConfigItemSpecMap(), walked grep -n "AddIntItem\|AddBoolItem\|AddStringItem\|AddTriStateItem" pkg/pillar/types/global.go and confirmed each appears in the markdown table with the matching default.
  • For every row in the markdown, confirmed the key string is present in global.go (no fabricated entries).
  • Defaults checked against the literal value passed as the second argument to each Add*Item(...) call.

Closes #5298

Reconcile the runtime configuration properties doc with NewConfigItemSpecMap()
in pkg/pillar/types/global.go (the single source of truth).

Changes:

- Add a header pointing readers at the source file.
- Fix defaults that had drifted: app.allow.vnc (false), app.fml.resolution (""),
  debug.enable.ssh (""), debug.default.loglevel (info), debug.default.remote.loglevel (info),
  diag.probe.remote.http(s).endpoint (www.google.com unquoted), maintenance.mode (none),
  airgap.mode (none).
- Add missing keys present in NewConfigItemSpecMap but not previously documented:
  storage.dom0.disk.maxusagebytes, memory.eve.limit.bytes (marked deprecated),
  memory.eve.limit.MiB, drain.skip.k8sapinotreachable.timeout, k3s.config.override,
  k3s.version, debug.disable.dhcp.all-ones.netmask (marked deprecated).
- Remove timer.hardwareinfo.interval (no longer in NewConfigItemSpecMap).
- Move debug.tui.loglevel into the log-level table where it logically belongs.
- Tighten descriptions for network.fallback.any.eth, agent.*.debug.loglevel,
  and agent.*.debug.remote.loglevel.

Closes lf-edge#5298

Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
@mvanhorn mvanhorn requested a review from eriknordmark as a code owner May 14, 2026 08:36
The www.google.com defaults for diag.probe.remote.http(s).endpoint were
emitted as bare URLs after the sync, which yetus markdownlint flags as
MD034 (no-bare-urls). Wrap both occurrences in backticks so the doc
renders as inline code and the link auto-detection does not fire.

Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
@mvanhorn mvanhorn force-pushed the osc/5298-sync-config-properties branch from d5d7d54 to f10327e Compare May 14, 2026 09:14
Comment thread docs/CONFIG-PROPERTIES.md Outdated
| timer.metric.interval | integer in seconds | 60 (1 minute) | 5 | 3600 (1 hour) | how frequently device reports metrics |
| timer.hardwarehealth.interval | integer in seconds | 43200 (12 hours) | 21600 (6 hours) | 4294967295 (max uint32) | how frequently device reports hardware health information (ECC, SMART) to controller |
| timer.hardwareinfo.interval | integer in seconds | 10800 (3 hours) | 10800 (3 hours) | 4294967295 (max uint32) | how frequently device reports hardware information (SMART) to controller (deprecated) |
| timer.hardwareinfo.interval | integer in seconds | - | - | - | removed; no longer present in `NewConfigItemSpecMap()` |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this line be removed from the doc?

Comment thread docs/CONFIG-PROPERTIES.md
| debug.enable.console | boolean | true | - | - | allow console access to EVE, reboot required to disable (controller by default overrides to false) |
| debug.enable.vnc.shim.vm | boolean | false | - | - | allow VNC access to the container application shim VM (reboot required to disable) |
| storage.dom0.disk.minusage.percent | integer percent | 20 | 20 | 80 | min. percent of persist partition reserved for dom0 |
| storage.dom0.disk.maxusagebytes | integer bytes | 2147483648 | 104857600 | 4294967295 (max uint32) | max bytes of persist partition that can be used by dom0 |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can drop "(max uint32)" from this.

Comment thread docs/CONFIG-PROPERTIES.md
| force.fallback.counter | integer | 0 | 0 | 4294967295 (max uint32) | forces fallback to other image if counter is changed |
| newlog.allow.fastupload | boolean | false | - | - | allow faster upload gzip logfiles to controller |
| memory.apps.ignore.check | boolean | false | - | - | Ignore memory usage check for Apps |
| memory.eve.limit.bytes | integer bytes | base.ClampToUint32(eveMemoryLimitInBytes) | base.ClampToUint32(eveMemoryLimitInBytes) | 4294967295 (max uint32) | deprecated; use memory.eve.limit.MiB instead. This legacy value is limited to 4GB and still has higher priority for backward compatibility |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be expressed using simple words and not code?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, "higher priority" than what? I assume the next item in the list but it makes sense to be explicit.

Comment thread docs/CONFIG-PROPERTIES.md Outdated
| wwan.modem.recovery.restart.modemmanager | boolean | false | - | - | If a modem firmware crash occurs and ModemManager fails to properly recognize or manage the restarted modem, EVE will attempt to restart ModemManager as a recovery step. This occurs before the watchdog mechanism is triggered (if enabled) and can be combined with driver reload recovery mechanism. |
| diag.probe.remote.http.endpoint | string | `"http://www.google.com"` | - | - | Remote endpoint (URL, IP instead of hostname is accepted) queried over HTTP to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
| diag.probe.remote.https.endpoint | string | `"https://www.google.com"` | - | - | Remote endpoint (URL, IP instead of hostname is NOT accepted) queried over HTTPS to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
| diag.probe.remote.http.endpoint | string | `www.google.com` | - | - | Remote endpoint (URL, IP instead of hostname is accepted) queried over HTTP to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The explanation says "URL" but the default is a hostname. Which one is correct per global.go?

Comment thread docs/CONFIG-PROPERTIES.md Outdated
| diag.probe.remote.http.endpoint | string | `"http://www.google.com"` | - | - | Remote endpoint (URL, IP instead of hostname is accepted) queried over HTTP to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
| diag.probe.remote.https.endpoint | string | `"https://www.google.com"` | - | - | Remote endpoint (URL, IP instead of hostname is NOT accepted) queried over HTTPS to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
| diag.probe.remote.http.endpoint | string | `www.google.com` | - | - | Remote endpoint (URL, IP instead of hostname is accepted) queried over HTTP to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
| diag.probe.remote.https.endpoint | string | `www.google.com` | - | - | Remote endpoint (URL, IP instead of hostname is NOT accepted) queried over HTTPS to assess the state of network connectivity whenever the controller is not reachable. Used only for diagnostics (no functional impact). Set to an empty string to disable. |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

Comment thread docs/CONFIG-PROPERTIES.md Outdated
Comment on lines +163 to +164
| agent.*agentname*.debug.loglevel | string | info | if set overrides debug.default.loglevel for this particular agent (Legacy setting debug.*agentname*.loglevel still supported) |
| agent.*agentname*.debug.remote.loglevel | string | info | if set overrides debug.default.remote.loglevel for this particular agent (Legacy setting debug.*agentname*.remote.loglevel) |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These two have a default of "" AFAIK, which matches the "if set" text.

Copy link
Copy Markdown
Contributor

@eriknordmark eriknordmark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this.
A few comments and questions.

Also, the commitlint expects
<topic/summary>

- Remove stale 'timer.hardwareinfo.interval' (no longer in NewConfigItemSpecMap)
- Drop '(max uint32)' parenthetical from timer.port.testbetterinterval max
- Rewrite testbetterinterval description in plain words; clarify
  what 'higher priority' compares against
- diag.probe.remote.http: accept hostname/IP, simpler wording
- diag.probe.remote.https: hostname only, IP not accepted
- agent.*.debug.loglevel and remote.loglevel defaults are "" (matches
  'if set overrides' semantics)

Refs: lf-edge#5298
Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
@github-actions github-actions Bot requested a review from eriknordmark May 15, 2026 00:04
@mvanhorn
Copy link
Copy Markdown
Contributor Author

Thanks for the careful review @eriknordmark. Pushed 9afad7c addressing all seven inline comments:

  • Dropped the stale timer.hardwareinfo.interval row (not in NewConfigItemSpecMap anymore)
  • Removed the (max uint32) parenthetical from timer.port.testbetterinterval
  • Rewrote testbetterinterval in plain words and made the priority comparison explicit (it retries higher-priority port configs when the current one is a lower-priority fallback)
  • diag.probe.remote.http.endpoint: accepts hostname or IP, wording simplified
  • diag.probe.remote.https.endpoint: hostname only, IPs not accepted (matches global.go)
  • agent.*agentname*.debug.loglevel and agent.*agentname*.debug.remote.loglevel defaults changed to ""

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sync CONFIG-PROPERTIES.md with pkg/pillar/types/global.go

2 participants