@intentius/terragucci 0.4.8 → 0.4.10

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.
@@ -293,6 +293,7 @@
293
293
  "finished": { "type": "string" },
294
294
  "wave": { "type": "integer" },
295
295
  "report": { "type": "string", "description": "The wave's report.html, when the page can link it." },
296
+ "environment": { "type": "string", "description": "The environment of environments: in terragucci.yml the root was in when the wave applied. Absent when it was in none." },
296
297
  "resources": { "type": "array", "items": { "$ref": "#/$defs/resource" } }
297
298
  }
298
299
  }
@@ -19,6 +19,7 @@
19
19
  "finished": { "type": "string", "description": "When the wave that recorded the list finished." },
20
20
  "wave": { "type": "integer" },
21
21
  "path": { "type": "string", "description": "The wave's run directory, relative to the project's index.json." },
22
+ "environment": { "type": "string", "description": "The environment of environments: in terragucci.yml the root was in when the wave applied. Absent when it was in none." },
22
23
  "resources": {
23
24
  "type": "array",
24
25
  "items": {
@@ -36,6 +36,7 @@
36
36
  "unit": { "enum": ["member", "instance"] },
37
37
  "units": { "type": "integer" },
38
38
  "totals": { "type": "object", "additionalProperties": { "type": "integer" } },
39
+ "totals_roots": { "type": "integer", "description": "How many roots totals counts a change of: each root whose plan creates, updates, replaces, deletes or forgets a resource, less a root the policy refused (minor 35)." },
39
40
  "groups": {
40
41
  "type": "array",
41
42
  "items": {
@@ -71,6 +72,7 @@
71
72
  "required": ["path", "status", "plan_digest", "counts", "plan", "changes", "highlights", "fold", "why"],
72
73
  "properties": {
73
74
  "path": { "type": "string" },
75
+ "environment": { "type": "string", "description": "The environment of environments: in terragucci.yml the root is in (minor 33). Absent when the config names no environments or the root is in none." },
74
76
  "binary": {
75
77
  "description": "The binary the root ran, its version, and where the root pinned that version when it did (minor 18).",
76
78
  "type": "object",
@@ -245,7 +247,7 @@
245
247
  }
246
248
  },
247
249
  "reads": {
248
- "description": "The roots whose state the root reads through terraform_remote_state, and which outputs it planned on: planned, the upstream's plan in this run, with the outputs known only once it applies under unknown; applied, its state as it stands (minor 21).",
250
+ "description": "The roots whose state the root reads through terraform_remote_state, or under choudoufu whose estate's outputs it reads through terraform_estate_outputs, and which outputs it planned on: planned, the upstream's plan in this run, with the outputs known only once it applies under unknown; applied, its state as it stands (minor 21).",
249
251
  "type": "array",
250
252
  "items": {
251
253
  "type": "object",
@@ -255,7 +257,8 @@
255
257
  "data": { "type": "string" },
256
258
  "outputs": { "enum": ["planned", "applied"] },
257
259
  "unknown": { "type": "array", "items": { "type": "string" } },
258
- "why": { "type": "string" }
260
+ "why": { "type": "string" },
261
+ "composed": { "const": true, "description": "A read of another root in the same composed run (waves.compose, minor 38): planned on the upstream's part of the composed plan, which the run applies before the resources that read it." }
259
262
  }
260
263
  }
261
264
  },
@@ -271,7 +274,36 @@
271
274
  }
272
275
  }
273
276
  },
274
- "unaddressed": { "type": "string", "description": "Why the code does not address the root's own state, when a root of the run reads state through terraform_remote_state: a reader of it is not ordered after it (minor 30)." }
277
+ "unaddressed": { "type": "string", "description": "Why the code does not address the root's own state, when a root of the run reads state through terraform_remote_state: a reader of it is not ordered after it (minor 30)." },
278
+ "cone": {
279
+ "type": "object",
280
+ "description": "A choudoufu plan of a pull request's root under a live block, run with -cone=<base>: the cone it planned, or why choudoufu's guard planned the whole estate (minor 34). Absent on every other plan.",
281
+ "required": ["base"],
282
+ "properties": {
283
+ "base": { "type": "string", "description": "The revision the change is measured from: the pull request's base." },
284
+ "blocks": { "type": "integer", "description": "With a cone: the blocks it holds, when choudoufu said." },
285
+ "of": { "type": "integer", "description": "With a cone: the estate's blocks, when choudoufu said." },
286
+ "targets": { "type": "integer", "description": "With a cone: how many addresses it targets. Its targets join the root's plan digest." },
287
+ "fallback": {
288
+ "type": "object",
289
+ "description": "The guard planned the whole estate: its kind and why.",
290
+ "required": ["kind", "reason"],
291
+ "properties": {
292
+ "kind": { "type": "string" },
293
+ "reason": { "type": "string" }
294
+ }
295
+ }
296
+ }
297
+ },
298
+ "composed": {
299
+ "type": "object",
300
+ "description": "A root in a composed run (waves.compose, minor 38): the wave whose run holds it and its module there. Its other fields come from its part of the composed plan; its plan_digest is that part's and binds nothing on its own.",
301
+ "required": ["wave", "module"],
302
+ "properties": {
303
+ "wave": { "type": "integer" },
304
+ "module": { "type": "string" }
305
+ }
306
+ }
275
307
  }
276
308
  }
277
309
  },
@@ -334,7 +366,7 @@
334
366
  },
335
367
  "state": { "enum": ["planned", "waiting", "applying", "applied", "refused", "failed"], "description": "Where the wave stands (minor 21): a tf-plan wave is planned; a tf-apply wave waiting, applying, applied, refused or failed." },
336
368
  "reads": { "type": "array", "items": { "type": "integer" }, "description": "The waves whose roots' state its roots read (minor 21)." },
337
- "replans_after": { "type": "array", "items": { "type": "integer" }, "description": "A tf-plan wave whose plans read outputs known only once these waves apply: it plans again after they apply and waits for an approval of that plan; its review digest is null (minor 21)." },
369
+ "replans_after": { "type": "array", "items": { "type": "integer" }, "description": "A tf-plan wave whose plans read outputs known only once these waves apply: it plans again after they apply, and when that plan changes something its gate holds it for an approval of that plan under gate always or on-destructive, but not under gate never; its review digest is null (minor 21)." },
338
370
  "preview": {
339
371
  "type": "object",
340
372
  "required": ["pull_request", "units"],
@@ -353,6 +385,35 @@
353
385
  }
354
386
  }
355
387
  }
388
+ },
389
+ "environments": { "type": "array", "items": { "type": "string" }, "description": "The environments of environments: in terragucci.yml its roots are in, sorted (minor 33). Absent when none of its roots is in one." },
390
+ "composed": {
391
+ "type": "object",
392
+ "description": "The wave that carries a composed run (waves.compose, minor 38): one plan and one apply across several roots, each keeping its own state. The wave's roots list its own roots and the composed ones; its digests cover the composed plan as one member.",
393
+ "required": ["plan_digest", "members"],
394
+ "properties": {
395
+ "plan_digest": { "type": ["string", "null"], "description": "The composed plan's digest. Null when it failed to plan." },
396
+ "members": {
397
+ "type": "array",
398
+ "description": "Each root in the run, upstreams first.",
399
+ "items": {
400
+ "type": "object",
401
+ "required": ["root", "module"],
402
+ "properties": {
403
+ "root": { "type": "string" },
404
+ "module": { "type": "string", "description": "Its address in the run, such as module.network." },
405
+ "apply": { "enum": ["applied", "partial", "failed", "not-started", "no-changes"], "description": "tf-apply only: how its part of the apply ended, from the binary's apply events." },
406
+ "changes": { "type": "object", "required": ["done", "planned"], "properties": { "done": { "type": "integer" }, "planned": { "type": "integer" } }, "description": "tf-apply only: how many of its planned changes completed." },
407
+ "state": { "enum": ["written", "unchanged", "not-written"], "description": "tf-apply only: its state after the run." },
408
+ "kept": { "type": "string", "description": "With not-written: where the state the run holds for it was kept." },
409
+ "lock_held": { "type": "boolean", "description": "With not-written: whether its lock is still held." },
410
+ "error": { "type": "string", "description": "Why the write failed, or the first error of its part of the apply." }
411
+ }
412
+ }
413
+ },
414
+ "held_by_unknown": { "type": "array", "items": { "type": "string" }, "description": "The members that read a value of another member unknown at plan time: the gate holds the run under every gate but never." },
415
+ "error": { "type": "string", "description": "Why the run failed, when no member's own error says it." }
416
+ }
356
417
  }
357
418
  }
358
419
  }
@@ -401,6 +462,26 @@
401
462
  "overriders": { "type": "array", "items": { "type": "string" }, "description": "Who may override a denial, from policy.override at base (minor 10)." }
402
463
  }
403
464
  },
465
+ "compose": {
466
+ "type": "object",
467
+ "description": "waves.compose (minor 38), on a tf-plan and on a tf-apply wave's report when the run's config turns it on: the roots it covers, and the wave that composes them or why the change applies in waves.",
468
+ "required": ["roots", "max"],
469
+ "properties": {
470
+ "roots": { "type": "array", "items": { "type": "string" }, "description": "The roots the change reaches plus the roots they read, followed upstream, sorted." },
471
+ "max": { "type": "integer", "description": "waves.compose_max." },
472
+ "wave": { "type": "integer", "description": "The wave whose run composes them. Absent when the change applies in waves." },
473
+ "fallback": {
474
+ "type": "object",
475
+ "required": ["kind", "reason"],
476
+ "properties": {
477
+ "kind": { "type": "string" },
478
+ "root": { "type": "string" },
479
+ "reason": { "type": "string" }
480
+ },
481
+ "description": "Why the change applies in waves."
482
+ }
483
+ }
484
+ },
404
485
  "blast": {
405
486
  "description": "A tf-plan run's blast radius (minor 22): the roots whose plan changes a resource or an output, and every root of the repo that reads their state through terraform_remote_state (in a Terragrunt repo, every unit that depends on them through a dependency or dependencies block), followed through, nearest first. Absent when no root's plan changes anything, and on other stages.",
406
487
  "type": "object",
@@ -439,6 +520,7 @@
439
520
  "properties": {
440
521
  "root": { "type": "string" },
441
522
  "address": { "type": "string", "description": "Its address in the root's configuration, with no instance key." },
523
+ "depth": { "type": "integer", "minimum": 1, "description": "Its distance from the changed resource (minor 36): 1 when it refers to it, directly or through locals, variables and modules, and one more for each resource in between and each hop from a root's output into a root that reads it. Absent from a report before minor 36." },
442
524
  "through": {
443
525
  "type": "object",
444
526
  "required": ["root", "output"],
@@ -43,6 +43,16 @@
43
43
  "key": { "type": "string" }
44
44
  }
45
45
  }
46
+ },
47
+ "composed": {
48
+ "type": "object",
49
+ "description": "A root in a composed run (waves.compose): wave is the run's, own_wave the wave it would be in on its own, where the dependency order puts it.",
50
+ "required": ["wave", "module", "own_wave"],
51
+ "properties": {
52
+ "wave": { "type": "integer" },
53
+ "module": { "type": "string" },
54
+ "own_wave": { "type": "integer" }
55
+ }
46
56
  }
47
57
  }
48
58
  }
@@ -66,6 +76,8 @@
66
76
  "shares": { "type": "integer", "description": "A wave split across jobs: how many share jobs apply it." },
67
77
  "shares_applied": { "type": "array", "items": { "type": "integer" }, "description": "The shares that applied; the wave is applied once every share has." },
68
78
  "changed": { "type": "array", "items": { "type": "string" }, "description": "The roots whose plan in this wave changes a resource or an output: where the run's blast radius starts." },
79
+ "totals": { "type": "object", "additionalProperties": { "type": "integer" }, "description": "The wave's changes by action (create, update, replace, delete, read, no-op, forget), as its report's totals counts them, once it planned. Written by the job that plans the whole wave, not by a share of it." },
80
+ "totals_roots": { "type": "integer", "description": "How many of the wave's roots totals counts a change of: each root whose plan creates, updates, replaces, deletes or forgets a resource, less a root the policy refused." },
69
81
  "spans": {
70
82
  "type": "array",
71
83
  "description": "The wave's time, oldest first: each plan, each wait at its gate (no end while it waits) and each apply (no end while it applies). At most 24.",
@@ -102,6 +114,29 @@
102
114
  }
103
115
  }
104
116
  },
117
+ "composed": {
118
+ "type": "object",
119
+ "description": "The wave whose job runs a composed run (waves.compose): its roots, upstreams first; the composed plan's digest once planned; the roots that read a value unknown at plan time; and, once the apply ended, how each root's part of it ended and its state. A wave whose roots all moved into the run keeps its row with no roots.",
120
+ "required": ["roots"],
121
+ "properties": {
122
+ "roots": { "type": "array", "items": { "type": "string" } },
123
+ "digest": { "type": ["string", "null"] },
124
+ "unknown": { "type": "array", "items": { "type": "string" } },
125
+ "members": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "object",
129
+ "required": ["root", "module"],
130
+ "properties": {
131
+ "root": { "type": "string" },
132
+ "module": { "type": "string" },
133
+ "apply": { "enum": ["applied", "partial", "failed", "not-started", "no-changes"] },
134
+ "state": { "enum": ["written", "unchanged", "not-written"] }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ },
105
140
  "updated": { "type": "string" }
106
141
  }
107
142
  }