nat: add feature.yaml 60/24160/4
authorOle Troan <ot@cisco.com>
Thu, 2 Jan 2020 21:32:57 +0000 (22:32 +0100)
committerPaul Vinciguerra <pvinci@vinciconsulting.com>
Fri, 3 Jan 2020 03:57:29 +0000 (03:57 +0000)
And add support for multiple maintainers in JSON schema.

Type: docs
Change-Id: Ice430927ceecf53526a3fdf46c075a95206bf0ac
Signed-off-by: Ole Troan <ot@cisco.com>
src/plugins/nat/FEATURE.yaml [new file with mode: 0644]
src/scripts/fts.py

diff --git a/src/plugins/nat/FEATURE.yaml b/src/plugins/nat/FEATURE.yaml
new file mode 100644 (file)
index 0000000..65cd959
--- /dev/null
@@ -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]
index eb44be9..f3165ce 100755 (executable)
@@ -17,9 +17,9 @@ schema = {
     "properties": {
         "name": {"type": "string"},
         "description": {"type": "string"},
-        "maintainer": {"type": "string"},
+        "maintainer": {"$ref": "#/definitions/maintainers"},
         "state": {"type": "string",
-                  "enum": ["production", "experimental"]},
+                  "enum": ["production", "experimental", "development"]},
         "features": {"$ref": "#/definitions/features"},
         "missing": {"$ref": "#/definitions/features"},
         "properties": {"type": "array",
@@ -30,6 +30,14 @@ schema = {
     },
     "additionalProperties": False,
     "definitions": {
+        "maintainers": {
+            "anyof": [{
+                "type": "array",
+                "items": {"type": "string"},
+                "minItems": 1,
+                },
+                {"type": "string"}],
+        },
         "featureobject": {
             "type": "object",
             "patternProperties": {
@@ -86,7 +94,11 @@ def output_features(indent, fl):
 def output_markdown(features):
     for k, v in features.items():
         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('{}\n'.format(v['description']))
         output_features(0, v['features'])