Skip to main content

TUI for yunetas

This is the TUI (Terminal User Interface) for Yuneta Simplified

Icon

Yuneta Simplified is a development framework about messages and services, based on Event-driven, Automata-based and Object-oriented programming.

Yuneta is based in functions, but it manages a system of virtual classes defined by programmatically and schematically.

All his philosophy is based on that virtual classes (namely GClass or class G).

All architecture done by configuration, based in schema, easy to see by human eye. Of course, you have an API functions to change configuration and data in real time.

For Linux and RTOS/ESP32.

Versions in C, Javascript and (TODO) Python.

For more details, see doc.yuneta.io

Commands

yunetas init                  # create build dirs, compiler/build-type from .config (menuconfig)
yunetas build                 # make install: SDK + registered projects
yunetas clean                 # make clean:   SDK + registered projects
yunetas test                  # ctest

# External projects (registry in ~/.yuneta/projects.json, machine-local)
yunetas register-project <path>     # <path> must contain yunos/CMakeLists.txt
yunetas unregister-project <name>
yunetas list-projects
yunetas init|build|clean <name>...  # only those projects (SDK skipped)
yunetas init|build|clean --sdk-only # only the SDK

# Deploy helpers (wrappers over $YUNETAS_BASE/tools/agent/sync_*.py)
yunetas sync                  [-n|-a|...]          # binaries AND configs together (recommended)
yunetas sync-binaries         [-n|-a|...]          # outputs/yunos vs the local agent
yunetas sync-configs          [-n|-a|-r|...]       # auto-match batches/<host>/ to the agent's realm_ids
yunetas sync-configs --host <host> [...]          # or target one batches dir explicitly
yunetas upgrade-yunos [--no-snap|--snap-name N|-y|-n]  # find-new-yunos -> snapshot -> deactivate-snap

On a runtime-only node (installed from the .deb/.rpm: outputs/, outputs_ext/, tools/ and .config, but no framework sources and no YUNETA_VERSION) there is no SDK to build, so init/build/clean with no arguments process the registered projects only — naming them is optional. --sdk-only is an error there.

Deploy flow

Two steps: push the artifacts, then promote them.

# 1. Push binaries AND configs in one go (so a binary bump never ships
#    without its matching config bump — the verify-by-default footgun:
#    a new fail-closed runtime against a stale no-CA config breaks OIDC).
yunetas sync                  # = sync-binaries + sync-configs

# 2. Promote the freshly installed releases to primary and restart.
yunetas upgrade-yunos         # find-new-yunos (confirm) -> snapshot -> deactivate-snap

sync does not restart anything by itself; upgrade-yunos is the promote step. It previews find-new-yunos first and stops there when there is nothing new, then asks, then shoots a rollback snapshot (idempotent by name; reuses an already-active snap instead of stacking a new one; --no-snap to skip), then runs create=1, then deactivate-snap triggers restart_nodes() on the agent. Preview the steps with -n.

A row that the agent marks already registered, pending promotion (deactivate-snap): create-yuno ... (a create=1 of an earlier run that was never promoted, SDK 7.25.5 and later) is counted apart. It needs no create=1, only the promotion:

1 new yuno row(s) would be created:
  create-yuno id=gate^one ...
1 yuno row(s) already registered, pending promotion:
  already registered, pending promotion (deactivate-snap): create-yuno id=gate^two ...
...
1 created, 1 already registered.

When every row is already registered, create=1 is skipped and the command goes on to deactivate-snap.

For a same-version hot-patch (no APP_VERSION bump) you don't need upgrade-yunos: sync then bounce the affected yunos (kill-yuno + run-yuno / play-yuno).

How build this package

Install pdm

This package use pdm to build and publish.

    pip install pdm
    pip install cement
    pip install plumbum
    pip install fastapi
    pip install "uvicorn[standard]"
    pip install "typer[all]"

Build and publish

  # Firstly change the version (explained below)
  # Next go to source root folder
  pdm build
  pdm publish --username __token__ --password <your-api-token> # (me: the full command is saved in publish-tui_yunetas.sh)

Tests

The tests use unittest and need the packages of the CLI (typer, rich), so run them with the Python where the CLI is installed:

  python -m unittest discover -s tests

Install the package in editable mode using pip from the source root folder:

  pip install -e .

Change the version

Edit the __version__.py file and change the variable __version__. Then build and publish

Release files for yunetas 0.19.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yunetas 0.19.4
File Size Uploaded
yunetas-0.19.4.tar.gz 56.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yunetas 0.19.4
File Interpreter ABI Platform
yunetas-0.19.4-py3-none-any.whl Python 3 none any Details

Total release size: 114.5 kB

Release files / yunetas-0.19.4.tar.gz

Download URL yunetas-0.19.4.tar.gz
Size 56.3 kB
Tags Source
SHA-256 checksum
How to use checksums
21807ba77d78dd258d01f95cbae15ed90e5637cc8fd1e17e412bd401a7cbce34
BLAKE2b-256 checksum
How to use checksums
31d53f3cec3aa84cb5f0c98aa0d6886eba0161437fbb1363e25187f74fe37721
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.29.2 CPython/3.14.4 Linux/7.0.0-34-generic

Release files / yunetas-0.19.4-py3-none-any.whl

Download URL yunetas-0.19.4-py3-none-any.whl
Size 58.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
36b3a4446b94023b41ccb4b50afd14dfea5c49f4fc126aae2824199d66a4808a
BLAKE2b-256 checksum
How to use checksums
0ce3be3caa582bc34589a8ed2212efbf616ceb7100070589a1159db1abd94ccc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.29.2 CPython/3.14.4 Linux/7.0.0-34-generic

Release history Release notifications | RSS feed

This release

0.19.4 This release

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page