This is the second of three proposals for process changes.

This patch proposes a new metadata file FEATURE.yaml in each component:
https://gerrit.fd.io/r/#/c/19563/

The purpose is to make it easier to be able to answer the question: "What 
features do VPP support"?

Example feature definition:
-----------------------------------

name: IP in IP tunnelling
maintainer: Ole Troan <o...@cisco.com>
features:
  - IPv4/IPv6 over IPv4/IPv6 encapsulation:
    - Fragmentation and Reassembly
    - Configurable MTU
    - Inner to outer Traffic Class / TOS copy
    - Configurable Traffic Class / TOS
  - ICMPv4 / ICMPv6 proxying
  - 6RD (RFC5969):
    - Border Relay

description: "Implements IP{v4,v6} over IP{v4,v6} tunnelling as
              described in RFC2473. This module also implement the border relay 
of
              6RD (RFC5969)."

state: production
properties: [API, CLI, STATS, MULTITHREAD]
missing:
  - Tunnel PMTUD
  - Tracking of FIB state for tunnel state
  - IPv6 extension headers (Tunnel encapsulation limit option)

------------------------
# VPP feature JSON schema
schema = {
    "$schema": "http://json-schema.org/schema#";,
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "description": { "type": "string" },
        "maintainer": { "type": "string" },
        "state": {"type": "string",
                  "enum": ["production", "experimental"]},
        "features": { "$ref": "#/definitions/features" },
        "missing": { "$ref": "#/definitions/features" },
        "properties": { "type": "array",
                       "items": { "type": "string",
                                  "enum": ["API", "CLI", "STATS", 
"MULTITHREAD"] },
                       },
    },
    "additionalProperties": False,
    "definitions": {
        "featureobject": {
            "type": "object",
            "patternProperties": {
                "^.*$": { "$ref": "#/definitions/features" },
            },
        },
            
        "features": {
            "type": "array",
            "items": {"anyOf": [{ "$ref": "#/definitions/featureobject" },
                      { "type": "string" },
            ]},
            "minItems": 1,
        },
    },
}

It also adds two new makefile targets.
make featurelist
make checkfeaturelist

The first generates a markdown report, the second verifies the FEATURE.yaml 
files against the JSON schema.

Comments are welcome!
(I will also ask for time at next weeks community call)

Best regards,
Ole
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#13106): https://lists.fd.io/g/vpp-dev/message/13106
Mute This Topic: https://lists.fd.io/mt/31699470/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to