generate_config: Add netmask jinja filter 89/50689/5
authorGuillermo Herrero <guillermo.herrero@enea.com>
Tue, 16 Jan 2018 11:03:19 +0000 (12:03 +0100)
committerGuillermo Herrero <guillermo.herrero@enea.com>
Thu, 18 Jan 2018 13:04:36 +0000 (14:04 +0100)
- Add custom filter to convert integer prefix network
  mask to IP format network mask string

Change-Id: I13d6a2725b93132f858b64d7f93de3a4e0dc5961
Signed-off-by: Guillermo Herrero <guillermo.herrero@enea.com>
config/utils/generate_config.py

index cf558e2..4e0d893 100755 (executable)
@@ -39,6 +39,15 @@ def ipaddr_index(base_address, index):
         base_address_str = str(base_address)
     return ipaddress.ip_address(base_address_str) + int(index)
 
+# Custom filter to transform a prefix netmask to IP address format netmask
+def netmask(prefix):
+    """Get netmask from prefix length integer"""
+    try:
+        prefix_str = unicode(prefix)
+    except NameError as ex:
+        prefix_str = str(prefix)
+    return ipaddress.IPv4Network("1.0.0.0/"+prefix_str).netmask
+
 # Custom filter to convert between processor architecture
 # (as reported by $(uname -m)) and DPKG-style architecture
 def dpkg_arch(arch, to_dpkg=True):
@@ -50,6 +59,7 @@ def dpkg_arch(arch, to_dpkg=True):
 
 ENV = Environment(loader=FileSystemLoader(os.path.dirname(ARGS.jinja2)))
 ENV.filters['ipaddr_index'] = ipaddr_index
+ENV.filters['netmask'] = netmask
 ENV.filters['dpkg_arch'] = dpkg_arch
 
 # Run `eyaml decrypt` on the whole file, but only if PDF data is encrypted