1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
"lexicon": 1,
"id": "computer.socialweb.ephemeralInfra",
"description": "A short-lived deployment. It ends at createdAt plus ttlSeconds, or, with endWhen complete, once every requested contract is released or failed; then its contracts are released, and the record is kept with status.endedAt.",
"defs": {
"main": {
"type": "record",
"key": "any",
"record": {
"type": "object",
"required": ["createdAt", "ttlSeconds"],
"properties": {
"description": { "type": "string", "maxLength": 1024 },
"contracts": {
"type": "array",
"maxLength": 64,
"items": { "type": "ref", "ref": "computer.socialweb.infra#contract" }
},
"ttlSeconds": { "type": "integer", "minimum": 60 },
"endWhen": { "type": "string", "knownValues": ["complete", "deadline"] },
"status": { "type": "ref", "ref": "#status" },
"createdAt": { "type": "string", "format": "datetime" }
}
}
},
"status": {
"type": "object",
"required": ["phase"],
"properties": {
"phase": { "type": "string", "knownValues": ["pending", "staged", "deploying", "deployed", "releasing", "released", "degraded", "ending", "deleting", "ended"] },
"contracts": { "type": "array", "items": { "type": "ref", "ref": "computer.socialweb.infra#contractStatus" } },
"expiresAt": { "type": "string", "format": "datetime" },
"endedAt": { "type": "string", "format": "datetime" },
"endReason": { "type": "string", "knownValues": ["complete", "deadline", "deleted"] }
}
}
}
}