diff --git a/maintainer/feature_maturity_level.yaml b/maintainer/feature_maturity_level.yaml new file mode 100644 index 00000000..77e614cb --- /dev/null +++ b/maintainer/feature_maturity_level.yaml @@ -0,0 +1,91 @@ +# Definition of feature: a feature is a plugin or a registry. +# +# Feature maturity grading rules: +# 1. A feature's maturity level is `experimental` when its implementation is complete. +# 2. A feature is `stable` when it meets both of the following conditions: +# 2.1 It has been in a release version for more than 6 months. +# 2.2 There are no bugfixes on this feature in the last three months. +# 3. If a breaking change occurs or the maintainer thinks it is not stable enough, it returns to `experimental`. +# +# When creating new release, please update the maturity level of the features in this file, according to +# the above rules. +# +# When adding a new feature, please set the experimental_since field to the next release. + +plugins: + - name: bandwidth_limit + status: experimental + experimental_since: 0.4.0 + - name: buffer + status: experimental + experimental_since: 0.4.0 + - name: casbin + status: experimental + experimental_since: 0.4.0 + - name: cel_script + status: experimental + experimental_since: 0.4.0 + - name: consumer_restriction + status: experimental + experimental_since: 0.4.0 + - name: cors + status: stable + stable_since: 0.4.0 + - name: debug_mode + status: experimental + experimental_since: 0.4.0 + - name: demo + status: experimental + experimental_since: 0.4.0 + - name: ext_auth + status: stable + stable_since: 0.4.0 + - name: fault + status: stable + stable_since: 0.4.0 + - name: hmac_auth + status: experimental + experimental_since: 0.4.0 + - name: inner_ext_proc + status: experimental + experimental_since: 0.4.0 + - name: inner_lua + status: experimental + experimental_since: 0.4.0 + - name: key_auth + status: stable + stable_since: 0.4.0 + - name: limit_count_redis + status: stable + stable_since: 0.4.0 + - name: limit_req + status: experimental + experimental_since: 0.4.0 + - name: listener_patch + status: experimental + experimental_since: 0.4.0 + - name: local_ratelimit + status: stable + stable_since: 0.4.0 + - name: oidc + status: experimental + experimental_since: 0.4.0 + - name: opa + status: experimental + experimental_since: 0.4.0 + - name: outer_ext_proc + status: experimental + experimental_since: 0.4.0 + - name: outer_lua + status: experimental + experimental_since: 0.4.0 + - name: tls_inspector + status: experimental + experimental_since: 0.4.0 +registries: + - name: consul + status: experimental + experimental_since: 0.4.0 + - name: nacos + status: experimental + experimental_since: 0.4.0 diff --git a/MAINTAIN.md b/maintainer/guide.md similarity index 92% rename from MAINTAIN.md rename to maintainer/guide.md index 9db3363a..b9c53da6 100644 --- a/MAINTAIN.md +++ b/maintainer/guide.md @@ -13,6 +13,7 @@ To release a new version, please follow the steps below: * Once the image is ready, update the version in the `manifests/charts/*/Chart.yaml`. * Update the `./examples/dev_your_plugin` to use the released version. * Run `make fmt-go`. + * Promote the maturity of plugins that meet the criteria to stable by updating `maintainer/feature_maturity_level.yaml` and plugin documentation. 6. Create a release branch `release/v${version}` from the main branch, like `release/v0.3.2`. The CI will create a new chart package. ## Upgrade components diff --git a/site/content/en/docs/reference/plugins/bandwidth_limit.md b/site/content/en/docs/reference/plugins/bandwidth_limit.md index 9de40d4b..0796f878 100644 --- a/site/content/en/docs/reference/plugins/bandwidth_limit.md +++ b/site/content/en/docs/reference/plugins/bandwidth_limit.md @@ -8,10 +8,11 @@ The `bandwidthLimit` plugin restricts the maximum bandwidth of the data stream b ## Attribute -| | | -|-------|---------| -| Type | Traffic | -| Order | Outer | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Outer | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/buffer.md b/site/content/en/docs/reference/plugins/buffer.md index 82c0adae..5e2a73f5 100644 --- a/site/content/en/docs/reference/plugins/buffer.md +++ b/site/content/en/docs/reference/plugins/buffer.md @@ -11,10 +11,11 @@ The `buffer` plugin fully buffers the complete request, by leveraging Envoy's `b ## Attribute -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/casbin.md b/site/content/en/docs/reference/plugins/casbin.md index adf35742..053398c2 100644 --- a/site/content/en/docs/reference/plugins/casbin.md +++ b/site/content/en/docs/reference/plugins/casbin.md @@ -8,10 +8,11 @@ The `casbin` plugin embeds the powerful and efficient open-source access control ## Attribute -| | | -| ----- | ----- | -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/cel_script.md b/site/content/en/docs/reference/plugins/cel_script.md index 7afd952a..b684d919 100644 --- a/site/content/en/docs/reference/plugins/cel_script.md +++ b/site/content/en/docs/reference/plugins/cel_script.md @@ -8,10 +8,11 @@ The `celScript` plugin determines whether the current request can access the ups ## Attribute -| | | -|-------|---------| -| Type | Traffic | -| Order | Traffic | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Traffic | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/consumer_restriction.md b/site/content/en/docs/reference/plugins/consumer_restriction.md index d093dda6..b3e7c87f 100644 --- a/site/content/en/docs/reference/plugins/consumer_restriction.md +++ b/site/content/en/docs/reference/plugins/consumer_restriction.md @@ -8,10 +8,11 @@ The `consumerRestriction` plugin determines whether the current consumer has acc ## Attribute -| | | -|-------|-------| -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/cors.md b/site/content/en/docs/reference/plugins/cors.md index cfcc142e..8e66ab55 100644 --- a/site/content/en/docs/reference/plugins/cors.md +++ b/site/content/en/docs/reference/plugins/cors.md @@ -8,10 +8,11 @@ The `cors` plugin handles Cross-Origin Resource Sharing requests by leveraging E ## Attribute -| | | -|-------|----------| -| Type | Security | -| Order | Outer | +| | | +|--------|----------| +| Type | Security | +| Order | Outer | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/debug_mode.md b/site/content/en/docs/reference/plugins/debug_mode.md index 196a898e..06d7444d 100644 --- a/site/content/en/docs/reference/plugins/debug_mode.md +++ b/site/content/en/docs/reference/plugins/debug_mode.md @@ -8,10 +8,11 @@ The `debugMode` plugin is used to enable debug mode on the targeted Route. ## Attribute -| | | -|-------|---------| -| Type | General | -| Order | Access | +| | | +|--------|--------------| +| Type | General | +| Order | Access | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/demo.md b/site/content/en/docs/reference/plugins/demo.md index 18df3a15..31201ccd 100644 --- a/site/content/en/docs/reference/plugins/demo.md +++ b/site/content/en/docs/reference/plugins/demo.md @@ -8,10 +8,11 @@ The `demo` plugin is used to show how to add a plugin to htnn. ## Attribute -| | | -|-------|-------------| -| Type | General | -| Order | Unspecified | +| | | +|--------|--------------| +| Type | General | +| Order | Unspecified | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/ext_auth.md b/site/content/en/docs/reference/plugins/ext_auth.md index 47737f58..94338ff5 100644 --- a/site/content/en/docs/reference/plugins/ext_auth.md +++ b/site/content/en/docs/reference/plugins/ext_auth.md @@ -8,10 +8,11 @@ The `extAuth` plugin sends an authorization request to an authorization service ## Attribute -| | | -| ----- | ----- | -| Type | Authz | -| Order | Authz | +| | | +|--------|--------| +| Type | Authz | +| Order | Authz | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/fault.md b/site/content/en/docs/reference/plugins/fault.md index 42efc118..6433443c 100644 --- a/site/content/en/docs/reference/plugins/fault.md +++ b/site/content/en/docs/reference/plugins/fault.md @@ -8,10 +8,11 @@ The `fault` plugin supports response and delay injections by leveraging Envoy's ## Attribute -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|---------| +| Type | General | +| Order | Outer | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/hmac_auth.md b/site/content/en/docs/reference/plugins/hmac_auth.md index 0c30a155..b093e4b3 100644 --- a/site/content/en/docs/reference/plugins/hmac_auth.md +++ b/site/content/en/docs/reference/plugins/hmac_auth.md @@ -8,10 +8,11 @@ The `hmacAuth` plugin authenticates the client based on the consumer configurati ## Attribute -| | | -|-------|-------| -| Type | Authn | -| Order | Authn | +| | | +|--------|--------------| +| Type | Authn | +| Order | Authn | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/inner_ext_proc.md b/site/content/en/docs/reference/plugins/inner_ext_proc.md index 7bebe205..59211fad 100644 --- a/site/content/en/docs/reference/plugins/inner_ext_proc.md +++ b/site/content/en/docs/reference/plugins/inner_ext_proc.md @@ -20,7 +20,8 @@ Please refer to the [outerExtProc](./outer_ext_proc.md) plugin documentation to ## Attribute -| | | -| ----- | ------- | -| Type | General | -| Order | Inner | +| | | +|--------|--------------| +| Type | General | +| Order | Inner | +| Status | Experimental | diff --git a/site/content/en/docs/reference/plugins/inner_lua.md b/site/content/en/docs/reference/plugins/inner_lua.md index f8f67302..74e40849 100644 --- a/site/content/en/docs/reference/plugins/inner_lua.md +++ b/site/content/en/docs/reference/plugins/inner_lua.md @@ -20,7 +20,8 @@ Please refer to [outerLua](./outer_lua.md) plugin documentation to know how to u ## Attribute -| | | -|-------|---------| -| Type | General | -| Order | Inner | +| | | +|--------|--------------| +| Type | General | +| Order | Inner | +| Status | Experimental | diff --git a/site/content/en/docs/reference/plugins/key_auth.md b/site/content/en/docs/reference/plugins/key_auth.md index 2e8b0edf..4d58d31a 100644 --- a/site/content/en/docs/reference/plugins/key_auth.md +++ b/site/content/en/docs/reference/plugins/key_auth.md @@ -8,10 +8,11 @@ The `keyAuth` plugin authenticates the client according to the consumers and the ## Attribute -| | | -| ----- | ----- | -| Type | Authn | -| Order | Authn | +| | | +|--------|--------| +| Type | Authn | +| Order | Authn | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/limit_count_redis.md b/site/content/en/docs/reference/plugins/limit_count_redis.md index ea840b06..6f478a1a 100644 --- a/site/content/en/docs/reference/plugins/limit_count_redis.md +++ b/site/content/en/docs/reference/plugins/limit_count_redis.md @@ -8,10 +8,11 @@ The `limitCountRedis` plugin implements a global fixed window rate-limiting by s ## Attribute -| | | -| ----- | ------- | -| Type | Traffic | -| Order | Traffic | +| | | +|--------|---------| +| Type | Traffic | +| Order | Traffic | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/limit_req.md b/site/content/en/docs/reference/plugins/limit_req.md index 99dddbdf..b6f15fdd 100644 --- a/site/content/en/docs/reference/plugins/limit_req.md +++ b/site/content/en/docs/reference/plugins/limit_req.md @@ -8,10 +8,11 @@ The `limitReq` plugin limits the number of requests per second to this proxy. Th ## Attribute -| | | -|-------|---------| -| Type | Traffic | -| Order | Traffic | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Traffic | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/listener_patch.md b/site/content/en/docs/reference/plugins/listener_patch.md index f26a7d7f..b66580ad 100644 --- a/site/content/en/docs/reference/plugins/listener_patch.md +++ b/site/content/en/docs/reference/plugins/listener_patch.md @@ -8,10 +8,11 @@ The `listenerPatch` plugin allows users to directly patch the Listener resource ## Attribute -| | | -|-------|----------| -| Type | General | -| Order | Listener | +| | | +|--------|--------------| +| Type | General | +| Order | Listener | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/local_ratelimit.md b/site/content/en/docs/reference/plugins/local_ratelimit.md index 2e5355d2..ca3fcc64 100644 --- a/site/content/en/docs/reference/plugins/local_ratelimit.md +++ b/site/content/en/docs/reference/plugins/local_ratelimit.md @@ -8,10 +8,11 @@ The `localRatelimit` plugin limits the number of requests per second, by leverag ## Attribute -| | | -|-------|---------| -| Type | Traffic | -| Order | Outer | +| | | +|--------|---------| +| Type | Traffic | +| Order | Outer | +| Status | Stable | ## Configuration diff --git a/site/content/en/docs/reference/plugins/oidc.md b/site/content/en/docs/reference/plugins/oidc.md index 134b9c9a..48f300e0 100644 --- a/site/content/en/docs/reference/plugins/oidc.md +++ b/site/content/en/docs/reference/plugins/oidc.md @@ -8,10 +8,11 @@ The `OIDC` plugin supports integration with any OpenID Connect Provider (OP) by ## Attribute -| | | -|-------|---------| -| Type | Authn | -| Order | Authn | +| | | +|--------|--------------| +| Type | Authn | +| Order | Authn | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/opa.md b/site/content/en/docs/reference/plugins/opa.md index 0c3373b1..19d113ad 100644 --- a/site/content/en/docs/reference/plugins/opa.md +++ b/site/content/en/docs/reference/plugins/opa.md @@ -9,10 +9,11 @@ You can use it to interact with remote OPA service (the remote mode), or authori ## Attribute -| | | -| ----- | ----- | -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/outer_ext_proc.md b/site/content/en/docs/reference/plugins/outer_ext_proc.md index 4007a89a..402d9bce 100644 --- a/site/content/en/docs/reference/plugins/outer_ext_proc.md +++ b/site/content/en/docs/reference/plugins/outer_ext_proc.md @@ -18,10 +18,11 @@ As Envoy uses an onion model to proxy requests, the execution order is: ## Attribute -| | | -| ----- | ------- | -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/outer_lua.md b/site/content/en/docs/reference/plugins/outer_lua.md index 903a90f2..da1e0ed8 100644 --- a/site/content/en/docs/reference/plugins/outer_lua.md +++ b/site/content/en/docs/reference/plugins/outer_lua.md @@ -18,10 +18,11 @@ Because Envoy uses the onion model to proxy requests, the execution order is: ## Attribute -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/plugins/tls_inspector.md b/site/content/en/docs/reference/plugins/tls_inspector.md index 4afda359..4209759e 100644 --- a/site/content/en/docs/reference/plugins/tls_inspector.md +++ b/site/content/en/docs/reference/plugins/tls_inspector.md @@ -8,10 +8,11 @@ The `tlsInspector` plugin adds a TLS Inspector listener filter to the targeted G ## Attribute -| | | -|-------|----------| -| Type | General | -| Order | Listener | +| | | +|--------|--------------| +| Type | General | +| Order | Listener | +| Status | Experimental | ## Configuration diff --git a/site/content/en/docs/reference/registries/consul.md b/site/content/en/docs/reference/registries/consul.md index 41bbf160..ec484cce 100644 --- a/site/content/en/docs/reference/registries/consul.md +++ b/site/content/en/docs/reference/registries/consul.md @@ -6,6 +6,12 @@ title: Consul The `consul` registry connects to the [Consul](https://developer.hashicorp.com/consul) service discovery and converts service information into `ServiceEntry`. +## Attribute + +| | | +|--------|--------------| +| Status | Experimental | + ## Configuration | Name | Type | Required | Validation | Description | diff --git a/site/content/en/docs/reference/registries/nacos.md b/site/content/en/docs/reference/registries/nacos.md index 7f5da600..abc394c3 100644 --- a/site/content/en/docs/reference/registries/nacos.md +++ b/site/content/en/docs/reference/registries/nacos.md @@ -6,6 +6,12 @@ title: Nacos The `nacos` registry interfaces with [Nacos](https://nacos.io/) service discovery, converting service information into `ServiceEntry`. This registry supports the V1 API and the V2 API. +## Attribute + +| | | +|--------|--------------| +| Status | Experimental | + ## Configuration | Name | Type | Required | Validation | Description | diff --git a/site/content/zh-hans/docs/reference/plugins/bandwidth_limit.md b/site/content/zh-hans/docs/reference/plugins/bandwidth_limit.md index c89959a1..fb41f945 100644 --- a/site/content/zh-hans/docs/reference/plugins/bandwidth_limit.md +++ b/site/content/zh-hans/docs/reference/plugins/bandwidth_limit.md @@ -8,10 +8,11 @@ title: Bandwidth Limit ## 属性 -| | | -|-------|---------| -| Type | Traffic | -| Order | Outer | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Outer | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/buffer.md b/site/content/zh-hans/docs/reference/plugins/buffer.md index 24f52025..dc88c32e 100644 --- a/site/content/zh-hans/docs/reference/plugins/buffer.md +++ b/site/content/zh-hans/docs/reference/plugins/buffer.md @@ -11,10 +11,11 @@ title: Buffer ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/casbin.md b/site/content/zh-hans/docs/reference/plugins/casbin.md index 6ad1ba97..80b36e2d 100644 --- a/site/content/zh-hans/docs/reference/plugins/casbin.md +++ b/site/content/zh-hans/docs/reference/plugins/casbin.md @@ -8,10 +8,11 @@ title: Casbin ## 属性 -| | | -| ----- | ----- | -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/cel_script.md b/site/content/zh-hans/docs/reference/plugins/cel_script.md index 3b6d6098..0360facf 100644 --- a/site/content/zh-hans/docs/reference/plugins/cel_script.md +++ b/site/content/zh-hans/docs/reference/plugins/cel_script.md @@ -8,10 +8,11 @@ title: CEL Script ## 属性 -| | | -|-------|---------| -| Type | Traffic | -| Order | Traffic | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Traffic | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/consumer_restriction.md b/site/content/zh-hans/docs/reference/plugins/consumer_restriction.md index 2489e83e..55c5a23c 100644 --- a/site/content/zh-hans/docs/reference/plugins/consumer_restriction.md +++ b/site/content/zh-hans/docs/reference/plugins/consumer_restriction.md @@ -8,10 +8,11 @@ title: Consumer Restriction ## 属性 -| | | -|-------|-------| -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/cors.md b/site/content/zh-hans/docs/reference/plugins/cors.md index da008251..53388e21 100644 --- a/site/content/zh-hans/docs/reference/plugins/cors.md +++ b/site/content/zh-hans/docs/reference/plugins/cors.md @@ -8,10 +8,11 @@ title: CORS ## 属性 -| | | -|-------|----------| -| Type | Security | -| Order | Outer | +| | | +|--------|----------| +| Type | Security | +| Order | Outer | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/debug_mode.md b/site/content/zh-hans/docs/reference/plugins/debug_mode.md index 2a152fc9..e7bcb9d3 100644 --- a/site/content/zh-hans/docs/reference/plugins/debug_mode.md +++ b/site/content/zh-hans/docs/reference/plugins/debug_mode.md @@ -8,10 +8,11 @@ title: Debug Mode ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Access | +| | | +|--------|--------------| +| Type | General | +| Order | Access | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/demo.md b/site/content/zh-hans/docs/reference/plugins/demo.md index 5a1cde5a..f7f164c7 100644 --- a/site/content/zh-hans/docs/reference/plugins/demo.md +++ b/site/content/zh-hans/docs/reference/plugins/demo.md @@ -8,10 +8,11 @@ title: Demo ## 属性 -| | | -|-------|-------------| -| Type | General | -| Order | Unspecified | +| | | +|--------|--------------| +| Type | General | +| Order | Unspecified | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/ext_auth.md b/site/content/zh-hans/docs/reference/plugins/ext_auth.md index c6e21417..c556af89 100644 --- a/site/content/zh-hans/docs/reference/plugins/ext_auth.md +++ b/site/content/zh-hans/docs/reference/plugins/ext_auth.md @@ -8,10 +8,11 @@ title: Ext Auth ## 属性 -| | | -|-------|-------| -| Type | Authz | -| Order | Authz | +| | | +|--------|--------| +| Type | Authz | +| Order | Authz | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/fault.md b/site/content/zh-hans/docs/reference/plugins/fault.md index 87302d47..51a62d96 100644 --- a/site/content/zh-hans/docs/reference/plugins/fault.md +++ b/site/content/zh-hans/docs/reference/plugins/fault.md @@ -8,10 +8,11 @@ title: Fault ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|---------| +| Type | General | +| Order | Outer | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/hmac_auth.md b/site/content/zh-hans/docs/reference/plugins/hmac_auth.md index 9dbcbc9c..efa2f2e2 100644 --- a/site/content/zh-hans/docs/reference/plugins/hmac_auth.md +++ b/site/content/zh-hans/docs/reference/plugins/hmac_auth.md @@ -10,10 +10,11 @@ title: HMAC Auth ## 属性 -| | | -|-------|-------| -| Type | Authn | -| Order | Authn | +| | | +|--------|--------------| +| Type | Authn | +| Order | Authn | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/inner_ext_proc.md b/site/content/zh-hans/docs/reference/plugins/inner_ext_proc.md index 40b71158..6cea3869 100644 --- a/site/content/zh-hans/docs/reference/plugins/inner_ext_proc.md +++ b/site/content/zh-hans/docs/reference/plugins/inner_ext_proc.md @@ -20,7 +20,8 @@ title: Inner Ext Proc ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Inner | +| | | +|--------|--------------| +| Type | General | +| Order | Inner | +| Status | Experimental | diff --git a/site/content/zh-hans/docs/reference/plugins/inner_lua.md b/site/content/zh-hans/docs/reference/plugins/inner_lua.md index ad9f16a3..3543b2d0 100644 --- a/site/content/zh-hans/docs/reference/plugins/inner_lua.md +++ b/site/content/zh-hans/docs/reference/plugins/inner_lua.md @@ -20,7 +20,8 @@ title: Inner Lua ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Inner | +| | | +|--------|--------------| +| Type | General | +| Order | Inner | +| Status | Experimental | diff --git a/site/content/zh-hans/docs/reference/plugins/key_auth.md b/site/content/zh-hans/docs/reference/plugins/key_auth.md index 5c6bdc25..224869ed 100644 --- a/site/content/zh-hans/docs/reference/plugins/key_auth.md +++ b/site/content/zh-hans/docs/reference/plugins/key_auth.md @@ -8,10 +8,11 @@ title: Key Auth ## 属性 -| | | -|-------|-------| -| Type | Authn | -| Order | Authn | +| | | +|--------|--------| +| Type | Authn | +| Order | Authn | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/limit_count_redis.md b/site/content/zh-hans/docs/reference/plugins/limit_count_redis.md index 01b858bd..bfad5fb3 100644 --- a/site/content/zh-hans/docs/reference/plugins/limit_count_redis.md +++ b/site/content/zh-hans/docs/reference/plugins/limit_count_redis.md @@ -8,10 +8,11 @@ title: Limit Count Redis ## 属性 -| | | -| ----- | ------- | -| Type | Traffic | -| Order | Traffic | +| | | +|--------|---------| +| Type | Traffic | +| Order | Traffic | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/limit_req.md b/site/content/zh-hans/docs/reference/plugins/limit_req.md index 78000d83..cb327580 100644 --- a/site/content/zh-hans/docs/reference/plugins/limit_req.md +++ b/site/content/zh-hans/docs/reference/plugins/limit_req.md @@ -8,10 +8,11 @@ title: Limit Req ## 属性 -| | | -|-------|---------| -| Type | Traffic | -| Order | Traffic | +| | | +|--------|--------------| +| Type | Traffic | +| Order | Traffic | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/listener_patch.md b/site/content/zh-hans/docs/reference/plugins/listener_patch.md index a480ea67..b8e18008 100644 --- a/site/content/zh-hans/docs/reference/plugins/listener_patch.md +++ b/site/content/zh-hans/docs/reference/plugins/listener_patch.md @@ -8,10 +8,11 @@ title: Listener Patch ## 属性 -| | | -|-------|----------| -| Type | General | -| Order | Listener | +| | | +|--------|--------------| +| Type | General | +| Order | Listener | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/local_ratelimit.md b/site/content/zh-hans/docs/reference/plugins/local_ratelimit.md index f870e774..9bd35680 100644 --- a/site/content/zh-hans/docs/reference/plugins/local_ratelimit.md +++ b/site/content/zh-hans/docs/reference/plugins/local_ratelimit.md @@ -8,10 +8,11 @@ title: Local Ratelimit ## 属性 -| | | -|-------|---------| -| Type | Traffic | -| Order | Outer | +| | | +|--------|---------| +| Type | Traffic | +| Order | Outer | +| Status | Stable | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/oidc.md b/site/content/zh-hans/docs/reference/plugins/oidc.md index 2e86e235..981692a5 100644 --- a/site/content/zh-hans/docs/reference/plugins/oidc.md +++ b/site/content/zh-hans/docs/reference/plugins/oidc.md @@ -8,10 +8,11 @@ title: OIDC ## 属性 -| | | -|-------|---------| -| Type | Authn | -| Order | Authn | +| | | +|--------|--------------| +| Type | Authn | +| Order | Authn | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/opa.md b/site/content/zh-hans/docs/reference/plugins/opa.md index e90ded20..9f65879b 100644 --- a/site/content/zh-hans/docs/reference/plugins/opa.md +++ b/site/content/zh-hans/docs/reference/plugins/opa.md @@ -9,10 +9,11 @@ title: OPA ## 属性 -| | | -| ----- | ----- | -| Type | Authz | -| Order | Authz | +| | | +|--------|--------------| +| Type | Authz | +| Order | Authz | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/outer_ext_proc.md b/site/content/zh-hans/docs/reference/plugins/outer_ext_proc.md index bb7f8818..8ae5df4d 100644 --- a/site/content/zh-hans/docs/reference/plugins/outer_ext_proc.md +++ b/site/content/zh-hans/docs/reference/plugins/outer_ext_proc.md @@ -18,10 +18,11 @@ title: Outer Ext Proc ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/outer_lua.md b/site/content/zh-hans/docs/reference/plugins/outer_lua.md index 77ac5601..a70510d2 100644 --- a/site/content/zh-hans/docs/reference/plugins/outer_lua.md +++ b/site/content/zh-hans/docs/reference/plugins/outer_lua.md @@ -18,10 +18,11 @@ title: Outer Lua ## 属性 -| | | -|-------|---------| -| Type | General | -| Order | Outer | +| | | +|--------|--------------| +| Type | General | +| Order | Outer | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/plugins/tls_inspector.md b/site/content/zh-hans/docs/reference/plugins/tls_inspector.md index 006b0471..eeea9e4e 100644 --- a/site/content/zh-hans/docs/reference/plugins/tls_inspector.md +++ b/site/content/zh-hans/docs/reference/plugins/tls_inspector.md @@ -8,10 +8,11 @@ title: TLS Inspector ## 属性 -| | | -|-------|----------| -| Type | General | -| Order | Listener | +| | | +|--------|--------------| +| Type | General | +| Order | Listener | +| Status | Experimental | ## 配置 diff --git a/site/content/zh-hans/docs/reference/registries/consul.md b/site/content/zh-hans/docs/reference/registries/consul.md index 6786c62b..2ef9d6cd 100644 --- a/site/content/zh-hans/docs/reference/registries/consul.md +++ b/site/content/zh-hans/docs/reference/registries/consul.md @@ -6,6 +6,12 @@ title: Consul `consul` registry 对接 [Consul](https://developer.hashicorp.com/consul) 服务发现,将服务信息转换成 `ServiceEntry`。 +## 属性 + +| | | +|--------|--------------| +| Status | Experimental | + ## 配置 | 名称 | 类型 | 必选 | 校验规则 | 说明 | diff --git a/site/content/zh-hans/docs/reference/registries/nacos.md b/site/content/zh-hans/docs/reference/registries/nacos.md index 76759a02..daa88b79 100644 --- a/site/content/zh-hans/docs/reference/registries/nacos.md +++ b/site/content/zh-hans/docs/reference/registries/nacos.md @@ -6,6 +6,11 @@ title: Nacos `nacos` registry 对接 [Nacos](https://nacos.io/) 服务发现,将服务信息转换成 `ServiceEntry`。该 registry 既支持 V1 API,也支持 V2 API。 +## 属性 + +| | | +|--------|--------------| +| Status | Experimental | ## 配置 diff --git a/tools/cmd/linter/main.go b/tools/cmd/linter/main.go index d937cbd9..76294803 100644 --- a/tools/cmd/linter/main.go +++ b/tools/cmd/linter/main.go @@ -24,12 +24,14 @@ import ( "os" "path/filepath" "reflect" + "slices" "strings" protoparser "github.com/yoheimuta/go-protoparser/v4" "github.com/yoheimuta/go-protoparser/v4/parser" "golang.org/x/text/cases" "golang.org/x/text/language" + "gopkg.in/yaml.v3" ) // This tool does what the third party linters don't @@ -283,8 +285,12 @@ func lintFilenameForDoc(root string) error { }) } +var ( + Categories = []string{"plugins", "registries"} +) + func lintConfiguration() error { - for _, t := range []string{"plugins", "registries"} { + for _, t := range Categories { err := lintConfigurationByCategory(t) if err != nil { return err @@ -507,6 +513,135 @@ func lintConfigurationByCategory(category string) error { return err } +type maturityLevel struct { + name string + maturity string +} + +func getFeatureMaturityLevel(category string) ([]maturityLevel, error) { + res := []maturityLevel{} + err := filepath.Walk(filepath.Join("site", "content", "en", "docs", "reference", category), func(path string, info fs.FileInfo, err error) error { + if err != nil { + return err + } + + if info.IsDir() { + return nil + } + + ext := filepath.Ext(path) + if ext != ".md" || strings.HasSuffix(path, "_index.md") { + return nil + } + + data, err := os.ReadFile(path) + if err != nil { + return err + } + + scanner := bufio.NewScanner(bytes.NewReader(data)) + status := "" + for scanner.Scan() { + text := scanner.Text() + if text == "## Attribute" { + for i := 0; i < 3; i++ { + scanner.Scan() // drop table title + } + + // the Attribute table in registries doc is different + if category != "registries" { + scanner.Scan() + scanner.Scan() + } + // the third row is the status + scanner.Scan() + ss := strings.Split(scanner.Text(), "|") + if len(ss) > 2 { + status = strings.ToLower(strings.TrimSpace(ss[2])) + } + break + } + } + + name := filepath.Base(path)[:len(filepath.Base(path))-len(ext)] + res = append(res, maturityLevel{ + name: name, + maturity: status, + }) + return nil + }) + if err != nil { + return nil, err + } + return res, nil +} + +type FeatureMaturityLevelRecord struct { + Name string `yaml:"name"` + Status string `yaml:"status"` + ExperimentalSince string `yaml:"experimental_since"` + StableSince string `yaml:"stable_since"` +} + +func lintFeatureMaturityLevel() error { + recordFile := filepath.Join("maintainer", "feature_maturity_level.yaml") + data, err := os.ReadFile(recordFile) + if err != nil { + return err + } + + var records map[string][]FeatureMaturityLevelRecord + err = yaml.Unmarshal(data, &records) + if err != nil { + return err + } + + actualRecords := map[string][]FeatureMaturityLevelRecord{} + for _, category := range Categories { + actualRecords[category] = []FeatureMaturityLevelRecord{} + actual, err := getFeatureMaturityLevel(category) + if err != nil { + return err + } + + for _, record := range actual { + actualRecords[category] = append(actualRecords[category], FeatureMaturityLevelRecord{ + Name: record.name, + Status: record.maturity, + }) + } + } + + for category, recs := range records { + for _, record := range recs { + if record.Status == "experimental" && record.ExperimentalSince == "" { + return fmt.Errorf("experimental_since of %s %s is missing in %s", category, record.Name, recordFile) + } + found := false + for i, r := range actualRecords[category] { + if r.Name == record.Name { + found = true + if r.Status != record.Status { + return fmt.Errorf("status of %s %s is mismatched between %s and the documentation", category, record.Name, recordFile) + } + actualRecords[category] = slices.Delete(actualRecords[category], i, i+1) + break + } + } + if !found { + return fmt.Errorf("%s %s is missing in the documentation", category, record.Name) + } + } + } + for _, category := range Categories { + if len(actualRecords[category]) > 0 { + return fmt.Errorf("%s %s is missing in the %s", category, actualRecords[category][0].Name, recordFile) + } + } + + return nil +} + func main() { // change to the root directory so that we don't need to worry about why this tool locates os.Chdir("..") @@ -516,6 +651,7 @@ func main() { lintConfiguration, lintFilename, lintSite, + lintFeatureMaturityLevel, } for _, linter := range linters { err := linter() diff --git a/tools/go.mod b/tools/go.mod index 3e1a9b24..8e6e5873 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -19,4 +19,5 @@ go 1.21 require ( github.com/yoheimuta/go-protoparser/v4 v4.11.0 golang.org/x/text v0.18.0 + gopkg.in/yaml.v3 v3.0.1 ) diff --git a/tools/go.sum b/tools/go.sum index 883fac4a..528d0646 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -2,3 +2,7 @@ github.com/yoheimuta/go-protoparser/v4 v4.11.0 h1:zhP3R1bzopFKOco4YouXR7X126ggQX github.com/yoheimuta/go-protoparser/v4 v4.11.0/go.mod h1:AHNNnSWnb0UoL4QgHPiOAg2BniQceFscPI5X/BZNHl8= golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=