Skip to content

feat(orchestrator): modernization phases 1-6 — v3.0.0 - #4923

Open
sujit-jadhav wants to merge 6 commits into
dell:issue-4849-omnia-modernizationfrom
sujit-jadhav:feature/galaxy-collections
Open

feat(orchestrator): modernization phases 1-6 — v3.0.0#4923
sujit-jadhav wants to merge 6 commits into
dell:issue-4849-omnia-modernizationfrom
sujit-jadhav:feature/galaxy-collections

Conversation

@sujit-jadhav

Copy link
Copy Markdown
Collaborator

Summary

Implements the full orchestrator modernization (Phases 1–6) as outlined in ORCHESTRATOR_MODERNIZATION.md.

Changes

Phase Scope Files
1 Foundation — classification data, FG refactor, role skeletons 4 new
2 Playbook decomposition — 9 sub-playbooks, support flags, bolt-ons 9 new
3 Provisioning refactor — provision_common, generate_inventories 13 new
4 Bolt-on decoupling — pattern-based FG matching 7 modified
5 Lifecycle ops — upgrade/rollback/cleanup 3 modified
6 Static validation — syntax, YAML, Python, cross-refs 1 modified (docs)

43 files changed, 5087 insertions, 311 deletions

New Roles

  • provision_common — 11 task files + vars (SMD registration, BSS, cloud-init, DNS, SELinux)
  • generate_inventories — inventory generation from SMD
  • validate_openchami — service health gate
  • validate_provisioning — post-provision checks

New Playbooks

  • deploy_openchami.yml, provision_{preamble,kubernetes,slurm,os,custom}.yml, validate_{openchami,provisioning}.yml

Key Improvements

  • All hardcoded FG names (e.g. slurm_control_node_x86_64) replaced with pattern-based matching
  • Per-category nodes YAML (nodes_kubernetes.yaml, nodes_slurm.yaml) for safe concurrent provisioning
  • Real lifecycle playbooks: upgrade (backup→pull→restart→verify), rollback (find backup→restore→verify), cleanup (remove containers+configs+DNS)
  • Galaxy version bumped to 3.0.0

Validation

  • 14 playbooks pass --syntax-check
  • 202 YAML files parse cleanly
  • 8 Python modules compile
  • All cross-references resolve

- Phase 1: Foundation — classification data file, generate_functional_groups refactor
- Phase 2: Playbook decomposition — 9 focused sub-playbooks, support-flag persistence
- Phase 3: Provisioning refactor — provision_common (11 files), generate_inventories
- Phase 4: Bolt-on decoupling — pattern-based FG matching, removed hardcoded arch names
- Phase 5: Lifecycle operations — upgrade, rollback, cleanup playbooks with real logic
- Phase 6: Static validation — all 202 YAML files parse, 14 playbooks syntax-check pass

New roles: provision_common, generate_inventories, validate_openchami, validate_provisioning
New playbooks: deploy_openchami, provision_{preamble,kubernetes,slurm,os,custom}, validate_{openchami,provisioning}
New vars: functional_group_classification.yml

Bumps galaxy collection version from 2.2.0 to 3.0.0

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>
- yaml[line-length]: wrap skill.yaml description to fit 160-char limit
- ignore-errors x11: replace ignore_errors with failed_when: false in
  cleanup, rollback, and upgrade playbooks
- risky-shell-pipe x2: add set -o pipefail to container/pod removal shells
- name[template] x1: remove Jinja from middle of task name in register_nodes

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>
@sujit-jadhav
sujit-jadhav force-pushed the feature/galaxy-collections branch from 5b79e6d to ad10e2a Compare July 31, 2026 17:20
Galaxy import requires every role to have role metadata and a README.
Adds these for: generate_inventories, provision_common, validate_openchami,
validate_provisioning.

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>
- Add requirements.txt, requirements.yml, CHANGELOG.md
- Add EXAMPLES + RETURN doc blocks to all 7 modules missing them
- Add copy-input.sh domain init script
- Add docs/contracts/ symlinks to INPUT_CONTRACT.md, OUTPUT_CONTRACT.md
- Fix ansible.cfg: log_path → /var/log/omnia/orchestrator/, remote_tmp → ~/.ansible/tmp/
- Add domain-completion-checker to build_ignore (not collection code)

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>
…core 78 → 90

Restructure orchestrator_validation into the standard pattern:
- core/validation_engine.py: utilities and run_validation() dispatcher
- messages/orchestrator_messages.py: all error constants (UPPER_SNAKE_CASE)
- validators/orchestrator_config_validator.py: L2 config validator with validate()
- validators/network_spec_validator.py: L2 network spec validator with validate()
- schema/ already existed with 3 JSON schema files

Original orchestrator_validation_flow.py preserved for backward compatibility.

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>
- Add requirements.txt, requirements.yml, CHANGELOG.md
- Add EXAMPLES + RETURN doc blocks to validate_credentials, validate_discovery_config
- Create input validation four-directory structure (core/, messages/, validators/)
- Add copy-input.sh domain init script
- Add discovery_status.yml writer to ome_discovery role
- Add docs/contracts/ symlinks to INPUT_CONTRACT.md, OUTPUT_CONTRACT.md
- Fix ansible.cfg: log_path → /var/log/omnia/discovery/, remote_tmp → ~/.ansible/tmp/
- Add domain-completion-checker to build_ignore

Signed-off-by: Sujit Jadhav <sujit.jadhav@dell.com>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

skill to be removed from PR

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file name should be domain-init.sh

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file name should be domain-init.sh

- **Phase 3 — Provisioning Refactor**: New `provision_common` role (11 task files) for SMD registration, BSS, cloud-init, DNS, SELinux. New `generate_inventories` role. Demoted `configure_ochami` to template/task library.
- **Phase 4 — Bolt-On Decoupling**: Replaced all hardcoded functional group names with pattern-based matching in `slurm_config`, `k8s_config`, `mount_config`, `passwordless_ssh`, and `orchestrator_validations`.
- **Phase 5 — Lifecycle Operations**: Implemented `upgrade_orchestrator.yml` (backup → pull → restart → verify), `rollback_orchestrator.yml` (find backup → restore → verify), and `cleanup_orchestrator.yml` (stop → remove → clean → revert DNS).
- New roles: `validate_openchami`, `validate_provisioning`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change log to be reviewed. do we need to keep previous version as its all new

@@ -0,0 +1 @@
../INPUT_CONTRACT.md No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we delete INPUT_CONTRACT.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants