{ "scenario": "one-node-mesh", "established": 16, "of": 20, "steps": [ { "code": "R1", "title": "a bare machine becomes a mesh of one, raised by the installer", "status": "pass", "seconds": 140, "why": "" }, { "code": "R2", "title": "the substrate is up — a store and a broker of the mesh's own", "status": "pass", "seconds": 1, "why": "" }, { "code": "R3", "title": "the control plane is one this mesh built, not one it was handed", "status": "pass", "seconds": 0, "why": "" }, { "code": "R4", "title": "the pivot finished — what raised the mesh is gone", "status": "pass", "seconds": 0, "why": "" }, { "code": "R5", "title": "the registry serves this mesh its own images", "status": "pass", "seconds": 0, "why": "" }, { "code": "R6", "title": "the machine is enrolled, and an agent is running on it", "status": "pass", "seconds": 0, "why": "" }, { "code": "R7", "title": "the builder is installed as a module, with an account", "status": "pass", "seconds": 0, "why": "" }, { "code": "P1", "title": "the mesh builds the shared base from source", "status": "pass", "seconds": 74, "why": "" }, { "code": "P2", "title": "the mesh builds and runs a store of its own", "status": "pass", "seconds": 53, "why": "" }, { "code": "P3", "title": "the mesh builds and runs its own catalogue", "status": "pass", "seconds": 25, "why": "" }, { "code": "P4", "title": "the mesh rebuilds its own control plane from source", "status": "pass", "seconds": 35, "why": "" }, { "code": "N1", "title": "the mesh puts itself on a private network, and its machine has a name", "status": "pass", "seconds": 6, "why": "" }, { "code": "U1", "title": "the mesh builds a module standing on that base", "status": "pass", "seconds": 14, "why": "" }, { "code": "U2", "title": "the mesh runs a broker for that module to talk to", "status": "pass", "seconds": 20, "why": "" }, { "code": "U3", "title": "the anchor runs the module the mesh built", "status": "pass", "seconds": 6, "why": "" }, { "code": "V1", "title": "the control plane can describe the mesh, and what it says is true", "status": "pass", "seconds": 1, "why": "" }, { "code": "V2", "title": "the catalogue holds every module this mesh built", "status": "fail", "seconds": 1, "why": "the catalogue does not hold mesh-tools, postgres — the mesh built them and its own record has no trace of it (novox/hq issue 050):\n{\"modules\":[{\"module\":\"amqp-ping\",\"commit\":\"e0c92195d4240841bfcf4b4a9ef869d5afeca331\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/amqp-ping\"},{\"module\":\"lavinmq\",\"commit\":\"e0c92195d4240841bfcf4b4a9ef869d5afeca331\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/lavinmq\"},{\"module\":\"mesh-control\",\"commit\":\"5062c36fc9efe159aa9706c0ca2c873351ef1ce0\",\"repository\":\"https://git.novox.be/novox/mesh-control.git\",\"path\":\"\"}]}\n\n+ actual - expected\n\n+ [\n+ 'mesh-tools',\n+ 'postgres'\n+ ]\n- []\n" }, { "code": "V3", "title": "the machine's networking is what the modules asked for", "status": "fail", "seconds": 0, "why": "the mesh's own firewall table is not there:\nError: No such file or directory\nlist table inet mesh\n ^^^^\n" }, { "code": "E1", "title": "a change to a module's source reaches the machine on its own", "status": "skip", "seconds": 0, "why": "not attempted — V3 (the machine's networking is what the modules asked for) did not succeed" }, { "code": "E2", "title": "the mesh comes back after the machine reboots", "status": "skip", "seconds": 0, "why": "not attempted — E1 (a change to a module's source reaches the machine on its own) did not succeed" } ] }