nat: add feature.yaml

And add support for multiple maintainers in JSON schema.

Type: docs
Change-Id: Ice430927ceecf53526a3fdf46c075a95206bf0ac
Signed-off-by: Ole Troan <ot@cisco.com>
This commit is contained in:
Ole Troan
2020-01-02 22:32:57 +01:00
committed by Paul Vinciguerra
parent 8ef8f8f793
commit e774a8b389
2 changed files with 42 additions and 3 deletions

View File

@ -0,0 +1,27 @@
---
name: Network Address Translation (NAT)
maintainer:
- Ole Troan <ot@cisco.com>
- Filip Varga <fivarga@cisco.com>
features:
- NAT44:
- 1:1 NAT
- 1:1 NAT with ports
- VRF awareness
- Multiple inside interfaces
- Hairpinning
- IPFIX
- Syslog
- Endpoint dependent NAT
- TCP MSS clamping
- Local bypass (DHCP)
- CGN - deterministic NAT
- NAT64
- NAT66
- DS-lite
- 464XLAT
description: "The NAT plugin offers a multiple address translation functions.
These can be used in a raft of different scenarios. CPE, CGN,
etc."
state: production
properties: [API, CLI, STATS, MULTITHREAD]

View File

@ -17,9 +17,9 @@ schema = {
"properties": { "properties": {
"name": {"type": "string"}, "name": {"type": "string"},
"description": {"type": "string"}, "description": {"type": "string"},
"maintainer": {"type": "string"}, "maintainer": {"$ref": "#/definitions/maintainers"},
"state": {"type": "string", "state": {"type": "string",
"enum": ["production", "experimental"]}, "enum": ["production", "experimental", "development"]},
"features": {"$ref": "#/definitions/features"}, "features": {"$ref": "#/definitions/features"},
"missing": {"$ref": "#/definitions/features"}, "missing": {"$ref": "#/definitions/features"},
"properties": {"type": "array", "properties": {"type": "array",
@ -30,6 +30,14 @@ schema = {
}, },
"additionalProperties": False, "additionalProperties": False,
"definitions": { "definitions": {
"maintainers": {
"anyof": [{
"type": "array",
"items": {"type": "string"},
"minItems": 1,
},
{"type": "string"}],
},
"featureobject": { "featureobject": {
"type": "object", "type": "object",
"patternProperties": { "patternProperties": {
@ -86,7 +94,11 @@ def output_features(indent, fl):
def output_markdown(features): def output_markdown(features):
for k, v in features.items(): for k, v in features.items():
print('# {}'.format(v['name'])) print('# {}'.format(v['name']))
print('Maintainer: {} '.format(v['maintainer'])) if type(v['maintainer']) is list:
print('Maintainers: ' +
', '.join('{}'.format(m) for m in v['maintainer']))
else:
print('Maintainer: {} '.format(v['maintainer']))
print('State: {}\n'.format(v['state'])) print('State: {}\n'.format(v['state']))
print('{}\n'.format(v['description'])) print('{}\n'.format(v['description']))
output_features(0, v['features']) output_features(0, v['features'])