|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [v3.9.0-rc.9] |
| 4 | + |
| 5 | +### Added |
| 6 | + |
| 7 | +- **Fog status (host capacity + OS)** — agent `PUT /api/v3/agent/status` accepts and persists `systemCpus`, `systemTotalMemory`, `systemAvailableMemory`, `systemTotalDisk`, `systemAvailableDisk`, `systemOs`, `systemOsVersion`, and `systemKernelVersion`. User `GET /api/v3/iofog` and list return the stored values. `systemTotalCpu` remains host CPU busy **0–100%**; `diskUsage` remains Edgelet data-directory usage in **GiB**, not host filesystem totals. Columns on 3.9.0 baseline and 3.8→3.9 upgrade (sqlite, mysql, postgres). Omitted keys leave prior values unchanged. |
| 8 | + |
| 9 | +### Changed |
| 10 | +- Embedded **EdgeOps Console** default version **v1.1.0-rc.5** → **v1.1.0-rc.6** |
| 11 | + |
| 12 | +## [v3.9.0-rc.8] |
| 13 | + |
| 14 | +### Changed |
| 15 | +- Embedded **EdgeOps Console** default version **v1.1.0-rc.4** → **v1.1.0-rc.5** |
| 16 | + |
| 17 | +## [v3.9.0-rc.7] |
| 18 | + |
| 19 | +### Changed |
| 20 | + |
| 21 | +- **Fog status** — user GET and list return `knowledgeStatus` as the stored JSON string, matching `modelStatus`. Callers parse it. |
| 22 | +- Dockerfile runtime base image digest pin refreshed for **`ubi9/nodejs-24-minimal`**. |
| 23 | + |
| 24 | +## [v3.9.0-rc.6] |
| 25 | + |
| 26 | +Fleet Knowledge artifacts: curated documents, datasets, and vector indexes distributed like Models, with a separate name namespace and Hub dataset pulls. |
| 27 | + |
| 28 | +### Added |
| 29 | + |
| 30 | +- **Fleet Knowledge API** — `GET/POST/PATCH/DELETE /api/v3/knowledge`, YAML create/upsert (`kind: Knowledge`), and volumeMount-style `GET/POST/DELETE …/knowledge/:name/link`; server-generated uuid; agent `GET /api/v3/agent/knowledge` returns linked rows only (`{ "knowledge": [ … ] }`). |
| 31 | +- **`PATCH /api/v3/microservices/:uuid/knowledge`** — user microservices only; `microserviceKnowledge` change flag and rebuild rules for bind path / permissions / empty↔non-empty catalog transitions. |
| 32 | +- **Fog status** — `knowledgeStatus` (JSON string), `activeKnowledge` (managed count), `knowledgeLastUpdate` (Unix ms). |
| 33 | +- **v3.9.0 schema** — `Knowledge`, `FogKnowledge`, catalog tables, change-tracking flags, fog status columns on baseline and 3.8→3.9 upgrade. |
| 34 | + |
| 35 | +### Changed |
| 36 | + |
| 37 | +- **`modelLastUpdate`** — documented as Unix milliseconds (same clock as `knowledgeLastUpdate`). |
| 38 | +- **MS catalog validation** — `knowledge.bindPath` must not collide with volumes, tmpfs, or the models catalog path. A non-empty `bindPath` on a models or knowledge catalog requires at least one item. |
| 39 | +- **RBAC + swagger** — resource `knowledge`; viewer get/list; SRE/developer/admin full + link. |
| 40 | +- Dockerfile base image digest pins refreshed for **`node:24-bookworm`** (console-builder and builder stages) |
| 41 | +- Embedded **EdgeOps Console** default version **v1.1.0-rc.3** → **v1.1.0-rc.4** |
| 42 | + |
| 43 | +### Notes |
| 44 | + |
| 45 | +- Knowledge names are a separate namespace from Models. HF Knowledge uses the Hub dataset API; there is no `repoType` field. |
| 46 | +- `format` is a soft hint. Known values persist; anything else stores `unknown`. Unknown format is not a 400. |
| 47 | +- `getChanges.prune` still does not delete volumes. Unused **local** Knowledge prune is agent-side on the same flag. `system prune` does not drop Knowledge trees. |
| 48 | + |
| 49 | +## [v3.9.0-rc.5] |
| 50 | + |
| 51 | +Additive microservice `VOLUME` mapping `scope` for Edgelet private vs node-global shared claims. Reclaim stays on-node (`edgelet volume`); no new Controller prune flag. |
| 52 | + |
| 53 | +### Added |
| 54 | + |
| 55 | +- **`volumeMappings[].scope`** — `private` (default) or `shared`. Meaningful only when `type` is `volume`. Omit, null, or empty → `private`. Unknown values on `type: volume` are **400**. Other mapping types always store `private`. |
| 56 | +- **`VolumeMappings.scope`** column on 3.9.0 baseline and 3.8→3.9 upgrade (sqlite, mysql, postgres). |
| 57 | + |
| 58 | +### Changed |
| 59 | + |
| 60 | +- **Agent microservice list** includes `scope` on each volume mapping (lowercase). |
| 61 | +- **Volume-mapping create/delete** sets microservice `rebuild` and `microserviceCommon` so the agent applies the change. |
| 62 | +- **`type: volume` `hostDestination`** charset matches Edgelet: `[a-zA-Z0-9][a-zA-Z0-9_.-]*`. |
| 63 | +- Embedded **EdgeOps Console** default version **v1.1.0-rc.2** → **v1.1.0-rc.3** |
| 64 | + |
| 65 | +### Notes |
| 66 | + |
| 67 | +- Shared names are node-global. Controller does not unique-check names or `runAsUser` across consumers (local workloads exist). Use distinct names (`nodered-config`). |
| 68 | +- Controller and system microservices always persist `private`. Explicit `scope: shared` on those workloads is **400**. |
| 69 | +- `deleteWithCleanup` remains unused; operators reclaim with `edgelet volume` / `deprovision --purge-volumes`. |
| 70 | +- Switching private → shared does not copy existing UUID directories. Older agents ignore `scope` (every `VOLUME` stays per-UUID) with no merge after upgrade. |
| 71 | + |
| 72 | +## [v3.9.0-rc.3] |
| 73 | + |
| 74 | +Observed microservice status and fog liveness: live CPU/memory only while a microservice is RUNNING, and node quietness judged by when Controller last received a status PUT. |
| 75 | + |
| 76 | +### Fixed |
| 77 | + |
| 78 | +- **Stopped/inactive microservices** no longer keep the last CPU/memory sample after stop, deactivate, or a non-RUNNING agent report. |
| 79 | +- **Fog liveness** uses Controller receipt time (`lastStatusTime`), not the agent's clock, so clock skew no longer flaps nodes UNKNOWN. |
| 80 | +- **Status jobs** walk the fleet in small transactions and no longer delete microservices from the liveness cleaner. |
| 81 | + |
| 82 | +### Added |
| 83 | + |
| 84 | +- **Microservice last-crash columns** — `last_error`, `last_error_at`, `restart_count` on `MicroserviceStatuses` (baseline 3.9.0 and 3.8→3.9 upgrade). |
| 85 | + |
| 86 | +### Changed |
| 87 | + |
| 88 | +- **GET microservice meters** — `status.cpuUsage` and `status.memoryUsage` are 0 unless observed `status` is `RUNNING`. |
| 89 | +- **Operator stop / application deactivate** — GET shows `STOPPING` and zero meters immediately, before the next agent PUT. |
| 90 | +- **Microservice last crash** — GET `status` always includes `lastError`, `lastErrorAt`, and `restartCount`. `errorMessage` is the current failure (cleared by the agent after 30s RUNNING); last crash is kept after recovery. |
| 91 | +- Embedded **EdgeOps Console** default version **v1.1.0-rc.1** → **v1.1.0-rc.2** |
| 92 | + |
| 93 | +## [v3.9.0-rc.2] |
| 94 | + |
| 95 | +### Fixed |
| 96 | + |
| 97 | +- **`PATCH /api/v3/iofog/{uuid}` after Controller upgrade** — stale `bluetoothEnabled` / `abstractedHardwareEnabled` keys in `"FogPlatformSpecs".spec_json` (written before HAL removal) caused validation failure with misleading `Invalid fog platform spec field 'instance'`. Platform spec merge and upsert now whitelist allowed fields only; validation errors name the rejected field. |
| 98 | +- **`POST /api/v3/runtimeClasses/{name}/link`** — refused link when the RuntimeClass name is not in the target fog `availableRuntimes` (same rule as microservice deploy runtime validation). |
| 99 | + |
| 100 | + |
| 101 | +## [v3.9.0-rc.1] |
| 102 | + |
| 103 | +Fleet models, RuntimeClass, registry extensions, microservice catalog PATCH, MicroserviceTemplate, and HAL/BLE removal for Edgelet v1.1+ handoff. Targets **v3.9.0** schema (user tags). |
| 104 | + |
| 105 | +### Added |
| 106 | + |
| 107 | +- **Fleet models API** — `GET/POST/PATCH/DELETE /api/v3/models`, YAML create/upsert, and volumeMount-style `GET/POST/DELETE …/models/:name/link`; server-generated uuid; agent `GET /api/v3/agent/models` returns linked rows only. |
| 108 | +- **RuntimeClass API** — `GET/POST/PATCH/DELETE /api/v3/runtimeClasses`, YAML, link endpoints (edgelet fogs only), and agent `GET /api/v3/agent/runtimeClasses`. |
| 109 | +- **Registry `type` / `ca` / `insecure`** — Hub system registry by Hugging Face url+`hf`; MS and catalog image pulls remain **oci-only**. |
| 110 | +- **`PATCH /api/v3/microservices/:uuid/models`** — `microserviceModels` change flag and rebuild rules for bind path / permissions / empty↔non-empty catalog transitions. |
| 111 | +- **Microservice container fields** — commands/cmd alias, CDI devices, capabilities, health check, and related agent wire fields. |
| 112 | +- **MicroserviceTemplate** — CRUD + YAML; deploy overlay via `POST /microservices` + `template`. |
| 113 | +- **Agent status ingest** — `modelStatus`, `activeModels`, `modelLastUpdate`, `runtimeClasses`, `availableCdiDevices`, `podId`; getChanges flags `models`, `runtimeClasses`, `microserviceModels`. |
| 114 | +- **v3.9.0 schema** — `Models`, `RuntimeClasses`, link tables, registry columns, template tables. Fresh install uses baseline 3.9.0 migrate+seed; upgrade from 3.8.0 applies incremental 3.9.0 only. |
| 115 | + |
| 116 | +### Changed |
| 117 | + |
| 118 | +- **MS deploy** — auto-links referenced fleet models and RuntimeClass on edgelet agents; validates runtime against `availableRuntimes`. |
| 119 | +- **RBAC + swagger** — models, runtimeClasses, microserviceTemplates, and agent model/runtime routes documented and catalogued. |
| 120 | +- Embedded **EdgeOps Console** default version **v1.0.13** → **v1.1.0-rc.1** |
| 121 | + |
| 122 | +### Removed |
| 123 | + |
| 124 | +- **HAL/BLE provisioning** — user HAL/USB routes, RESTBlue/HAL system catalog items, fog `bluetooth`/`hal` flags, and `deviceScanFrequency` from agent config wire (Edge Guard retained). |
| 125 | +- **Agent HAL routes** — hardware inventory PUT/GET paths under `/api/v3/agent/hal/*`. |
| 126 | + |
3 | 127 |
|
4 | 128 | ## [v3.8.3-rc.3] - September 2026 |
5 | 129 |
|
|
0 commit comments