{ "module": "mesh-delivery-assigner", "version": "0.1", "slug": "assigner", "runs-as": "mesh-delivery-assigner", "claims": [ { "name": "mesh-module-assigner", "scope": "mesh", "serves": [ "assignments", "proposals", "propose", "withdraw", "again", "placement" ] }, { "name": "mesh-wants", "scope": "mesh", "serves": [ "upgrade", "bus", "revision", "entry", "difference", "input" ] } ], "reads": [ "mesh-delivery-builder.builds", "mesh-delivery-gate.merges", "mesh-delivery-gate.source", "mesh-delivery-teller.answers", "mesh-delivery-watchman.presence", "mesh-grants.grants", "mesh-host.composed", "mesh-provisioner.provisions", "node-engine.have" ], "uses": [ "operator-channel" ], "consumes": [ "mesh-conditions.findings-asked", "mesh-conditions.condition-raised", "mesh-conditions.condition-changed", "mesh-conditions.condition-cleared", "mesh-catalog.catalog-revision", "mesh-catalog.registration-changed", "mesh-catalog.version-released", "mesh-catalog.seat-definition-changed", "mesh-catalog.seat-definition-removed", "mesh-delivery-builder.build.ended", "mesh-delivery-teller.ask-ended", "mesh-pipeline-runner.pipeline-ended", "mesh-pipeline-runner.group-ended", "node-engine.manifest-reads-changed", "node-engine.running" ], "invokes": [ "mesh-delivery-indexer.manifests", "mesh-delivery-indexer.modules", "seat:mesh-catalog.registrations", "seat:mesh-catalog.revision", "seat:mesh-catalog.seat-definitions", "seat:mesh-conditions.conditions", "seat:mesh-hand-acts.hand-act", "seat:mesh-hand-acts.hand-acts", "seat:mesh-hand-acts.warranted", "seat:node-backup.backed-up", "seat:node-backup.now", "seat:node-engine.manifest-reads", "seat:operator-channel.asks" ], "streams": [ { "name": "mesh-delivery-assigner-findings", "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], "max-age-days": 7, "max-mib": 16 } ], "emits": [ "assignments-copied", "put", "views.asks", "views.copies", "views.differences", "views.findings", "views.assignments", "views.seat-holders", "views.wants" ], "tools": [ "assigner_put", "assigner_release", "assigner_puts", "assigner_waits", "assigner_inputs", "assignments", "seat-holders", "wants", "assigner_read_assignments", "assigner_read_seat_holders", "assigner_read_wants", "assigner_read_findings", "assigner_read_asks", "assigner_read_differences", "assigner_read_copies", "assigner_first_views", "assigner_first_view_again", "assigner_engine_reads", "assigner_seat_list", "assigner_seat_list_again", "assigner_ask_again", "assigner_written" ], "state": [ { "name": "assignments", "history": 64 }, { "name": "placement", "history": 64 }, { "name": "copies", "history": 1 }, { "name": "proposals", "history": 5 }, { "name": "candidates", "history": 5 }, { "name": "pulses", "key-ttl": true }, { "name": "asks", "history": 5 }, { "name": "differences", "history": 64 }, { "name": "puts", "history": 20 }, { "name": "wants", "history": 20 }, { "name": "findings", "history": 5 }, { "name": "policies", "history": 20 }, { "name": "seat-holders", "history": 5 }, { "name": "view-marks", "history": 1 }, { "name": "first-views", "history": 1 }, { "name": "engine-reads", "history": 1 }, { "name": "written", "history": 5 }, { "name": "waits", "history": 5 }, { "name": "inputs", "history": 1 } ], "config": { "outside-wait-minutes": { "type": "number", "description": "minutes a moved module's failing check waits on an outside cause before the operator is asked to go on or count it as failed (design 47 G section 706); a bound a whole test sets in seconds.", "minimum": 1, "maximum": 10080, "trusted": false, "default": 30 }, "outside-settle-seconds": { "type": "number", "description": "seconds the assigner holds its judgement of a failing check when no outside cause is open yet, since the node-engine states the failing check and the network in one report while the condition rises only after the watchman's two looks and the keeper's take-in (design 47 G section 706).", "minimum": 1, "maximum": 3600, "trusted": false, "default": 90 } }, "objects": [ { "name": "assignment-revisions", "max-mib": 512, "form": 1 } ], "own-secrets": { "broker": "${dir:state}/broker" }, "secrets-owner": "mesh-delivery-assigner", "resources": [ { "id": "account", "type": "user", "name": "mesh-delivery-assigner", "shell": "/usr/bin/nologin", "home": "/var/lib/mesh-delivery-assigner" }, { "id": "state", "type": "directory", "mode": "0700", "owner": "mesh-delivery-assigner", "place": ".", "unknown": "program" }, { "id": "outside-wait", "type": "file", "path": "${dir:state}/outside-wait-minutes", "owner": "mesh-delivery-assigner", "mode": "0600", "content": "${config:outside-wait-minutes}" }, { "id": "outside-settle", "type": "file", "path": "${dir:state}/outside-settle-seconds", "owner": "mesh-delivery-assigner", "mode": "0600", "content": "${config:outside-settle-seconds}" }, { "id": "assigner", "type": "process", "name": "mesh-delivery-assigner", "artifact": "program", "run": [ "./mesh-delivery-assigner" ], "env": { "MESH_BROKER_FILE": "${dir:state}/broker", "MESH_ASSIGNER_OUTSIDE_WAIT_FILE": "${dir:state}/outside-wait-minutes", "MESH_ASSIGNER_OUTSIDE_SETTLE_FILE": "${dir:state}/outside-settle-seconds" }, "user": "mesh-delivery-assigner", "health": { "kind": "unit" } } ], "build": { "artifacts": [ { "name": "program", "kind": "bundle", "language": "go", "system": "arch", "from": "cmd/mesh-delivery-assigner", "binary": "mesh-delivery-assigner", "loads": [ "mesh-delivery-assigner" ], "env": { "MESH_VIEW_CALLERS_ASSIGNMENTS": "mesh-grants,node-tools,mesh-delivery-indexer,mesh-delivery-builder,mesh-delivery-checker", "MESH_VIEW_CALLERS_SEAT_HOLDERS": "node-tools", "MESH_VIEW_CALLERS_WANTS": "mesh-grants" } } ] } }