diff options
| author | Ryan Harper <ryan.harper@canonical.com> | 2018-12-11 17:24:11 +0000 | 
|---|---|---|
| committer | Server Team CI Bot <josh.powers+server-team-bot@canonical.com> | 2018-12-11 17:24:11 +0000 | 
| commit | 6aef6c7d402b17ebc04516a088a91f8e6ed86510 (patch) | |
| tree | 91b7b816fa74cd67ca9a5c456599db42c4a6fa44 /cloudinit/net/eni.py | |
| parent | a4007d063f96b82545aa678ef2cb472ea3b48b1e (diff) | |
| download | vyos-cloud-init-6aef6c7d402b17ebc04516a088a91f8e6ed86510.tar.gz vyos-cloud-init-6aef6c7d402b17ebc04516a088a91f8e6ed86510.zip | |
net: render 'metric' values in per-subnet routes
It is possible to have a metric value in a per-subnet route.
This is currently missing in all renderers.  Update each
renderer to emit the correct metric value from the config.
LP: #1805871
Diffstat (limited to 'cloudinit/net/eni.py')
| -rw-r--r-- | cloudinit/net/eni.py | 29 | 
1 files changed, 15 insertions, 14 deletions
| diff --git a/cloudinit/net/eni.py b/cloudinit/net/eni.py index c6f631a9..64236320 100644 --- a/cloudinit/net/eni.py +++ b/cloudinit/net/eni.py @@ -371,22 +371,23 @@ class Renderer(renderer.Renderer):              'gateway': 'gw',              'metric': 'metric',          } + +        default_gw = ''          if route['network'] == '0.0.0.0' and route['netmask'] == '0.0.0.0': -            default_gw = " default gw %s" % route['gateway'] -            content.append(up + default_gw + or_true) -            content.append(down + default_gw + or_true) +            default_gw = ' default'          elif route['network'] == '::' and route['prefix'] == 0: -            # ipv6! -            default_gw = " -A inet6 default gw %s" % route['gateway'] -            content.append(up + default_gw + or_true) -            content.append(down + default_gw + or_true) -        else: -            route_line = "" -            for k in ['network', 'netmask', 'gateway', 'metric']: -                if k in route: -                    route_line += " %s %s" % (mapping[k], route[k]) -            content.append(up + route_line + or_true) -            content.append(down + route_line + or_true) +            default_gw = ' -A inet6 default' + +        route_line = '' +        for k in ['network', 'netmask', 'gateway', 'metric']: +            if default_gw and k in ['network', 'netmask']: +                continue +            if k == 'gateway': +                route_line += '%s %s %s' % (default_gw, mapping[k], route[k]) +            elif k in route: +                route_line += ' %s %s' % (mapping[k], route[k]) +        content.append(up + route_line + or_true) +        content.append(down + route_line + or_true)          return content      def _render_iface(self, iface, render_hwaddress=False): | 
