--- title: "[bojemoi] feat(orchestrator): xe-guest-utilities in cloud-init, IP detection, boot disk from VDI" date: 2026-04-24T23:00:22+02:00 draft: false tags: ["commit", "bojemoi", "main"] categories: ["Git Activity"] summary: "Commit e8778da par Betty dans bojemoi" author: "Betty" --- ## Commit `e8778da` | | | |---|---| | **Repository** | bojemoi | | **Branch** | `main` | | **Author** | Betty | | **Hash** | `e8778da95365c0e582aa011e7b12243abd6cf380` | ### Description Problem: alpine-meta XenServer template has no disk (CD-only); VMs halted immediately. IP was never detected because XenTools had nothing to run on. Changes: - cloud-init alpine/minimal,webserver,database: add xe-guest-utilities to packages, rc-update add + rc-service start in runcmd so XenStore gets the guest IP after first boot - xenserver_client_real.py create_vm: after VM.provision(), check if any disk VBD exists. If not and boot_vdi_uuid is provided, copy the source VDI into the same SR, resize to requested disk size, and attach as primary bootable disk (userdevice=0, type=Disk, bootable=True). Removed the old step-4 pre-provision resize loop (now handled post-provision). - config.py: add ALPINE_BOOT_VDI_UUID (df288d22-..., "alpine root" VDI) - main.py: pass boot_vdi_uuid=settings.ALPINE_BOOT_VDI_UUID for alpine deploys; poll for guest IP after VM creation; register real IP in host_debug (fallback to UUID if XenTools not ready within timeout) - schemas.py: add ip_poll_timeout to VMDeployRequest (default 120s, 0=skip); add ip_address to DeploymentResponse Tested: test-alpine-01 deployed, IP=192.168.1.247, host_debug id=5. Co-Authored-By: Claude Sonnet 4.6 ### Files Changed ``` M provisioning/cloud-init/alpine/database.yaml M provisioning/cloud-init/alpine/minimal.yaml M provisioning/cloud-init/alpine/webserver.yaml M provisioning/orchestrator/app/config.py M provisioning/orchestrator/app/main.py M provisioning/orchestrator/app/models/schemas.py M provisioning/orchestrator/app/services/xenserver_client_real.py ``` ### Diff Summary ``` provisioning/cloud-init/alpine/database.yaml | 4 ++ provisioning/cloud-init/alpine/minimal.yaml | 4 ++ provisioning/cloud-init/alpine/webserver.yaml | 4 ++ provisioning/orchestrator/app/config.py | 3 + provisioning/orchestrator/app/main.py | 32 +++++++-- provisioning/orchestrator/app/models/schemas.py | 7 ++ .../app/services/xenserver_client_real.py | 75 ++++++++++++++++++---- 7 files changed, 109 insertions(+), 20 deletions(-) ```