SIGN IN SIGN UP

fix(ulhost): address PR review — base import, dead code, structured output

Address Episkey-G's review on #120.

[阻断·规则2] Product code must not import the legacy base package:
- Delete products/ulhost/spoller.go (base.NewSpoller glue).
- Drop the base-importing SdescribeULHostByID from
  products/ulhost/internal/ulhost/describe.go; keep only the ctx-based
  sdescribeULHostByID / describeULHostByID (cli.NewServiceClient).
- Move CreateULHostInstance repeats polling to the platform side:
  cmd/api_repeats_ulhost.go (newULHostPoller + sdescribeULHostByID via
  base.BizClient). cmd/api.go no longer imports products/ulhost; the
  RepeatsSupportedAPI map is now built in NewCmdAPI (out io.Writer is not
  known at package init).

[建议·机器输出契约] Write commands now emit structured results via
ctx.EmitResult(cli.OpResultRow{...}) so --output json/yaml carries a
parseable result. Applied to create, delete, start, stop, restart,
poweroff, reset-password, reinstall-os, modify-attribute.

[清理] Remove dead code:
- completion.go: drop getULHostImageList (always returned nil, no callers).
- status.go: drop unused constants HOST_INITIALIZING/STARTING/STOPPING/
  REBOOTING, IMAGE_AVAILABLE/UNAVAILABLE.
- image/list.go: replace "Available" literal with imageStateAvailable
  constant (added to image/rows.go).

chore: update uhost/ulhost product owners to kai.zhao.

Verified: go build ./... ok, hack/check-product all rules pass,
hack/snapshot goldens pass.
K
kai.zhao committed
ad5f96a6778f44460656f3767481f09bc1f3a487
Parent: 1db6233