@intentius/chant-lexicon-gcp 0.84.0 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composites/catalog.d.ts +3 -0
- package/dist/composites/catalog.d.ts.map +1 -0
- package/dist/integrity.json +2 -2
- package/dist/manifest.json +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/composites/catalog.test.ts +39 -0
- package/src/composites/catalog.ts +1250 -0
- package/src/plugin.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/composites/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA4tC5C,CAAC"}
|
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "e9281493949b2fcdd69a54afb09d64e70553b88d5822a196399215e5e0f6bd6c",
|
|
5
5
|
"meta.json": "475f10909854d059a2e2d4fb541c058803422e38b9c64bd4d6858c0623eedb8c",
|
|
6
6
|
"types/index.d.ts": "5433b54c04b57d6fda8f3d81ef92ed0aca87f7e8e5dd3ea92d8de6e62a3ccfab",
|
|
7
7
|
"rules/hardcoded-project.ts": "228631d3159e1ffcce2359c66073d4ae59bb0285f378e46e446f416aec50481c",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"skills/chant-gcp-patterns.md": "4c6809fc7c37fa1879379ad4c0e2d114dec9497bc6eb9d1bca4e79fddea4f509",
|
|
41
41
|
"skills/chant-gcp-gke.md": "be277019da9a722c851e47cd2dfb9c9536668948c3535fb20db7697e934c4e2b"
|
|
42
42
|
},
|
|
43
|
-
"composite": "
|
|
43
|
+
"composite": "6ec37903f80628d817a052a15384d1426aa99a6c0dc65f4b26b283d44de1f8c5"
|
|
44
44
|
}
|
package/dist/manifest.json
CHANGED
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,0BAA0B,CAAC;AAuBjG,eAAO,MAAM,SAAS,EAAE,aA6XvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-gcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
4
4
|
"description": "Google Cloud lexicon for chant — declarative IaC in TypeScript",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"typescript": "^5.9.3"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
|
-
"@intentius/chant": "^0.
|
|
79
|
+
"@intentius/chant": "^0.85.0",
|
|
80
80
|
"typescript": "^5.9.3"
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composite catalog matches what this lexicon exports (#2662).
|
|
3
|
+
*
|
|
4
|
+
* `catalog.ts` is generated by `npm run generate:composite-catalogs` and is
|
|
5
|
+
* what `chant serve mcp` lists. A composite added without regenerating it would
|
|
6
|
+
* be invisible to an agent asking what gcp offers; one renamed or removed
|
|
7
|
+
* would be offered and fail to import.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { describe, expect, test } from "vitest";
|
|
11
|
+
import { isCompositeDefinition } from "@intentius/chant";
|
|
12
|
+
import * as composites from "./index";
|
|
13
|
+
import { compositeCatalog } from "./catalog";
|
|
14
|
+
import { gcpPlugin } from "../plugin";
|
|
15
|
+
|
|
16
|
+
const exported = Object.entries(composites)
|
|
17
|
+
.filter(([, value]) => isCompositeDefinition(value))
|
|
18
|
+
.map(([name]) => name)
|
|
19
|
+
.sort();
|
|
20
|
+
const catalogued = compositeCatalog.map((entry) => entry.name).sort();
|
|
21
|
+
|
|
22
|
+
describe("the gcp composite catalog", () => {
|
|
23
|
+
test("every exported composite has an entry, and every entry names an exported composite", () => {
|
|
24
|
+
expect(exported.length).toBeGreaterThan(0);
|
|
25
|
+
expect(catalogued, "regenerate with `npm run generate:composite-catalogs -- gcp`").toEqual(exported);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test("every entry says what it is and what it bundles", () => {
|
|
29
|
+
for (const entry of compositeCatalog) {
|
|
30
|
+
expect(entry.lexicon, entry.name).toBe("gcp");
|
|
31
|
+
expect(entry.description.length, entry.name).toBeGreaterThan(0);
|
|
32
|
+
expect(entry.bundles.length, entry.name).toBeGreaterThan(0);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("the plugin contributes it", () => {
|
|
37
|
+
expect(gcpPlugin.composites?.()).toBe(compositeCatalog);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,1250 @@
|
|
|
1
|
+
// Generated by scripts/generate-composite-catalogs.ts (#2662) from this
|
|
2
|
+
// lexicon's composite exports. Do not edit by hand: run
|
|
3
|
+
// `npm run generate:composite-catalogs`. catalog.test.ts holds it to the exports.
|
|
4
|
+
import type { CompositeEntry } from "@intentius/chant/lexicon";
|
|
5
|
+
|
|
6
|
+
export const compositeCatalog: CompositeEntry[] = [
|
|
7
|
+
{
|
|
8
|
+
"name": "CloudFunctionWithTrigger",
|
|
9
|
+
"lexicon": "gcp",
|
|
10
|
+
"description": "CloudFunctionWithTrigger composite — CloudFunction + source bucket + optional PubSub/HTTP trigger + invoker IAM.",
|
|
11
|
+
"bundles": [
|
|
12
|
+
"CloudFunction",
|
|
13
|
+
"IAMPolicyMember",
|
|
14
|
+
"StorageBucket"
|
|
15
|
+
],
|
|
16
|
+
"params": [
|
|
17
|
+
{
|
|
18
|
+
"name": "name",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": true,
|
|
21
|
+
"description": "Function name."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "runtime",
|
|
25
|
+
"type": "string",
|
|
26
|
+
"required": true,
|
|
27
|
+
"description": "Runtime (e.g., \"nodejs20\", \"python312\")."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "entryPoint",
|
|
31
|
+
"type": "string",
|
|
32
|
+
"required": true,
|
|
33
|
+
"description": "Entry point function name."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "region",
|
|
37
|
+
"type": "string",
|
|
38
|
+
"required": false,
|
|
39
|
+
"description": "GCP region."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "availableMemoryMb",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"required": false,
|
|
45
|
+
"description": "Available memory (default: \"256M\")."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "timeout",
|
|
49
|
+
"type": "number",
|
|
50
|
+
"required": false,
|
|
51
|
+
"description": "Timeout in seconds (default: 60)."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "triggerType",
|
|
55
|
+
"type": "\"http\" | \"pubsub\"",
|
|
56
|
+
"required": false,
|
|
57
|
+
"description": "Trigger type (default: \"http\")."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "triggerTopic",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"required": false,
|
|
63
|
+
"description": "PubSub topic name (required if triggerType is \"pubsub\")."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "publicAccess",
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"required": false,
|
|
69
|
+
"description": "Allow unauthenticated HTTP invocations (default: false)."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "environmentVariables",
|
|
73
|
+
"type": "Record<string, string>",
|
|
74
|
+
"required": false,
|
|
75
|
+
"description": "Environment variables."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "labels",
|
|
79
|
+
"type": "Record<string, string>",
|
|
80
|
+
"required": false,
|
|
81
|
+
"description": "Additional labels."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "namespace",
|
|
85
|
+
"type": "string",
|
|
86
|
+
"required": false,
|
|
87
|
+
"description": "Namespace for all resources."
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "defaults",
|
|
91
|
+
"type": "{ function?: Partial<ConstructorParameters<typeof CloudFunctionResource>[0]>; sourceBucket?: Partial<ConstructorParam...",
|
|
92
|
+
"required": false,
|
|
93
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "CloudRunServiceComposite",
|
|
99
|
+
"lexicon": "gcp",
|
|
100
|
+
"description": "Create a CloudRunService composite.",
|
|
101
|
+
"bundles": [
|
|
102
|
+
"CloudRunService",
|
|
103
|
+
"IAMPolicyMember"
|
|
104
|
+
],
|
|
105
|
+
"params": [
|
|
106
|
+
{
|
|
107
|
+
"name": "name",
|
|
108
|
+
"type": "string",
|
|
109
|
+
"required": true,
|
|
110
|
+
"description": "Service name."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "image",
|
|
114
|
+
"type": "string",
|
|
115
|
+
"required": true,
|
|
116
|
+
"description": "Container image."
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "location",
|
|
120
|
+
"type": "string",
|
|
121
|
+
"required": false,
|
|
122
|
+
"description": "GCP region."
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "port",
|
|
126
|
+
"type": "number",
|
|
127
|
+
"required": false,
|
|
128
|
+
"description": "Port the container listens on (default: 8080)."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "cpuLimit",
|
|
132
|
+
"type": "string",
|
|
133
|
+
"required": false,
|
|
134
|
+
"description": "CPU limit (default: \"1000m\")."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "memoryLimit",
|
|
138
|
+
"type": "string",
|
|
139
|
+
"required": false,
|
|
140
|
+
"description": "Memory limit (default: \"512Mi\")."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "maxInstanceRequestConcurrency",
|
|
144
|
+
"type": "number",
|
|
145
|
+
"required": false,
|
|
146
|
+
"description": "Maximum concurrent requests per instance (default: 80)."
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "minInstanceCount",
|
|
150
|
+
"type": "number",
|
|
151
|
+
"required": false,
|
|
152
|
+
"description": "Minimum instances (default: 0)."
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "maxInstanceCount",
|
|
156
|
+
"type": "number",
|
|
157
|
+
"required": false,
|
|
158
|
+
"description": "Maximum instances (default: 100)."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "publicAccess",
|
|
162
|
+
"type": "boolean",
|
|
163
|
+
"required": false,
|
|
164
|
+
"description": "Enable public (unauthenticated) access (default: false)."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "env",
|
|
168
|
+
"type": "Array<{ name: string; value: string }>",
|
|
169
|
+
"required": false,
|
|
170
|
+
"description": "Environment variables."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "labels",
|
|
174
|
+
"type": "Record<string, string>",
|
|
175
|
+
"required": false,
|
|
176
|
+
"description": "Additional labels."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "namespace",
|
|
180
|
+
"type": "string",
|
|
181
|
+
"required": false,
|
|
182
|
+
"description": "Namespace for all resources."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "defaults",
|
|
186
|
+
"type": "{ service?: Partial<ConstructorParameters<typeof CloudRunServiceResource>[0]>; publicIam?: Partial<ConstructorParamet...",
|
|
187
|
+
"required": false,
|
|
188
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "CloudSqlInstance",
|
|
194
|
+
"lexicon": "gcp",
|
|
195
|
+
"description": "Create a CloudSqlInstance composite.",
|
|
196
|
+
"bundles": [
|
|
197
|
+
"SQLDatabase",
|
|
198
|
+
"SQLInstance",
|
|
199
|
+
"SQLUser"
|
|
200
|
+
],
|
|
201
|
+
"params": [
|
|
202
|
+
{
|
|
203
|
+
"name": "name",
|
|
204
|
+
"type": "string",
|
|
205
|
+
"required": true,
|
|
206
|
+
"description": "Instance name."
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"name": "databaseVersion",
|
|
210
|
+
"type": "string",
|
|
211
|
+
"required": false,
|
|
212
|
+
"description": "Database version (default: \"POSTGRES_15\")."
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "tier",
|
|
216
|
+
"type": "string",
|
|
217
|
+
"required": false,
|
|
218
|
+
"description": "Machine tier (default: \"db-f1-micro\")."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "region",
|
|
222
|
+
"type": "string",
|
|
223
|
+
"required": false,
|
|
224
|
+
"description": "GCP region."
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"name": "databaseName",
|
|
228
|
+
"type": "string",
|
|
229
|
+
"required": false,
|
|
230
|
+
"description": "Database name to create (default: same as instance name)."
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"name": "userName",
|
|
234
|
+
"type": "string",
|
|
235
|
+
"required": false,
|
|
236
|
+
"description": "User name (default: \"admin\")."
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"name": "diskSize",
|
|
240
|
+
"type": "number",
|
|
241
|
+
"required": false,
|
|
242
|
+
"description": "Disk size in GB (default: 10)."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"name": "diskAutoresize",
|
|
246
|
+
"type": "boolean",
|
|
247
|
+
"required": false,
|
|
248
|
+
"description": "Disk autoresize (default: true)."
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "backupEnabled",
|
|
252
|
+
"type": "boolean",
|
|
253
|
+
"required": false,
|
|
254
|
+
"description": "Enable backups (default: true)."
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"name": "highAvailability",
|
|
258
|
+
"type": "boolean",
|
|
259
|
+
"required": false,
|
|
260
|
+
"description": "Enable high availability (default: false)."
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"name": "labels",
|
|
264
|
+
"type": "Record<string, string>",
|
|
265
|
+
"required": false,
|
|
266
|
+
"description": "Additional labels."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"name": "namespace",
|
|
270
|
+
"type": "string",
|
|
271
|
+
"required": false,
|
|
272
|
+
"description": "Namespace for all resources."
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "defaults",
|
|
276
|
+
"type": "{ instance?: Partial<ConstructorParameters<typeof SQLInstance>[0]>; database?: Partial<ConstructorParameters<typeof S...",
|
|
277
|
+
"required": false,
|
|
278
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"name": "GcsBucket",
|
|
284
|
+
"lexicon": "gcp",
|
|
285
|
+
"description": "Create a GcsBucket composite.",
|
|
286
|
+
"bundles": [
|
|
287
|
+
"StorageBucket"
|
|
288
|
+
],
|
|
289
|
+
"params": [
|
|
290
|
+
{
|
|
291
|
+
"name": "name",
|
|
292
|
+
"type": "string",
|
|
293
|
+
"required": true,
|
|
294
|
+
"description": "Bucket name."
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "location",
|
|
298
|
+
"type": "string",
|
|
299
|
+
"required": false,
|
|
300
|
+
"description": "GCS location (default: \"US\")."
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"name": "storageClass",
|
|
304
|
+
"type": "\"STANDARD\" | \"NEARLINE\" | \"COLDLINE\" | \"ARCHIVE\"",
|
|
305
|
+
"required": false,
|
|
306
|
+
"description": "Storage class (default: \"STANDARD\")."
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "uniformBucketLevelAccess",
|
|
310
|
+
"type": "boolean",
|
|
311
|
+
"required": false,
|
|
312
|
+
"description": "Enable uniform bucket-level access (default: true)."
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "versioning",
|
|
316
|
+
"type": "boolean",
|
|
317
|
+
"required": false,
|
|
318
|
+
"description": "Enable versioning (default: false)."
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "kmsKeyName",
|
|
322
|
+
"type": "string",
|
|
323
|
+
"required": false,
|
|
324
|
+
"description": "KMS key name for encryption."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"name": "lifecycleDeleteAfterDays",
|
|
328
|
+
"type": "number",
|
|
329
|
+
"required": false,
|
|
330
|
+
"description": "Lifecycle rule: delete objects older than N days."
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "lifecycleNearlineAfterDays",
|
|
334
|
+
"type": "number",
|
|
335
|
+
"required": false,
|
|
336
|
+
"description": "Lifecycle rule: transition to Nearline after N days."
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"name": "labels",
|
|
340
|
+
"type": "Record<string, string>",
|
|
341
|
+
"required": false,
|
|
342
|
+
"description": "Additional labels."
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"name": "namespace",
|
|
346
|
+
"type": "string",
|
|
347
|
+
"required": false,
|
|
348
|
+
"description": "Namespace for all resources."
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"name": "defaults",
|
|
352
|
+
"type": "{ bucket?: Partial<ConstructorParameters<typeof StorageBucket>[0]>; }",
|
|
353
|
+
"required": false,
|
|
354
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "GkeCluster",
|
|
360
|
+
"lexicon": "gcp",
|
|
361
|
+
"description": "Create a GkeCluster composite — returns declarable instances for a ContainerCluster and ContainerNodePool.",
|
|
362
|
+
"bundles": [
|
|
363
|
+
"GKECluster",
|
|
364
|
+
"NodePool"
|
|
365
|
+
],
|
|
366
|
+
"params": [
|
|
367
|
+
{
|
|
368
|
+
"name": "name",
|
|
369
|
+
"type": "string",
|
|
370
|
+
"required": true,
|
|
371
|
+
"description": "Cluster name."
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "projectId",
|
|
375
|
+
"type": "string",
|
|
376
|
+
"required": true,
|
|
377
|
+
"description": "GCP project ID for the workload identity pool."
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"name": "location",
|
|
381
|
+
"type": "string",
|
|
382
|
+
"required": false,
|
|
383
|
+
"description": "GCP region for regional cluster (default: uses GCP.Region)."
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"name": "initialNodeCount",
|
|
387
|
+
"type": "number",
|
|
388
|
+
"required": false,
|
|
389
|
+
"description": "Initial node count per zone (default: 1)."
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "machineType",
|
|
393
|
+
"type": "string",
|
|
394
|
+
"required": false,
|
|
395
|
+
"description": "Machine type for nodes (default: \"e2-medium\")."
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"name": "minNodeCount",
|
|
399
|
+
"type": "number",
|
|
400
|
+
"required": false,
|
|
401
|
+
"description": "Minimum nodes for autoscaling (default: 1)."
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"name": "maxNodeCount",
|
|
405
|
+
"type": "number",
|
|
406
|
+
"required": false,
|
|
407
|
+
"description": "Maximum nodes for autoscaling (default: 5)."
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "workloadIdentity",
|
|
411
|
+
"type": "boolean",
|
|
412
|
+
"required": false,
|
|
413
|
+
"description": "Enable workload identity (default: true)."
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "diskSizeGb",
|
|
417
|
+
"type": "number",
|
|
418
|
+
"required": false,
|
|
419
|
+
"description": "Disk size in GB for nodes (default: 100)."
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"name": "diskType",
|
|
423
|
+
"type": "string",
|
|
424
|
+
"required": false,
|
|
425
|
+
"description": "Boot disk type for nodes (default: \"pd-standard\")."
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "network",
|
|
429
|
+
"type": "string",
|
|
430
|
+
"required": false,
|
|
431
|
+
"description": "VPC network name (if omitted, uses default network)."
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"name": "subnetwork",
|
|
435
|
+
"type": "string",
|
|
436
|
+
"required": false,
|
|
437
|
+
"description": "Subnetwork name for the cluster nodes."
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"name": "privateNodes",
|
|
441
|
+
"type": "boolean",
|
|
442
|
+
"required": false,
|
|
443
|
+
"description": "Enable private nodes — nodes have only internal IPs, no external IPs."
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"name": "masterCidr",
|
|
447
|
+
"type": "string",
|
|
448
|
+
"required": false,
|
|
449
|
+
"description": "CIDR block for the master's private endpoint (e.g. \"172.16.0.0/28\")."
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"name": "nodeLocations",
|
|
453
|
+
"type": "string[]",
|
|
454
|
+
"required": false,
|
|
455
|
+
"description": "Restrict node pools to specific zones within the region."
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"name": "releaseChannel",
|
|
459
|
+
"type": "\"RAPID\" | \"REGULAR\" | \"STABLE\"",
|
|
460
|
+
"required": false,
|
|
461
|
+
"description": "GKE release channel (default: \"REGULAR\")."
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"name": "labels",
|
|
465
|
+
"type": "Record<string, string>",
|
|
466
|
+
"required": false,
|
|
467
|
+
"description": "Additional labels."
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"name": "namespace",
|
|
471
|
+
"type": "string",
|
|
472
|
+
"required": false,
|
|
473
|
+
"description": "Namespace for all resources."
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "defaults",
|
|
477
|
+
"type": "{ cluster?: Partial<ConstructorParameters<typeof GKECluster>[0]>; nodePool?: Partial<ConstructorParameters<typeof Nod...",
|
|
478
|
+
"required": false,
|
|
479
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
480
|
+
}
|
|
481
|
+
]
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"name": "GkeCrdbRegion",
|
|
485
|
+
"lexicon": "gcp",
|
|
486
|
+
"description": "Create a GkeCrdbRegion composite.",
|
|
487
|
+
"bundles": [
|
|
488
|
+
"DNSManagedZone",
|
|
489
|
+
"GCPServiceAccount",
|
|
490
|
+
"GKECluster",
|
|
491
|
+
"IAMPolicyMember",
|
|
492
|
+
"NodePool"
|
|
493
|
+
],
|
|
494
|
+
"params": [
|
|
495
|
+
{
|
|
496
|
+
"name": "region",
|
|
497
|
+
"type": "string",
|
|
498
|
+
"required": true,
|
|
499
|
+
"description": "GCP region (e.g. \"us-east4\")."
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"name": "clusterName",
|
|
503
|
+
"type": "string",
|
|
504
|
+
"required": true,
|
|
505
|
+
"description": "GKE cluster name (e.g. \"gke-crdb-east\")."
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"name": "network",
|
|
509
|
+
"type": "string",
|
|
510
|
+
"required": true,
|
|
511
|
+
"description": "VPC network resource name."
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"name": "subnetwork",
|
|
515
|
+
"type": "string",
|
|
516
|
+
"required": true,
|
|
517
|
+
"description": "Node subnet resource name for the cluster."
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"name": "domain",
|
|
521
|
+
"type": "string",
|
|
522
|
+
"required": true,
|
|
523
|
+
"description": "Public DNS domain for this region (e.g. \"east.crdb.example.com\")."
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"name": "project",
|
|
527
|
+
"type": "string",
|
|
528
|
+
"required": true,
|
|
529
|
+
"description": "GCP project ID for Workload Identity pool and service account names."
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"name": "crdbNamespace",
|
|
533
|
+
"type": "string",
|
|
534
|
+
"required": true,
|
|
535
|
+
"description": "K8s namespace where CockroachDB pods run (e.g. \"crdb-east\")."
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"name": "crdbK8sSa",
|
|
539
|
+
"type": "string",
|
|
540
|
+
"required": false,
|
|
541
|
+
"description": "K8s ServiceAccount name for CockroachDB pods (default: \"cockroachdb\")."
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"name": "masterCidr",
|
|
545
|
+
"type": "string",
|
|
546
|
+
"required": false,
|
|
547
|
+
"description": "CIDR block for the GKE master's private endpoint (e.g. \"172.16.0.0/28\")."
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"name": "nodeConfig",
|
|
551
|
+
"type": "GkeCrdbRegionNodeConfig",
|
|
552
|
+
"required": false,
|
|
553
|
+
"description": "Node pool configuration."
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "releaseChannel",
|
|
557
|
+
"type": "\"RAPID\" | \"REGULAR\" | \"STABLE\"",
|
|
558
|
+
"required": false,
|
|
559
|
+
"description": "GCP release channel for cluster upgrades (default: \"REGULAR\")."
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "backupBucket",
|
|
563
|
+
"type": "string",
|
|
564
|
+
"required": false,
|
|
565
|
+
"description": "Optional backup bucket name to grant CRDB GSA storage.objectAdmin access."
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"name": "labels",
|
|
569
|
+
"type": "Record<string, string>",
|
|
570
|
+
"required": false,
|
|
571
|
+
"description": "Additional labels for all resources."
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"name": "namespace",
|
|
575
|
+
"type": "string",
|
|
576
|
+
"required": false,
|
|
577
|
+
"description": "Namespace for Config Connector resources."
|
|
578
|
+
}
|
|
579
|
+
]
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "GovernanceFoundation",
|
|
583
|
+
"lexicon": "gcp",
|
|
584
|
+
"description": "Security / Infrastructure / Sandbox / Workloads folders with `disable-sa-key-creation` and `skip-default-network` enforced at the organization root.",
|
|
585
|
+
"bundles": [
|
|
586
|
+
"OrgpolicyPolicy",
|
|
587
|
+
"ResourcemanagerFolder"
|
|
588
|
+
],
|
|
589
|
+
"params": [
|
|
590
|
+
{
|
|
591
|
+
"name": "orgId",
|
|
592
|
+
"type": "string",
|
|
593
|
+
"required": true,
|
|
594
|
+
"description": "The organization to hang the foundation off (\"123456789012\" or \"organizations/123456789012\")."
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "namespace",
|
|
598
|
+
"type": "string",
|
|
599
|
+
"required": false,
|
|
600
|
+
"description": "Namespace for all resources."
|
|
601
|
+
}
|
|
602
|
+
]
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"name": "GpuNodePool",
|
|
606
|
+
"lexicon": "gcp",
|
|
607
|
+
"description": "Create a GpuNodePool composite — a scale-to-zero ContainerNodePool with GPU accelerators, tainted so only pods with a matching toleration land there.",
|
|
608
|
+
"bundles": [
|
|
609
|
+
"NodePool"
|
|
610
|
+
],
|
|
611
|
+
"params": [
|
|
612
|
+
{
|
|
613
|
+
"name": "name",
|
|
614
|
+
"type": "string",
|
|
615
|
+
"required": true,
|
|
616
|
+
"description": "Node pool name."
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
"name": "clusterRef",
|
|
620
|
+
"type": "Record<string, unknown>",
|
|
621
|
+
"required": true,
|
|
622
|
+
"description": "Reference to the GKE cluster this pool attaches to, e.g. `{ name: \"my-cluster\" }`."
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"name": "location",
|
|
626
|
+
"type": "string",
|
|
627
|
+
"required": true,
|
|
628
|
+
"description": "GCP region or zone of the cluster."
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"name": "machineType",
|
|
632
|
+
"type": "string",
|
|
633
|
+
"required": false,
|
|
634
|
+
"description": "Machine type for GPU nodes (default: \"n1-standard-8\")."
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
"name": "acceleratorType",
|
|
638
|
+
"type": "string",
|
|
639
|
+
"required": false,
|
|
640
|
+
"description": "Accelerator type, e.g. \"nvidia-tesla-t4\", \"nvidia-l4\", \"nvidia-tesla-a100\" (default: \"nvidia-tesla-t4\")."
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
"name": "acceleratorCount",
|
|
644
|
+
"type": "number",
|
|
645
|
+
"required": false,
|
|
646
|
+
"description": "Number of accelerators per node (default: 1)."
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"name": "minNodeCount",
|
|
650
|
+
"type": "number",
|
|
651
|
+
"required": false,
|
|
652
|
+
"description": "Minimum nodes for autoscaling — 0 enables scale-to-zero (default: 0)."
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "maxNodeCount",
|
|
656
|
+
"type": "number",
|
|
657
|
+
"required": false,
|
|
658
|
+
"description": "Maximum nodes for autoscaling (default: 4)."
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"name": "diskSizeGb",
|
|
662
|
+
"type": "number",
|
|
663
|
+
"required": false,
|
|
664
|
+
"description": "Boot disk size in GB (default: 200)."
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
"name": "diskType",
|
|
668
|
+
"type": "string",
|
|
669
|
+
"required": false,
|
|
670
|
+
"description": "Boot disk type (default: \"pd-ssd\")."
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"name": "taint",
|
|
674
|
+
"type": "GpuNodePoolTaint[]",
|
|
675
|
+
"required": false,
|
|
676
|
+
"description": "Node taints — only pods with a matching toleration are scheduled here."
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"name": "workloadMetadata",
|
|
680
|
+
"type": "boolean",
|
|
681
|
+
"required": false,
|
|
682
|
+
"description": "Enable GKE metadata server workload identity mode on nodes (default: true)."
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"name": "gpuSharingConfig",
|
|
686
|
+
"type": "Record<string, unknown>",
|
|
687
|
+
"required": false,
|
|
688
|
+
"description": "GPU time-sharing configuration, e.g. `{ maxSharedClientsPerGpu: 2, gpuSharingStrategy: \"TIME_SHARING\" }`."
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"name": "gpuPartitionSize",
|
|
692
|
+
"type": "string",
|
|
693
|
+
"required": false,
|
|
694
|
+
"description": "Multi-instance GPU (MIG) partition size, e.g. \"1g.5gb\"."
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
"name": "labels",
|
|
698
|
+
"type": "Record<string, string>",
|
|
699
|
+
"required": false,
|
|
700
|
+
"description": "Additional labels."
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"name": "namespace",
|
|
704
|
+
"type": "string",
|
|
705
|
+
"required": false,
|
|
706
|
+
"description": "Namespace for the node pool resource."
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
"name": "defaults",
|
|
710
|
+
"type": "{ nodePool?: Partial<ConstructorParameters<typeof NodePool>[0]>; }",
|
|
711
|
+
"required": false,
|
|
712
|
+
"description": "Per-member defaults for customizing the underlying resource."
|
|
713
|
+
}
|
|
714
|
+
]
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
"name": "LocationRestriction",
|
|
718
|
+
"lexicon": "gcp",
|
|
719
|
+
"description": "Bundles OrgpolicyPolicy.",
|
|
720
|
+
"bundles": [
|
|
721
|
+
"OrgpolicyPolicy"
|
|
722
|
+
],
|
|
723
|
+
"params": [
|
|
724
|
+
{
|
|
725
|
+
"name": "orgId",
|
|
726
|
+
"type": "string",
|
|
727
|
+
"required": true,
|
|
728
|
+
"description": "The organization the policy binds to."
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"name": "locations",
|
|
732
|
+
"type": "string[]",
|
|
733
|
+
"required": true,
|
|
734
|
+
"description": "The only locations resources may be created in (value groups like \"in:eu-locations\" work)."
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"name": "namespace",
|
|
738
|
+
"type": "string",
|
|
739
|
+
"required": false,
|
|
740
|
+
"description": "Namespace for all resources."
|
|
741
|
+
}
|
|
742
|
+
]
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
"name": "ManagedCertificate",
|
|
746
|
+
"lexicon": "gcp",
|
|
747
|
+
"description": "ManagedCertificate composite — ManagedSslCertificate + optional TargetHttpsProxy + UrlMap.",
|
|
748
|
+
"bundles": [
|
|
749
|
+
"ManagedSSLCertificate",
|
|
750
|
+
"TargetHTTPSProxy",
|
|
751
|
+
"URLMap"
|
|
752
|
+
],
|
|
753
|
+
"params": [
|
|
754
|
+
{
|
|
755
|
+
"name": "name",
|
|
756
|
+
"type": "string",
|
|
757
|
+
"required": true,
|
|
758
|
+
"description": "Certificate name."
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
"name": "domains",
|
|
762
|
+
"type": "string[]",
|
|
763
|
+
"required": true,
|
|
764
|
+
"description": "Domains for the managed SSL certificate."
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
"name": "createProxy",
|
|
768
|
+
"type": "boolean",
|
|
769
|
+
"required": false,
|
|
770
|
+
"description": "Create a TargetHttpsProxy and UrlMap (default: false)."
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"name": "backendServiceName",
|
|
774
|
+
"type": "string",
|
|
775
|
+
"required": false,
|
|
776
|
+
"description": "Backend service name (required if createProxy is true)."
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"name": "labels",
|
|
780
|
+
"type": "Record<string, string>",
|
|
781
|
+
"required": false,
|
|
782
|
+
"description": "Additional labels."
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"name": "namespace",
|
|
786
|
+
"type": "string",
|
|
787
|
+
"required": false,
|
|
788
|
+
"description": "Namespace for all resources."
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
"name": "defaults",
|
|
792
|
+
"type": "{ certificate?: Partial<ConstructorParameters<typeof ManagedSSLCertificate>[0]>; targetHttpsProxy?: Partial<Construct...",
|
|
793
|
+
"required": false,
|
|
794
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
795
|
+
}
|
|
796
|
+
]
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "MemorystoreRedis",
|
|
800
|
+
"lexicon": "gcp",
|
|
801
|
+
"description": "Create a MemorystoreRedis composite.",
|
|
802
|
+
"bundles": [
|
|
803
|
+
"RedisInstance"
|
|
804
|
+
],
|
|
805
|
+
"params": [
|
|
806
|
+
{
|
|
807
|
+
"name": "name",
|
|
808
|
+
"type": "string",
|
|
809
|
+
"required": true,
|
|
810
|
+
"description": "Instance name."
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"name": "purpose",
|
|
814
|
+
"type": "\"persistent\" | \"cache\"",
|
|
815
|
+
"required": true,
|
|
816
|
+
"description": "Purpose drives the maxmemory-policy default."
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"name": "tier",
|
|
820
|
+
"type": "string",
|
|
821
|
+
"required": true,
|
|
822
|
+
"description": "Memorystore tier (e.g. \"BASIC\", \"STANDARD_HA\")."
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"name": "memorySizeGb",
|
|
826
|
+
"type": "number",
|
|
827
|
+
"required": true,
|
|
828
|
+
"description": "Memory size in GB."
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"name": "region",
|
|
832
|
+
"type": "string",
|
|
833
|
+
"required": true,
|
|
834
|
+
"description": "GCP region."
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"name": "networkRef",
|
|
838
|
+
"type": "string",
|
|
839
|
+
"required": true,
|
|
840
|
+
"description": "authorizedNetworkRef.name — the VPC network to authorize."
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
"name": "redisVersion",
|
|
844
|
+
"type": "string",
|
|
845
|
+
"required": false,
|
|
846
|
+
"description": "Redis version (default: \"REDIS_7_0\")."
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
"name": "authEnabled",
|
|
850
|
+
"type": "boolean",
|
|
851
|
+
"required": false,
|
|
852
|
+
"description": "Enable AUTH (default: true)."
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"name": "namespace",
|
|
856
|
+
"type": "string",
|
|
857
|
+
"required": false,
|
|
858
|
+
"description": "Namespace for all resources."
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"name": "labels",
|
|
862
|
+
"type": "Record<string, string>",
|
|
863
|
+
"required": false,
|
|
864
|
+
"description": "Additional labels."
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
"name": "defaults",
|
|
868
|
+
"type": "{ instance?: Partial<Record<string, unknown>>; }",
|
|
869
|
+
"required": false,
|
|
870
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
871
|
+
}
|
|
872
|
+
]
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"name": "MultiRegionVpc",
|
|
876
|
+
"lexicon": "gcp",
|
|
877
|
+
"description": "Create a MultiRegionVpc composite — one VPC with subnets, Cloud NAT, and an allow-internal firewall for every region in the array.",
|
|
878
|
+
"bundles": [
|
|
879
|
+
"Firewall",
|
|
880
|
+
"Router",
|
|
881
|
+
"RouterNAT",
|
|
882
|
+
"Subnetwork",
|
|
883
|
+
"VPCNetwork"
|
|
884
|
+
],
|
|
885
|
+
"params": [
|
|
886
|
+
{
|
|
887
|
+
"name": "name",
|
|
888
|
+
"type": "string",
|
|
889
|
+
"required": true,
|
|
890
|
+
"description": "VPC network name."
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"name": "regions",
|
|
894
|
+
"type": "MultiRegionVpcRegion[]",
|
|
895
|
+
"required": true,
|
|
896
|
+
"description": "One entry per GCP region."
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"name": "enableFlowLogs",
|
|
900
|
+
"type": "boolean",
|
|
901
|
+
"required": false,
|
|
902
|
+
"description": "Enable VPC flow logs on all subnets (default: false)."
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
"name": "labels",
|
|
906
|
+
"type": "Record<string, string>",
|
|
907
|
+
"required": false,
|
|
908
|
+
"description": "Additional labels for all resources."
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
"name": "namespace",
|
|
912
|
+
"type": "string",
|
|
913
|
+
"required": false,
|
|
914
|
+
"description": "Namespace for Config Connector resources."
|
|
915
|
+
}
|
|
916
|
+
]
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"name": "OrganizationAuditConfig",
|
|
920
|
+
"lexicon": "gcp",
|
|
921
|
+
"description": "Bundles IAMAuditConfig.",
|
|
922
|
+
"bundles": [
|
|
923
|
+
"IAMAuditConfig"
|
|
924
|
+
],
|
|
925
|
+
"params": [
|
|
926
|
+
{
|
|
927
|
+
"name": "orgId",
|
|
928
|
+
"type": "string",
|
|
929
|
+
"required": true,
|
|
930
|
+
"description": "The organization audit logging is enabled on."
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
"name": "service",
|
|
934
|
+
"type": "string",
|
|
935
|
+
"required": false,
|
|
936
|
+
"description": "Defaults to \"allServices\"."
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"name": "logTypes",
|
|
940
|
+
"type": "string[]",
|
|
941
|
+
"required": false,
|
|
942
|
+
"description": "Defaults to ADMIN_READ / DATA_READ / DATA_WRITE."
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"name": "namespace",
|
|
946
|
+
"type": "string",
|
|
947
|
+
"required": false,
|
|
948
|
+
"description": "Namespace for all resources."
|
|
949
|
+
}
|
|
950
|
+
]
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
"name": "PrivateService",
|
|
954
|
+
"lexicon": "gcp",
|
|
955
|
+
"description": "PrivateService composite — GlobalAddress + ServiceNetworkingConnection + optional DNS.",
|
|
956
|
+
"bundles": [
|
|
957
|
+
"ComputeAddress",
|
|
958
|
+
"DNSManagedZone",
|
|
959
|
+
"ServicenetworkingConnection"
|
|
960
|
+
],
|
|
961
|
+
"params": [
|
|
962
|
+
{
|
|
963
|
+
"name": "name",
|
|
964
|
+
"type": "string",
|
|
965
|
+
"required": true,
|
|
966
|
+
"description": "Service name."
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"name": "networkName",
|
|
970
|
+
"type": "string",
|
|
971
|
+
"required": true,
|
|
972
|
+
"description": "VPC network name to peer with."
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"name": "prefixLength",
|
|
976
|
+
"type": "number",
|
|
977
|
+
"required": false,
|
|
978
|
+
"description": "IP address prefix length (default: 16)."
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"name": "addressType",
|
|
982
|
+
"type": "string",
|
|
983
|
+
"required": false,
|
|
984
|
+
"description": "Address type (default: \"INTERNAL\")."
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
"name": "purpose",
|
|
988
|
+
"type": "string",
|
|
989
|
+
"required": false,
|
|
990
|
+
"description": "Purpose (default: \"VPC_PEERING\")."
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"name": "enableDns",
|
|
994
|
+
"type": "boolean",
|
|
995
|
+
"required": false,
|
|
996
|
+
"description": "Enable a DNS zone for the private service (default: false)."
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
"name": "dnsZoneName",
|
|
1000
|
+
"type": "string",
|
|
1001
|
+
"required": false,
|
|
1002
|
+
"description": "DNS zone name (default: \"{name}-dns\")."
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"name": "dnsSuffix",
|
|
1006
|
+
"type": "string",
|
|
1007
|
+
"required": false,
|
|
1008
|
+
"description": "DNS name suffix (default: \"internal.\")."
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
"name": "labels",
|
|
1012
|
+
"type": "Record<string, string>",
|
|
1013
|
+
"required": false,
|
|
1014
|
+
"description": "Additional labels."
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
"name": "namespace",
|
|
1018
|
+
"type": "string",
|
|
1019
|
+
"required": false,
|
|
1020
|
+
"description": "Namespace for all resources."
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
"name": "defaults",
|
|
1024
|
+
"type": "{ globalAddress?: Partial<ConstructorParameters<typeof ComputeAddress>[0]>; serviceConnection?: Partial<ConstructorPa...",
|
|
1025
|
+
"required": false,
|
|
1026
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
1027
|
+
}
|
|
1028
|
+
]
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"name": "PubSubPipeline",
|
|
1032
|
+
"lexicon": "gcp",
|
|
1033
|
+
"description": "PubSubPipeline composite — Topic + Subscription + optional DLQ topic + subscriber IAM binding.",
|
|
1034
|
+
"bundles": [
|
|
1035
|
+
"IAMPolicyMember",
|
|
1036
|
+
"PubSubSubscription",
|
|
1037
|
+
"PubSubTopic"
|
|
1038
|
+
],
|
|
1039
|
+
"params": [
|
|
1040
|
+
{
|
|
1041
|
+
"name": "name",
|
|
1042
|
+
"type": "string",
|
|
1043
|
+
"required": true,
|
|
1044
|
+
"description": "Pipeline name."
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
"name": "ackDeadlineSeconds",
|
|
1048
|
+
"type": "number",
|
|
1049
|
+
"required": false,
|
|
1050
|
+
"description": "Subscription ack deadline in seconds (default: 10)."
|
|
1051
|
+
},
|
|
1052
|
+
{
|
|
1053
|
+
"name": "messageRetentionDuration",
|
|
1054
|
+
"type": "string",
|
|
1055
|
+
"required": false,
|
|
1056
|
+
"description": "Message retention duration (default: \"604800s\" = 7 days)."
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "enableDeadLetterQueue",
|
|
1060
|
+
"type": "boolean",
|
|
1061
|
+
"required": false,
|
|
1062
|
+
"description": "Enable dead-letter queue (default: false)."
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
"name": "maxDeliveryAttempts",
|
|
1066
|
+
"type": "number",
|
|
1067
|
+
"required": false,
|
|
1068
|
+
"description": "Max delivery attempts before sending to DLQ (default: 5)."
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
"name": "subscriberServiceAccount",
|
|
1072
|
+
"type": "string",
|
|
1073
|
+
"required": false,
|
|
1074
|
+
"description": "Service account email for subscriber IAM binding."
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
"name": "labels",
|
|
1078
|
+
"type": "Record<string, string>",
|
|
1079
|
+
"required": false,
|
|
1080
|
+
"description": "Additional labels."
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
"name": "namespace",
|
|
1084
|
+
"type": "string",
|
|
1085
|
+
"required": false,
|
|
1086
|
+
"description": "Namespace for all resources."
|
|
1087
|
+
},
|
|
1088
|
+
{
|
|
1089
|
+
"name": "defaults",
|
|
1090
|
+
"type": "{ topic?: Partial<ConstructorParameters<typeof PubSubTopic>[0]>; subscription?: Partial<ConstructorParameters<typeof ...",
|
|
1091
|
+
"required": false,
|
|
1092
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
1093
|
+
}
|
|
1094
|
+
]
|
|
1095
|
+
},
|
|
1096
|
+
{
|
|
1097
|
+
"name": "SecureProject",
|
|
1098
|
+
"lexicon": "gcp",
|
|
1099
|
+
"description": "SecureProject composite — Project + IAMAuditConfig + Service enablement + owner IAM + LoggingSink.",
|
|
1100
|
+
"bundles": [
|
|
1101
|
+
"IAMAuditConfig",
|
|
1102
|
+
"IAMPolicyMember",
|
|
1103
|
+
"LogSink",
|
|
1104
|
+
"ResourcemanagerProject",
|
|
1105
|
+
"ServiceusageService"
|
|
1106
|
+
],
|
|
1107
|
+
"params": [
|
|
1108
|
+
{
|
|
1109
|
+
"name": "name",
|
|
1110
|
+
"type": "string",
|
|
1111
|
+
"required": true,
|
|
1112
|
+
"description": "Project name (also used as project ID)."
|
|
1113
|
+
},
|
|
1114
|
+
{
|
|
1115
|
+
"name": "orgId",
|
|
1116
|
+
"type": "string",
|
|
1117
|
+
"required": false,
|
|
1118
|
+
"description": "Organization ID or folder ID for the parent."
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"name": "folderId",
|
|
1122
|
+
"type": "string",
|
|
1123
|
+
"required": false,
|
|
1124
|
+
"description": "Folder ID for the parent (alternative to orgId)."
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
"name": "billingAccountRef",
|
|
1128
|
+
"type": "string",
|
|
1129
|
+
"required": false,
|
|
1130
|
+
"description": "Billing account ID."
|
|
1131
|
+
},
|
|
1132
|
+
{
|
|
1133
|
+
"name": "owner",
|
|
1134
|
+
"type": "string",
|
|
1135
|
+
"required": false,
|
|
1136
|
+
"description": "Owner email (IAM member format, e.g., \"user:admin@example.com\")."
|
|
1137
|
+
},
|
|
1138
|
+
{
|
|
1139
|
+
"name": "enabledApis",
|
|
1140
|
+
"type": "string[]",
|
|
1141
|
+
"required": false,
|
|
1142
|
+
"description": "GCP APIs to enable (default: common APIs)."
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
"name": "loggingSinkDestination",
|
|
1146
|
+
"type": "string",
|
|
1147
|
+
"required": false,
|
|
1148
|
+
"description": "Logging sink destination (e.g., BigQuery dataset or Cloud Storage bucket)."
|
|
1149
|
+
},
|
|
1150
|
+
{
|
|
1151
|
+
"name": "loggingSinkFilter",
|
|
1152
|
+
"type": "string",
|
|
1153
|
+
"required": false,
|
|
1154
|
+
"description": "Logging sink filter (default: all audit logs)."
|
|
1155
|
+
},
|
|
1156
|
+
{
|
|
1157
|
+
"name": "labels",
|
|
1158
|
+
"type": "Record<string, string>",
|
|
1159
|
+
"required": false,
|
|
1160
|
+
"description": "Additional labels."
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
"name": "namespace",
|
|
1164
|
+
"type": "string",
|
|
1165
|
+
"required": false,
|
|
1166
|
+
"description": "Namespace for all resources."
|
|
1167
|
+
},
|
|
1168
|
+
{
|
|
1169
|
+
"name": "defaults",
|
|
1170
|
+
"type": "{ project?: Partial<ConstructorParameters<typeof ResourcemanagerProject>[0]>; auditConfig?: Partial<ConstructorParame...",
|
|
1171
|
+
"required": false,
|
|
1172
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
1173
|
+
}
|
|
1174
|
+
]
|
|
1175
|
+
},
|
|
1176
|
+
{
|
|
1177
|
+
"name": "VpcNetwork",
|
|
1178
|
+
"lexicon": "gcp",
|
|
1179
|
+
"description": "Create a VpcNetwork composite.",
|
|
1180
|
+
"bundles": [
|
|
1181
|
+
"Firewall",
|
|
1182
|
+
"Router",
|
|
1183
|
+
"RouterNAT",
|
|
1184
|
+
"Subnetwork",
|
|
1185
|
+
"VPCNetwork"
|
|
1186
|
+
],
|
|
1187
|
+
"params": [
|
|
1188
|
+
{
|
|
1189
|
+
"name": "name",
|
|
1190
|
+
"type": "string",
|
|
1191
|
+
"required": true,
|
|
1192
|
+
"description": "Network name."
|
|
1193
|
+
},
|
|
1194
|
+
{
|
|
1195
|
+
"name": "autoCreateSubnetworks",
|
|
1196
|
+
"type": "boolean",
|
|
1197
|
+
"required": false,
|
|
1198
|
+
"description": "Auto-create subnetworks (default: false — custom mode)."
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
"name": "subnets",
|
|
1202
|
+
"type": "VpcSubnet[]",
|
|
1203
|
+
"required": false,
|
|
1204
|
+
"description": "Subnets to create in custom mode."
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
"name": "enableNat",
|
|
1208
|
+
"type": "boolean",
|
|
1209
|
+
"required": false,
|
|
1210
|
+
"description": "Enable Cloud NAT for outbound internet access (default: false)."
|
|
1211
|
+
},
|
|
1212
|
+
{
|
|
1213
|
+
"name": "natRegion",
|
|
1214
|
+
"type": "string",
|
|
1215
|
+
"required": false,
|
|
1216
|
+
"description": "NAT region (required if enableNat is true)."
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
"name": "allowInternalTraffic",
|
|
1220
|
+
"type": "boolean",
|
|
1221
|
+
"required": false,
|
|
1222
|
+
"description": "Allow internal traffic firewall rule (default: true)."
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
"name": "allowIapSsh",
|
|
1226
|
+
"type": "boolean",
|
|
1227
|
+
"required": false,
|
|
1228
|
+
"description": "Allow SSH from IAP (default: false)."
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
"name": "labels",
|
|
1232
|
+
"type": "Record<string, string>",
|
|
1233
|
+
"required": false,
|
|
1234
|
+
"description": "Additional labels."
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"name": "namespace",
|
|
1238
|
+
"type": "string",
|
|
1239
|
+
"required": false,
|
|
1240
|
+
"description": "Namespace for all resources."
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
"name": "defaults",
|
|
1244
|
+
"type": "{ network?: Partial<ConstructorParameters<typeof VPCNetwork>[0]>; router?: Partial<ConstructorParameters<typeof Route...",
|
|
1245
|
+
"required": false,
|
|
1246
|
+
"description": "Per-member defaults for customizing individual resources."
|
|
1247
|
+
}
|
|
1248
|
+
]
|
|
1249
|
+
}
|
|
1250
|
+
];
|
package/src/plugin.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* import parsing, and code generation for GCP Config Connector resources.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import { compositeCatalog } from "./composites/catalog";
|
|
8
9
|
import type { LexiconPlugin, InitTemplateSet, ResourceMetadata } from "@intentius/chant/lexicon";
|
|
9
10
|
import { detectTemplate } from "./detect";
|
|
10
11
|
import { LABEL_OWNERSHIP_KEYS } from "@intentius/chant/ownership";
|
|
@@ -205,6 +206,10 @@ export const bucketReader = new IAMPolicyMember({
|
|
|
205
206
|
return gcpHover(ctx);
|
|
206
207
|
},
|
|
207
208
|
|
|
209
|
+
composites() {
|
|
210
|
+
return compositeCatalog;
|
|
211
|
+
},
|
|
212
|
+
|
|
208
213
|
mcpTools() {
|
|
209
214
|
return [createDiffTool(gcpSerializer, "Compare current build output against previous output for GCP Config Connector manifests", "gcp")];
|
|
210
215
|
},
|