diff options
Diffstat (limited to 'src/migration-scripts/dhcp-server/7-to-8')
| -rw-r--r-- | src/migration-scripts/dhcp-server/7-to-8 | 69 | 
1 files changed, 69 insertions, 0 deletions
| diff --git a/src/migration-scripts/dhcp-server/7-to-8 b/src/migration-scripts/dhcp-server/7-to-8 new file mode 100644 index 0000000..7fcb62e --- /dev/null +++ b/src/migration-scripts/dhcp-server/7-to-8 @@ -0,0 +1,69 @@ +# Copyright 2023-2024 VyOS maintainers and contributors <maintainers@vyos.io> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library.  If not, see <http://www.gnu.org/licenses/>. + +# T3316: Migrate to Kea +#        - global-parameters will not function +#        - shared-network-parameters will not function +#        - subnet-parameters will not function +#        - static-mapping-parameters will not function +#        - host-decl-name is on by default, option removed +#        - ping-check no longer supported +#        - failover is default enabled on all subnets that exist on failover servers + +from vyos.configtree import ConfigTree + +base = ['service', 'dhcp-server'] + +def migrate(config: ConfigTree) -> None: +    if not config.exists(base): +        # Nothing to do +        return + +    if config.exists(base + ['host-decl-name']): +        config.delete(base + ['host-decl-name']) + +    if config.exists(base + ['global-parameters']): +        config.delete(base + ['global-parameters']) + +    if config.exists(base + ['shared-network-name']): +        for network in config.list_nodes(base + ['shared-network-name']): +            base_network = base + ['shared-network-name', network] + +            if config.exists(base_network + ['ping-check']): +                config.delete(base_network + ['ping-check']) + +            if config.exists(base_network + ['shared-network-parameters']): +                config.delete(base_network +['shared-network-parameters']) + +            if not config.exists(base_network + ['subnet']): +                continue + +            # Run this for every specified 'subnet' +            for subnet in config.list_nodes(base_network + ['subnet']): +                base_subnet = base_network + ['subnet', subnet] + +                if config.exists(base_subnet + ['enable-failover']): +                    config.delete(base_subnet + ['enable-failover']) + +                if config.exists(base_subnet + ['ping-check']): +                    config.delete(base_subnet + ['ping-check']) + +                if config.exists(base_subnet + ['subnet-parameters']): +                    config.delete(base_subnet + ['subnet-parameters']) + +                if config.exists(base_subnet + ['static-mapping']): +                    for mapping in config.list_nodes(base_subnet + ['static-mapping']): +                        if config.exists(base_subnet + ['static-mapping', mapping, 'static-mapping-parameters']): +                            config.delete(base_subnet + ['static-mapping', mapping, 'static-mapping-parameters']) | 
