|
- {# Macro, put quotation marks around strings that are not ipv4 address #}
- {%- macro quote_if_not_ip(var) -%}
- {%- set var_split_str = var.split(".") -%}
- {%- if var_split_str|length == 4 -%}
- {%- set var_is_ipaddr = True -%}
- {%- for octet in var_split_str -%}
- {%- if not octet|int in range(255) -%}
- {%- set var_is_ipaddr = False -%}
- {%- endif -%}
- {%- endfor -%}
- {%- endif -%}
- {%- if var_is_ipaddr is defined and var_is_ipaddr == True -%}
- {{ var }}
- {%- else -%}
- "{{ var }}"
- {%- endif -%}
- {%- endmacro -%}
-
- {# Macro, renders nested options for specific key #}
- {%- macro render_key(section, key) -%}
- {%- if section.get(key) and section.get(key)|length > 0 %}
- {%- for item in section.get(key) %}
- {%- if item.declaration is string %}
- {{ key }} {{ item.option }} {{ quote_if_not_ip(item.declaration) }};
- {%- elif item.declaration is sequence %}
- {{ key }} {{ item.option }}
- {%- for value in item.declaration -%}
- {%- set space = " " -%}
- {{ space }}{{ quote_if_not_ip(value) }}
- {%- if not loop.last -%},{%- endif -%}
- {%- endfor -%}
- ;
- {%- else %}
- {{ key }} {{ item.option }} {{ item.declaration }};
- {%- endif -%}
- {%- endfor -%}
- {%- endif -%}
- {%- endmacro -%}
-
- {# Macro, renders set of options for global section or for interface section #}
- {%- macro render_section(section) -%}
- {%- if section.backoff_cutoff is defined %}
- backoff-cutoff {{ section.backoff_cutoff|default(15, true) }};
- {%- endif -%}
-
- {%- if section.initial_interval is defined %}
- initial-interval {{ section.initial_interval|default(10, true) }};
- {%- endif -%}
-
- {%- if section.reboot is defined %}
- # The reboot statement sets the time that must elapse after the client
- # first tries to reacquire its old address before it gives up and tries
- # to discover a new address.
- reboot {{ section.reboot|default(10, true) }};
- {%- endif -%}
-
- {%- if section.retry is defined %}
- retry {{ section.retry|default(60, true) }};
- {%- endif -%}
-
- {%- if section.select_timeout is defined %}
- # The select-timeout is the time after the client sends its first lease
- # discovery request at which it stops waiting for offers from servers,
- # assuming that it has received at least one such offer
- select-timeout {{ section.select_timeout|default(0, True) }};
- {%- endif -%}
-
- {%- if section.timeout is defined %}
- timeout {{ section.timeout|default(120, True) }};
- {%- endif -%}
-
- {{ render_key(section, "send") }}
- {{ render_key(section, "supersede") }}
- {{ render_key(section, "prepend") }}
- {{ render_key(section, "append") }}
-
- {%- if section.reject is defined and section.reject|length > 0 %}
- reject {{ section.reject|join(",\n ") }};
- {%- endif %}
-
- {%- if section.request is defined and section.request|length > 0 %}
- request {{ section.request|join(",\n ") }};
- {%- endif %}
-
- {%- if section.require is defined and section.require|length > 0 %}
- require {{ section.require|join(",\n ") }};
- {% endif -%}
- {%- endmacro -%}
-
- {# Actual template start #}
- {%- from "linux/map.jinja" import network with context -%}
- {%- set dhclient = network.get('dhclient', {}) %}
- # dhclient.conf(5) file managed by salt-minion(1)
- # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
- option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
- {{ render_section(dhclient) }}
- {%- if dhclient.get("interface") -%}
- {%- for iface_name, options in dhclient.interface.items() %}
- {%- if network.interface.get(iface_name) and network.interface.get(iface_name).enabled == True
- and network.interface.get(iface_name).proto == 'dhcp' -%}
- interface "{{ iface_name }}" {
- {{ render_section(options)|indent }}
- }
- {%- endif -%}
- {%- endfor %}
- {%- endif -%}
|