11.1 What rs2 migrate carries over
If you're coming from v1 Restspace, rs2 migrate converts an existing
services.json into an RS2 tenant config. It does as much as it safely can
automatically, and tells you about everything it couldn't — so the result is
a validated starting point, not a black box.
rs2 migrate services.json -o tenant.json
The output is validated by dry-building the tenant (10.4), so a config that comes out the other side is structurally sound.
Carried over automatically
- Mounts —
basePath→path; v1 service sources map to RS2 prebuilts:file/files→filedata/dataset→datapipeline→pipelinequery→queryauth/user-data/user-filter→authservices→services
- Access — role-spec strings are unchanged (same grammar as v1).
- Retry — policies carry over unchanged (same shape).
- Caching — translated:
{cache, maxAge}→{mode, maxAgeSeconds};sendETagis dropped because RS2 stores always emit ETags. - Pipelines — converted from the v1 string DSL into typed envelopes, and
printed with instructions to
PUTeach to<path>/.pipelines/.root. A v1 single-pipeline mount maps to the.rootspec, preserving its any-verb surface exactly (7.1).
Why pipelines need a manual PUT
In v1, pipeline specs lived in the service config. In RS2 they're authored into
the instruction plane (3.6) — the .pipelines/ store subtree — not the tenant
config. So the migrator converts the spec and hands you the PUT to install it,
rather than inlining it. The conversion is done; the placement is one explicit
step you run.
The shape of the result
You get a tenant.json with the mounts, access, retry, and caching translated,
plus a set of printed instructions for the pieces that live outside tenant config
(pipelines, queries — 11.2). Read those instructions; they're the difference
between a config that loads and an application that works.
The next section covers what the migrator warns about — the things it adjusts or can't bring across — and 11.3 is the post-migration checklist.
← Part 10 — Operating a Node · Manual home · Next: 11.2 What's warned, adjusted, or skipped →