summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuriy Andamasov <yuriy@vyos.io>2026-05-10 18:14:13 +0300
committerGitHub <noreply@github.com>2026-05-10 18:14:13 +0300
commit644c8b8a143402326fee572ae284321073921d7c (patch)
tree25cd211c610f165f75e1da1040d7cd758b56f8e5
parentd7e63e1923814a791dadf93453e8c090d26ca896 (diff)
parent3a544f6f73dadb0e50f32a4c73e7efa3772b4f49 (diff)
downloadvyos-documentation-644c8b8a143402326fee572ae284321073921d7c.tar.gz
vyos-documentation-644c8b8a143402326fee572ae284321073921d7c.zip
Merge pull request #1940 from vyos/yuriy/remove-rst-swap-mechanism
chore: remove RST swap mechanism, archive rst-*.rst under docs/_rst_legacy/
-rw-r--r--.readthedocs.yml5
-rw-r--r--AGENTS.md49
-rw-r--r--README.md127
-rw-r--r--context7.json3
-rw-r--r--docs/Makefile32
-rw-r--r--docs/_rst_legacy/automation/rst-command-scripting.rst (renamed from docs/automation/rst-command-scripting.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-index.rst (renamed from docs/automation/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-ansible.rst (renamed from docs/automation/rst-vyos-ansible.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-api.rst (renamed from docs/automation/rst-vyos-api.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-govyos.rst (renamed from docs/automation/rst-vyos-govyos.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-napalm.rst (renamed from docs/automation/rst-vyos-napalm.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-netmiko.rst (renamed from docs/automation/rst-vyos-netmiko.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-pyvyos.rst (renamed from docs/automation/rst-vyos-pyvyos.rst)0
-rw-r--r--docs/_rst_legacy/automation/rst-vyos-salt.rst (renamed from docs/automation/rst-vyos-salt.rst)0
-rw-r--r--docs/_rst_legacy/automation/terraform/rst-index.rst (renamed from docs/automation/terraform/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/automation/terraform/rst-terraformAWS.rst (renamed from docs/automation/terraform/rst-terraformAWS.rst)0
-rw-r--r--docs/_rst_legacy/automation/terraform/rst-terraformAZ.rst (renamed from docs/automation/terraform/rst-terraformAZ.rst)0
-rw-r--r--docs/_rst_legacy/automation/terraform/rst-terraformGoogle.rst (renamed from docs/automation/terraform/rst-terraformGoogle.rst)0
-rw-r--r--docs/_rst_legacy/automation/terraform/rst-terraformvSphere.rst (renamed from docs/automation/terraform/rst-terraformvSphere.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst (renamed from docs/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst (renamed from docs/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst (renamed from docs/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/autotest/Wireguard/rst-Wireguard.rst (renamed from docs/configexamples/autotest/Wireguard/rst-Wireguard.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst (renamed from docs/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ansible.rst (renamed from docs/configexamples/rst-ansible.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-azure-vpn-bgp.rst (renamed from docs/configexamples/rst-azure-vpn-bgp.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-azure-vpn-dual-bgp.rst (renamed from docs/configexamples/rst-azure-vpn-dual-bgp.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-bgp-ipv6-unnumbered.rst (renamed from docs/configexamples/rst-bgp-ipv6-unnumbered.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-dmvpn-dualhub-dualcloud.rst (renamed from docs/configexamples/rst-dmvpn-dualhub-dualcloud.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-firewall.rst (renamed from docs/configexamples/rst-firewall.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-fwall-and-bridge.rst (renamed from docs/configexamples/rst-fwall-and-bridge.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-fwall-and-vrf.rst (renamed from docs/configexamples/rst-fwall-and-vrf.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ha.rst (renamed from docs/configexamples/rst-ha.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-index.rst (renamed from docs/configexamples/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-inter-vrf-routing-vrf-lite.rst (renamed from docs/configexamples/rst-inter-vrf-routing-vrf-lite.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ipsec-cisco-policy-based.rst (renamed from docs/configexamples/rst-ipsec-cisco-policy-based.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ipsec-cisco-route-based.rst (renamed from docs/configexamples/rst-ipsec-cisco-route-based.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ipsec-pa-route-based.rst (renamed from docs/configexamples/rst-ipsec-pa-route-based.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-l3vpn-hub-and-spoke.rst (renamed from docs/configexamples/rst-l3vpn-hub-and-spoke.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-lac-lns.rst (renamed from docs/configexamples/rst-lac-lns.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-nmp.rst (renamed from docs/configexamples/rst-nmp.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-ospf-unnumbered.rst (renamed from docs/configexamples/rst-ospf-unnumbered.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-policy-based-ipsec-and-firewall.rst (renamed from docs/configexamples/rst-policy-based-ipsec-and-firewall.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-pppoe-ipv6-basic.rst (renamed from docs/configexamples/rst-pppoe-ipv6-basic.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-qos.rst (renamed from docs/configexamples/rst-qos.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-segment-routing-isis.rst (renamed from docs/configexamples/rst-segment-routing-isis.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-site-2-site-cisco.rst (renamed from docs/configexamples/rst-site-2-site-cisco.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-wan-load-balancing.rst (renamed from docs/configexamples/rst-wan-load-balancing.rst)0
-rw-r--r--docs/_rst_legacy/configexamples/rst-zone-policy.rst (renamed from docs/configexamples/rst-zone-policy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/container/rst-index.rst (renamed from docs/configuration/container/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-bridge.rst (renamed from docs/configuration/firewall/rst-bridge.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-flowtables.rst (renamed from docs/configuration/firewall/rst-flowtables.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-global-options.rst (renamed from docs/configuration/firewall/rst-global-options.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-groups.rst (renamed from docs/configuration/firewall/rst-groups.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-index.rst (renamed from docs/configuration/firewall/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-ipv4.rst (renamed from docs/configuration/firewall/rst-ipv4.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-ipv6.rst (renamed from docs/configuration/firewall/rst-ipv6.rst)0
-rw-r--r--docs/_rst_legacy/configuration/firewall/rst-zone.rst (renamed from docs/configuration/firewall/rst-zone.rst)0
-rw-r--r--docs/_rst_legacy/configuration/highavailability/rst-index.rst (renamed from docs/configuration/highavailability/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-bonding.rst (renamed from docs/configuration/interfaces/rst-bonding.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-bridge.rst (renamed from docs/configuration/interfaces/rst-bridge.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-dummy.rst (renamed from docs/configuration/interfaces/rst-dummy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-ethernet.rst (renamed from docs/configuration/interfaces/rst-ethernet.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-geneve.rst (renamed from docs/configuration/interfaces/rst-geneve.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-index.rst (renamed from docs/configuration/interfaces/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-l2tpv3.rst (renamed from docs/configuration/interfaces/rst-l2tpv3.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-loopback.rst (renamed from docs/configuration/interfaces/rst-loopback.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-macsec.rst (renamed from docs/configuration/interfaces/rst-macsec.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-openvpn-examples.rst (renamed from docs/configuration/interfaces/rst-openvpn-examples.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-openvpn.rst (renamed from docs/configuration/interfaces/rst-openvpn.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-pppoe.rst (renamed from docs/configuration/interfaces/rst-pppoe.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-pseudo-ethernet.rst (renamed from docs/configuration/interfaces/rst-pseudo-ethernet.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-sstp-client.rst (renamed from docs/configuration/interfaces/rst-sstp-client.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-tunnel.rst (renamed from docs/configuration/interfaces/rst-tunnel.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-virtual-ethernet.rst (renamed from docs/configuration/interfaces/rst-virtual-ethernet.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-vti.rst (renamed from docs/configuration/interfaces/rst-vti.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-vxlan.rst (renamed from docs/configuration/interfaces/rst-vxlan.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-wireguard.rst (renamed from docs/configuration/interfaces/rst-wireguard.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-wireless.rst (renamed from docs/configuration/interfaces/rst-wireless.rst)0
-rw-r--r--docs/_rst_legacy/configuration/interfaces/rst-wwan.rst (renamed from docs/configuration/interfaces/rst-wwan.rst)0
-rw-r--r--docs/_rst_legacy/configuration/loadbalancing/rst-haproxy.rst (renamed from docs/configuration/loadbalancing/rst-haproxy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/loadbalancing/rst-index.rst (renamed from docs/configuration/loadbalancing/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/loadbalancing/rst-wan.rst (renamed from docs/configuration/loadbalancing/rst-wan.rst)0
-rw-r--r--docs/_rst_legacy/configuration/nat/rst-cgnat.rst (renamed from docs/configuration/nat/rst-cgnat.rst)0
-rw-r--r--docs/_rst_legacy/configuration/nat/rst-index.rst (renamed from docs/configuration/nat/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/nat/rst-nat44.rst (renamed from docs/configuration/nat/rst-nat44.rst)0
-rw-r--r--docs/_rst_legacy/configuration/nat/rst-nat64.rst (renamed from docs/configuration/nat/rst-nat64.rst)0
-rw-r--r--docs/_rst_legacy/configuration/nat/rst-nat66.rst (renamed from docs/configuration/nat/rst-nat66.rst)0
-rw-r--r--docs/_rst_legacy/configuration/pki/rst-index.rst (renamed from docs/configuration/pki/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-access-list.rst (renamed from docs/configuration/policy/rst-access-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-as-path-list.rst (renamed from docs/configuration/policy/rst-as-path-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-community-list.rst (renamed from docs/configuration/policy/rst-community-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-examples.rst (renamed from docs/configuration/policy/rst-examples.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-extcommunity-list.rst (renamed from docs/configuration/policy/rst-extcommunity-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-index.rst (renamed from docs/configuration/policy/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-large-community-list.rst (renamed from docs/configuration/policy/rst-large-community-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-local-route.rst (renamed from docs/configuration/policy/rst-local-route.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-prefix-list.rst (renamed from docs/configuration/policy/rst-prefix-list.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-route-map.rst (renamed from docs/configuration/policy/rst-route-map.rst)0
-rw-r--r--docs/_rst_legacy/configuration/policy/rst-route.rst (renamed from docs/configuration/policy/rst-route.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-arp.rst (renamed from docs/configuration/protocols/rst-arp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-babel.rst (renamed from docs/configuration/protocols/rst-babel.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-bfd.rst (renamed from docs/configuration/protocols/rst-bfd.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-bgp.rst (renamed from docs/configuration/protocols/rst-bgp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-failover.rst (renamed from docs/configuration/protocols/rst-failover.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-igmp-proxy.rst (renamed from docs/configuration/protocols/rst-igmp-proxy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-index.rst (renamed from docs/configuration/protocols/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-isis.rst (renamed from docs/configuration/protocols/rst-isis.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-mpls.rst (renamed from docs/configuration/protocols/rst-mpls.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-multicast.rst (renamed from docs/configuration/protocols/rst-multicast.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-openfabric.rst (renamed from docs/configuration/protocols/rst-openfabric.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-ospf.rst (renamed from docs/configuration/protocols/rst-ospf.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-pim.rst (renamed from docs/configuration/protocols/rst-pim.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-pim6.rst (renamed from docs/configuration/protocols/rst-pim6.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-rip.rst (renamed from docs/configuration/protocols/rst-rip.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-rpki.rst (renamed from docs/configuration/protocols/rst-rpki.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-segment-routing.rst (renamed from docs/configuration/protocols/rst-segment-routing.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-static.rst (renamed from docs/configuration/protocols/rst-static.rst)0
-rw-r--r--docs/_rst_legacy/configuration/protocols/rst-traffic-engineering.rst (renamed from docs/configuration/protocols/rst-traffic-engineering.rst)0
-rw-r--r--docs/_rst_legacy/configuration/rst-index.rst (renamed from docs/configuration/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-broadcast-relay.rst (renamed from docs/configuration/service/rst-broadcast-relay.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-config-sync.rst (renamed from docs/configuration/service/rst-config-sync.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-conntrack-sync.rst (renamed from docs/configuration/service/rst-conntrack-sync.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-console-server.rst (renamed from docs/configuration/service/rst-console-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-dhcp-relay.rst (renamed from docs/configuration/service/rst-dhcp-relay.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-dhcp-server.rst (renamed from docs/configuration/service/rst-dhcp-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-dns.rst (renamed from docs/configuration/service/rst-dns.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-eventhandler.rst (renamed from docs/configuration/service/rst-eventhandler.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-https.rst (renamed from docs/configuration/service/rst-https.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-index.rst (renamed from docs/configuration/service/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-ipoe-server.rst (renamed from docs/configuration/service/rst-ipoe-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-lldp.rst (renamed from docs/configuration/service/rst-lldp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-mdns.rst (renamed from docs/configuration/service/rst-mdns.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-monitoring.rst (renamed from docs/configuration/service/rst-monitoring.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-ntp.rst (renamed from docs/configuration/service/rst-ntp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-pppoe-server.rst (renamed from docs/configuration/service/rst-pppoe-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-router-advert.rst (renamed from docs/configuration/service/rst-router-advert.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-salt-minion.rst (renamed from docs/configuration/service/rst-salt-minion.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-snmp.rst (renamed from docs/configuration/service/rst-snmp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-ssh.rst (renamed from docs/configuration/service/rst-ssh.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-suricata.rst (renamed from docs/configuration/service/rst-suricata.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-tftp-server.rst (renamed from docs/configuration/service/rst-tftp-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/service/rst-webproxy.rst (renamed from docs/configuration/service/rst-webproxy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-acceleration.rst (renamed from docs/configuration/system/rst-acceleration.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-conntrack.rst (renamed from docs/configuration/system/rst-conntrack.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-console.rst (renamed from docs/configuration/system/rst-console.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-default-route.rst (renamed from docs/configuration/system/rst-default-route.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-flow-accounting.rst (renamed from docs/configuration/system/rst-flow-accounting.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-frr.rst (renamed from docs/configuration/system/rst-frr.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-host-name.rst (renamed from docs/configuration/system/rst-host-name.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-index.rst (renamed from docs/configuration/system/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-ip.rst (renamed from docs/configuration/system/rst-ip.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-ipv6.rst (renamed from docs/configuration/system/rst-ipv6.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-lcd.rst (renamed from docs/configuration/system/rst-lcd.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-login.rst (renamed from docs/configuration/system/rst-login.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-name-server.rst (renamed from docs/configuration/system/rst-name-server.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-option.rst (renamed from docs/configuration/system/rst-option.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-proxy.rst (renamed from docs/configuration/system/rst-proxy.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-sflow.rst (renamed from docs/configuration/system/rst-sflow.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-sysctl.rst (renamed from docs/configuration/system/rst-sysctl.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-syslog.rst (renamed from docs/configuration/system/rst-syslog.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-task-scheduler.rst (renamed from docs/configuration/system/rst-task-scheduler.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-time-zone.rst (renamed from docs/configuration/system/rst-time-zone.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-updates.rst (renamed from docs/configuration/system/rst-updates.rst)0
-rw-r--r--docs/_rst_legacy/configuration/system/rst-watchdog.rst (renamed from docs/configuration/system/rst-watchdog.rst)0
-rw-r--r--docs/_rst_legacy/configuration/trafficpolicy/rst-index.rst (renamed from docs/configuration/trafficpolicy/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/ipsec/rst-index.rst (renamed from docs/configuration/vpn/ipsec/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/ipsec/rst-ipsec_general.rst (renamed from docs/configuration/vpn/ipsec/rst-ipsec_general.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst (renamed from docs/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/ipsec/rst-site2site_ipsec.rst (renamed from docs/configuration/vpn/ipsec/rst-site2site_ipsec.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst (renamed from docs/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-dmvpn.rst (renamed from docs/configuration/vpn/rst-dmvpn.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-index.rst (renamed from docs/configuration/vpn/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-l2tp.rst (renamed from docs/configuration/vpn/rst-l2tp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-openconnect.rst (renamed from docs/configuration/vpn/rst-openconnect.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-pptp.rst (renamed from docs/configuration/vpn/rst-pptp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-rsa-keys.rst (renamed from docs/configuration/vpn/rst-rsa-keys.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vpn/rst-sstp.rst (renamed from docs/configuration/vpn/rst-sstp.rst)0
-rw-r--r--docs/_rst_legacy/configuration/vrf/rst-index.rst (renamed from docs/configuration/vrf/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-build-vyos.rst (renamed from docs/contributing/rst-build-vyos.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-cla.rst (renamed from docs/contributing/rst-cla.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-debugging.rst (renamed from docs/contributing/rst-debugging.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-development.rst (renamed from docs/contributing/rst-development.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-index.rst (renamed from docs/contributing/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-issues-features.rst (renamed from docs/contributing/rst-issues-features.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-testing.rst (renamed from docs/contributing/rst-testing.rst)0
-rw-r--r--docs/_rst_legacy/contributing/rst-upstream-packages.rst (renamed from docs/contributing/rst-upstream-packages.rst)0
-rw-r--r--docs/_rst_legacy/installation/cloud/rst-aws.rst (renamed from docs/installation/cloud/rst-aws.rst)0
-rw-r--r--docs/_rst_legacy/installation/cloud/rst-azure.rst (renamed from docs/installation/cloud/rst-azure.rst)0
-rw-r--r--docs/_rst_legacy/installation/cloud/rst-gcp.rst (renamed from docs/installation/cloud/rst-gcp.rst)0
-rw-r--r--docs/_rst_legacy/installation/cloud/rst-index.rst (renamed from docs/installation/cloud/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/installation/cloud/rst-oracle.rst (renamed from docs/installation/cloud/rst-oracle.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-bare-metal.rst (renamed from docs/installation/rst-bare-metal.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-image.rst (renamed from docs/installation/rst-image.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-index.rst (renamed from docs/installation/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-install.rst (renamed from docs/installation/rst-install.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-secure-boot.rst (renamed from docs/installation/rst-secure-boot.rst)0
-rw-r--r--docs/_rst_legacy/installation/rst-update.rst (renamed from docs/installation/rst-update.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-docker.rst (renamed from docs/installation/virtual/rst-docker.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-eve-ng.rst (renamed from docs/installation/virtual/rst-eve-ng.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-gns3.rst (renamed from docs/installation/virtual/rst-gns3.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-index.rst (renamed from docs/installation/virtual/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-libvirt.rst (renamed from docs/installation/virtual/rst-libvirt.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-proxmox.rst (renamed from docs/installation/virtual/rst-proxmox.rst)0
-rw-r--r--docs/_rst_legacy/installation/virtual/rst-vmware.rst (renamed from docs/installation/virtual/rst-vmware.rst)0
-rw-r--r--docs/_rst_legacy/introducing/rst-about.rst (renamed from docs/introducing/rst-about.rst)0
-rw-r--r--docs/_rst_legacy/introducing/rst-history.rst (renamed from docs/introducing/rst-history.rst)0
-rw-r--r--docs/_rst_legacy/operation/rst-boot-options.rst (renamed from docs/operation/rst-boot-options.rst)0
-rw-r--r--docs/_rst_legacy/operation/rst-index.rst (renamed from docs/operation/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/operation/rst-information.rst (renamed from docs/operation/rst-information.rst)0
-rwxr-xr-xdocs/_rst_legacy/operation/rst-password-recovery.rst (renamed from docs/operation/rst-password-recovery.rst)0
-rw-r--r--docs/_rst_legacy/operation/rst-raid.rst (renamed from docs/operation/rst-raid.rst)0
-rw-r--r--docs/_rst_legacy/operation/rst-upgrade-recovery.rst (renamed from docs/operation/rst-upgrade-recovery.rst)0
-rw-r--r--docs/_rst_legacy/rst-404.rst (renamed from docs/rst-404.rst)0
-rw-r--r--docs/_rst_legacy/rst-cli.rst (renamed from docs/rst-cli.rst)0
-rw-r--r--docs/_rst_legacy/rst-coverage.rst (renamed from docs/rst-coverage.rst)0
-rw-r--r--docs/_rst_legacy/rst-documentation.rst (renamed from docs/rst-documentation.rst)0
-rw-r--r--docs/_rst_legacy/rst-index.rst (renamed from docs/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/rst-quick-start.rst (renamed from docs/rst-quick-start.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-connectivity.rst (renamed from docs/troubleshooting/rst-connectivity.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-index.rst (renamed from docs/troubleshooting/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-interfaces.rst (renamed from docs/troubleshooting/rst-interfaces.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-monitoring.rst (renamed from docs/troubleshooting/rst-monitoring.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-system.rst (renamed from docs/troubleshooting/rst-system.rst)0
-rw-r--r--docs/_rst_legacy/troubleshooting/rst-terminal.rst (renamed from docs/troubleshooting/rst-terminal.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-buffers.rst (renamed from docs/vpp/configuration/dataplane/rst-buffers.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-cpu.rst (renamed from docs/vpp/configuration/dataplane/rst-cpu.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-index.rst (renamed from docs/vpp/configuration/dataplane/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-interface.rst (renamed from docs/vpp/configuration/dataplane/rst-interface.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-ipsec.rst (renamed from docs/vpp/configuration/dataplane/rst-ipsec.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-ipv6.rst (renamed from docs/vpp/configuration/dataplane/rst-ipv6.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-l2learn.rst (renamed from docs/vpp/configuration/dataplane/rst-l2learn.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-lcp.rst (renamed from docs/vpp/configuration/dataplane/rst-lcp.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-logging.rst (renamed from docs/vpp/configuration/dataplane/rst-logging.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-memory.rst (renamed from docs/vpp/configuration/dataplane/rst-memory.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-system.rst (renamed from docs/vpp/configuration/dataplane/rst-system.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/dataplane/rst-unix.rst (renamed from docs/vpp/configuration/dataplane/rst-unix.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-bonding.rst (renamed from docs/vpp/configuration/interfaces/rst-bonding.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-bridge.rst (renamed from docs/vpp/configuration/interfaces/rst-bridge.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-gre.rst (renamed from docs/vpp/configuration/interfaces/rst-gre.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-index.rst (renamed from docs/vpp/configuration/interfaces/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-ipip.rst (renamed from docs/vpp/configuration/interfaces/rst-ipip.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-loopback.rst (renamed from docs/vpp/configuration/interfaces/rst-loopback.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-vxlan.rst (renamed from docs/vpp/configuration/interfaces/rst-vxlan.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/interfaces/rst-xconnect.rst (renamed from docs/vpp/configuration/interfaces/rst-xconnect.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/nat/rst-cgnat.rst (renamed from docs/vpp/configuration/nat/rst-cgnat.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/nat/rst-index.rst (renamed from docs/vpp/configuration/nat/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/nat/rst-nat44.rst (renamed from docs/vpp/configuration/nat/rst-nat44.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/rst-acl.rst (renamed from docs/vpp/configuration/rst-acl.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/rst-index.rst (renamed from docs/vpp/configuration/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/rst-ipfix.rst (renamed from docs/vpp/configuration/rst-ipfix.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/rst-ipsec.rst (renamed from docs/vpp/configuration/rst-ipsec.rst)0
-rw-r--r--docs/_rst_legacy/vpp/configuration/rst-sflow.rst (renamed from docs/vpp/configuration/rst-sflow.rst)0
-rw-r--r--docs/_rst_legacy/vpp/rst-description.rst (renamed from docs/vpp/rst-description.rst)0
-rw-r--r--docs/_rst_legacy/vpp/rst-index.rst (renamed from docs/vpp/rst-index.rst)0
-rw-r--r--docs/_rst_legacy/vpp/rst-limitations.rst (renamed from docs/vpp/rst-limitations.rst)0
-rw-r--r--docs/_rst_legacy/vpp/rst-requirements.rst (renamed from docs/vpp/rst-requirements.rst)0
-rw-r--r--docs/_rst_legacy/vpp/rst-troubleshooting.rst (renamed from docs/vpp/rst-troubleshooting.rst)0
-rw-r--r--docs/_rst_overrides.txt7
-rw-r--r--docs/conf.py10
-rw-r--r--scripts/swap_sources.py344
-rw-r--r--tests/test_swap_sources.py245
262 files changed, 68 insertions, 754 deletions
diff --git a/.readthedocs.yml b/.readthedocs.yml
index 6539873e..f0ea8c49 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -8,11 +8,6 @@ build:
os: ubuntu-22.04
tools:
python: "3.10"
- jobs:
- pre_build:
- - python3 scripts/swap_sources.py --swap
- post_build:
- - python3 scripts/swap_sources.py --restore
# Build documentation in the docs/ directory with Sphinx
sphinx:
diff --git a/AGENTS.md b/AGENTS.md
index cd7062b8..2d2b128d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -4,9 +4,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project
-VyOS user documentation, built with Sphinx and hosted on Read the Docs at https://docs.vyos.io. Sources are MyST Markdown (`.md`) for migrated pages and RST (`.rst`) for the rest. Both formats are first-class to Sphinx; MD is the canonical source for any page that has been migrated, and RST is the canonical source for pages that haven't.
+VyOS user documentation, built with Sphinx and hosted on Read the Docs at https://docs.vyos.io. Sources are MyST Markdown (`.md`) for migrated pages and RST (`.rst`) for pages that haven't been migrated yet. Both formats are first-class to Sphinx.
-A small swap mechanism exists for the rare case where a maintainer needs to render the legacy RST version of a page that already has an MD primary — see `RST override mechanism` below. The override list is empty by default.
+Pre-migration RST shadows of migrated pages are archived under `docs/_rst_legacy/` for reference only — they are excluded from the build and not consulted by Sphinx.
## Build
@@ -29,17 +29,6 @@ cd docs && make html
Output: `docs/_build/html/`.
-## Tests
-
-`tests/test_swap_sources.py` imports `swap_sources` from `scripts/`, which is
-not on `PYTHONPATH` by default. Run from the `tests/` directory:
-
-```bash
-cd tests
-PYTHONPATH=../scripts python -m pytest # all tests
-PYTHONPATH=../scripts python -m pytest test_swap_sources.py # single file
-```
-
## Lint
The repo doesn't ship a local lint config or pin a linter binary. CI runs
@@ -55,13 +44,13 @@ One long-lived branch per VyOS release line. Branch names are constellations sor
| Branch | VyOS version |
|--------|--------------|
-| `current` | rolling / 1.5+ (default branch — all new docs target this) |
+| `rolling` | rolling / 1.5+ (default branch — all new docs target this) |
| `circinus` | 1.5.x |
| `sagitta` | 1.4.x |
| `equuleus` | 1.3.x (legacy) |
| `crux` | 1.2.x (legacy) |
-PRs target `current`. After merge, request backports via a **post-merge comment** on the PR:
+PRs target `rolling`. After merge, request backports via a **post-merge comment** on the PR:
```text
@Mergifyio backport circinus
@@ -84,35 +73,17 @@ Mergify is configured at the org level (no `.mergify.yml` in the repo). The PR t
- `testcoverage.py` — standalone helper that reads VyOS XML command definitions and exposes coverage stats; not a Sphinx extension.
- `releasenotes.py` — standalone release-notes/changelog generator script; not a Sphinx extension.
-### RST override mechanism
+### Source files
-For pages that have been migrated from RST to MyST:
-
-- `docs/<subdir>/<page>.md` — canonical MD source (primary).
-- `docs/<subdir>/rst-<page>.rst` — preserved RST sibling kept around as an override
- option. The `rst-` prefix applies only to the **filename**, not the directory, so
- `configuration/firewall/zone` maps to `docs/configuration/firewall/rst-zone.rst`
- (not `docs/rst-configuration/firewall/zone.rst`). Excluded from the build by
- `exclude_patterns` in `conf.py`.
-- `docs/_rst_overrides.txt` — one stem per line, relative to `docs/` (e.g.
- `configuration/firewall/zone`). Pages listed here render from
- `rst-<page>.rst` instead of `<page>.md`. Empty by default.
-- `scripts/swap_sources.py` — CLI for `--swap` (apply overrides), `--restore`,
- `--dry-run`, `--status`. Build-time state lands in
- `docs/_build/_rst_override_state.json` and `docs/_build/_md_exclude.txt`
- (gitignored).
-
-For pages that have NOT been migrated:
-
-- `docs/<page>.rst` — original RST, no `rst-` prefix, no MD sibling.
+- `docs/<subdir>/<page>.md` — canonical MD source for migrated pages.
+- `docs/<page>.rst` — canonical RST source for pages that have not been migrated yet (no `rst-` prefix, no MD sibling).
+- `docs/_rst_legacy/<subdir>/rst-<page>.rst` — archived pre-migration RST shadows. Excluded from the Sphinx build and from the Context7 index. Reference only.
**Editing rules:**
-- Migrated page (has `<page>.md`): edit the `.md`. Don't touch the `rst-`-prefixed sibling unless you're maintaining a parallel RST version that someone has flagged in `_rst_overrides.txt`.
+- Migrated page (has `<page>.md`): edit the `.md`. Do not touch the archived shadow under `_rst_legacy/`.
- Non-migrated page (RST-only): edit the `.rst`.
- New page: write it as `.md` from the start. The `md-` prefix that earlier MyST migration commits used is gone — never add it.
-Running `make html` runs the swap automatically (it's a no-op when the override list is empty, which is the default state).
-
### Command directives
`.. cfgcmd::`, `.. opcmd::`, and `.. cmdinclude::` are the VyOS-specific Sphinx directives in RST. They are tracked for command coverage — do **not** convert them to plain `.. code-block::`. In MyST the same directives are written as fenced blocks: ```` ```{cfgcmd} set system ... ```` (enabled by `myst_fence_as_directive`). The MyST include directive is named `cmdincludemd` (not `cmdinclude`) so that template parsing follows MyST rules in MD pages and RST rules in RST pages — pick `cmdinclude` in `.rst`, `cmdincludemd` in `.md`.
@@ -220,7 +191,7 @@ table.
| Slug | Verbose | Branch | Role |
|---|---|---|---|
-| `rolling` | current | `current` | canonical for rolling/next major |
+| `rolling` | rolling | `rolling` | canonical for rolling/next major |
| `1.5` | circinus | `circinus` | canonical for current LTS |
| `1.4` | sagitta | `sagitta` | canonical for previous LTS |
| `1.3`, `1.2` | equuleus, crux | older | canonical for older releases |
diff --git a/README.md b/README.md
index 8f8bb674..290c6ce1 100644
--- a/README.md
+++ b/README.md
@@ -1,104 +1,65 @@
-Starting with VyOS 1.2 (`crux`) our documentation is hosted on ReadTheDocs at https://docs.vyos.io
+# VyOS Documentation
-Our old wiki with documentation from the VyOS 1.1.x and early 1.2.0 era can still be accessed via the
-[Wayback Machine](https://web.archive.org/web/20200225171529/https://wiki.vyos.net/wiki/Main_Page)
+Source for the VyOS user documentation hosted on Read the Docs at
+https://docs.vyos.io.
-# Build
+[![Documentation Status](https://readthedocs.org/projects/vyos/badge/?version=rolling)](https://docs.vyos.io/en/rolling/?badge=rolling)
-[![Documentation Status](https://readthedocs.org/projects/vyos/badge/?version=latest)](https://docs.vyos.io/en/latest/?badge=latest)
+The earlier wiki for VyOS 1.1.x and pre-1.2.0 docs is preserved on the
+[Wayback Machine](https://web.archive.org/web/20200225171529/https://wiki.vyos.net/wiki/Main_Page).
-# Versions
+## Branches
-Our documentation repository follows the same branching scheme as the VyOS source itself.
-We maintain one documentation branch per VyOS release.
-The default branch that contains the most recent VyOS documentation is called `rolling`
-(renamed from `current` on 2026-05-10) and matches the latest VyOS rolling release.
+The documentation repository tracks the same branch convention as the VyOS
+source itself — one long-lived branch per release line, named after a
+constellation:
-All new documentation enhancements go to the `rolling` branch. If those changes
-are beneficial for previous VyOS documentation versions they will be
-cherry-picked to the appropriate branch(es).
+| Branch | VyOS version | Role |
+|--------|--------------|------|
+| `rolling` | 1.5+ rolling | Default branch — all new contributions target this. |
+| `circinus` | 1.5.x | LTS docs. |
+| `sagitta` | 1.4.x | Previous LTS docs. |
+| `equuleus` | 1.3.x | Legacy. |
+| `crux` | 1.2.x | Legacy. |
-VyOS branches are named after constellations sorted by area from smallest to largest.
-There are 88 of them, here's the
-[complete list](https://en.wikipedia.org/wiki/IAU_designated_constellations_by_area).
+New work lands on `rolling` first; backports to `circinus` and `sagitta` are
+requested per-PR via Mergify. See [AGENTS.md](AGENTS.md) for the full
+contributor guide.
-The branches we have had so far:
+## Build
-* 1.5.x: `circinus` (Compasses)
-* 1.4.x: `sagitta` (Arrow)
-* 1.3.x: `equuleus` (Little Horse)
-* 1.2.x: `crux` (Southern Cross)
+The recommended build path is the bundled Docker image — it pins Sphinx and
+the MyST/RTD plugin set to the same versions Read the Docs uses, so local
+builds match production.
-### Sphinx
-Debian requires some extra steps for
-installing `sphinx`, `sphinx-autobuild`, `sphinx-notfound-page`, `sphinx-panels`,
-`sphinx-rtd-theme`, `lxml`, and `myst-parser` packages:
-
-First ensure that Python 2 & Python 3 are installed and Python 3 is the default:
```bash
-python --version
-```
+docker build -t vyos/vyos-documentation docker
-Alternatively, to make Python the default, revise the following line to
-point at the relevant 3.x version of the binary on your system:
+# One-shot HTML build
+docker run --rm -it -v "$(pwd)":/vyos -w /vyos/docs \
+ -e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) \
+ vyos/vyos-documentation make html
-```bash
-sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 0
+# Live-reload server on port 8000
+docker run --rm -it -p 8000:8000 -v "$(pwd)":/vyos -w /vyos/docs \
+ -e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) \
+ vyos/vyos-documentation make livehtml
```
-Then install the sphinx group of packages:
-```bash
-sudo apt-get install python3-sphinx
-```
-
-Although almost everything uses Python 3, in order to install this specific
-package, make sure that pip points at the Python 2 version of the package manager:
+For a Python-only build (no Docker), use a virtualenv with the pinned
+versions in `requirements.txt`:
```bash
-python --version
+python3 -m venv .venv
+source .venv/bin/activate
+pip install -r requirements.txt
+cd docs && make html
```
-Then run:
-
-```bash
-sudo pip install sphinx-autobuild sphinx-notfound-page sphinx-panels sphinx-rtd-theme lxml myst-parser
-```
-
-Do the following to build the HTML and start a web server:
-* Run `make livehtml` inside the `docs` folder
-
-Then, to view the live output:
-* Browse to http://localhost:8000
-Note: The changes you save to the sources are represented in the live HTML output
-automatically (and almost instantly) without the need to rebuild or refresh manually.
-
-## Docker
-
-Using our [Dockerfile](docker/Dockerfile) you can create your own Docker container
-that is used to build a VyOS documentation.
+Output lands in `docs/_build/html/`.
-## Setup
-
-You can either build the container on your own or directly fetch it prebuilt
-from Dockerhub. If you want to build it for yourself, use the following command.
-
-```bash
-$ docker build -t vyos/vyos-documentation docker
-```
-
-### Building documentation
-
-If the `vyos/vyos-documentation` container could not be found locally it will be
-automatically fetched from Dockerhub.
-
-```bash
-$ git clone https://github.com/vyos/vyos-documentation.git
-
-$ cd vyos-documentation
-
-$ docker run --rm -it -v "$(pwd)":/vyos -w /vyos/docs -e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) vyos/vyos-documentation make html
-
-# For sphinx autobuild
-$ docker run --rm -it -p 8000:8000 -v "$(pwd)":/vyos -w /vyos/docs -e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) vyos/vyos-documentation make livehtml
-```
+## Contributing
+See [AGENTS.md](AGENTS.md) for the full contributor guide — source format
+conventions (MyST Markdown for migrated pages, RST for the rest), CLI
+directive syntax, IP-address rules, the linter, and the bot review workflow.
diff --git a/context7.json b/context7.json
index 62d04b59..f2bff61c 100644
--- a/context7.json
+++ b/context7.json
@@ -10,6 +10,7 @@
"docs/_static",
"docs/_templates",
"docs/_ext",
+ "docs/_rst_legacy",
"scripts",
"tests",
".github",
@@ -25,7 +26,7 @@
"Documentation sources are MyST Markdown (.md). Cite and link to the .md form.",
"VyOS has two CLI modes: configuration mode (`set ...`, `delete ...`, `commit`, `save`) and operational mode (`show ...`, `monitor ...`, `restart ...`). Do not mix them.",
"Configuration commands are wrapped in `cfgcmd` fenced blocks; operational commands in `opcmd` fenced blocks. Treat these as authoritative command syntax.",
- "Branch `current` tracks the rolling release and the next stable line (1.5+). Branch `circinus` tracks 1.5.x. Branch `sagitta` tracks 1.4.x. Always cite version-appropriate documentation.",
+ "Branch `rolling` tracks the rolling release and the next stable line. Branch `circinus` tracks 1.5.x. Branch `sagitta` tracks 1.4.x. Always cite version-appropriate documentation.",
"Do not invent CLI commands. If a command isn't in the docs, say so rather than guess — VyOS syntax is strict and unknown commands fail validation at commit time.",
"Use reserved documentation IP space in examples: 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 (RFC 5737), 2001:db8::/32 (RFC 3849). Never use real or RFC1918 addresses."
],
diff --git a/docs/Makefile b/docs/Makefile
index d27936c2..8e6a8a45 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -11,38 +11,26 @@ BUILDDIR = _build
AUTOHOST = 0.0.0.0
AUTOPORT = 8000
-SWAP = python3 ../scripts/swap_sources.py
-
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-.PHONY: help Makefile swap restore html dirhtml pdf livehtml defaultvalue
-
-swap:
- $(SWAP) --swap
-
-restore:
- $(SWAP) --restore
+.PHONY: help Makefile html dirhtml pdf livehtml defaultvalue
-html: swap
- @trap '$(SWAP) --restore' EXIT; \
- $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+html:
+ $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-dirhtml: swap
- @trap '$(SWAP) --restore' EXIT; \
- $(SPHINXBUILD) -M dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+dirhtml:
+ $(SPHINXBUILD) -M dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-pdf: swap
- @trap '$(SWAP) --restore' EXIT; \
- $(SPHINXBUILD) -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+pdf:
+ $(SPHINXBUILD) -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-livehtml: swap
- @trap '$(SWAP) --restore' EXIT; \
- sphinx-autobuild --host $(AUTOHOST) --port $(AUTOPORT) \
+livehtml:
+ sphinx-autobuild --host $(AUTOHOST) --port $(AUTOPORT) \
--ignore '$(BUILDDIR)/**' \
--ignore '**/_build/**' \
- --ignore '**/md-*' \
+ --ignore '**/_rst_legacy/**' \
"$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
defaultvalue: export VYOS_DEFAULT=True
diff --git a/docs/automation/rst-command-scripting.rst b/docs/_rst_legacy/automation/rst-command-scripting.rst
index 91086b42..91086b42 100644
--- a/docs/automation/rst-command-scripting.rst
+++ b/docs/_rst_legacy/automation/rst-command-scripting.rst
diff --git a/docs/automation/rst-index.rst b/docs/_rst_legacy/automation/rst-index.rst
index ce284ea7..ce284ea7 100644
--- a/docs/automation/rst-index.rst
+++ b/docs/_rst_legacy/automation/rst-index.rst
diff --git a/docs/automation/rst-vyos-ansible.rst b/docs/_rst_legacy/automation/rst-vyos-ansible.rst
index 12d4e9fb..12d4e9fb 100644
--- a/docs/automation/rst-vyos-ansible.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-ansible.rst
diff --git a/docs/automation/rst-vyos-api.rst b/docs/_rst_legacy/automation/rst-vyos-api.rst
index e96723e6..e96723e6 100644
--- a/docs/automation/rst-vyos-api.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-api.rst
diff --git a/docs/automation/rst-vyos-govyos.rst b/docs/_rst_legacy/automation/rst-vyos-govyos.rst
index 17e15b0e..17e15b0e 100644
--- a/docs/automation/rst-vyos-govyos.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-govyos.rst
diff --git a/docs/automation/rst-vyos-napalm.rst b/docs/_rst_legacy/automation/rst-vyos-napalm.rst
index f2f27124..f2f27124 100644
--- a/docs/automation/rst-vyos-napalm.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-napalm.rst
diff --git a/docs/automation/rst-vyos-netmiko.rst b/docs/_rst_legacy/automation/rst-vyos-netmiko.rst
index b94b0129..b94b0129 100644
--- a/docs/automation/rst-vyos-netmiko.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-netmiko.rst
diff --git a/docs/automation/rst-vyos-pyvyos.rst b/docs/_rst_legacy/automation/rst-vyos-pyvyos.rst
index cbd315e5..cbd315e5 100644
--- a/docs/automation/rst-vyos-pyvyos.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-pyvyos.rst
diff --git a/docs/automation/rst-vyos-salt.rst b/docs/_rst_legacy/automation/rst-vyos-salt.rst
index 3a5b17d7..3a5b17d7 100644
--- a/docs/automation/rst-vyos-salt.rst
+++ b/docs/_rst_legacy/automation/rst-vyos-salt.rst
diff --git a/docs/automation/terraform/rst-index.rst b/docs/_rst_legacy/automation/terraform/rst-index.rst
index f81820d2..f81820d2 100644
--- a/docs/automation/terraform/rst-index.rst
+++ b/docs/_rst_legacy/automation/terraform/rst-index.rst
diff --git a/docs/automation/terraform/rst-terraformAWS.rst b/docs/_rst_legacy/automation/terraform/rst-terraformAWS.rst
index 8156fac4..8156fac4 100644
--- a/docs/automation/terraform/rst-terraformAWS.rst
+++ b/docs/_rst_legacy/automation/terraform/rst-terraformAWS.rst
diff --git a/docs/automation/terraform/rst-terraformAZ.rst b/docs/_rst_legacy/automation/terraform/rst-terraformAZ.rst
index 9e094aea..9e094aea 100644
--- a/docs/automation/terraform/rst-terraformAZ.rst
+++ b/docs/_rst_legacy/automation/terraform/rst-terraformAZ.rst
diff --git a/docs/automation/terraform/rst-terraformGoogle.rst b/docs/_rst_legacy/automation/terraform/rst-terraformGoogle.rst
index eb7e01fe..eb7e01fe 100644
--- a/docs/automation/terraform/rst-terraformGoogle.rst
+++ b/docs/_rst_legacy/automation/terraform/rst-terraformGoogle.rst
diff --git a/docs/automation/terraform/rst-terraformvSphere.rst b/docs/_rst_legacy/automation/terraform/rst-terraformvSphere.rst
index 1866fa8e..1866fa8e 100644
--- a/docs/automation/terraform/rst-terraformvSphere.rst
+++ b/docs/_rst_legacy/automation/terraform/rst-terraformvSphere.rst
diff --git a/docs/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst b/docs/_rst_legacy/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst
index f2a98479..f2a98479 100644
--- a/docs/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst
+++ b/docs/_rst_legacy/configexamples/autotest/DHCPRelay_through_GRE/rst-DHCPRelay_through_GRE.rst
diff --git a/docs/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst b/docs/_rst_legacy/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst
index 6092199b..6092199b 100644
--- a/docs/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst
+++ b/docs/_rst_legacy/configexamples/autotest/L3VPN_EVPN/rst-L3VPN_EVPN.rst
diff --git a/docs/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst b/docs/_rst_legacy/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst
index acb880d1..acb880d1 100644
--- a/docs/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst
+++ b/docs/_rst_legacy/configexamples/autotest/OpenVPN_with_LDAP/rst-OpenVPN_with_LDAP.rst
diff --git a/docs/configexamples/autotest/Wireguard/rst-Wireguard.rst b/docs/_rst_legacy/configexamples/autotest/Wireguard/rst-Wireguard.rst
index 7d7b216a..7d7b216a 100644
--- a/docs/configexamples/autotest/Wireguard/rst-Wireguard.rst
+++ b/docs/_rst_legacy/configexamples/autotest/Wireguard/rst-Wireguard.rst
diff --git a/docs/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst b/docs/_rst_legacy/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst
index e34cb779..e34cb779 100644
--- a/docs/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst
+++ b/docs/_rst_legacy/configexamples/autotest/tunnelbroker/rst-tunnelbroker.rst
diff --git a/docs/configexamples/rst-ansible.rst b/docs/_rst_legacy/configexamples/rst-ansible.rst
index ee865076..ee865076 100644
--- a/docs/configexamples/rst-ansible.rst
+++ b/docs/_rst_legacy/configexamples/rst-ansible.rst
diff --git a/docs/configexamples/rst-azure-vpn-bgp.rst b/docs/_rst_legacy/configexamples/rst-azure-vpn-bgp.rst
index 597a4d15..597a4d15 100644
--- a/docs/configexamples/rst-azure-vpn-bgp.rst
+++ b/docs/_rst_legacy/configexamples/rst-azure-vpn-bgp.rst
diff --git a/docs/configexamples/rst-azure-vpn-dual-bgp.rst b/docs/_rst_legacy/configexamples/rst-azure-vpn-dual-bgp.rst
index 04a6a631..04a6a631 100644
--- a/docs/configexamples/rst-azure-vpn-dual-bgp.rst
+++ b/docs/_rst_legacy/configexamples/rst-azure-vpn-dual-bgp.rst
diff --git a/docs/configexamples/rst-bgp-ipv6-unnumbered.rst b/docs/_rst_legacy/configexamples/rst-bgp-ipv6-unnumbered.rst
index f7a530d8..f7a530d8 100644
--- a/docs/configexamples/rst-bgp-ipv6-unnumbered.rst
+++ b/docs/_rst_legacy/configexamples/rst-bgp-ipv6-unnumbered.rst
diff --git a/docs/configexamples/rst-dmvpn-dualhub-dualcloud.rst b/docs/_rst_legacy/configexamples/rst-dmvpn-dualhub-dualcloud.rst
index a3a4e619..a3a4e619 100644
--- a/docs/configexamples/rst-dmvpn-dualhub-dualcloud.rst
+++ b/docs/_rst_legacy/configexamples/rst-dmvpn-dualhub-dualcloud.rst
diff --git a/docs/configexamples/rst-firewall.rst b/docs/_rst_legacy/configexamples/rst-firewall.rst
index 6968eb04..6968eb04 100644
--- a/docs/configexamples/rst-firewall.rst
+++ b/docs/_rst_legacy/configexamples/rst-firewall.rst
diff --git a/docs/configexamples/rst-fwall-and-bridge.rst b/docs/_rst_legacy/configexamples/rst-fwall-and-bridge.rst
index 134dd6c0..134dd6c0 100644
--- a/docs/configexamples/rst-fwall-and-bridge.rst
+++ b/docs/_rst_legacy/configexamples/rst-fwall-and-bridge.rst
diff --git a/docs/configexamples/rst-fwall-and-vrf.rst b/docs/_rst_legacy/configexamples/rst-fwall-and-vrf.rst
index bd97e1ad..bd97e1ad 100644
--- a/docs/configexamples/rst-fwall-and-vrf.rst
+++ b/docs/_rst_legacy/configexamples/rst-fwall-and-vrf.rst
diff --git a/docs/configexamples/rst-ha.rst b/docs/_rst_legacy/configexamples/rst-ha.rst
index 2f7bd4a4..2f7bd4a4 100644
--- a/docs/configexamples/rst-ha.rst
+++ b/docs/_rst_legacy/configexamples/rst-ha.rst
diff --git a/docs/configexamples/rst-index.rst b/docs/_rst_legacy/configexamples/rst-index.rst
index b5985d7f..b5985d7f 100644
--- a/docs/configexamples/rst-index.rst
+++ b/docs/_rst_legacy/configexamples/rst-index.rst
diff --git a/docs/configexamples/rst-inter-vrf-routing-vrf-lite.rst b/docs/_rst_legacy/configexamples/rst-inter-vrf-routing-vrf-lite.rst
index 1f02da8e..1f02da8e 100644
--- a/docs/configexamples/rst-inter-vrf-routing-vrf-lite.rst
+++ b/docs/_rst_legacy/configexamples/rst-inter-vrf-routing-vrf-lite.rst
diff --git a/docs/configexamples/rst-ipsec-cisco-policy-based.rst b/docs/_rst_legacy/configexamples/rst-ipsec-cisco-policy-based.rst
index 257d98a1..257d98a1 100644
--- a/docs/configexamples/rst-ipsec-cisco-policy-based.rst
+++ b/docs/_rst_legacy/configexamples/rst-ipsec-cisco-policy-based.rst
diff --git a/docs/configexamples/rst-ipsec-cisco-route-based.rst b/docs/_rst_legacy/configexamples/rst-ipsec-cisco-route-based.rst
index 553c5e2a..553c5e2a 100644
--- a/docs/configexamples/rst-ipsec-cisco-route-based.rst
+++ b/docs/_rst_legacy/configexamples/rst-ipsec-cisco-route-based.rst
diff --git a/docs/configexamples/rst-ipsec-pa-route-based.rst b/docs/_rst_legacy/configexamples/rst-ipsec-pa-route-based.rst
index 96349d98..96349d98 100644
--- a/docs/configexamples/rst-ipsec-pa-route-based.rst
+++ b/docs/_rst_legacy/configexamples/rst-ipsec-pa-route-based.rst
diff --git a/docs/configexamples/rst-l3vpn-hub-and-spoke.rst b/docs/_rst_legacy/configexamples/rst-l3vpn-hub-and-spoke.rst
index 90a036d8..90a036d8 100644
--- a/docs/configexamples/rst-l3vpn-hub-and-spoke.rst
+++ b/docs/_rst_legacy/configexamples/rst-l3vpn-hub-and-spoke.rst
diff --git a/docs/configexamples/rst-lac-lns.rst b/docs/_rst_legacy/configexamples/rst-lac-lns.rst
index 5f344d54..5f344d54 100644
--- a/docs/configexamples/rst-lac-lns.rst
+++ b/docs/_rst_legacy/configexamples/rst-lac-lns.rst
diff --git a/docs/configexamples/rst-nmp.rst b/docs/_rst_legacy/configexamples/rst-nmp.rst
index 8945a9f4..8945a9f4 100644
--- a/docs/configexamples/rst-nmp.rst
+++ b/docs/_rst_legacy/configexamples/rst-nmp.rst
diff --git a/docs/configexamples/rst-ospf-unnumbered.rst b/docs/_rst_legacy/configexamples/rst-ospf-unnumbered.rst
index 6a5a1bb4..6a5a1bb4 100644
--- a/docs/configexamples/rst-ospf-unnumbered.rst
+++ b/docs/_rst_legacy/configexamples/rst-ospf-unnumbered.rst
diff --git a/docs/configexamples/rst-policy-based-ipsec-and-firewall.rst b/docs/_rst_legacy/configexamples/rst-policy-based-ipsec-and-firewall.rst
index dcf59af9..dcf59af9 100644
--- a/docs/configexamples/rst-policy-based-ipsec-and-firewall.rst
+++ b/docs/_rst_legacy/configexamples/rst-policy-based-ipsec-and-firewall.rst
diff --git a/docs/configexamples/rst-pppoe-ipv6-basic.rst b/docs/_rst_legacy/configexamples/rst-pppoe-ipv6-basic.rst
index cc14451c..cc14451c 100644
--- a/docs/configexamples/rst-pppoe-ipv6-basic.rst
+++ b/docs/_rst_legacy/configexamples/rst-pppoe-ipv6-basic.rst
diff --git a/docs/configexamples/rst-qos.rst b/docs/_rst_legacy/configexamples/rst-qos.rst
index 96448dd4..96448dd4 100644
--- a/docs/configexamples/rst-qos.rst
+++ b/docs/_rst_legacy/configexamples/rst-qos.rst
diff --git a/docs/configexamples/rst-segment-routing-isis.rst b/docs/_rst_legacy/configexamples/rst-segment-routing-isis.rst
index 86cbec26..86cbec26 100644
--- a/docs/configexamples/rst-segment-routing-isis.rst
+++ b/docs/_rst_legacy/configexamples/rst-segment-routing-isis.rst
diff --git a/docs/configexamples/rst-site-2-site-cisco.rst b/docs/_rst_legacy/configexamples/rst-site-2-site-cisco.rst
index e8322002..e8322002 100644
--- a/docs/configexamples/rst-site-2-site-cisco.rst
+++ b/docs/_rst_legacy/configexamples/rst-site-2-site-cisco.rst
diff --git a/docs/configexamples/rst-wan-load-balancing.rst b/docs/_rst_legacy/configexamples/rst-wan-load-balancing.rst
index d03d4ed9..d03d4ed9 100644
--- a/docs/configexamples/rst-wan-load-balancing.rst
+++ b/docs/_rst_legacy/configexamples/rst-wan-load-balancing.rst
diff --git a/docs/configexamples/rst-zone-policy.rst b/docs/_rst_legacy/configexamples/rst-zone-policy.rst
index 7ea33b95..7ea33b95 100644
--- a/docs/configexamples/rst-zone-policy.rst
+++ b/docs/_rst_legacy/configexamples/rst-zone-policy.rst
diff --git a/docs/configuration/container/rst-index.rst b/docs/_rst_legacy/configuration/container/rst-index.rst
index 398f1941..398f1941 100644
--- a/docs/configuration/container/rst-index.rst
+++ b/docs/_rst_legacy/configuration/container/rst-index.rst
diff --git a/docs/configuration/firewall/rst-bridge.rst b/docs/_rst_legacy/configuration/firewall/rst-bridge.rst
index 53775514..53775514 100644
--- a/docs/configuration/firewall/rst-bridge.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-bridge.rst
diff --git a/docs/configuration/firewall/rst-flowtables.rst b/docs/_rst_legacy/configuration/firewall/rst-flowtables.rst
index f996a59e..f996a59e 100644
--- a/docs/configuration/firewall/rst-flowtables.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-flowtables.rst
diff --git a/docs/configuration/firewall/rst-global-options.rst b/docs/_rst_legacy/configuration/firewall/rst-global-options.rst
index 8eec5c3f..8eec5c3f 100644
--- a/docs/configuration/firewall/rst-global-options.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-global-options.rst
diff --git a/docs/configuration/firewall/rst-groups.rst b/docs/_rst_legacy/configuration/firewall/rst-groups.rst
index 9d29866e..9d29866e 100644
--- a/docs/configuration/firewall/rst-groups.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-groups.rst
diff --git a/docs/configuration/firewall/rst-index.rst b/docs/_rst_legacy/configuration/firewall/rst-index.rst
index c4b3c808..c4b3c808 100644
--- a/docs/configuration/firewall/rst-index.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-index.rst
diff --git a/docs/configuration/firewall/rst-ipv4.rst b/docs/_rst_legacy/configuration/firewall/rst-ipv4.rst
index efd0fe18..efd0fe18 100644
--- a/docs/configuration/firewall/rst-ipv4.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-ipv4.rst
diff --git a/docs/configuration/firewall/rst-ipv6.rst b/docs/_rst_legacy/configuration/firewall/rst-ipv6.rst
index d31ceb6f..d31ceb6f 100644
--- a/docs/configuration/firewall/rst-ipv6.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-ipv6.rst
diff --git a/docs/configuration/firewall/rst-zone.rst b/docs/_rst_legacy/configuration/firewall/rst-zone.rst
index f3b12473..f3b12473 100644
--- a/docs/configuration/firewall/rst-zone.rst
+++ b/docs/_rst_legacy/configuration/firewall/rst-zone.rst
diff --git a/docs/configuration/highavailability/rst-index.rst b/docs/_rst_legacy/configuration/highavailability/rst-index.rst
index 952a345b..952a345b 100644
--- a/docs/configuration/highavailability/rst-index.rst
+++ b/docs/_rst_legacy/configuration/highavailability/rst-index.rst
diff --git a/docs/configuration/interfaces/rst-bonding.rst b/docs/_rst_legacy/configuration/interfaces/rst-bonding.rst
index 7637790c..7637790c 100644
--- a/docs/configuration/interfaces/rst-bonding.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-bonding.rst
diff --git a/docs/configuration/interfaces/rst-bridge.rst b/docs/_rst_legacy/configuration/interfaces/rst-bridge.rst
index a1710804..a1710804 100644
--- a/docs/configuration/interfaces/rst-bridge.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-bridge.rst
diff --git a/docs/configuration/interfaces/rst-dummy.rst b/docs/_rst_legacy/configuration/interfaces/rst-dummy.rst
index 55c134e3..55c134e3 100644
--- a/docs/configuration/interfaces/rst-dummy.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-dummy.rst
diff --git a/docs/configuration/interfaces/rst-ethernet.rst b/docs/_rst_legacy/configuration/interfaces/rst-ethernet.rst
index e6c385e7..e6c385e7 100644
--- a/docs/configuration/interfaces/rst-ethernet.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-ethernet.rst
diff --git a/docs/configuration/interfaces/rst-geneve.rst b/docs/_rst_legacy/configuration/interfaces/rst-geneve.rst
index bcd6c591..bcd6c591 100644
--- a/docs/configuration/interfaces/rst-geneve.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-geneve.rst
diff --git a/docs/configuration/interfaces/rst-index.rst b/docs/_rst_legacy/configuration/interfaces/rst-index.rst
index 46d521b0..46d521b0 100644
--- a/docs/configuration/interfaces/rst-index.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-index.rst
diff --git a/docs/configuration/interfaces/rst-l2tpv3.rst b/docs/_rst_legacy/configuration/interfaces/rst-l2tpv3.rst
index 692dff93..692dff93 100644
--- a/docs/configuration/interfaces/rst-l2tpv3.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-l2tpv3.rst
diff --git a/docs/configuration/interfaces/rst-loopback.rst b/docs/_rst_legacy/configuration/interfaces/rst-loopback.rst
index 68158111..68158111 100644
--- a/docs/configuration/interfaces/rst-loopback.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-loopback.rst
diff --git a/docs/configuration/interfaces/rst-macsec.rst b/docs/_rst_legacy/configuration/interfaces/rst-macsec.rst
index 2a893943..2a893943 100644
--- a/docs/configuration/interfaces/rst-macsec.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-macsec.rst
diff --git a/docs/configuration/interfaces/rst-openvpn-examples.rst b/docs/_rst_legacy/configuration/interfaces/rst-openvpn-examples.rst
index 6e746e46..6e746e46 100644
--- a/docs/configuration/interfaces/rst-openvpn-examples.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-openvpn-examples.rst
diff --git a/docs/configuration/interfaces/rst-openvpn.rst b/docs/_rst_legacy/configuration/interfaces/rst-openvpn.rst
index 85877d48..85877d48 100644
--- a/docs/configuration/interfaces/rst-openvpn.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-openvpn.rst
diff --git a/docs/configuration/interfaces/rst-pppoe.rst b/docs/_rst_legacy/configuration/interfaces/rst-pppoe.rst
index d2f8271c..d2f8271c 100644
--- a/docs/configuration/interfaces/rst-pppoe.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-pppoe.rst
diff --git a/docs/configuration/interfaces/rst-pseudo-ethernet.rst b/docs/_rst_legacy/configuration/interfaces/rst-pseudo-ethernet.rst
index cb42fafc..cb42fafc 100644
--- a/docs/configuration/interfaces/rst-pseudo-ethernet.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-pseudo-ethernet.rst
diff --git a/docs/configuration/interfaces/rst-sstp-client.rst b/docs/_rst_legacy/configuration/interfaces/rst-sstp-client.rst
index 9c6c6e9b..9c6c6e9b 100644
--- a/docs/configuration/interfaces/rst-sstp-client.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-sstp-client.rst
diff --git a/docs/configuration/interfaces/rst-tunnel.rst b/docs/_rst_legacy/configuration/interfaces/rst-tunnel.rst
index f1376cdf..f1376cdf 100644
--- a/docs/configuration/interfaces/rst-tunnel.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-tunnel.rst
diff --git a/docs/configuration/interfaces/rst-virtual-ethernet.rst b/docs/_rst_legacy/configuration/interfaces/rst-virtual-ethernet.rst
index 5df7e962..5df7e962 100644
--- a/docs/configuration/interfaces/rst-virtual-ethernet.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-virtual-ethernet.rst
diff --git a/docs/configuration/interfaces/rst-vti.rst b/docs/_rst_legacy/configuration/interfaces/rst-vti.rst
index e45c17d9..e45c17d9 100644
--- a/docs/configuration/interfaces/rst-vti.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-vti.rst
diff --git a/docs/configuration/interfaces/rst-vxlan.rst b/docs/_rst_legacy/configuration/interfaces/rst-vxlan.rst
index 0d357e9b..0d357e9b 100644
--- a/docs/configuration/interfaces/rst-vxlan.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-vxlan.rst
diff --git a/docs/configuration/interfaces/rst-wireguard.rst b/docs/_rst_legacy/configuration/interfaces/rst-wireguard.rst
index bc53b388..bc53b388 100644
--- a/docs/configuration/interfaces/rst-wireguard.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-wireguard.rst
diff --git a/docs/configuration/interfaces/rst-wireless.rst b/docs/_rst_legacy/configuration/interfaces/rst-wireless.rst
index 728783b2..728783b2 100644
--- a/docs/configuration/interfaces/rst-wireless.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-wireless.rst
diff --git a/docs/configuration/interfaces/rst-wwan.rst b/docs/_rst_legacy/configuration/interfaces/rst-wwan.rst
index 7ab3ac74..7ab3ac74 100644
--- a/docs/configuration/interfaces/rst-wwan.rst
+++ b/docs/_rst_legacy/configuration/interfaces/rst-wwan.rst
diff --git a/docs/configuration/loadbalancing/rst-haproxy.rst b/docs/_rst_legacy/configuration/loadbalancing/rst-haproxy.rst
index d742ec18..d742ec18 100644
--- a/docs/configuration/loadbalancing/rst-haproxy.rst
+++ b/docs/_rst_legacy/configuration/loadbalancing/rst-haproxy.rst
diff --git a/docs/configuration/loadbalancing/rst-index.rst b/docs/_rst_legacy/configuration/loadbalancing/rst-index.rst
index b87faed2..b87faed2 100644
--- a/docs/configuration/loadbalancing/rst-index.rst
+++ b/docs/_rst_legacy/configuration/loadbalancing/rst-index.rst
diff --git a/docs/configuration/loadbalancing/rst-wan.rst b/docs/_rst_legacy/configuration/loadbalancing/rst-wan.rst
index 56fdb02c..56fdb02c 100644
--- a/docs/configuration/loadbalancing/rst-wan.rst
+++ b/docs/_rst_legacy/configuration/loadbalancing/rst-wan.rst
diff --git a/docs/configuration/nat/rst-cgnat.rst b/docs/_rst_legacy/configuration/nat/rst-cgnat.rst
index 1848d45e..1848d45e 100644
--- a/docs/configuration/nat/rst-cgnat.rst
+++ b/docs/_rst_legacy/configuration/nat/rst-cgnat.rst
diff --git a/docs/configuration/nat/rst-index.rst b/docs/_rst_legacy/configuration/nat/rst-index.rst
index 2ecacc72..2ecacc72 100644
--- a/docs/configuration/nat/rst-index.rst
+++ b/docs/_rst_legacy/configuration/nat/rst-index.rst
diff --git a/docs/configuration/nat/rst-nat44.rst b/docs/_rst_legacy/configuration/nat/rst-nat44.rst
index 63b787ba..63b787ba 100644
--- a/docs/configuration/nat/rst-nat44.rst
+++ b/docs/_rst_legacy/configuration/nat/rst-nat44.rst
diff --git a/docs/configuration/nat/rst-nat64.rst b/docs/_rst_legacy/configuration/nat/rst-nat64.rst
index 04ba56f4..04ba56f4 100644
--- a/docs/configuration/nat/rst-nat64.rst
+++ b/docs/_rst_legacy/configuration/nat/rst-nat64.rst
diff --git a/docs/configuration/nat/rst-nat66.rst b/docs/_rst_legacy/configuration/nat/rst-nat66.rst
index aecce524..aecce524 100644
--- a/docs/configuration/nat/rst-nat66.rst
+++ b/docs/_rst_legacy/configuration/nat/rst-nat66.rst
diff --git a/docs/configuration/pki/rst-index.rst b/docs/_rst_legacy/configuration/pki/rst-index.rst
index cad80f25..cad80f25 100644
--- a/docs/configuration/pki/rst-index.rst
+++ b/docs/_rst_legacy/configuration/pki/rst-index.rst
diff --git a/docs/configuration/policy/rst-access-list.rst b/docs/_rst_legacy/configuration/policy/rst-access-list.rst
index 0af9b911..0af9b911 100644
--- a/docs/configuration/policy/rst-access-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-access-list.rst
diff --git a/docs/configuration/policy/rst-as-path-list.rst b/docs/_rst_legacy/configuration/policy/rst-as-path-list.rst
index ceeb8e01..ceeb8e01 100644
--- a/docs/configuration/policy/rst-as-path-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-as-path-list.rst
diff --git a/docs/configuration/policy/rst-community-list.rst b/docs/_rst_legacy/configuration/policy/rst-community-list.rst
index ee2da03c..ee2da03c 100644
--- a/docs/configuration/policy/rst-community-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-community-list.rst
diff --git a/docs/configuration/policy/rst-examples.rst b/docs/_rst_legacy/configuration/policy/rst-examples.rst
index 6c5c592a..6c5c592a 100644
--- a/docs/configuration/policy/rst-examples.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-examples.rst
diff --git a/docs/configuration/policy/rst-extcommunity-list.rst b/docs/_rst_legacy/configuration/policy/rst-extcommunity-list.rst
index c413b8b5..c413b8b5 100644
--- a/docs/configuration/policy/rst-extcommunity-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-extcommunity-list.rst
diff --git a/docs/configuration/policy/rst-index.rst b/docs/_rst_legacy/configuration/policy/rst-index.rst
index 0394eb21..0394eb21 100644
--- a/docs/configuration/policy/rst-index.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-index.rst
diff --git a/docs/configuration/policy/rst-large-community-list.rst b/docs/_rst_legacy/configuration/policy/rst-large-community-list.rst
index 0c57fd4a..0c57fd4a 100644
--- a/docs/configuration/policy/rst-large-community-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-large-community-list.rst
diff --git a/docs/configuration/policy/rst-local-route.rst b/docs/_rst_legacy/configuration/policy/rst-local-route.rst
index a3e42816..a3e42816 100644
--- a/docs/configuration/policy/rst-local-route.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-local-route.rst
diff --git a/docs/configuration/policy/rst-prefix-list.rst b/docs/_rst_legacy/configuration/policy/rst-prefix-list.rst
index 98df1b9b..98df1b9b 100644
--- a/docs/configuration/policy/rst-prefix-list.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-prefix-list.rst
diff --git a/docs/configuration/policy/rst-route-map.rst b/docs/_rst_legacy/configuration/policy/rst-route-map.rst
index a2313466..a2313466 100644
--- a/docs/configuration/policy/rst-route-map.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-route-map.rst
diff --git a/docs/configuration/policy/rst-route.rst b/docs/_rst_legacy/configuration/policy/rst-route.rst
index 1ddd04cf..1ddd04cf 100644
--- a/docs/configuration/policy/rst-route.rst
+++ b/docs/_rst_legacy/configuration/policy/rst-route.rst
diff --git a/docs/configuration/protocols/rst-arp.rst b/docs/_rst_legacy/configuration/protocols/rst-arp.rst
index 00865104..00865104 100644
--- a/docs/configuration/protocols/rst-arp.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-arp.rst
diff --git a/docs/configuration/protocols/rst-babel.rst b/docs/_rst_legacy/configuration/protocols/rst-babel.rst
index 95543da2..95543da2 100644
--- a/docs/configuration/protocols/rst-babel.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-babel.rst
diff --git a/docs/configuration/protocols/rst-bfd.rst b/docs/_rst_legacy/configuration/protocols/rst-bfd.rst
index 30876efc..30876efc 100644
--- a/docs/configuration/protocols/rst-bfd.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-bfd.rst
diff --git a/docs/configuration/protocols/rst-bgp.rst b/docs/_rst_legacy/configuration/protocols/rst-bgp.rst
index 736cb4cc..736cb4cc 100644
--- a/docs/configuration/protocols/rst-bgp.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-bgp.rst
diff --git a/docs/configuration/protocols/rst-failover.rst b/docs/_rst_legacy/configuration/protocols/rst-failover.rst
index c479649e..c479649e 100644
--- a/docs/configuration/protocols/rst-failover.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-failover.rst
diff --git a/docs/configuration/protocols/rst-igmp-proxy.rst b/docs/_rst_legacy/configuration/protocols/rst-igmp-proxy.rst
index f62a289e..f62a289e 100644
--- a/docs/configuration/protocols/rst-igmp-proxy.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-igmp-proxy.rst
diff --git a/docs/configuration/protocols/rst-index.rst b/docs/_rst_legacy/configuration/protocols/rst-index.rst
index d40a4b12..d40a4b12 100644
--- a/docs/configuration/protocols/rst-index.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-index.rst
diff --git a/docs/configuration/protocols/rst-isis.rst b/docs/_rst_legacy/configuration/protocols/rst-isis.rst
index 75634800..75634800 100644
--- a/docs/configuration/protocols/rst-isis.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-isis.rst
diff --git a/docs/configuration/protocols/rst-mpls.rst b/docs/_rst_legacy/configuration/protocols/rst-mpls.rst
index 550473d7..550473d7 100644
--- a/docs/configuration/protocols/rst-mpls.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-mpls.rst
diff --git a/docs/configuration/protocols/rst-multicast.rst b/docs/_rst_legacy/configuration/protocols/rst-multicast.rst
index 61a04e5e..61a04e5e 100644
--- a/docs/configuration/protocols/rst-multicast.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-multicast.rst
diff --git a/docs/configuration/protocols/rst-openfabric.rst b/docs/_rst_legacy/configuration/protocols/rst-openfabric.rst
index aecb5181..aecb5181 100644
--- a/docs/configuration/protocols/rst-openfabric.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-openfabric.rst
diff --git a/docs/configuration/protocols/rst-ospf.rst b/docs/_rst_legacy/configuration/protocols/rst-ospf.rst
index ac0ed160..ac0ed160 100644
--- a/docs/configuration/protocols/rst-ospf.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-ospf.rst
diff --git a/docs/configuration/protocols/rst-pim.rst b/docs/_rst_legacy/configuration/protocols/rst-pim.rst
index f3f388ba..f3f388ba 100644
--- a/docs/configuration/protocols/rst-pim.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-pim.rst
diff --git a/docs/configuration/protocols/rst-pim6.rst b/docs/_rst_legacy/configuration/protocols/rst-pim6.rst
index 2b2276a7..2b2276a7 100644
--- a/docs/configuration/protocols/rst-pim6.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-pim6.rst
diff --git a/docs/configuration/protocols/rst-rip.rst b/docs/_rst_legacy/configuration/protocols/rst-rip.rst
index fd20a90c..fd20a90c 100644
--- a/docs/configuration/protocols/rst-rip.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-rip.rst
diff --git a/docs/configuration/protocols/rst-rpki.rst b/docs/_rst_legacy/configuration/protocols/rst-rpki.rst
index 17557884..17557884 100644
--- a/docs/configuration/protocols/rst-rpki.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-rpki.rst
diff --git a/docs/configuration/protocols/rst-segment-routing.rst b/docs/_rst_legacy/configuration/protocols/rst-segment-routing.rst
index 5ee710e9..5ee710e9 100644
--- a/docs/configuration/protocols/rst-segment-routing.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-segment-routing.rst
diff --git a/docs/configuration/protocols/rst-static.rst b/docs/_rst_legacy/configuration/protocols/rst-static.rst
index eb5a439c..eb5a439c 100644
--- a/docs/configuration/protocols/rst-static.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-static.rst
diff --git a/docs/configuration/protocols/rst-traffic-engineering.rst b/docs/_rst_legacy/configuration/protocols/rst-traffic-engineering.rst
index 977a5e5c..977a5e5c 100644
--- a/docs/configuration/protocols/rst-traffic-engineering.rst
+++ b/docs/_rst_legacy/configuration/protocols/rst-traffic-engineering.rst
diff --git a/docs/configuration/rst-index.rst b/docs/_rst_legacy/configuration/rst-index.rst
index f86365a9..f86365a9 100644
--- a/docs/configuration/rst-index.rst
+++ b/docs/_rst_legacy/configuration/rst-index.rst
diff --git a/docs/configuration/service/rst-broadcast-relay.rst b/docs/_rst_legacy/configuration/service/rst-broadcast-relay.rst
index f64bb208..f64bb208 100644
--- a/docs/configuration/service/rst-broadcast-relay.rst
+++ b/docs/_rst_legacy/configuration/service/rst-broadcast-relay.rst
diff --git a/docs/configuration/service/rst-config-sync.rst b/docs/_rst_legacy/configuration/service/rst-config-sync.rst
index a8984a0d..a8984a0d 100644
--- a/docs/configuration/service/rst-config-sync.rst
+++ b/docs/_rst_legacy/configuration/service/rst-config-sync.rst
diff --git a/docs/configuration/service/rst-conntrack-sync.rst b/docs/_rst_legacy/configuration/service/rst-conntrack-sync.rst
index 2527407e..2527407e 100644
--- a/docs/configuration/service/rst-conntrack-sync.rst
+++ b/docs/_rst_legacy/configuration/service/rst-conntrack-sync.rst
diff --git a/docs/configuration/service/rst-console-server.rst b/docs/_rst_legacy/configuration/service/rst-console-server.rst
index c9ea7f77..c9ea7f77 100644
--- a/docs/configuration/service/rst-console-server.rst
+++ b/docs/_rst_legacy/configuration/service/rst-console-server.rst
diff --git a/docs/configuration/service/rst-dhcp-relay.rst b/docs/_rst_legacy/configuration/service/rst-dhcp-relay.rst
index 6a1b02f2..6a1b02f2 100644
--- a/docs/configuration/service/rst-dhcp-relay.rst
+++ b/docs/_rst_legacy/configuration/service/rst-dhcp-relay.rst
diff --git a/docs/configuration/service/rst-dhcp-server.rst b/docs/_rst_legacy/configuration/service/rst-dhcp-server.rst
index 09f40b37..09f40b37 100644
--- a/docs/configuration/service/rst-dhcp-server.rst
+++ b/docs/_rst_legacy/configuration/service/rst-dhcp-server.rst
diff --git a/docs/configuration/service/rst-dns.rst b/docs/_rst_legacy/configuration/service/rst-dns.rst
index 365e7885..365e7885 100644
--- a/docs/configuration/service/rst-dns.rst
+++ b/docs/_rst_legacy/configuration/service/rst-dns.rst
diff --git a/docs/configuration/service/rst-eventhandler.rst b/docs/_rst_legacy/configuration/service/rst-eventhandler.rst
index 9f4ebb04..9f4ebb04 100644
--- a/docs/configuration/service/rst-eventhandler.rst
+++ b/docs/_rst_legacy/configuration/service/rst-eventhandler.rst
diff --git a/docs/configuration/service/rst-https.rst b/docs/_rst_legacy/configuration/service/rst-https.rst
index e72e8e8b..e72e8e8b 100644
--- a/docs/configuration/service/rst-https.rst
+++ b/docs/_rst_legacy/configuration/service/rst-https.rst
diff --git a/docs/configuration/service/rst-index.rst b/docs/_rst_legacy/configuration/service/rst-index.rst
index fb6f8413..fb6f8413 100644
--- a/docs/configuration/service/rst-index.rst
+++ b/docs/_rst_legacy/configuration/service/rst-index.rst
diff --git a/docs/configuration/service/rst-ipoe-server.rst b/docs/_rst_legacy/configuration/service/rst-ipoe-server.rst
index 5d7acd5a..5d7acd5a 100644
--- a/docs/configuration/service/rst-ipoe-server.rst
+++ b/docs/_rst_legacy/configuration/service/rst-ipoe-server.rst
diff --git a/docs/configuration/service/rst-lldp.rst b/docs/_rst_legacy/configuration/service/rst-lldp.rst
index 8aee6183..8aee6183 100644
--- a/docs/configuration/service/rst-lldp.rst
+++ b/docs/_rst_legacy/configuration/service/rst-lldp.rst
diff --git a/docs/configuration/service/rst-mdns.rst b/docs/_rst_legacy/configuration/service/rst-mdns.rst
index 8a26722e..8a26722e 100644
--- a/docs/configuration/service/rst-mdns.rst
+++ b/docs/_rst_legacy/configuration/service/rst-mdns.rst
diff --git a/docs/configuration/service/rst-monitoring.rst b/docs/_rst_legacy/configuration/service/rst-monitoring.rst
index 8faf0eb8..8faf0eb8 100644
--- a/docs/configuration/service/rst-monitoring.rst
+++ b/docs/_rst_legacy/configuration/service/rst-monitoring.rst
diff --git a/docs/configuration/service/rst-ntp.rst b/docs/_rst_legacy/configuration/service/rst-ntp.rst
index f4ccb4b1..f4ccb4b1 100644
--- a/docs/configuration/service/rst-ntp.rst
+++ b/docs/_rst_legacy/configuration/service/rst-ntp.rst
diff --git a/docs/configuration/service/rst-pppoe-server.rst b/docs/_rst_legacy/configuration/service/rst-pppoe-server.rst
index f763536a..f763536a 100644
--- a/docs/configuration/service/rst-pppoe-server.rst
+++ b/docs/_rst_legacy/configuration/service/rst-pppoe-server.rst
diff --git a/docs/configuration/service/rst-router-advert.rst b/docs/_rst_legacy/configuration/service/rst-router-advert.rst
index 80f5ae30..80f5ae30 100644
--- a/docs/configuration/service/rst-router-advert.rst
+++ b/docs/_rst_legacy/configuration/service/rst-router-advert.rst
diff --git a/docs/configuration/service/rst-salt-minion.rst b/docs/_rst_legacy/configuration/service/rst-salt-minion.rst
index 8638246b..8638246b 100644
--- a/docs/configuration/service/rst-salt-minion.rst
+++ b/docs/_rst_legacy/configuration/service/rst-salt-minion.rst
diff --git a/docs/configuration/service/rst-snmp.rst b/docs/_rst_legacy/configuration/service/rst-snmp.rst
index 6dc13240..6dc13240 100644
--- a/docs/configuration/service/rst-snmp.rst
+++ b/docs/_rst_legacy/configuration/service/rst-snmp.rst
diff --git a/docs/configuration/service/rst-ssh.rst b/docs/_rst_legacy/configuration/service/rst-ssh.rst
index 11f58201..11f58201 100644
--- a/docs/configuration/service/rst-ssh.rst
+++ b/docs/_rst_legacy/configuration/service/rst-ssh.rst
diff --git a/docs/configuration/service/rst-suricata.rst b/docs/_rst_legacy/configuration/service/rst-suricata.rst
index b72bc52a..b72bc52a 100644
--- a/docs/configuration/service/rst-suricata.rst
+++ b/docs/_rst_legacy/configuration/service/rst-suricata.rst
diff --git a/docs/configuration/service/rst-tftp-server.rst b/docs/_rst_legacy/configuration/service/rst-tftp-server.rst
index 84acf3d4..84acf3d4 100644
--- a/docs/configuration/service/rst-tftp-server.rst
+++ b/docs/_rst_legacy/configuration/service/rst-tftp-server.rst
diff --git a/docs/configuration/service/rst-webproxy.rst b/docs/_rst_legacy/configuration/service/rst-webproxy.rst
index a6c5ff0a..a6c5ff0a 100644
--- a/docs/configuration/service/rst-webproxy.rst
+++ b/docs/_rst_legacy/configuration/service/rst-webproxy.rst
diff --git a/docs/configuration/system/rst-acceleration.rst b/docs/_rst_legacy/configuration/system/rst-acceleration.rst
index 63506d6d..63506d6d 100644
--- a/docs/configuration/system/rst-acceleration.rst
+++ b/docs/_rst_legacy/configuration/system/rst-acceleration.rst
diff --git a/docs/configuration/system/rst-conntrack.rst b/docs/_rst_legacy/configuration/system/rst-conntrack.rst
index 59209b36..59209b36 100644
--- a/docs/configuration/system/rst-conntrack.rst
+++ b/docs/_rst_legacy/configuration/system/rst-conntrack.rst
diff --git a/docs/configuration/system/rst-console.rst b/docs/_rst_legacy/configuration/system/rst-console.rst
index a0e46afb..a0e46afb 100644
--- a/docs/configuration/system/rst-console.rst
+++ b/docs/_rst_legacy/configuration/system/rst-console.rst
diff --git a/docs/configuration/system/rst-default-route.rst b/docs/_rst_legacy/configuration/system/rst-default-route.rst
index e102eb9c..e102eb9c 100644
--- a/docs/configuration/system/rst-default-route.rst
+++ b/docs/_rst_legacy/configuration/system/rst-default-route.rst
diff --git a/docs/configuration/system/rst-flow-accounting.rst b/docs/_rst_legacy/configuration/system/rst-flow-accounting.rst
index 0664eac7..0664eac7 100644
--- a/docs/configuration/system/rst-flow-accounting.rst
+++ b/docs/_rst_legacy/configuration/system/rst-flow-accounting.rst
diff --git a/docs/configuration/system/rst-frr.rst b/docs/_rst_legacy/configuration/system/rst-frr.rst
index 2fa6e3c3..2fa6e3c3 100644
--- a/docs/configuration/system/rst-frr.rst
+++ b/docs/_rst_legacy/configuration/system/rst-frr.rst
diff --git a/docs/configuration/system/rst-host-name.rst b/docs/_rst_legacy/configuration/system/rst-host-name.rst
index 4d1567bf..4d1567bf 100644
--- a/docs/configuration/system/rst-host-name.rst
+++ b/docs/_rst_legacy/configuration/system/rst-host-name.rst
diff --git a/docs/configuration/system/rst-index.rst b/docs/_rst_legacy/configuration/system/rst-index.rst
index c0113cce..c0113cce 100644
--- a/docs/configuration/system/rst-index.rst
+++ b/docs/_rst_legacy/configuration/system/rst-index.rst
diff --git a/docs/configuration/system/rst-ip.rst b/docs/_rst_legacy/configuration/system/rst-ip.rst
index c724faac..c724faac 100644
--- a/docs/configuration/system/rst-ip.rst
+++ b/docs/_rst_legacy/configuration/system/rst-ip.rst
diff --git a/docs/configuration/system/rst-ipv6.rst b/docs/_rst_legacy/configuration/system/rst-ipv6.rst
index eaa1d2b8..eaa1d2b8 100644
--- a/docs/configuration/system/rst-ipv6.rst
+++ b/docs/_rst_legacy/configuration/system/rst-ipv6.rst
diff --git a/docs/configuration/system/rst-lcd.rst b/docs/_rst_legacy/configuration/system/rst-lcd.rst
index 3fcf01dd..3fcf01dd 100644
--- a/docs/configuration/system/rst-lcd.rst
+++ b/docs/_rst_legacy/configuration/system/rst-lcd.rst
diff --git a/docs/configuration/system/rst-login.rst b/docs/_rst_legacy/configuration/system/rst-login.rst
index 1a2c2c5a..1a2c2c5a 100644
--- a/docs/configuration/system/rst-login.rst
+++ b/docs/_rst_legacy/configuration/system/rst-login.rst
diff --git a/docs/configuration/system/rst-name-server.rst b/docs/_rst_legacy/configuration/system/rst-name-server.rst
index 5d08dbc5..5d08dbc5 100644
--- a/docs/configuration/system/rst-name-server.rst
+++ b/docs/_rst_legacy/configuration/system/rst-name-server.rst
diff --git a/docs/configuration/system/rst-option.rst b/docs/_rst_legacy/configuration/system/rst-option.rst
index a13e38a8..a13e38a8 100644
--- a/docs/configuration/system/rst-option.rst
+++ b/docs/_rst_legacy/configuration/system/rst-option.rst
diff --git a/docs/configuration/system/rst-proxy.rst b/docs/_rst_legacy/configuration/system/rst-proxy.rst
index 8e0339a7..8e0339a7 100644
--- a/docs/configuration/system/rst-proxy.rst
+++ b/docs/_rst_legacy/configuration/system/rst-proxy.rst
diff --git a/docs/configuration/system/rst-sflow.rst b/docs/_rst_legacy/configuration/system/rst-sflow.rst
index 926d667b..926d667b 100644
--- a/docs/configuration/system/rst-sflow.rst
+++ b/docs/_rst_legacy/configuration/system/rst-sflow.rst
diff --git a/docs/configuration/system/rst-sysctl.rst b/docs/_rst_legacy/configuration/system/rst-sysctl.rst
index 1fedb9bd..1fedb9bd 100644
--- a/docs/configuration/system/rst-sysctl.rst
+++ b/docs/_rst_legacy/configuration/system/rst-sysctl.rst
diff --git a/docs/configuration/system/rst-syslog.rst b/docs/_rst_legacy/configuration/system/rst-syslog.rst
index c2767c4a..c2767c4a 100644
--- a/docs/configuration/system/rst-syslog.rst
+++ b/docs/_rst_legacy/configuration/system/rst-syslog.rst
diff --git a/docs/configuration/system/rst-task-scheduler.rst b/docs/_rst_legacy/configuration/system/rst-task-scheduler.rst
index 4a754ba3..4a754ba3 100644
--- a/docs/configuration/system/rst-task-scheduler.rst
+++ b/docs/_rst_legacy/configuration/system/rst-task-scheduler.rst
diff --git a/docs/configuration/system/rst-time-zone.rst b/docs/_rst_legacy/configuration/system/rst-time-zone.rst
index 025c4376..025c4376 100644
--- a/docs/configuration/system/rst-time-zone.rst
+++ b/docs/_rst_legacy/configuration/system/rst-time-zone.rst
diff --git a/docs/configuration/system/rst-updates.rst b/docs/_rst_legacy/configuration/system/rst-updates.rst
index 505d9318..505d9318 100644
--- a/docs/configuration/system/rst-updates.rst
+++ b/docs/_rst_legacy/configuration/system/rst-updates.rst
diff --git a/docs/configuration/system/rst-watchdog.rst b/docs/_rst_legacy/configuration/system/rst-watchdog.rst
index 9db4a666..9db4a666 100644
--- a/docs/configuration/system/rst-watchdog.rst
+++ b/docs/_rst_legacy/configuration/system/rst-watchdog.rst
diff --git a/docs/configuration/trafficpolicy/rst-index.rst b/docs/_rst_legacy/configuration/trafficpolicy/rst-index.rst
index 13cfb9dc..13cfb9dc 100644
--- a/docs/configuration/trafficpolicy/rst-index.rst
+++ b/docs/_rst_legacy/configuration/trafficpolicy/rst-index.rst
diff --git a/docs/configuration/vpn/ipsec/rst-index.rst b/docs/_rst_legacy/configuration/vpn/ipsec/rst-index.rst
index 973c76de..973c76de 100644
--- a/docs/configuration/vpn/ipsec/rst-index.rst
+++ b/docs/_rst_legacy/configuration/vpn/ipsec/rst-index.rst
diff --git a/docs/configuration/vpn/ipsec/rst-ipsec_general.rst b/docs/_rst_legacy/configuration/vpn/ipsec/rst-ipsec_general.rst
index 3d21b81d..3d21b81d 100644
--- a/docs/configuration/vpn/ipsec/rst-ipsec_general.rst
+++ b/docs/_rst_legacy/configuration/vpn/ipsec/rst-ipsec_general.rst
diff --git a/docs/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst b/docs/_rst_legacy/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst
index 50499160..50499160 100644
--- a/docs/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst
+++ b/docs/_rst_legacy/configuration/vpn/ipsec/rst-remoteaccess_ipsec.rst
diff --git a/docs/configuration/vpn/ipsec/rst-site2site_ipsec.rst b/docs/_rst_legacy/configuration/vpn/ipsec/rst-site2site_ipsec.rst
index 9f8231e7..9f8231e7 100644
--- a/docs/configuration/vpn/ipsec/rst-site2site_ipsec.rst
+++ b/docs/_rst_legacy/configuration/vpn/ipsec/rst-site2site_ipsec.rst
diff --git a/docs/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst b/docs/_rst_legacy/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst
index f0f2e208..f0f2e208 100644
--- a/docs/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst
+++ b/docs/_rst_legacy/configuration/vpn/ipsec/rst-troubleshooting_ipsec.rst
diff --git a/docs/configuration/vpn/rst-dmvpn.rst b/docs/_rst_legacy/configuration/vpn/rst-dmvpn.rst
index 30398a25..30398a25 100644
--- a/docs/configuration/vpn/rst-dmvpn.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-dmvpn.rst
diff --git a/docs/configuration/vpn/rst-index.rst b/docs/_rst_legacy/configuration/vpn/rst-index.rst
index 6d38e5b5..6d38e5b5 100644
--- a/docs/configuration/vpn/rst-index.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-index.rst
diff --git a/docs/configuration/vpn/rst-l2tp.rst b/docs/_rst_legacy/configuration/vpn/rst-l2tp.rst
index 7fdf8599..7fdf8599 100644
--- a/docs/configuration/vpn/rst-l2tp.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-l2tp.rst
diff --git a/docs/configuration/vpn/rst-openconnect.rst b/docs/_rst_legacy/configuration/vpn/rst-openconnect.rst
index 0262b3f2..0262b3f2 100644
--- a/docs/configuration/vpn/rst-openconnect.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-openconnect.rst
diff --git a/docs/configuration/vpn/rst-pptp.rst b/docs/_rst_legacy/configuration/vpn/rst-pptp.rst
index 194ec771..194ec771 100644
--- a/docs/configuration/vpn/rst-pptp.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-pptp.rst
diff --git a/docs/configuration/vpn/rst-rsa-keys.rst b/docs/_rst_legacy/configuration/vpn/rst-rsa-keys.rst
index e7584563..e7584563 100644
--- a/docs/configuration/vpn/rst-rsa-keys.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-rsa-keys.rst
diff --git a/docs/configuration/vpn/rst-sstp.rst b/docs/_rst_legacy/configuration/vpn/rst-sstp.rst
index b65aecca..b65aecca 100644
--- a/docs/configuration/vpn/rst-sstp.rst
+++ b/docs/_rst_legacy/configuration/vpn/rst-sstp.rst
diff --git a/docs/configuration/vrf/rst-index.rst b/docs/_rst_legacy/configuration/vrf/rst-index.rst
index 5965f857..5965f857 100644
--- a/docs/configuration/vrf/rst-index.rst
+++ b/docs/_rst_legacy/configuration/vrf/rst-index.rst
diff --git a/docs/contributing/rst-build-vyos.rst b/docs/_rst_legacy/contributing/rst-build-vyos.rst
index 65298a7a..65298a7a 100644
--- a/docs/contributing/rst-build-vyos.rst
+++ b/docs/_rst_legacy/contributing/rst-build-vyos.rst
diff --git a/docs/contributing/rst-cla.rst b/docs/_rst_legacy/contributing/rst-cla.rst
index c19e266a..c19e266a 100644
--- a/docs/contributing/rst-cla.rst
+++ b/docs/_rst_legacy/contributing/rst-cla.rst
diff --git a/docs/contributing/rst-debugging.rst b/docs/_rst_legacy/contributing/rst-debugging.rst
index da8186ae..da8186ae 100644
--- a/docs/contributing/rst-debugging.rst
+++ b/docs/_rst_legacy/contributing/rst-debugging.rst
diff --git a/docs/contributing/rst-development.rst b/docs/_rst_legacy/contributing/rst-development.rst
index 5de950df..5de950df 100644
--- a/docs/contributing/rst-development.rst
+++ b/docs/_rst_legacy/contributing/rst-development.rst
diff --git a/docs/contributing/rst-index.rst b/docs/_rst_legacy/contributing/rst-index.rst
index 18b925ec..18b925ec 100644
--- a/docs/contributing/rst-index.rst
+++ b/docs/_rst_legacy/contributing/rst-index.rst
diff --git a/docs/contributing/rst-issues-features.rst b/docs/_rst_legacy/contributing/rst-issues-features.rst
index b1e1d732..b1e1d732 100644
--- a/docs/contributing/rst-issues-features.rst
+++ b/docs/_rst_legacy/contributing/rst-issues-features.rst
diff --git a/docs/contributing/rst-testing.rst b/docs/_rst_legacy/contributing/rst-testing.rst
index d7455103..d7455103 100644
--- a/docs/contributing/rst-testing.rst
+++ b/docs/_rst_legacy/contributing/rst-testing.rst
diff --git a/docs/contributing/rst-upstream-packages.rst b/docs/_rst_legacy/contributing/rst-upstream-packages.rst
index c740b190..c740b190 100644
--- a/docs/contributing/rst-upstream-packages.rst
+++ b/docs/_rst_legacy/contributing/rst-upstream-packages.rst
diff --git a/docs/installation/cloud/rst-aws.rst b/docs/_rst_legacy/installation/cloud/rst-aws.rst
index 89f4a152..89f4a152 100644
--- a/docs/installation/cloud/rst-aws.rst
+++ b/docs/_rst_legacy/installation/cloud/rst-aws.rst
diff --git a/docs/installation/cloud/rst-azure.rst b/docs/_rst_legacy/installation/cloud/rst-azure.rst
index f77c9bee..f77c9bee 100644
--- a/docs/installation/cloud/rst-azure.rst
+++ b/docs/_rst_legacy/installation/cloud/rst-azure.rst
diff --git a/docs/installation/cloud/rst-gcp.rst b/docs/_rst_legacy/installation/cloud/rst-gcp.rst
index 7d70e007..7d70e007 100644
--- a/docs/installation/cloud/rst-gcp.rst
+++ b/docs/_rst_legacy/installation/cloud/rst-gcp.rst
diff --git a/docs/installation/cloud/rst-index.rst b/docs/_rst_legacy/installation/cloud/rst-index.rst
index 18d525ac..18d525ac 100644
--- a/docs/installation/cloud/rst-index.rst
+++ b/docs/_rst_legacy/installation/cloud/rst-index.rst
diff --git a/docs/installation/cloud/rst-oracle.rst b/docs/_rst_legacy/installation/cloud/rst-oracle.rst
index d71d8039..d71d8039 100644
--- a/docs/installation/cloud/rst-oracle.rst
+++ b/docs/_rst_legacy/installation/cloud/rst-oracle.rst
diff --git a/docs/installation/rst-bare-metal.rst b/docs/_rst_legacy/installation/rst-bare-metal.rst
index 5b6f24a4..5b6f24a4 100644
--- a/docs/installation/rst-bare-metal.rst
+++ b/docs/_rst_legacy/installation/rst-bare-metal.rst
diff --git a/docs/installation/rst-image.rst b/docs/_rst_legacy/installation/rst-image.rst
index 5b473e78..5b473e78 100644
--- a/docs/installation/rst-image.rst
+++ b/docs/_rst_legacy/installation/rst-image.rst
diff --git a/docs/installation/rst-index.rst b/docs/_rst_legacy/installation/rst-index.rst
index 5ba89755..5ba89755 100644
--- a/docs/installation/rst-index.rst
+++ b/docs/_rst_legacy/installation/rst-index.rst
diff --git a/docs/installation/rst-install.rst b/docs/_rst_legacy/installation/rst-install.rst
index ce4a0338..ce4a0338 100644
--- a/docs/installation/rst-install.rst
+++ b/docs/_rst_legacy/installation/rst-install.rst
diff --git a/docs/installation/rst-secure-boot.rst b/docs/_rst_legacy/installation/rst-secure-boot.rst
index b0912f00..b0912f00 100644
--- a/docs/installation/rst-secure-boot.rst
+++ b/docs/_rst_legacy/installation/rst-secure-boot.rst
diff --git a/docs/installation/rst-update.rst b/docs/_rst_legacy/installation/rst-update.rst
index 81750dc1..81750dc1 100644
--- a/docs/installation/rst-update.rst
+++ b/docs/_rst_legacy/installation/rst-update.rst
diff --git a/docs/installation/virtual/rst-docker.rst b/docs/_rst_legacy/installation/virtual/rst-docker.rst
index d62c011b..d62c011b 100644
--- a/docs/installation/virtual/rst-docker.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-docker.rst
diff --git a/docs/installation/virtual/rst-eve-ng.rst b/docs/_rst_legacy/installation/virtual/rst-eve-ng.rst
index f3db28fe..f3db28fe 100644
--- a/docs/installation/virtual/rst-eve-ng.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-eve-ng.rst
diff --git a/docs/installation/virtual/rst-gns3.rst b/docs/_rst_legacy/installation/virtual/rst-gns3.rst
index 2c0b5224..2c0b5224 100644
--- a/docs/installation/virtual/rst-gns3.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-gns3.rst
diff --git a/docs/installation/virtual/rst-index.rst b/docs/_rst_legacy/installation/virtual/rst-index.rst
index e1a3caf5..e1a3caf5 100644
--- a/docs/installation/virtual/rst-index.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-index.rst
diff --git a/docs/installation/virtual/rst-libvirt.rst b/docs/_rst_legacy/installation/virtual/rst-libvirt.rst
index 7374e42c..7374e42c 100644
--- a/docs/installation/virtual/rst-libvirt.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-libvirt.rst
diff --git a/docs/installation/virtual/rst-proxmox.rst b/docs/_rst_legacy/installation/virtual/rst-proxmox.rst
index d34be290..d34be290 100644
--- a/docs/installation/virtual/rst-proxmox.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-proxmox.rst
diff --git a/docs/installation/virtual/rst-vmware.rst b/docs/_rst_legacy/installation/virtual/rst-vmware.rst
index e18ea4c8..e18ea4c8 100644
--- a/docs/installation/virtual/rst-vmware.rst
+++ b/docs/_rst_legacy/installation/virtual/rst-vmware.rst
diff --git a/docs/introducing/rst-about.rst b/docs/_rst_legacy/introducing/rst-about.rst
index a791dcd0..a791dcd0 100644
--- a/docs/introducing/rst-about.rst
+++ b/docs/_rst_legacy/introducing/rst-about.rst
diff --git a/docs/introducing/rst-history.rst b/docs/_rst_legacy/introducing/rst-history.rst
index e1caab55..e1caab55 100644
--- a/docs/introducing/rst-history.rst
+++ b/docs/_rst_legacy/introducing/rst-history.rst
diff --git a/docs/operation/rst-boot-options.rst b/docs/_rst_legacy/operation/rst-boot-options.rst
index 25deb9ca..25deb9ca 100644
--- a/docs/operation/rst-boot-options.rst
+++ b/docs/_rst_legacy/operation/rst-boot-options.rst
diff --git a/docs/operation/rst-index.rst b/docs/_rst_legacy/operation/rst-index.rst
index b38ca8f9..b38ca8f9 100644
--- a/docs/operation/rst-index.rst
+++ b/docs/_rst_legacy/operation/rst-index.rst
diff --git a/docs/operation/rst-information.rst b/docs/_rst_legacy/operation/rst-information.rst
index 1b3d876a..1b3d876a 100644
--- a/docs/operation/rst-information.rst
+++ b/docs/_rst_legacy/operation/rst-information.rst
diff --git a/docs/operation/rst-password-recovery.rst b/docs/_rst_legacy/operation/rst-password-recovery.rst
index 59a09938..59a09938 100755
--- a/docs/operation/rst-password-recovery.rst
+++ b/docs/_rst_legacy/operation/rst-password-recovery.rst
diff --git a/docs/operation/rst-raid.rst b/docs/_rst_legacy/operation/rst-raid.rst
index b8dac2b5..b8dac2b5 100644
--- a/docs/operation/rst-raid.rst
+++ b/docs/_rst_legacy/operation/rst-raid.rst
diff --git a/docs/operation/rst-upgrade-recovery.rst b/docs/_rst_legacy/operation/rst-upgrade-recovery.rst
index d6eeb678..d6eeb678 100644
--- a/docs/operation/rst-upgrade-recovery.rst
+++ b/docs/_rst_legacy/operation/rst-upgrade-recovery.rst
diff --git a/docs/rst-404.rst b/docs/_rst_legacy/rst-404.rst
index 2ae79f2e..2ae79f2e 100644
--- a/docs/rst-404.rst
+++ b/docs/_rst_legacy/rst-404.rst
diff --git a/docs/rst-cli.rst b/docs/_rst_legacy/rst-cli.rst
index 778d3954..778d3954 100644
--- a/docs/rst-cli.rst
+++ b/docs/_rst_legacy/rst-cli.rst
diff --git a/docs/rst-coverage.rst b/docs/_rst_legacy/rst-coverage.rst
index 5f74e70d..5f74e70d 100644
--- a/docs/rst-coverage.rst
+++ b/docs/_rst_legacy/rst-coverage.rst
diff --git a/docs/rst-documentation.rst b/docs/_rst_legacy/rst-documentation.rst
index a4ea11e4..a4ea11e4 100644
--- a/docs/rst-documentation.rst
+++ b/docs/_rst_legacy/rst-documentation.rst
diff --git a/docs/rst-index.rst b/docs/_rst_legacy/rst-index.rst
index 660daa46..660daa46 100644
--- a/docs/rst-index.rst
+++ b/docs/_rst_legacy/rst-index.rst
diff --git a/docs/rst-quick-start.rst b/docs/_rst_legacy/rst-quick-start.rst
index 3acbed25..3acbed25 100644
--- a/docs/rst-quick-start.rst
+++ b/docs/_rst_legacy/rst-quick-start.rst
diff --git a/docs/troubleshooting/rst-connectivity.rst b/docs/_rst_legacy/troubleshooting/rst-connectivity.rst
index aa2a0151..aa2a0151 100644
--- a/docs/troubleshooting/rst-connectivity.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-connectivity.rst
diff --git a/docs/troubleshooting/rst-index.rst b/docs/_rst_legacy/troubleshooting/rst-index.rst
index 791afc56..791afc56 100644
--- a/docs/troubleshooting/rst-index.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-index.rst
diff --git a/docs/troubleshooting/rst-interfaces.rst b/docs/_rst_legacy/troubleshooting/rst-interfaces.rst
index 95aceb12..95aceb12 100644
--- a/docs/troubleshooting/rst-interfaces.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-interfaces.rst
diff --git a/docs/troubleshooting/rst-monitoring.rst b/docs/_rst_legacy/troubleshooting/rst-monitoring.rst
index ef40c937..ef40c937 100644
--- a/docs/troubleshooting/rst-monitoring.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-monitoring.rst
diff --git a/docs/troubleshooting/rst-system.rst b/docs/_rst_legacy/troubleshooting/rst-system.rst
index 3a9ec735..3a9ec735 100644
--- a/docs/troubleshooting/rst-system.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-system.rst
diff --git a/docs/troubleshooting/rst-terminal.rst b/docs/_rst_legacy/troubleshooting/rst-terminal.rst
index fb197730..fb197730 100644
--- a/docs/troubleshooting/rst-terminal.rst
+++ b/docs/_rst_legacy/troubleshooting/rst-terminal.rst
diff --git a/docs/vpp/configuration/dataplane/rst-buffers.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-buffers.rst
index b08eb691..b08eb691 100644
--- a/docs/vpp/configuration/dataplane/rst-buffers.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-buffers.rst
diff --git a/docs/vpp/configuration/dataplane/rst-cpu.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-cpu.rst
index 22158ce3..22158ce3 100644
--- a/docs/vpp/configuration/dataplane/rst-cpu.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-cpu.rst
diff --git a/docs/vpp/configuration/dataplane/rst-index.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-index.rst
index 323d7588..323d7588 100644
--- a/docs/vpp/configuration/dataplane/rst-index.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-index.rst
diff --git a/docs/vpp/configuration/dataplane/rst-interface.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-interface.rst
index e4556021..e4556021 100644
--- a/docs/vpp/configuration/dataplane/rst-interface.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-interface.rst
diff --git a/docs/vpp/configuration/dataplane/rst-ipsec.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-ipsec.rst
index 31734c86..31734c86 100644
--- a/docs/vpp/configuration/dataplane/rst-ipsec.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-ipsec.rst
diff --git a/docs/vpp/configuration/dataplane/rst-ipv6.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-ipv6.rst
index 94f38476..94f38476 100644
--- a/docs/vpp/configuration/dataplane/rst-ipv6.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-ipv6.rst
diff --git a/docs/vpp/configuration/dataplane/rst-l2learn.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-l2learn.rst
index b204c41f..b204c41f 100644
--- a/docs/vpp/configuration/dataplane/rst-l2learn.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-l2learn.rst
diff --git a/docs/vpp/configuration/dataplane/rst-lcp.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-lcp.rst
index cb39439a..cb39439a 100644
--- a/docs/vpp/configuration/dataplane/rst-lcp.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-lcp.rst
diff --git a/docs/vpp/configuration/dataplane/rst-logging.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-logging.rst
index 70d57028..70d57028 100644
--- a/docs/vpp/configuration/dataplane/rst-logging.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-logging.rst
diff --git a/docs/vpp/configuration/dataplane/rst-memory.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-memory.rst
index c2d74991..c2d74991 100644
--- a/docs/vpp/configuration/dataplane/rst-memory.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-memory.rst
diff --git a/docs/vpp/configuration/dataplane/rst-system.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-system.rst
index 6a2756fd..6a2756fd 100644
--- a/docs/vpp/configuration/dataplane/rst-system.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-system.rst
diff --git a/docs/vpp/configuration/dataplane/rst-unix.rst b/docs/_rst_legacy/vpp/configuration/dataplane/rst-unix.rst
index f31d6381..f31d6381 100644
--- a/docs/vpp/configuration/dataplane/rst-unix.rst
+++ b/docs/_rst_legacy/vpp/configuration/dataplane/rst-unix.rst
diff --git a/docs/vpp/configuration/interfaces/rst-bonding.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-bonding.rst
index 25ff6f40..25ff6f40 100644
--- a/docs/vpp/configuration/interfaces/rst-bonding.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-bonding.rst
diff --git a/docs/vpp/configuration/interfaces/rst-bridge.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-bridge.rst
index 0b72d77f..0b72d77f 100644
--- a/docs/vpp/configuration/interfaces/rst-bridge.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-bridge.rst
diff --git a/docs/vpp/configuration/interfaces/rst-gre.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-gre.rst
index e7fd9abc..e7fd9abc 100644
--- a/docs/vpp/configuration/interfaces/rst-gre.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-gre.rst
diff --git a/docs/vpp/configuration/interfaces/rst-index.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-index.rst
index da9bff03..da9bff03 100644
--- a/docs/vpp/configuration/interfaces/rst-index.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-index.rst
diff --git a/docs/vpp/configuration/interfaces/rst-ipip.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-ipip.rst
index 4ad21c41..4ad21c41 100644
--- a/docs/vpp/configuration/interfaces/rst-ipip.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-ipip.rst
diff --git a/docs/vpp/configuration/interfaces/rst-loopback.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-loopback.rst
index 61ef6aca..61ef6aca 100644
--- a/docs/vpp/configuration/interfaces/rst-loopback.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-loopback.rst
diff --git a/docs/vpp/configuration/interfaces/rst-vxlan.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-vxlan.rst
index 85398386..85398386 100644
--- a/docs/vpp/configuration/interfaces/rst-vxlan.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-vxlan.rst
diff --git a/docs/vpp/configuration/interfaces/rst-xconnect.rst b/docs/_rst_legacy/vpp/configuration/interfaces/rst-xconnect.rst
index 27916a0e..27916a0e 100644
--- a/docs/vpp/configuration/interfaces/rst-xconnect.rst
+++ b/docs/_rst_legacy/vpp/configuration/interfaces/rst-xconnect.rst
diff --git a/docs/vpp/configuration/nat/rst-cgnat.rst b/docs/_rst_legacy/vpp/configuration/nat/rst-cgnat.rst
index 3cef3dce..3cef3dce 100644
--- a/docs/vpp/configuration/nat/rst-cgnat.rst
+++ b/docs/_rst_legacy/vpp/configuration/nat/rst-cgnat.rst
diff --git a/docs/vpp/configuration/nat/rst-index.rst b/docs/_rst_legacy/vpp/configuration/nat/rst-index.rst
index 8946ca3b..8946ca3b 100644
--- a/docs/vpp/configuration/nat/rst-index.rst
+++ b/docs/_rst_legacy/vpp/configuration/nat/rst-index.rst
diff --git a/docs/vpp/configuration/nat/rst-nat44.rst b/docs/_rst_legacy/vpp/configuration/nat/rst-nat44.rst
index 9f736f76..9f736f76 100644
--- a/docs/vpp/configuration/nat/rst-nat44.rst
+++ b/docs/_rst_legacy/vpp/configuration/nat/rst-nat44.rst
diff --git a/docs/vpp/configuration/rst-acl.rst b/docs/_rst_legacy/vpp/configuration/rst-acl.rst
index 9aaacb3a..9aaacb3a 100644
--- a/docs/vpp/configuration/rst-acl.rst
+++ b/docs/_rst_legacy/vpp/configuration/rst-acl.rst
diff --git a/docs/vpp/configuration/rst-index.rst b/docs/_rst_legacy/vpp/configuration/rst-index.rst
index 57e860f9..57e860f9 100644
--- a/docs/vpp/configuration/rst-index.rst
+++ b/docs/_rst_legacy/vpp/configuration/rst-index.rst
diff --git a/docs/vpp/configuration/rst-ipfix.rst b/docs/_rst_legacy/vpp/configuration/rst-ipfix.rst
index 92c734be..92c734be 100644
--- a/docs/vpp/configuration/rst-ipfix.rst
+++ b/docs/_rst_legacy/vpp/configuration/rst-ipfix.rst
diff --git a/docs/vpp/configuration/rst-ipsec.rst b/docs/_rst_legacy/vpp/configuration/rst-ipsec.rst
index a15000cb..a15000cb 100644
--- a/docs/vpp/configuration/rst-ipsec.rst
+++ b/docs/_rst_legacy/vpp/configuration/rst-ipsec.rst
diff --git a/docs/vpp/configuration/rst-sflow.rst b/docs/_rst_legacy/vpp/configuration/rst-sflow.rst
index 2ecb0f7d..2ecb0f7d 100644
--- a/docs/vpp/configuration/rst-sflow.rst
+++ b/docs/_rst_legacy/vpp/configuration/rst-sflow.rst
diff --git a/docs/vpp/rst-description.rst b/docs/_rst_legacy/vpp/rst-description.rst
index 8481bfe9..8481bfe9 100644
--- a/docs/vpp/rst-description.rst
+++ b/docs/_rst_legacy/vpp/rst-description.rst
diff --git a/docs/vpp/rst-index.rst b/docs/_rst_legacy/vpp/rst-index.rst
index e483cb98..e483cb98 100644
--- a/docs/vpp/rst-index.rst
+++ b/docs/_rst_legacy/vpp/rst-index.rst
diff --git a/docs/vpp/rst-limitations.rst b/docs/_rst_legacy/vpp/rst-limitations.rst
index 58360ccc..58360ccc 100644
--- a/docs/vpp/rst-limitations.rst
+++ b/docs/_rst_legacy/vpp/rst-limitations.rst
diff --git a/docs/vpp/rst-requirements.rst b/docs/_rst_legacy/vpp/rst-requirements.rst
index edecc5fd..edecc5fd 100644
--- a/docs/vpp/rst-requirements.rst
+++ b/docs/_rst_legacy/vpp/rst-requirements.rst
diff --git a/docs/vpp/rst-troubleshooting.rst b/docs/_rst_legacy/vpp/rst-troubleshooting.rst
index 747f9772..747f9772 100644
--- a/docs/vpp/rst-troubleshooting.rst
+++ b/docs/_rst_legacy/vpp/rst-troubleshooting.rst
diff --git a/docs/_rst_overrides.txt b/docs/_rst_overrides.txt
deleted file mode 100644
index 82df65b0..00000000
--- a/docs/_rst_overrides.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# RST override list
-# One page stem per line (relative to docs/, no extension)
-# Pages listed here will render from rst-<stem>.rst INSTEAD of <stem>.md at build time.
-#
-# Default behaviour: every page builds from its .md primary. Add a stem here
-# only if you specifically want the legacy RST version to render for that page.
-# Initially empty — MD is canonical for all migrated pages.
diff --git a/docs/conf.py b/docs/conf.py
index ea3c5b61..8c76c43c 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -13,6 +13,7 @@
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
+import pathlib
import shutil
import sys
sys.path.append(os.path.abspath("./_ext"))
@@ -98,16 +99,9 @@ gettext_uuid = False
# This pattern also affects html_static_path and html_extra_path .
exclude_patterns = [
u'_build', 'Thumbs.db', '.DS_Store', '_include/vyos-1x',
- 'rst-*.rst', '**/rst-*.rst',
+ '_rst_legacy',
]
-import pathlib
-_build = pathlib.Path(__file__).parent / '_build'
-if (_build / '_rst_override_state.json').exists() and (_build / '_md_exclude.txt').exists():
- exclude_patterns.extend(
- s for s in (line.strip() for line in (_build / '_md_exclude.txt').read_text().splitlines()) if s
- )
-
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
diff --git a/scripts/swap_sources.py b/scripts/swap_sources.py
deleted file mode 100644
index 8a03085e..00000000
--- a/scripts/swap_sources.py
+++ /dev/null
@@ -1,344 +0,0 @@
-#!/usr/bin/env python3
-"""swap_sources.py — Pre-build swap/restore for the RST override mechanism.
-
-In this repo MD is the canonical source for migrated pages. RST kept around
-under the ``rst-<stem>.rst`` prefix is a *fallback* — only consulted when a
-page is explicitly listed in ``docs/_rst_overrides.txt`` to revert to the
-legacy RST rendering.
-
-This script flips the source files in place at build time so Sphinx renders
-the RST instead of the MD for the listed stems, then restores everything
-after the build.
-
-Usage
------
- python scripts/swap_sources.py --swap # activate RST overrides
- python scripts/swap_sources.py --restore # undo activated overrides
- python scripts/swap_sources.py --dry-run # show what would be activated
- python scripts/swap_sources.py --status # show current state
- python scripts/swap_sources.py --swap --docs-dir /path/to/docs
-
-The ``--swap`` flag name is kept for backward compatibility with the Makefile
-and Read the Docs config; semantically it now applies RST overrides.
-
-Override list
--------------
- docs/_rst_overrides.txt — one stem per line, relative to docs/, comments
- (#) skipped. Pages listed here render from rst-<stem>.rst instead of
- <stem>.md at build time.
-
-State files (in docs/_build/, gitignored)
------------------------------------------
- _rst_override_state.json — records completed RST activations
- _md_exclude.txt — MD source paths to pass to Sphinx exclude_patterns
-"""
-
-import argparse
-import json
-import os
-import sys
-from pathlib import Path
-
-
-# ---------------------------------------------------------------------------
-# Constants
-# ---------------------------------------------------------------------------
-
-STATE_FILE = "_rst_override_state.json"
-EXCLUDE_FILE = "_md_exclude.txt"
-OVERRIDE_LIST_FILE = "_rst_overrides.txt"
-STATE_VERSION = 2 # bumped from 1 when the swap direction was inverted
-
-
-# ---------------------------------------------------------------------------
-# Core helpers
-# ---------------------------------------------------------------------------
-
-def parse_override_list(path: Path) -> list:
- """Read *path* and return a list of stems (comments/blanks skipped).
-
- Returns [] if the file does not exist.
- """
- if not path.exists():
- return []
- stems = []
- for line in path.read_text(encoding="utf-8").splitlines():
- stripped = line.strip()
- if stripped and not stripped.startswith("#"):
- stems.append(stripped)
- return stems
-
-
-def _build_dir(docs_dir: Path) -> Path:
- build = docs_dir / "_build"
- build.mkdir(parents=True, exist_ok=True)
- return build
-
-
-def _state_path(docs_dir: Path) -> Path:
- return docs_dir / "_build" / STATE_FILE
-
-
-def _exclude_path(docs_dir: Path) -> Path:
- return docs_dir / "_build" / EXCLUDE_FILE
-
-
-def _resolve_stem_paths(docs_dir: Path, stem: str):
- """Return (rst_from, rst_to, md_path) as absolute Paths for a given stem."""
- p = Path(stem)
- name = p.name
- parent = p.parent # may be PosixPath('.')
- if str(parent) == ".":
- target_dir = docs_dir
- else:
- target_dir = docs_dir / parent
-
- rst_from = target_dir / f"rst-{name}.rst" # source: rst-prefixed
- rst_to = target_dir / f"{name}.rst" # destination: plain .rst
- md_path = target_dir / f"{name}.md" # MD that will be excluded
- return rst_from, rst_to, md_path
-
-
-# ---------------------------------------------------------------------------
-# do_swap (apply RST overrides)
-# ---------------------------------------------------------------------------
-
-def do_swap(docs_dir: Path) -> None:
- """Rename rst-{name}.rst → {name}.rst for each stem in _rst_overrides.txt.
-
- The matching <stem>.md is recorded in _md_exclude.txt so Sphinx ignores it
- during the build. Validates collisions, records state, writes exclude file.
- Rolls back all completed renames on any failure.
- """
- docs_dir = Path(docs_dir)
- override_list = parse_override_list(docs_dir / OVERRIDE_LIST_FILE)
- if not override_list:
- print("swap_sources: no stems in override list, nothing to do.", file=sys.stderr)
- return
-
- # Stale state: warn and auto-restore first
- state_path = _state_path(docs_dir)
- if state_path.exists():
- print(
- "swap_sources: WARNING — stale override state detected. Auto-restoring before re-applying.",
- file=sys.stderr,
- )
- do_restore(docs_dir)
-
- # Validate all stems before touching the filesystem
- planned = [] # list of (rst_from, rst_to, md_path, stem)
- for stem in override_list:
- rst_from, rst_to, md_path = _resolve_stem_paths(docs_dir, stem)
-
- if not rst_from.exists():
- print(
- f"swap_sources: skipping {stem!r} — rst- source file not found: {rst_from}",
- file=sys.stderr,
- )
- continue
-
- if not md_path.exists():
- print(
- f"swap_sources: skipping {stem!r} — MD file not found: {md_path}",
- file=sys.stderr,
- )
- continue
-
- if rst_to.exists():
- raise RuntimeError(
- f"collision: both rst- and unprefixed .rst exist for stem {stem!r}. "
- f"Remove {rst_to} before applying the override."
- )
-
- planned.append((rst_from, rst_to, md_path, stem))
-
- # Execute renames with rollback on failure
- completed = [] # list of (rst_from, rst_to) that succeeded
- try:
- for rst_from, rst_to, md_path, stem in planned:
- os.rename(rst_from, rst_to)
- completed.append((rst_from, rst_to))
- except Exception as exc:
- # Rollback completed renames in reverse order
- for from_path, to_path in reversed(completed):
- try:
- os.rename(to_path, from_path)
- except Exception as rollback_exc:
- print(
- f"swap_sources: ROLLBACK ERROR for {to_path}: {rollback_exc}",
- file=sys.stderr,
- )
- raise RuntimeError(f"swap_sources: rename failed, rolled back. Cause: {exc}") from exc
-
- if not completed:
- return
-
- # Build state and exclude data using relative paths (relative to docs_dir)
- _build_dir(docs_dir)
- overrides = []
- exclude_lines = []
- for rst_from, rst_to, md_path, stem in planned:
- rel_from = rst_from.relative_to(docs_dir)
- rel_to = rst_to.relative_to(docs_dir)
- rel_md = md_path.relative_to(docs_dir)
- overrides.append({
- "stem": stem,
- "rst_from": str(rel_from),
- "rst_to": str(rel_to),
- "md_excluded": str(rel_md),
- })
- exclude_lines.append(str(rel_md))
-
- state = {"version": STATE_VERSION, "overrides": overrides}
- state_path.write_text(json.dumps(state, indent=2), encoding="utf-8")
- _exclude_path(docs_dir).write_text("\n".join(exclude_lines) + "\n", encoding="utf-8")
-
- print(f"swap_sources: applied {len(completed)} RST override(s).", file=sys.stderr)
-
-
-# ---------------------------------------------------------------------------
-# do_restore
-# ---------------------------------------------------------------------------
-
-def do_restore(docs_dir: Path) -> None:
- """Undo all renames recorded in _rst_override_state.json (reverse order)."""
- docs_dir = Path(docs_dir)
- state_path = _state_path(docs_dir)
-
- if not state_path.exists():
- return # no-op
-
- try:
- state = json.loads(state_path.read_text(encoding="utf-8"))
- except (json.JSONDecodeError, OSError) as exc:
- raise RuntimeError(
- f"swap_sources: cannot read state file {state_path}: {exc}. "
- f"Inspect or delete it manually."
- ) from exc
-
- version = state.get("version")
- if version != STATE_VERSION:
- raise RuntimeError(
- f"swap_sources: state file version {version!r} does not match "
- f"expected {STATE_VERSION!r}. Inspect {state_path} manually."
- )
-
- overrides = state.get("overrides", [])
-
- for entry in reversed(overrides):
- if not isinstance(entry, dict) or "rst_from" not in entry or "rst_to" not in entry:
- raise RuntimeError(
- f"swap_sources: malformed entry in {state_path}: {entry!r}. "
- f"Inspect manually."
- )
- rst_from = docs_dir / entry["rst_from"] # original source (rst-prefixed)
- rst_to = docs_dir / entry["rst_to"] # current location (plain .rst)
- if rst_to.exists():
- os.rename(rst_to, rst_from)
- else:
- print(
- f"swap_sources: WARNING — expected overridden file not found: {rst_to}",
- file=sys.stderr,
- )
-
- # Clean up state and exclude files
- state_path.unlink(missing_ok=True)
- exclude_path = _exclude_path(docs_dir)
- exclude_path.unlink(missing_ok=True)
-
- print(f"swap_sources: restored {len(overrides)} RST override(s).", file=sys.stderr)
-
-
-# ---------------------------------------------------------------------------
-# do_dry_run / do_status
-# ---------------------------------------------------------------------------
-
-def do_dry_run(docs_dir: Path) -> None:
- """Print what would be activated without making any changes."""
- docs_dir = Path(docs_dir)
- override_list = parse_override_list(docs_dir / OVERRIDE_LIST_FILE)
- if not override_list:
- print("(dry-run) No stems in override list.")
- return
-
- for stem in override_list:
- rst_from, rst_to, md_path = _resolve_stem_paths(docs_dir, stem)
- issues = []
- if not rst_from.exists():
- issues.append("rst- source missing")
- if not md_path.exists():
- issues.append("MD missing")
- if rst_to.exists():
- issues.append("COLLISION: plain .rst already exists")
- if issues:
- print(f" SKIP {stem}: {', '.join(issues)}")
- else:
- rel_dir = rst_from.parent.relative_to(docs_dir) if rst_from.parent != docs_dir else "."
- print(f" APPLY {rst_from.name} → {rst_to.name} (in {rel_dir})")
-
-
-def do_status(docs_dir: Path) -> None:
- """Show current override state."""
- docs_dir = Path(docs_dir)
- state_path = _state_path(docs_dir)
- if not state_path.exists():
- print("swap_sources: no active RST overrides.")
- return
-
- state = json.loads(state_path.read_text(encoding="utf-8"))
- overrides = state.get("overrides", [])
- print(f"swap_sources: {len(overrides)} RST override(s) currently active:")
- for entry in overrides:
- print(f" {entry['rst_from']} → {entry['rst_to']} (excludes {entry['md_excluded']})")
-
-
-# ---------------------------------------------------------------------------
-# CLI
-# ---------------------------------------------------------------------------
-
-def main(argv=None):
- parser = argparse.ArgumentParser(
- description="Activate rst-prefixed RST files as the build source for stems "
- "listed in docs/_rst_overrides.txt."
- )
- group = parser.add_mutually_exclusive_group(required=True)
- group.add_argument("--swap", action="store_true",
- help="Apply RST overrides (rename rst-<stem>.rst → <stem>.rst)")
- group.add_argument("--restore", action="store_true",
- help="Restore original files after a previous --swap")
- group.add_argument("--dry-run", action="store_true",
- help="Show what would be applied")
- group.add_argument("--status", action="store_true",
- help="Show current override state")
-
- parser.add_argument(
- "--docs-dir",
- type=Path,
- default=None,
- help="Path to docs/ directory (default: auto-detected from script location)",
- )
-
- args = parser.parse_args(argv)
-
- if args.docs_dir is None:
- # Default: repo_root/docs where repo_root = parent of scripts/
- repo_root = Path(__file__).resolve().parent.parent
- docs_dir = repo_root / "docs"
- else:
- docs_dir = args.docs_dir.resolve()
-
- if not docs_dir.is_dir():
- parser.error(f"docs directory not found: {docs_dir}")
-
- if args.swap:
- do_swap(docs_dir)
- elif args.restore:
- do_restore(docs_dir)
- elif args.dry_run:
- do_dry_run(docs_dir)
- elif args.status:
- do_status(docs_dir)
-
-
-if __name__ == "__main__":
- main()
diff --git a/tests/test_swap_sources.py b/tests/test_swap_sources.py
deleted file mode 100644
index 7e9f68be..00000000
--- a/tests/test_swap_sources.py
+++ /dev/null
@@ -1,245 +0,0 @@
-"""Tests for swap_sources.py — run with:
- cd tests && PYTHONPATH=../scripts python -m pytest test_swap_sources.py -v
-
-In the inverted model MD is the canonical source for migrated pages and RST
-under the ``rst-<stem>.rst`` prefix is a fallback used only for stems listed
-in ``docs/_rst_overrides.txt``. ``do_swap`` activates the override (renames
-``rst-<stem>.rst`` → ``<stem>.rst`` and excludes ``<stem>.md``); ``do_restore``
-undoes that.
-"""
-import json
-import os
-from pathlib import Path
-
-import pytest
-
-
-# ---------------------------------------------------------------------------
-# Helper
-# ---------------------------------------------------------------------------
-
-def _setup_docs(tmp_path: Path, stems: list[str]) -> Path:
- """Create a minimal docs/ tree with MD primary + rst-prefixed RST for each stem."""
- docs = tmp_path / "docs"
- for stem in stems:
- p = Path(stem)
- name = p.name
- parent = p.parent # may be "." for flat stems
- target_dir = docs / parent if str(parent) != "." else docs
- target_dir.mkdir(parents=True, exist_ok=True)
- # MD file is the canonical source after the flip.
- (target_dir / f"{name}.md").write_text(f"# {name}\nDummy MyST for {stem}\n")
- # rst-prefixed RST file waiting to be activated as an override.
- (target_dir / f"rst-{name}.rst").write_text(f".. _{name}:\n\nDummy RST for {stem}\n")
- return docs
-
-
-# ---------------------------------------------------------------------------
-# parse_override_list
-# ---------------------------------------------------------------------------
-
-def test_parse_override_list_basic(tmp_path):
- from swap_sources import parse_override_list
-
- overrides_txt = tmp_path / "_rst_overrides.txt"
- overrides_txt.write_text(
- "# comment\n"
- "\n"
- "configuration/firewall/zone\n"
- " quick-start \n" # leading/trailing whitespace
- "# another comment\n"
- "installation/virtual/vmware\n"
- )
- stems = parse_override_list(overrides_txt)
- assert stems == [
- "configuration/firewall/zone",
- "quick-start",
- "installation/virtual/vmware",
- ]
-
-
-def test_parse_override_list_empty(tmp_path):
- from swap_sources import parse_override_list
-
- missing = tmp_path / "_rst_overrides.txt"
- assert parse_override_list(missing) == []
-
-
-# ---------------------------------------------------------------------------
-# do_swap (apply RST overrides)
-# ---------------------------------------------------------------------------
-
-def test_swap_renames_files(tmp_path):
- from swap_sources import do_swap
-
- stems = ["quick-start"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\n")
-
- do_swap(docs)
-
- assert (docs / "quick-start.rst").exists(), "rst- file should be renamed to plain .rst"
- assert not (docs / "rst-quick-start.rst").exists(), "rst- prefix file should be gone"
- assert (docs / "quick-start.md").exists(), "MD file should still exist (just excluded)"
-
-
-def test_swap_creates_state_file(tmp_path):
- from swap_sources import do_swap
-
- stems = ["quick-start"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\n")
-
- do_swap(docs)
-
- state_file = docs / "_build" / "_rst_override_state.json"
- assert state_file.exists(), "state file should be created in _build/"
-
- state = json.loads(state_file.read_text())
- assert state["version"] == 2
- assert len(state["overrides"]) == 1
-
- entry = state["overrides"][0]
- assert entry["stem"] == "quick-start"
- assert "rst_from" in entry
- assert "rst_to" in entry
- assert "md_excluded" in entry
-
-
-def test_swap_creates_exclude_file(tmp_path):
- from swap_sources import do_swap
-
- stems = ["quick-start"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\n")
-
- do_swap(docs)
-
- exclude_file = docs / "_build" / "_md_exclude.txt"
- assert exclude_file.exists(), "exclude file should be created in _build/"
-
- lines = [l.strip() for l in exclude_file.read_text().splitlines() if l.strip()]
- assert "quick-start.md" in lines
-
-
-# ---------------------------------------------------------------------------
-# do_restore
-# ---------------------------------------------------------------------------
-
-def test_restore_undoes_renames(tmp_path):
- from swap_sources import do_restore, do_swap
-
- stems = ["quick-start"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\n")
-
- do_swap(docs)
- assert (docs / "quick-start.rst").exists()
-
- do_restore(docs)
-
- assert (docs / "rst-quick-start.rst").exists(), "rst- prefix file should be restored"
- assert not (docs / "quick-start.rst").exists(), "plain .rst should be gone after restore"
- assert (docs / "quick-start.md").exists(), "MD file should remain untouched throughout"
-
- state_file = docs / "_build" / "_rst_override_state.json"
- exclude_file = docs / "_build" / "_md_exclude.txt"
- assert not state_file.exists(), "state file should be deleted after restore"
- assert not exclude_file.exists(), "exclude file should be deleted after restore"
-
-
-def test_restore_noop_without_state(tmp_path):
- from swap_sources import do_restore
-
- docs = tmp_path / "docs"
- docs.mkdir()
- # Should not raise even with no state file
- do_restore(docs) # no error = pass
-
-
-# ---------------------------------------------------------------------------
-# Collision / validation
-# ---------------------------------------------------------------------------
-
-def test_swap_fails_on_collision(tmp_path):
- from swap_sources import do_swap
-
- stems = ["quick-start", "cli"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\ncli\n")
-
- # Simulate a collision: unprefixed .rst already exists for "cli"
- (docs / "cli.rst").write_text(".. _cli:\nCollision RST\n")
-
- with pytest.raises(RuntimeError, match="collision"):
- do_swap(docs)
-
- # Rollback: first stem's rename should be undone
- assert (docs / "rst-quick-start.rst").exists(), "rollback should undo completed renames"
- assert not (docs / "quick-start.rst").exists(), "renamed file should not exist after rollback"
-
- # State file should NOT be written on failure
- state_file = docs / "_build" / "_rst_override_state.json"
- assert not state_file.exists(), "no state file should be written on failure"
-
-
-# ---------------------------------------------------------------------------
-# Rollback on rename failure (monkeypatched os.rename)
-# ---------------------------------------------------------------------------
-
-def test_swap_rollback_on_rename_failure(tmp_path, monkeypatch):
- """If os.rename raises on the second call, the first rename must be undone."""
- from swap_sources import do_swap
-
- stems = ["quick-start", "cli"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("quick-start\ncli\n")
-
- call_count = {"n": 0}
- real_rename = os.rename
-
- def failing_rename(src, dst):
- call_count["n"] += 1
- if call_count["n"] == 2:
- raise OSError("simulated rename failure")
- real_rename(src, dst)
-
- monkeypatch.setattr(os, "rename", failing_rename)
-
- with pytest.raises(RuntimeError):
- do_swap(docs)
-
- # First rename (quick-start) should have been rolled back
- assert (docs / "rst-quick-start.rst").exists(), "rollback should undo the first rename"
- assert not (docs / "quick-start.rst").exists(), "renamed file should not exist after rollback"
-
- # No state file should exist
- assert not (docs / "_build" / "_rst_override_state.json").exists()
-
-
-# ---------------------------------------------------------------------------
-# Nested paths
-# ---------------------------------------------------------------------------
-
-def test_swap_nested_paths(tmp_path):
- from swap_sources import do_swap, do_restore
-
- stems = ["configuration/firewall/zone"]
- docs = _setup_docs(tmp_path, stems)
- (docs / "_rst_overrides.txt").write_text("configuration/firewall/zone\n")
-
- do_swap(docs)
-
- activated = docs / "configuration" / "firewall" / "zone.rst"
- rst_source = docs / "configuration" / "firewall" / "rst-zone.rst"
- assert activated.exists(), "nested rst file should be renamed"
- assert not rst_source.exists()
-
- exclude_file = docs / "_build" / "_md_exclude.txt"
- lines = [l.strip() for l in exclude_file.read_text().splitlines() if l.strip()]
- assert "configuration/firewall/zone.md" in lines
-
- do_restore(docs)
-
- assert rst_source.exists(), "nested rst- file should be restored"
- assert not activated.exists()