dell / dell/omnia

OpenCHAMI Fabrica-Generated Core Services Migration Tracking

Open
#5,080 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
8
Forks
172
Avg merge
14h 51m
Merged PRs (30d)
180

Description

---

## Traceability Metadata

| Field | Value |
|-------|-------|
| **Specification Name** | OpenCHAMI Fabrica-Generated Core Services Migration Tracking |
| **Spec Number** | BR-23098 |
| **Category** | provisioning-boot |
| **Related To** | BR-36094, BR-80993, BR-19442, BR-31940, JA-21006, JA-9043 |

---

# OpenCHAMI Fabrica-Generated Core Services Migration Tracking

---

## Summary

OpenCHAMI is incrementally replacing several of its legacy Go services with services generated by its own `Fabrica` code-generation framework (consistent resource-based REST APIs, storage, and versioning conventions). As of OpenCHAMI v0.2.0, three legacy components have already been replaced: the Boot Script Service (BSS) by `boot-service`, the cloud-init server by `metadata-service`, and Hydra/OPAAL (OIDC auth) by `tokensmith`. A fourth, more consequential migration — SMD (State Management Database) to a new `Inventory Service` — has been introduced upstream but is not yet backward-compatible (it drops SMD's node-discovery capability) and is not part of the official release train. This spec tracks Omnia's adoption path for the already-released Fabrica services and flags the SMD/Inventory Service transition as a future watch item. It intentionally does not modify any existing Omnia functional spec (e.g., BSS override behavior) — that is deferred to a dedicated follow-on spec once this dependency migration lands.

---

## Problem Statement

Omnia's provisioning stack is built and documented against the legacy OpenCHAMI component names — BSS, the cloud-init server, and SMD. OpenCHAMI's own systemd unit set no longer includes `bss.service`, `cloud-init-server.service`, Hydra, or OPAAL as of release v0.2.0; they are replaced by `boot-service.service`, `metadata-service.service`, and `tokensmith.service`, with new API path prefixes (`/boot-service/*` instead of `/boot/v1/*`, `/metadata-service/*` instead of `/cloud-init/*`) and new `ochami` CLI verbs (`ochami boot`, `ochami metadata`). If Omnia continues pinning to pre-v0.2.0 OpenCHAMI packaging, it stops receiving upstream fixes; if it upgrades without accounting for the new service names and paths, PXE boot and node personalization can break. This is a dependency-version migration, not a change to Omnia's own functional behavior.

---

## Value Proposition

### Customer Value

Customers stay current with OpenCHAMI's actively supported service set instead of a deprecated BSS/cloud-init/Hydra/OPAAL stack, while `boot-service`'s legacy-compatible API mode provides a safe interim compatibility path so existing Omnia automation is not required to change on day one of the upgrade.

---

## User Personas

- **Infra Admin**: Upgrades the OIM's OpenCHAMI package set.
- **Cluster Admin**: Consumes BSS/metadata configuration through Omnia's existing abstractions.
- **Security Administrator**: Owns the auth path change from Hydra/OPAAL to tokensmith's JWKS/token model.

---

## Use Cases

### Use Case 1: OpenCHAMI Package Upgrade on the OIM
**Actor**: Infra Admin
**Context**: The OIM currently runs OpenCHAMI pre-v0.2.0 (BSS, cloud-init server, Hydra/OPAAL).
**Action**: The administrator upgrades the OIM's OpenCHAMI package set to v0.2.0 or later.
**Result**: `boot-service`, `metadata-service`, and `tokensmith` come up in place of the legacy services.

### Use Case 2: Legacy API Compatibility During Transition
**Actor**: System (automatic)
**Context**: Omnia's own playbooks still call BSS-style endpoints.
**Action**: `boot-service` runs with its legacy-compatible API mode enabled, serving BSS-compatible endpoints under `/boot/v1/*`.
**Result**: Existing Omnia automation continues to function without immediate changes while a native-API migration is scoped separately.

### Use Case 3: Auth Path Cutover
**Actor**: Security Administrator
**Context**: Components that previously validated tokens against Hydra/OPAAL need to point at the new auth service.
**Action**: The administrator updates JWKS/cert-consuming configuration to reference `tokensmith`'s endpoint.
**Result**: Token issuance and validation continue to work under the new service.

---

## Scope Definition

### Goals (Execution Outcomes)

- Confirm Omnia can run against OpenCHAMI v0.2.0+ using `boot-service`'s legacy-compatible mode as an interim step, without breaking PXE boot, cloud-init, or auth flows.
- Inventory every Omnia playbook, config template, and doc reference that names BSS, the cloud-init server, Hydra, or OPAAL directly.
- Identify the follow-on spec(s) needed to move Omnia's own automation to the native `boot-service` / `metadata-service` / `tokensmith` resource APIs, rather than the legacy compatibility layer.

### Non-Goals (Scope Boundaries)

- Rewriting BR-80993 (BSS User Overrides), BR-36094 (Kernel Boot Parameter Management), or any other existing functional spec to target the new native APIs. That is explicitly deferred to a later, separate spec once this dependency migration lands.
- Migrating SMD to Inventory Service. Inventory Service is not yet backward-compatible with SMD (no node-discovery support) and is not part of the official OpenCHAMI release train; tracked here only as a future watch item.
- Migrating Magellan or `coresmd`. Neither has a Fabrica-generated replacement today.

---

## Requirements

### Requirement: OpenCHAMI v0.2.0+ Compatibility [Req 1]

The OIM's OpenCHAMI package set must be upgradable to v0.2.0 or later without breaking existing PXE boot, cloud-init, or auth flows.

#### Scenario: PXE Boot via Legacy-Compatible boot-service
- When a node PXE boots against `boot-service` running with its legacy API mode enabled, it receives boot parameters using the same BSS-style payload Omnia already generates.

#### Scenario: Auth Continuity
- When a component previously validating tokens against Hydra/OPAAL is repointed at `tokensmith`'s JWKS endpoint, token validation continues to succeed.

### Requirement: Inventory of Legacy-Named Touchpoints [Req 2]

The system must produce an inventory of every Omnia playbook, config template, and documentation reference that names BSS, the cloud-init server, Hydra, or OPAAL directly, so follow-on migration specs can be scoped.

#### Scenario: Inventory Identifies Follow-On Candidates
- When the inventory is complete, it identifies BR-36094 and BR-80993 as the primary BSS-referencing specs that will need a dedicated native-API migration spec.

### Requirement: SMD / Inventory Service Watch Item [Req 3]

The system must track Inventory Service's stabilization (backward compatibility, discovery support) without taking any dependency on it.

#### Scenario: No Premature Adoption
- While Inventory Service remains non-backward-compatible with SMD, no Omnia spec references or depends on it. Adoption is only considered once a dedicated migration spec is scoped.

---

## Acceptance Criteria

- **AC-001**: The OIM successfully runs OpenCHAMI v0.2.0+ with `boot-service`, `metadata-service`, and `tokensmith` active, and existing Omnia-driven PXE boot and cloud-init flows continue to work via `boot-service`'s legacy API mode. [Req 1]
- **AC-002**: Auth-consuming components are validated against `tokensmith`'s JWKS endpoint in place of Hydra/OPAAL. [Req 1]
- **AC-003**: A documented inventory exists listing every Omnia spec, playbook, or doc referencing BSS, the cloud-init server, Hydra, or OPAAL by name. [Req 2]
- **AC-004**: No changes are made to BR-80993's, BR-36094's, or any other functional spec's Requirements or Acceptance Criteria as part of this spec. [Non-Goal confirmation]

---

## Dependencies

- **OpenCHAMI release v0.2.0+** (upstream): ships `boot-service`, `metadata-service`, and `tokensmith`.
- **BR-36094 (Kernel Boot Parameter Management)** and **BR-80993 (BSS User Overrides)**: both currently target legacy BSS directly; flagged here for a follow-on native-API spec, not modified by this spec.
- **BR-19442 (Diskful Boot with OpenCHAMI)**: depends on OpenCHAMI's provisioning schema generally; should be re-validated against v0.2.0.
- **JA-21006 / JA-9043 (Magellan/SMD-based discovery)**: unaffected for now — SMD remains in place until Inventory Service matures.

---

## Risks

| Risk | Category | Impact | Likelihood | Mitigation |
|---|---|---|---|---|
| `boot-service`'s legacy API mode is a "for the most part" compatibility layer, not a guaranteed 1:1 replacement | Technical | Medium | Medium | Validate every BSS-dependent Omnia flow (BR-36094, BR-80993) against the legacy mode before cutover. |
| Hydra/OPAAL → tokensmith changes the JWKS URL and bootstrap credential model | Technical | Medium | Medium | Update all JWKS/cert consumers in the same maintenance window as the OpenCHAMI upgrade. |
| Inventory Service (SMD replacement) matures faster than expected and diverges from Omnia's SMD assumptions | Operational | Low | Low | Treat as a watch item only (Req 3); do not adopt until a dedicated migration spec is scoped. |

---

## Assumptions / Open Questions

### Assumptions

- **A1**: OpenCHAMI v0.2.0's legacy-compatible API mode for `boot-service` is sufficient to avoid an immediate rewrite of BR-36094 / BR-80993.
- **A2**: Magellan and `coresmd` remain unchanged in this OpenCHAMI release cycle — no Fabrica-generated equivalents exist for either today.

### Open Questions

- **Q1**: What is OpenCHAMI's timeline for retiring `boot-service`'s legacy-compatible API mode, and does Omnia need to complete its native-API migration before that date?
- **Q2**: Does `tokensmith`'s own in-progress internal migration to being Fabrica-generated change its external API surface, or is it purely an internal implementation detail?

---

## Scope & Sequencing

This spec covers only the dependency-version migration (upgrading to OpenCHAMI v0.2.0+ and validating legacy-compatible behavior). It is a prerequisite for — but does not itself perform — a later native-API migration of BR-36094 and BR-80993, which should be scoped as a separate spec once this one lands. SMD → Inventory Service remains a watch item outside all current sequencing.

Contributor guide

Open the contributing guide

Research direction

No concrete files or tests are named. Start by inventorying Omnia playbooks, configuration templates, and documentation for BSS, cloud-init server, Hydra, and OPAAL references, then validate the OpenCHAMI v0.2.0+ upgrade and existing PXE, cloud-init, and auth flows; done means the acceptance criteria and documented inventory are complete.

Written by the indexing model from the issue text.

Assessment

Domain
backend, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.