at.happyproto.admin.defs
Details · defs
| Kind | defs |
|---|---|
| Authority | admin.happyproto.at |
| Indexed |
Showing version bafyreigoqvyf6ixwd3ggbyduqkn77buvjfih2p6t7vxjm27m4ud6it652u. Show the latest
Checks
Validunlimited-stringdefs.autoscale.properties.blockedByNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.autoscale.properties.costEurNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.encryptionKey.properties.blockedByNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.encryptionKey.properties.stageNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.event.properties.kindNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.event.properties.messageNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.costEurNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.currentStepNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.errorNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.idNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.nameNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.requestedByNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.hostRequest.properties.stateNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.keyFailure.properties.errorCodeNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.keyFailure.properties.kindNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.keyFailure.properties.operationIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.triggerHost.properties.nameNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"autoscale": {
"description": "The autoscaler's settings and what it is waiting on.",
"properties": {
"blockedBy": {
"description": "A failed request that holds off new ones until staff retry or cancel it.",
"type": "string"
},
"cooldownUntil": {
"description": "No new request before this. Absent once it has passed.",
"format": "datetime",
"type": "string"
},
"costEur": {
"description": "What each host it orders costs a month, in euros, as a decimal string.",
"type": "string"
},
"current": {
"ref": "#freeCapacity",
"type": "ref"
},
"enabled": {
"description": "On in the provisioner's config, with the GitHub App set up.",
"type": "boolean"
},
"hosts": {
"description": "Hosts that are not retired.",
"type": "integer"
},
"inFlight": {
"description": "Requests under way: 0 or 1.",
"type": "integer"
},
"lowSince": {
"description": "Since when free capacity has been below a threshold. Absent while it is fine.",
"format": "datetime",
"type": "string"
},
"maxHosts": {
"description": "The most hosts it may bring the fleet to.",
"type": "integer"
},
"paused": {
"description": "Paused by staff: no new requests, though one under way carries on.",
"type": "boolean"
},
"pausedAt": {
"format": "datetime",
"type": "string"
},
"pausedBy": {
"description": "The staff DID that paused it.",
"format": "did",
"type": "string"
},
"thresholds": {
"ref": "#thresholds",
"type": "ref"
}
},
"required": [
"enabled",
"paused",
"current"
],
"type": "object"
},
"encryptionKey": {
"description": "An instance's encryption key and where it is in a rotation.",
"properties": {
"blockedBy": {
"description": "Why a rotation cannot start now, when it cannot: the code rotateEncryptionKey would refuse with.",
"knownValues": [
"OperationInProgress",
"RotationInProgress",
"InstanceStopped",
"NotLive",
"RotationUnsupported",
"AgentUnreachable",
"NotSettled"
],
"type": "string"
},
"canRotate": {
"description": "Whether a rotation can start now.",
"type": "boolean"
},
"failure": {
"description": "The instance's latest operation, when it failed and the instance with it. Any kind: a KeyMismatch can fail an update or an upgrade too.",
"ref": "#keyFailure",
"type": "ref"
},
"operation": {
"description": "The rotate_key or retire_key operation in progress, if any.",
"ref": "at.happyproto.admin.listInstances#operation",
"type": "ref"
},
"rotatedAt": {
"description": "When the current key became current. Absent for the key the instance was created with.",
"format": "datetime",
"type": "string"
},
"sealing": {
"description": "Only while sealing, and only when the instance's host answered.",
"ref": "#sealing",
"type": "ref"
},
"stage": {
"description": "none: one key. rotating: a new key is made but not live yet. sealing: it is live and HappyView is re-sealing what the old key sealed. retiring: the old key is being removed. failed: the instance is failed and its latest operation is a failed rotate_key or retire_key; retrying the instance sends its keys again.",
"knownValues": [
"none",
"rotating",
"sealing",
"retiring",
"failed"
],
"type": "string"
}
},
"required": [
"stage",
"canRotate"
],
"type": "object"
},
"event": {
"description": "One line of a request's timeline.",
"properties": {
"at": {
"format": "datetime",
"type": "string"
},
"kind": {
"knownValues": [
"requested",
"dispatched",
"step_started",
"step_finished",
"ordering",
"configuring",
"verifying",
"registered",
"failed",
"cancelled",
"retried",
"cancel_requested",
"deploy_cancelled"
],
"type": "string"
},
"message": {
"description": "What happened, in the provisioner's words.",
"type": "string"
},
"runUrl": {
"description": "The GitHub Actions run the event came from.",
"format": "uri",
"type": "string"
}
},
"required": [
"at",
"kind"
],
"type": "object"
},
"freeCapacity": {
"description": "Free capacity across the active hosts. An over-committed host counts as none.",
"properties": {
"freeDiskGb": {
"type": "integer"
},
"freeMemoryMb": {
"type": "integer"
}
},
"type": "object"
},
"hostRequest": {
"description": "A tenant host the autoscaler asked for.",
"properties": {
"cancelRunUrl": {
"format": "uri",
"type": "string"
},
"costEur": {
"description": "The host's monthly cost in euros, as a decimal string.",
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"currentStep": {
"description": "The workflow step running now.",
"type": "string"
},
"deployRunUrl": {
"format": "uri",
"type": "string"
},
"dispatchedAt": {
"format": "datetime",
"type": "string"
},
"error": {
"description": "Why it failed.",
"type": "string"
},
"events": {
"description": "Oldest first. Only on a single request.",
"items": {
"ref": "#event",
"type": "ref"
},
"type": "array"
},
"finishedAt": {
"format": "datetime",
"type": "string"
},
"id": {
"description": "A UUID.",
"type": "string"
},
"name": {
"description": "The host's name, like tenant-4.",
"type": "string"
},
"requestedBy": {
"description": "system, or the staff DID.",
"type": "string"
},
"state": {
"knownValues": [
"requested",
"ordering",
"configuring",
"verifying",
"registered",
"failed",
"cancelling",
"cancelled"
],
"type": "string"
},
"trigger": {
"ref": "#trigger",
"type": "ref"
},
"updatedAt": {
"format": "datetime",
"type": "string"
},
"workflowRunUrl": {
"format": "uri",
"type": "string"
}
},
"required": [
"id",
"name",
"state",
"createdAt"
],
"type": "object"
},
"keyFailure": {
"properties": {
"errorCode": {
"description": "The provisioner's error code. KeyMismatch: the host refused an apply that would drop the key the instance seals with. It needs an operator, not a retry.",
"knownValues": [
"KeyMismatch"
],
"type": "string"
},
"kind": {
"description": "The operation's kind, as on #operation.",
"type": "string"
},
"operationId": {
"type": "string"
}
},
"required": [
"operationId",
"kind"
],
"type": "object"
},
"sealing": {
"properties": {
"previousKeyLive": {
"description": "Whether the instance runs with both keys. False when its rotate_key has not reached it, for instance because it failed: then remaining reads 0 without anything being re-sealed, and retrying the instance sends both keys again.",
"type": "boolean"
},
"remaining": {
"description": "Values only the old key opens. The old key is retired once this reaches 0.",
"minimum": 0,
"type": "integer"
},
"unreadable": {
"description": "Values neither key opens. They were unreadable before the rotation, too.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"previousKeyLive",
"remaining",
"unreadable"
],
"type": "object"
},
"thresholds": {
"description": "When the autoscaler orders a host: free capacity across active hosts below either figure for sustainSecs, and no request in the last cooldownSecs.",
"properties": {
"cooldownSecs": {
"type": "integer"
},
"freeDiskGb": {
"type": "integer"
},
"freeMemoryMb": {
"type": "integer"
},
"sustainSecs": {
"type": "integer"
}
},
"type": "object"
},
"trigger": {
"description": "Free capacity when the request was made, and the thresholds it was below.",
"properties": {
"freeDiskGb": {
"type": "integer"
},
"freeMemoryMb": {
"type": "integer"
},
"hosts": {
"items": {
"ref": "#triggerHost",
"type": "ref"
},
"type": "array"
},
"lowSince": {
"format": "datetime",
"type": "string"
},
"thresholds": {
"ref": "#thresholds",
"type": "ref"
}
},
"type": "object"
},
"triggerHost": {
"properties": {
"freeDiskGb": {
"type": "integer"
},
"freeMemoryMb": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"type": "object"
}
},
"id": "at.happyproto.admin.defs",
"lexicon": 1
}