Skip to content

Migrate Ironic runbook shell-operator onto the generic openstack-sync-operator #2208

Description

@cardoe

Once the generic openstack-sync-operator from #2205 lands, the existing Ironic runbook shell-operator should be folded into it rather than maintained as a second, differently-shaped shell-operator framework.

What exists today:

  • containers/shell-operator-ironic/Dockerfileghcr.io/flant/shell-operator:v1.13.1 base, apk add python3 + venv, pip install -r requirements.txt (kubernetes, python-openstackclient, python-ironicclient), then COPY containers/shell-operator-ironic/hooks /hooks
  • containers/shell-operator-ironic/hooks/{create,update,delete}_runbook.sh — bash hooks with the standard --config JSON block, binding-context handling for Synchronization and Event, status patched via kubectl patch --type merge --subresource status
  • components/ironic/runbook-operator/ — Deployment, ServiceAccount, ClusterRole, RoleBinding, wired through kustomization.yaml
  • components/ironic/runbook-crd/bases/baremetal.ironicproject.org_runbooks.yaml — the CRD
  • Built in .github/workflows/containers.yaml as shell-operator-ironic with target: prod

Scope of the migration:

  • Move the runbook hooks onto the generic operator image (projected in, not baked into the image)
  • Move the CRD and the runbook custom resources into a separate resource-loading chart, following the charts/nautobot-job-queues pattern
  • Register the reconcile schedule through whatever uniform crontab mechanism the generic operator settles on
  • Retire containers/shell-operator-ironic and components/ironic/runbook-operator, and drop the container from the containers.yaml build matrix

Blocked on #2205.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions