@intentius/terragucci 0.4.9 → 0.4.11

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.
@@ -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": {
@@ -256,7 +257,8 @@
256
257
  "data": { "type": "string" },
257
258
  "outputs": { "enum": ["planned", "applied"] },
258
259
  "unknown": { "type": "array", "items": { "type": "string" } },
259
- "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." }
260
262
  }
261
263
  }
262
264
  },
@@ -292,6 +294,15 @@
292
294
  }
293
295
  }
294
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
+ }
295
306
  }
296
307
  }
297
308
  }
@@ -355,7 +366,7 @@
355
366
  },
356
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." },
357
368
  "reads": { "type": "array", "items": { "type": "integer" }, "description": "The waves whose roots' state its roots read (minor 21)." },
358
- "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)." },
359
370
  "preview": {
360
371
  "type": "object",
361
372
  "required": ["pull_request", "units"],
@@ -375,7 +386,35 @@
375
386
  }
376
387
  }
377
388
  },
378
- "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." }
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
+ }
417
+ }
379
418
  }
380
419
  }
381
420
  },
@@ -423,6 +462,26 @@
423
462
  "overriders": { "type": "array", "items": { "type": "string" }, "description": "Who may override a denial, from policy.override at base (minor 10)." }
424
463
  }
425
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
+ },
426
485
  "blast": {
427
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.",
428
487
  "type": "object",
@@ -461,6 +520,7 @@
461
520
  "properties": {
462
521
  "root": { "type": "string" },
463
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." },
464
524
  "through": {
465
525
  "type": "object",
466
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
  }