diff options
14 files changed, 74 insertions, 26 deletions
| diff --git a/data/config-mode-dependencies/vyos-1x.json b/data/config-mode-dependencies/vyos-1x.json index 2981a0851..cbd14f7c6 100644 --- a/data/config-mode-dependencies/vyos-1x.json +++ b/data/config-mode-dependencies/vyos-1x.json @@ -26,10 +26,10 @@      "pki": {          "ethernet": ["interfaces_ethernet"],          "openvpn": ["interfaces_openvpn"], +        "haproxy": ["load-balancing_haproxy"],          "https": ["service_https"],          "ipsec": ["vpn_ipsec"],          "openconnect": ["vpn_openconnect"], -        "reverse_proxy": ["load-balancing_reverse-proxy"],          "rpki": ["protocols_rpki"],          "sstp": ["vpn_sstp"],          "sstpc": ["interfaces_sstpc"], diff --git a/data/op-mode-standardized.json b/data/op-mode-standardized.json index baa1e9110..35587b63c 100644 --- a/data/op-mode-standardized.json +++ b/data/op-mode-standardized.json @@ -25,7 +25,7 @@  "otp.py",  "qos.py",  "reset_vpn.py", -"reverseproxy.py", +"load-balancing_haproxy.py",  "route.py",  "storage.py",  "system.py", diff --git a/data/templates/load-balancing/haproxy.cfg.j2 b/data/templates/load-balancing/haproxy.cfg.j2 index 5137966c1..786ebfb21 100644 --- a/data/templates/load-balancing/haproxy.cfg.j2 +++ b/data/templates/load-balancing/haproxy.cfg.j2 @@ -1,4 +1,4 @@ -### Autogenerated by load-balancing_reverse-proxy.py ### +### Autogenerated by load-balancing_haproxy.py ###  global      chroot /var/lib/haproxy diff --git a/debian/control b/debian/control index 15fb5d72e..20cfcdc43 100644 --- a/debian/control +++ b/debian/control @@ -202,9 +202,9 @@ Depends:  # For "service router-advert"    radvd,  # End "service route-advert" -# For "load-balancing reverse-proxy" +# For "load-balancing haproxy"    haproxy, -# End "load-balancing reverse-proxy" +# End "load-balancing haproxy"  # For "load-balancing wan"    vyatta-wanloadbalance,  # End "load-balancing wan" diff --git a/interface-definitions/include/version/reverseproxy-version.xml.i b/interface-definitions/include/version/reverseproxy-version.xml.i index 907ea1e5e..4f09f2848 100644 --- a/interface-definitions/include/version/reverseproxy-version.xml.i +++ b/interface-definitions/include/version/reverseproxy-version.xml.i @@ -1,3 +1,3 @@  <!-- include start from include/version/reverseproxy-version.xml.i --> -<syntaxVersion component='reverse-proxy' version='1'></syntaxVersion> +<syntaxVersion component='reverse-proxy' version='2'></syntaxVersion>  <!-- include end --> diff --git a/interface-definitions/load-balancing_reverse-proxy.xml.in b/interface-definitions/load-balancing_haproxy.xml.in index 18274622c..742272436 100644 --- a/interface-definitions/load-balancing_reverse-proxy.xml.in +++ b/interface-definitions/load-balancing_haproxy.xml.in @@ -2,9 +2,9 @@  <interfaceDefinition>    <node name="load-balancing">      <children> -      <node name="reverse-proxy" owner="${vyos_conf_scripts_dir}/load-balancing_reverse-proxy.py"> +      <node name="haproxy" owner="${vyos_conf_scripts_dir}/load-balancing_haproxy.py">          <properties> -          <help>Configure reverse-proxy</help> +          <help>Configure haproxy</help>            <priority>900</priority>          </properties>          <children> @@ -26,10 +26,10 @@                    <constraintErrorMessage>Backend name must be alphanumeric and can contain hyphen and underscores</constraintErrorMessage>                    <valueHelp>                      <format>txt</format> -                    <description>Name of reverse-proxy backend system</description> +                    <description>Name of haproxy backend system</description>                    </valueHelp>                    <completionHelp> -                    <path>load-balancing reverse-proxy backend</path> +                    <path>load-balancing haproxy backend</path>                    </completionHelp>                    <multi/>                  </properties> diff --git a/op-mode-definitions/reverse-proxy.xml.in b/op-mode-definitions/load-balacing_haproxy.in index b45ce107f..c3d6c799b 100644 --- a/op-mode-definitions/reverse-proxy.xml.in +++ b/op-mode-definitions/load-balacing_haproxy.in @@ -2,21 +2,21 @@  <interfaceDefinition>    <node name="restart">      <children> -      <node name="reverse-proxy"> +      <node name="haproxy">          <properties> -          <help>Restart reverse-proxy service</help> +          <help>Restart haproxy service</help>          </properties> -        <command>sudo ${vyos_op_scripts_dir}/restart.py restart_service --name reverse_proxy</command> +        <command>sudo ${vyos_op_scripts_dir}/restart.py restart_service --name haproxy</command>        </node>      </children>    </node>    <node name="show">      <children> -      <node name="reverse-proxy"> +      <node name="haproxy">          <properties> -          <help>Show load-balancing reverse-proxy</help> +          <help>Show load-balancing haproxy</help>          </properties> -        <command>sudo ${vyos_op_scripts_dir}/reverseproxy.py show</command> +        <command>sudo ${vyos_op_scripts_dir}/load-balacing_haproxy.py show</command>        </node>      </children>    </node> diff --git a/smoketest/configs/basic-vyos b/smoketest/configs/basic-vyos index e95d7458f..242f3d1de 100644 --- a/smoketest/configs/basic-vyos +++ b/smoketest/configs/basic-vyos @@ -32,6 +32,27 @@ interfaces {      loopback lo {      }  } +load-balancing { +    reverse-proxy { +        backend bk-01 { +            balance "round-robin" +            mode "tcp" +            server srv01 { +                address "192.0.2.11" +                port "8881" +            } +            server srv02 { +                address "192.0.2.12" +                port "8882" +            } +        } +        service my-tcp-api { +            backend "bk-01" +            mode "tcp" +            port "8888" +        } +    } +}  protocols {      static {          arp 192.168.0.20 { diff --git a/smoketest/scripts/cli/test_load-balancing_reverse-proxy.py b/smoketest/scripts/cli/test_load-balancing_haproxy.py index 34f77b95d..967eb3869 100755 --- a/smoketest/scripts/cli/test_load-balancing_reverse-proxy.py +++ b/smoketest/scripts/cli/test_load-balancing_haproxy.py @@ -24,7 +24,7 @@ from vyos.utils.file import read_file  PROCESS_NAME = 'haproxy'  HAPROXY_CONF = '/run/haproxy/haproxy.cfg' -base_path = ['load-balancing', 'reverse-proxy'] +base_path = ['load-balancing', 'haproxy']  proxy_interface = 'eth1'  valid_ca_cert = """ diff --git a/src/conf_mode/load-balancing_reverse-proxy.py b/src/conf_mode/load-balancing_haproxy.py index 17226efe9..45042dd52 100755..100644 --- a/src/conf_mode/load-balancing_reverse-proxy.py +++ b/src/conf_mode/load-balancing_haproxy.py @@ -48,7 +48,7 @@ def get_config(config=None):      else:          conf = Config() -    base = ['load-balancing', 'reverse-proxy'] +    base = ['load-balancing', 'haproxy']      if not conf.exists(base):          return None      lb = conf.get_config_dict(base, diff --git a/src/conf_mode/pki.py b/src/conf_mode/pki.py index 233d73ba8..45e0129a3 100755 --- a/src/conf_mode/pki.py +++ b/src/conf_mode/pki.py @@ -71,7 +71,7 @@ sync_search = [      },      {          'keys': ['certificate', 'ca_certificate'], -        'path': ['load_balancing', 'reverse_proxy'], +        'path': ['load_balancing', 'haproxy'],      },      {          'keys': ['key'], diff --git a/src/migration-scripts/reverse-proxy/1-to-2 b/src/migration-scripts/reverse-proxy/1-to-2 new file mode 100755 index 000000000..61612bc36 --- /dev/null +++ b/src/migration-scripts/reverse-proxy/1-to-2 @@ -0,0 +1,27 @@ +# Copyright 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/>. + +# T6745: Rename base node to haproxy + +from vyos.configtree import ConfigTree + +base = ['load-balancing', 'reverse-proxy'] + +def migrate(config: ConfigTree) -> None: +    if not config.exists(base): +        # Nothing to do +        return + +    config.rename(base, 'haproxy') diff --git a/src/op_mode/reverseproxy.py b/src/op_mode/load-balancing_haproxy.py index 19704182a..ae6734e16 100755 --- a/src/op_mode/reverseproxy.py +++ b/src/op_mode/load-balancing_haproxy.py @@ -217,8 +217,8 @@ def _get_formatted_output(data):  def show(raw: bool):      config = ConfigTreeQuery() -    if not config.exists('load-balancing reverse-proxy'): -        raise vyos.opmode.UnconfiguredSubsystem('Reverse-proxy is not configured') +    if not config.exists('load-balancing haproxy'): +        raise vyos.opmode.UnconfiguredSubsystem('Haproxy is not configured')      data = _get_raw_data()      if raw: diff --git a/src/op_mode/restart.py b/src/op_mode/restart.py index a83c8b9d8..3b0031f34 100755 --- a/src/op_mode/restart.py +++ b/src/op_mode/restart.py @@ -41,6 +41,10 @@ service_map = {          'systemd_service': 'pdns-recursor',          'path': ['service', 'dns', 'forwarding'],      }, +    'haproxy': { +        'systemd_service': 'haproxy', +        'path': ['load-balancing', 'haproxy'], +    },      'igmp_proxy': {          'systemd_service': 'igmpproxy',          'path': ['protocols', 'igmp-proxy'], @@ -53,10 +57,6 @@ service_map = {          'systemd_service': 'avahi-daemon',          'path': ['service', 'mdns', 'repeater'],      }, -    'reverse_proxy': { -        'systemd_service': 'haproxy', -        'path': ['load-balancing', 'reverse-proxy'], -    },      'router_advert': {          'systemd_service': 'radvd',          'path': ['service', 'router-advert'], @@ -83,10 +83,10 @@ services = typing.Literal[      'dhcpv6',      'dns_dynamic',      'dns_forwarding', +    'haproxy',      'igmp_proxy',      'ipsec',      'mdns_repeater', -    'reverse_proxy',      'router_advert',      'snmp',      'ssh', | 
