#!/usr/bin/env python3
#
# Format a spec
#

import pscheduler

from validate import spec_max_schema
from validate import spec_is_valid

TEMPLATE='''
{% if _mime_type == 'text/plain' %}

Source ............... {{ unspec(source) }}
Source Node .......... {{ unspec(sourcenode) }}
Destination .......... {{ unspec(dest) }}
Destination Node ..... {{ unspec(destnode) }}
Duration ............. {{ unspec(duration) }}
{% if schema >= 2 -%}
Protocol ............. {{ unspec(protocol) }}
{%- endif %}
Packet Count ......... {{ unspec(packetcount) }}
Packet Interval ...... {{ unspec(packetinterval) }}
Packet Timeout ....... {{ unspec(packettimeout) }}
Packet Padding ....... {{ unspec(packetpadding) }}
Control Port ......... {{ unspec(ctrlport) }}
{%- if dataports is defined %}
Data Ports ........... {{ unspec(dataports.lower) }}-{{ unspec(dataports.upper) }}
{%- else %}
Data Ports ........... {{ unspec(not_specified) }}
{%- endif %}
IP TOS ............... {{ unspec(iptos) }}
IP Version ........... {{ unspec(ipversion) }}
Bucket Width ......... {{ unspec(bucketwidth) }}
Output Raw Packets ... {{ unspec(outputraw) }}
Flip Mode ............ {{ unspec(flip) }}

{% elif _mime_type == 'text/html' %}

<table>
<tr><td>Source</td><td>{{ unspec(source) }}</td></tr>
<tr><td>Source Node</td><td>{{ unspec(sourcenode) }}</td></tr>
<tr><td>Destination</td><td>{{ unspec(dest) }}</td></tr>
<tr><td>Destination Node</td><td>{{ unspec(destnode) }}</td></tr>
<tr><td>Duration</td><td>{{ unspec(duration) }}</td></tr>
<tr><td>Packet Count</td><td>{{ unspec(packetcount) }}</td></tr>
<tr><td>Packet Interval</td><td>{{ unspec(packetinterval) }}</td></tr>
<tr><td>Packet Timeout</td><td>{{ unspec(packettimeout) }}</td></tr>
<tr><td>Packet Padding</td><td>{{ unspec(packetpadding) }}</td></tr>
<tr><td>Control Port</td><td>{{ unspec(ctrlport) }}</td></tr>
{%- if dataports is defined %}
<tr><td>Data Ports</td><td>{{ unspec(dataports.lower) }}-{{ unspec(dataports.upper) }}</td></tr>
{%- else %}
<tr><td>Data Ports</td><td>{{ unspec(not_specified) }}</td></tr>
{%- endif %}
<tr><td>IP TOS</td><td>{{ unspec(iptos) }}</td></tr>
<tr><td>IP Version</td><td>{{ unspec(ipversion) }}</td></tr>
<tr><td>Bucket Width</td><td>{{ unspec(bucketwidth) }}</td></tr>
<tr><td>Output Raw Packets</td><td>{{ unspec(outputraw) }}</td></tr>
<tr><td>Flip Mode</td><td>{{ unspec(flip) }}</td></tr>
</table>

{% else %}

{{ error('Unsupported MIME type "' + _mime_type + '"') }}

{% endif %}
'''

pscheduler.spec_format_method(TEMPLATE, max_schema=spec_max_schema(), validator=spec_is_valid)
