The idea behind op mode top-level words is that they classify commands by their impact on the system. An experienced use can estimate what will happen if they run a command . show commands display system information, clear commands can make completely non-disruptive changes to its state, reset can disrupt single sessions/users/etc., restart commands restart entire processes.
However, there are two command families that contain commands with wildly different effects: force and generate. Under generate, some of them just show something on screen, some generate files used by VyOS, some generate files only useful for the user. Under force we have stuff from OWAMP ping to manual cluster node state transition.
A possible solution is to introduce two new top-level words: execute and produce.
- execute commands run diagnostic tools that have no impact on the system state. That includes ping (and its OWAMP/TWAMP equivalent), traceroute, port scanners, performance testers, and similar.
- produce commands produce output or files that is useful for the _user_ but not used by _VyOS itself_. Generating commands for VPN client configurations, set-commands for importing SSH keys, tech support report files, and other things fall in this category.
Old generate and force top-level words will have the following meanings:
- generate is for commands that produce data/files used by VyOS itself, such a cryprographic keys. The distinction is that such files aren't safe to remove by default, while files created by produce commands are safe to treat as temporary.
- force commands are for manually triggering events that normally happen automatically.
Please note that in 1.3 we will keep old commands but need to add deprecation warnings to them.
I suggest the following renames:
- generate public-key-command → produce public-key-command
- generate wireguard client-config → produce wireguard client-config
- generate tech-support archive → produce tech-support archive
- generate openvpn client-config → produce openvpn client-config
- force owping → execute owping
- force twping → execute twping
force root-partition-auto-resize command may stay under force because it also happend automatically on reboot (correct me if it doesn't in 1.3).
There are also commands that now have their own top-level words but arguably shouldn't. For example, we may want to do these renames:
- release dhcp[v6] → force release dhcp[v6] (or force dhcpv[v6] release)
- renew dhcp[v6] → force renew dhcp[v6] (or force dhcp[v6] renew).
- connect/disconnect interface → force disconnect interface <type> <intf> (right now it only works for PPPoE clients, AFAIR).
- telnet` → execute telnet
- wake-on-lan → execute wake-on-lan.