airpuls RIC SDK — VS Code extension
Create and manage airpuls Near-RT RIC xApp projects from inside
VS Code. The extension is a front end for the airpuls-sdk CLI
(the airpuls-sdk-cli Python distribution): every lifecycle operation
runs the CLI, so behavior, validation, and remote effects are
identical to the terminal workflow.
Features
- New xApp from an empty window — the airpuls activity-bar view
and the Explorer's empty state offer New xApp: a short prompt
flow (name, description, deployment name, endpoint, sinks, image)
that runs
airpuls-sdk xapp new and opens the generated project.
Prompts show their default as a hint and start empty; an empty
answer takes the default.
- Sidebar panel — the airpuls activity-bar container stacks
three views beside the editor, so the panel never occupies an
editor tab and coding continues while it is open:
- Status — SDK installation (CLI, version, settings file),
xApp identity (deployment name, endpoint, languages, schema
type/version, sinks), and — for a tls:// project — the
credential files under
certs/ with per-file copy actions.
Right-clicking the sinks row offers Add Sink…: pick a RIC and
the flow probes that installation for the sink destinations it
serves — its Redis, its InfluxDB — then writes the chosen one,
endpoint and credentials included, into xapp.yml. The user
never types a destination; the installation is the source of
truth. Pending from the CLI: the probe document's sinks list
and xapp add sink's discovery options.
- Doctor —
airpuls-sdk doctor as one node per environment
check with a pass/warn/fail icon, the detail inline, and the
remedial hint in the tooltip. Runs automatically the first time
the view is revealed; the title-bar icon reruns it.
- Deploy Targets — one node per registered RIC with the
current xApp's deployment presence, and per target the staged
xApp IPC transport (tls or plaintext) as the first child, the
deployment's licence state right after it (the checkout's own
verify-license.sh: offline checks plus online validation
against the licence server it configures), the deployment
stack's compose services with a run-state light (green up, red
down; omitted when the checkout defines no compose stack), and
the current xApp's credential files minted on the host. Probed through
config ric probe on reveal and via the title-bar icon — every
probe reads the target afresh, since the RIC configuration may
change. Inline deploy / credentials / undeploy icons and
registry actions in the context menu.
- Lifecycle actions as view-title icons — new xApp, run, test,
and deploy sit as icons in the Status view's title bar; build,
validate, package, undeploy, deploy-with-image, and the credential
actions are in its
… overflow menu and the command palette.
Interactive verbs run in an integrated terminal so streamed
output, confirmation prompts, and the CLI's SSH password fallback
work unchanged; quick verbs run captured and report as
notifications with a transcript in the airpuls output channel.
Development use only
The Deploy Targets workflow — deploy, undeploy, credentials, and the
probes — moves keys and certificates between this machine and the
RIC host over SSH, and the copy actions place certificate and key
material on the clipboard. That handling is acceptable in a
development lab and nowhere else: never register a production RIC
as a deploy target. A dialog states this before the first deploy
target is registered; the acknowledgment is remembered, so it
appears once.
Requirements
- Python with the
airpuls-sdk-cli distribution installed
(pip install airpuls-sdk-cli) — provides the airpuls-sdk CLI.
It installs wherever Python runs; Linux and macOS are its
supported platforms, and on Windows the deployment actions need an
SSH key the host already trusts. The CLI must speak the global
--json flag; a release without it is reported with an upgrade
hint.
- The
airpuls-ric-sdk runtime (pip install airpuls-ric-sdk, Linux
x86_64) only for commands that execute an xApp — Run and the
tests that import it. On other hosts, open the project in the Dev
Container the scaffolding generates.
- OpenSSH client tools for deploy, undeploy, credentials, and the
deployment probes.
- Docker for
xapp package and deploy --with-image.
airpuls-sdk doctor (the Doctor tab) reports all of the above.
Settings
airpuls.cliPath — path to the airpuls-sdk executable. Empty
resolves it from PATH, then ~/.local/bin.
airpuls.configFile — CLI settings file override, exported as
AIRPULS_SDK_CONFIG to every CLI invocation. Empty uses the
CLI's per-user default.
CLI output contract
Every captured invocation runs the CLI's machine-readable channel:
the global --json flag makes an invocation write exactly one JSON
document to stdout — {"schema": 1, "ok": …, "command": …, "data": …, "warnings": […]} plus an error block on failure — and
never prompt. The extension parses only these documents (schema
1); no rendered output is ever interpreted. Facts come from
--version, config show (the RIC registry and settings-file
path), xapp info (project identity), doctor (environment
checks), config ric probe (per-target reachability, staged
transport, minted credentials, deployed entries), and the xapp new
result. The filesystem contributes only what the CLI does not
report: locating the enclosing xapp.yml and the presence of
credential files under certs/. The extension opens no remote
connections of its own — every remote fact arrives through the CLI,
which probes in SSH batch mode without prompting. Interactive verbs
run the CLI in text mode inside the integrated terminal, where its
rendering and prompts are the interface.
Development
npm install
npm run compile # tsc → out/
npm test # node --test (pure parser modules)
Launch the extension with F5 (Run Extension) from VS Code, or build
a VSIX with npm run package.
This project is self-contained: no references into the enclosing
repository, movable to its own repository as-is. Its only coupling
to the SDK is the airpuls-sdk command-line contract.
| |