Skip to content

Commit f420852

Browse files
Add terminology for Declarative clients (#1186)
Rename IaC to a clearer term declarative clients, rename all references --------- Co-authored-by: Yusuke Tsutsumi <yusuke@tsutsumi.io>
1 parent e6d1b76 commit f420852

5 files changed

Lines changed: 29 additions & 24 deletions

File tree

aip/general/0009.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Examples of clients include the following:
111111
- Libraries, such as an SDK for a particular programming language
112112
- Scripts that operates on a JSON representation of a resource after reading it
113113
from an API
114-
- Tools, such as an [IaC][] client
114+
- Tools, such as a [Declarative client][]
115115
- Visual UIs, such as a web application
116116

117117
### Google API
@@ -120,14 +120,18 @@ A Network API exposed by a Google service. Most of these are hosted on the
120120
`googleapis.com` domain. It does not include other types of APIs, such as client
121121
libraries and SDKs.
122122

123-
### IaC
123+
### Declarative Clients
124124

125-
Short for Infrastructure-as-code, IaC describes a category of clients that
126-
consumes a markup language or code that represents resources exposed by an API,
127-
and executes the appropriate imperative actions to drive the resource to that
128-
desired state.
125+
Declarative Clients, also known as Infrastructure as Code (IaC), describes a
126+
category of clients that consumes a markup language or code that represents
127+
resources exposed by an API, and executes the appropriate imperative actions to
128+
drive the resource to that desired state. To determine what changes to make and
129+
if a set of updates was successful a declarative client compares server side
130+
resource attributes with client defined values. The comparison feature ensures
131+
accuracy of a creation or an update but it requires services to treat the client
132+
set fields as read-only and diligently preserve those values.
129133

130-
Examples of complexities that IaC clients abstract away include:
134+
Examples of complexities that declarative clients abstract away include:
131135

132136
- Determing the appropriate imperative action (create / update / delete) to
133137
achieve desired state.
@@ -147,10 +151,11 @@ An API that operates across a network of computers. Network APIs communicate
147151
using network protocols including HTTP, and are frequently produced by
148152
organizations separate from those that consume them.
149153

150-
[IaC]: #iac
154+
[Declarative clients]: #declarative-clients
151155
[Terraform]: https://www.terraform.io/
152156

153157
## Changelog
154158

159+
- **2023-07-24**: Rename IaC to Declarative Clients
155160
- **2023-04-01**: Adding definition of IaC
156161
- **2023-03-24**: Reformatting content to include anchor links.

aip/general/0111.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ specified in the other AIPs ([AIP-131][] through [AIP-135][]).
6161

6262
### Major distinctions between management and data plane
6363

64-
- [IaC][] tools operate on the management plane exclusively.
64+
- [Declarative clients][] operate on the management plane exclusively.
6565
- Data planes are often on the critical path of user-facing functionality, and
6666
therefore:
6767
- Have higher availabilty requirements than management planes.
@@ -71,7 +71,7 @@ specified in the other AIPs ([AIP-131][] through [AIP-135][]).
7171

7272
[AIP-131]: ./0131.md
7373
[AIP-135]: ./0136.md
74-
[IaC]: ./0009.md#iac
74+
[Declarative clients]: ./0009.md#declarative-clients
7575

7676
## Changelog
7777

aip/general/0130.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ The following enumerates multiple categories of methods that exist, often
2121
grouped up under some object (e.g. collection or resource) that the method
2222
operates upon.
2323

24-
| Category Name | Description | Related AIPs | [IaC][] integration | CLI integration | UI integration | SDK integration |
24+
| Category Name | Description | Related AIPs | [Declarative client][] integration | CLI integration | UI integration | SDK integration |
2525
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------------- | --------------- | -------------- | --------------- |
2626
| **Standard Methods** | | | | | | |
2727
| Standard collection methods | Operate on a collection of resources (List or Create). | [AIP-121][], [AIP-132][], [AIP-133][] | automatable | automatable | automatable | automatable |
@@ -55,7 +55,7 @@ in the following order:
5555
## Rationale
5656

5757
Resource-oriented standard and custom methods are recommended first, as they can
58-
be expressed in the widest variety of clients (IaC, CLIs, UIs, and so on), and
58+
be expressed in the widest variety of clients (Declarative clients, CLIs, UIs, and so on), and
5959
offer the most uniform experience that allows users to apply their knowledge of
6060
one API to another.
6161

@@ -64,7 +64,7 @@ resource or collection) offer a lesser, but still valuable level of consistency,
6464
helping the user reason about the scope of the action and the object whose
6565
configuration is read to inform that action. Although mutative custom methods
6666
are not uniform enough to have a automated integration with exclusively
67-
resource-oriented clients such as [IaC][] clients, they are still a pattern that
67+
resource-oriented clients such as [Declarative client][]s, they are still a pattern that
6868
can easily recognized by CLIs, UIs, and SDKs.
6969

7070
If one cannot express their APIs in a resource-oriented fashion at all, then the
@@ -87,4 +87,4 @@ likely have to be hand-written.
8787
[AIP-233]: ./0233.md
8888
[AIP-234]: ./0234.md
8989
[AIP-235]: ./0235.md
90-
[IaC]: ./0009.md#IaC
90+
[Declarative client]: ./0009.md#declarative-clients

aip/general/0133.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ Exceptional cases should have the following behavior:
135135

136136
- The data plane resource allows identical records without a need to
137137
disambiguate between the two (e.g. rows in a table with no primary key).
138-
- The data plane resource will not be exposed in [IaC][] clients.
138+
- The data plane resource will not be exposed in [Declarative clients][].
139139

140140
An API
141141
**may** allow the `{resource}_id` field have the [field_behavior][] `OPTIONAL`,
@@ -187,12 +187,12 @@ NOT_FOUND errors][permission-denied].
187187

188188
### Requiring user-specified ids
189189

190-
[IaC][] clients use the resource ID as a way to identify a resource for applying
191-
updates and for conflict resolution. The lack of a user-specified ID means a
192-
client is unable to find the resource unless they store the identifier locally,
193-
and can result in re-creating the resource. This in turn has a downstream effect
194-
on all resources that reference it, forcing them to update to the the ID of the
195-
newly-created resource.
190+
[Declarative clients][] use the resource ID as a way to identify a resource for
191+
applying updates and for conflict resolution. The lack of a user-specified ID
192+
means a client is unable to find the resource unless they store the identifier
193+
locally, and can result in re-creating the resource. This in turn has a
194+
downstream effect on all resources that reference it, forcing them to update to
195+
the the ID of the newly-created resource.
196196

197197
Having a user-specified ID also means the client can precalculate the resource
198198
name and use it in references from other resources.
@@ -207,7 +207,7 @@ name and use it in references from other resources.
207207
[Management Plane]: ./0111.md#management-plane
208208
[errors]: ./0193.md
209209
[field_behavior]: ./203.md
210-
[IaC]: ./0009.md#iac
210+
[Declarative clients]: ./0009.md#declarative-clients
211211
[permission-denied]: ./0193.md#permission-denied
212212

213213
## Changelog

aip/general/0203.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ behavior when initially authoring of the API.
207207
Modifying field behavior after initial authoring can result in
208208
backwards-incompatible changes in clients. For example, making an optional field
209209
required results in backwards-incompatible changes in the method signature of an
210-
RPC or a resource in an [IaC][] client. See the
210+
RPC or a resource in a [Declarative client][]. See the
211211
[Backwards compatibility](#backwards-compatibility) section for more detailed
212212
compatibility guidance.
213213

@@ -227,7 +227,7 @@ surpass the costs to clients and API users of not doing so.
227227
[aip-134]: ./0134.md
228228
[aip-180]: ./0180.md
229229
[google.api.FieldBehavior]: https://github.com/googleapis/googleapis/blob/master/google/api/field_behavior.proto#L49
230-
[IaC]: ./0009.md#iac
230+
[Declarative client]: ./0009.md#declarative-clients
231231

232232
## Changelog
233233

0 commit comments

Comments
 (0)