uci

Salt execution module for OpenWrt configuration via local ubus.

For devices with Python3 and ubusd running, managed via salt-ssh. Calls ubus call directly via subprocess – no proxy module needed.

The JSON output is identical to what the JSON-RPC and SSH adapters return, so the state module works unchanged.

UCI metadata fields are returned with underscore prefixes to avoid collision with UCI option names:

.type -> _type, .name -> _name, .anonymous -> _anonymous, .index -> _index
saltext.uci_ubus.modules.uci_local.get(config, section=None, option=None)[source]

Read UCI configuration via local ubus call uci get.

Returns the full config, a single section, or a single option value. UCI metadata fields (.type, .name, .anonymous, .index) are returned with underscore prefixes (_type, _name, _anonymous, _index).

CLI Example:

salt device uci.get network
salt device uci.get network lan
salt device uci.get network lan proto
saltext.uci_ubus.modules.uci_local.configs()[source]

List available UCI configuration packages.

CLI Example:

salt device uci.configs
saltext.uci_ubus.modules.uci_local.changes(config)[source]

Show uncommitted changes for a UCI package.

CLI Example:

salt device uci.changes network
saltext.uci_ubus.modules.uci_local.config_export(config, format='json')[source]

Export live UCI config as a grouped sections dict.

Transforms the device config into the format consumed by uci.managed(). Anonymous sections are emitted as singleton (_<type>) or multi-instance (_<type>s with _match and _items).

Use format=pillar to redact sensitive values with Jinja2 pillar references, or format=json (default) for plaintext.

CLI Example:

salt device uci.config_export network
salt device uci.config_export network format=pillar
saltext.uci_ubus.modules.uci_local.config_export_all(format='json')[source]

Export all UCI config packages as a grouped dict.

CLI Example:

salt device uci.config_export_all
salt device uci.config_export_all format=pillar
saltext.uci_ubus.modules.uci_local.config_diff(config, sections)[source]

Compare live UCI config against declared sections and return drift.

Read-only – no writes are issued. Returns a categorized dict with changed, new, removed, reordered, and summary.

CLI Example:

salt device uci.config_diff network sections='{"lan": {"ipaddr": "10.0.0.2"}}'
saltext.uci_ubus.modules.uci_local.set_(config, section, values)[source]

Set UCI option values on an existing section.

CLI Example:

salt device uci.set network lan '{"proto": "static"}'
saltext.uci_ubus.modules.uci_local.add(config, type_, name=None, values=None)[source]

Add a new UCI section.

CLI Example:

salt device uci.add network interface name=wan2
saltext.uci_ubus.modules.uci_local.delete(config, section, option=None)[source]

Delete a UCI section or option.

CLI Example:

salt device uci.delete network wan2
salt device uci.delete network lan dns
saltext.uci_ubus.modules.uci_local.apply_(rollback=90)[source]

Commit and apply UCI changes with rollback safety.

CLI Example:

salt device uci.apply
salt device uci.apply rollback=120
saltext.uci_ubus.modules.uci_local.confirm()[source]

Confirm a pending apply, locking in the changes.

CLI Example:

salt device uci.confirm
saltext.uci_ubus.modules.uci_local.rollback()[source]

Manually trigger a rollback of the last apply.

CLI Example:

salt device uci.rollback
saltext.uci_ubus.modules.uci_local.revert(config)[source]

Discard staged (uncommitted) changes for a UCI package.

CLI Example:

salt device uci.revert network
saltext.uci_ubus.modules.uci_local.commit(config)[source]

Commit staged changes to /etc/config without reloading daemons.

CLI Example:

salt device uci.commit network
saltext.uci_ubus.modules.uci_local.state(config, section=None)[source]

Return runtime-merged UCI state (defaults + config + overrides).

CLI Example:

salt device uci.state network
salt device uci.state network lan
saltext.uci_ubus.modules.uci_local.system_board()[source]

Return system board information.

CLI Example:

salt device uci.system_board
saltext.uci_ubus.modules.uci_local.system_info()[source]

Return system info (memory, uptime, load).

CLI Example:

salt device uci.system_info
saltext.uci_ubus.modules.uci_local.network_dump()[source]

Return network interface state.

CLI Example:

salt device uci.network_dump
saltext.uci_ubus.modules.uci_local.service_list(verbose=False)[source]

Return procd service list.

CLI Example:

salt device uci.service_list
salt device uci.service_list verbose=True