diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-25 22:23:05 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-25 22:23:05 +0300 |
| commit | 0b9cd40f79f543a3845ba45cc3514fa47d33cd1c (patch) | |
| tree | 5005c2dc6627c7c86d60a43fac29b3bae3308725 /lib/hyperstack/vm_lifecycle.rb | |
| parent | e95ec1dd2a631a5d8790cedbe770baa95f048d94 (diff) | |
Fix Gemma 4 vLLM startup and improve partial-provisioning UX
- provisioning.rb: auto-install pytest before pre_start_cmd to fix missing
dependency in nightly vLLM images that crashes EngineCore on cupy import
- cli.rb: relax active_config_loaders/vm1_alive? to match by vm_id+public_ip
instead of requiring status==ACTIVE, so watch/status/test work on VMs
that were interrupted mid-provisioning
- vm_lifecycle.rb: persist API status/vm_state back to state file during
status calls; add 'Provisioning: incomplete' notice when provisioned_at
is missing
- provisioning_orchestrator.rb: add wait_for_ssh polling before
ensure_trusted_host to fix race between SSH daemon readiness and keyscan
Diffstat (limited to 'lib/hyperstack/vm_lifecycle.rb')
| -rw-r--r-- | lib/hyperstack/vm_lifecycle.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/hyperstack/vm_lifecycle.rb b/lib/hyperstack/vm_lifecycle.rb index cc52880..22fbe62 100644 --- a/lib/hyperstack/vm_lifecycle.rb +++ b/lib/hyperstack/vm_lifecycle.rb @@ -110,9 +110,16 @@ module HyperstackVM info "Tracked VM: #{state['vm_id']} #{vm['name']}" info "Status: #{vm['status']} / #{vm['vm_state']}" info "Public IP: #{connect_host_for(vm) || 'none'}" + unless state['provisioned_at'] + info "Provisioning: incomplete — run `create` to resume" + end info "Service mode: #{service_summary(vllm: vllm_e, ollama: ollama_e)}" info "Active model: #{state['vllm_model'] || @config.vllm_model}" if vllm_e info "Missing firewall rules: #{missing.empty? ? 'none' : missing.size}" + state['status'] = vm['status'] + state['vm_state'] = vm['vm_state'] + state['public_ip'] = connect_host_for(vm) || state['public_ip'] + @state_store.save(state) rescue Error => e warn_out "Unable to load VM #{state['vm_id']}: #{e.message}" return state&.dig('public_ip') |
