You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: geps/gep-713/index.md
+8-7
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ When designing Gateway API, a recurring challenge became apparent. There was oft
29
29
There are several cases where this happens, such as:
30
30
- when changing the spec of the object to hold the new piece of information is not possible (e.g., `ReferenceGrant`, from [GEP-709](../gep-709/index.md), when affecting Secrets and Services);
31
31
- when the new specification applies at different scopes (different object kinds), making it more maintainable if the declaration is extracted to a separate object, rather than adding new fields representing the same functionality across multiple objects;
32
-
- when the augmented behavior is intended to [span across relationships of an object](#spanning-behavior-across-relationships-of-a-target) other than the the object that is directly referred in the declaration;
32
+
- when the augmented behavior is intended to [span across relationships of an object](#spanning-behavior-across-relationships-of-a-target) other than the object that is directly referred in the declaration;
33
33
- when the augmented behavior is subject to different RBAC rules than the object it refers to;
34
34
- to circumvent having to enforce hard changes to established implementations.
35
35
@@ -54,7 +54,7 @@ After a few iterations of Gateway API experimenting with this pattern-both, wi
54
54
- A Gateway API implementer would like to define a way to specify a behavior that applies to multiple kinds of objects with a single declaration.
55
55
- For example, an implementer might want to define a way to specify a behavior that applies to selected HTTPRoutes and selected TCPRoutes. Even though the HTTPRoute object could otherwise be extended via an implementation-specific filter, the TCPRoute object cannot.
56
56
- A third-party provider would like to offer a way to independently extend the behavior of Gateways controlled by one or more Gateway API implementers.
57
-
- For example, a provider that knows how to configure Gateways controlled by one or more Gateway API implementersto send data passing through those gateways to a service of the provider might want to define a way for Gateway API users to activate this feature in standard way across the supported implementations though without direct involvement of the implementers.
57
+
- For example, a provider that knows how to configure Gateways controlled by one or more Gateway API implementers, aiming to send data passing through those gateways to a service of the provider, might want to define a way for Gateway API users to activate this feature in a standard way across the supported implementations, without direct involvement of the implementers.
58
58
59
59
All [risks and caveats](#tldr) considered, these are in general a few reasons for using metaresources over another (possibly more direct) way to modify the spec (“augment the behavior”) of an object:
60
60
@@ -67,8 +67,9 @@ All [risks and caveats](#tldr) considered, these are in general a few reasons fo
67
67
### Definitions
68
68
69
69
-_**Metaresource**_: a resource that augments the behavior of another resource without modifying the definition of the resource. Metaresources MUST clearly define a _target_ and an _intent_ as defined in this GEP, and MUST clearly communicate status about whether the augmentation is happening or not.
70
-
- The target of a metaresource specifies the resource or resources whose behavior the metaresource will augment.
70
+
- The target of a metaresource specifies the resource or resources whose behavior the metaresource intend to augment.
71
71
- The intent of a metaresource specifies what augmentation the metaresource will apply.
72
+
72
73
Metaresources are Custom Resource Definitions (CRDs) that comply with a particular [structure](#metaresource-structure). This structure includes standardized fields for specifying the target(s), metaresource-specific fields to describe the intended augmentation, and standardized status fields to communicate whether the augmentation is happening or not.
73
74
-_**Policy**_: a specific example of a metaresource whose intent is to specify rules that control the behavior of the target resource.
74
75
@@ -92,9 +93,9 @@ All [risks and caveats](#tldr) considered, these are in general a few reasons fo
92
93
93
94
This section describes concepts and aspects for designing and using metaresource objects.
94
95
95
-
It reinforces previously defined concepts and defines other important ones such as the concepts of [Hierarchy of target kinds](#hierarchy-of-target-kinds), [Merge strategy](#merge-strategies), and [Effective metaresources](#effective-metaresources). It also describes an [Abstract process for calculating effective specs](#abstract-process-for-calculating-effective-metaresources) out of a set of metaresources objects.
96
+
It reinforces previously defined concepts and defines other important ones such as the concepts of [Hierarchy of target kinds](#hierarchy-of-target-kinds), [Merge strategy](#merge-strategies), and [Effective metaresources](#effective-metaresources). It also describes an [Abstract process for calculating effective specs](#abstract-process-for-calculating-effective-metaresources) out of a set of metaresource objects.
96
97
97
-
Designers of new metaresource kinds are encouraged to read this section top-to-bottom while users of metaresources may refer to it to further understand about the design decisions and thus infer about specific behavior and alternatives for a given metaresource kind.
98
+
Designers of new metaresource kinds are encouraged to read this section top-to-bottom while users of metaresources may refer to it more specifically, to further understand about the design decisions and thus make inferences about the behavior and alternatives for a given metaresource kind.
98
99
99
100
### Metaresources
100
101
@@ -127,8 +128,8 @@ spec:
127
128
_(This is a hypothetical example: no ColorPolicy resource is defined in Gateway API.)_
128
129
129
130
- Every metaresource MUST include a `targetRefs` stanza specifying which resource(s) the metaresource intends to augment.
130
-
- Every metaresource MUST include a implementation-specific fields specifying how the metaresource will augment the behavior of the target resource(s). This is informally referred to as the "spec proper."
131
-
- A metaresource MAY include a additional fields specifying a so-called _merge strategy_, i.e., how the metaresource should be combined with other metaresources that affect the same target resource(s). This typically include directives for dealing with conflicting and/or missing specs, such as for applying default and/or override values on the target resources.
131
+
- Every metaresource MUST include one or more implementation-specific fields specifying how the metaresource will augment the behavior of the target resource(s). This is informally referred to as the "spec proper."
132
+
- A metaresource MAY include additional fields specifying a so-called _merge strategy_, i.e., how the metaresource should be combined with other metaresources that affect the same target resource(s). This typically include directives for dealing with conflicting and/or missing specs, such as for applying default and/or override values on the target resources.
0 commit comments