forked from istio/enhancements
-
Notifications
You must be signed in to change notification settings - Fork 0
/
features_schema.json
113 lines (113 loc) · 5.64 KB
/
features_schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
"$id": "istio.io/features",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Defines the maturity of features in Istio",
"type": "object",
"properties": {
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description":"A unique machine-readable identifier for the feature"
},
"name": {
"type": "string",
"description": "The name of the feature."
},
"link": {
"type": "string",
"description": "A primary link that users can navigate to in order to find out more about a feature. This link may be provided to users by tooling consuming features.yaml."
},
"area": {
"type": "string",
"description": "The area of the feature.",
"enum": [
"Traffic Management",
"Observability",
"Extensibility",
"Security and policy enforcement",
"Core"
]
},
"level": {
"type": "object",
"properties": {
"checklist": {
"type": "string",
"description": "The path to the checklist to track a feature's maturity."
},
"maturity": {
"type": "string",
"description": "The current maturity level of the feature. This can be experimental, alpha, beta, or stable. Experimental is an optional maturity level that can be skipped. For alpha, beta, and stable, all requirements for the previous levels must be met before a feature can meet the next level (i.e. a stable feature has met the requirements of both alpha and beta). There may be features for which a requirement is not applicable.",
"enum": [
"Experimental",
"Alpha",
"Beta",
"Stable"
]
},
"maturityNotes": {
"type": "string",
"description": "Specific notes that may be needed alongside a maturity level."
},
"nextExpectedPromotion": {
"type": "string",
"description": "The Istio release by which the next promotion of a feature is expected. Up until a feature is stable, a feature is expected to continuously mature. If a feature doesn't get promoted, this should be extended or the feature should be deprecated. In some rare circumstances, features will be permanently in a state below stable and never expected to be promoted. For those circumstances, this field can be marked never."
}
},
"required": [
"checklist",
"maturity"
]
},
"deprecation": {
"type": "object",
"properties": {
"state": {
"type": "string",
"description": "This can be deprecated or retired. When a feature is deprecated, users should consider migrating to a replacement as retired features may be removed. Deprecation time varies depending on the current maturity level.",
"enum": [
"deprecated",
"retired"
]
},
"details": {
"type": "object",
"description": "Should be set when a feature moves out of the active state.",
"properties": {
"replacement": {
"type": "string",
"description": "Should specify the checklist(s) for any feature replacing this deprecated feature."
},
"next": {
"type": "string",
"description": "Indicates the release in which the feature will be retired."
}
},
"required": [
"next"
]
}
},
"required": [
"state",
"details"
]
}
},
"required": [
"name",
"level",
"area",
"id"
]
}
}
},
"required": [
"features"
]
}