Fixed
FEINT_VM=incus-ovn mise run conformancecould not run at all. The
Outscale network suite built a binary name out of the mode name and looked for
incus-ovn, which does not exist — so the one mode that delivers isolation
between two VPCs was the one that could not be verified end to end. It passes
now, both network suites included.- A virtual machine never carried the address the API published with
--vm incus-vm. Four causes: the interface was added while the machine was
still coming up, which failed intermittently; the guest names its interfaces
differently from the runtime, so the address was applied to a name that does
not exist inside; the generated hardware address is not stored where the
driver looked for it; and when the attachment failed anyway, the private NIC
went on answeringavailable. It now answerssyncing_error, so a client
learns what the log knew. - Every filter but one was ignored on the Outscale reads, and answered with
the whole inventory and a 200 — indistinguishable from success, so a script
that deletes what a filter matched deleted everything. Filters are now applied
or refused with the field named; Vms filter on ids, states, images, types,
keypairs, subnets, nets and addresses, Nets and Subnets on ids, ranges and
states, keypairs on names, fingerprints and types. - The SSH key fingerprint matched nothing a client can compute. It was taken
over the whole key line, comment included, instead of the decoded key, so it
differed from whatssh-keygen -l -E md5prints and changed when only the
comment changed.KeypairTypealso answeredssh-rsafor every key,
including ed25519 ones, and a key whose material is not valid base64 was
accepted — which boots a machine holding bytes no SSH daemon will read. UpdateVmaccepted whatCreateVmsrefuses: a user data over the 500 KiB
cap, and a keypair that does not exist — the second boots a machine nobody can
log into while the API states a key is attached.- A 200 whose write was lost:
UpdateVmtook no per-target lock, so a
concurrent start overwrote what it had just reported as saved, and Terraform
re-proposed the same change on every plan. - A Subnet could land in a Net that was already deleted, leaving a bridge on
the host under nothing, and aterraform applycreating ten subnets
serialised them behind each other because the addressing lock was held across
the runtime call. - A stopped Vm outside a Subnet lost its private address. Outscale keeps it
until the machine is terminated. - A request over 1 MiB was truncated before the handler saw it, and came back
as a syntax error about a document the client had sent whole. DryRun: false, a legitimate request, failed this project's own
conformance gate.
Added
docs/limits.mdsays whatDryRundoes here: it is answered before any
handler runs, so nothing happens — the half that matters for a host — and it
does not validate, so a dry run of a malformed request answers 200 here and
400 upstream. The code cited that section for two releases before it existed.- The conformance suites drive what they had never driven: a filter, a
DryRun, and a real SSH key whose fingerprint is checked against the value
ssh-keygenprints. Every defect above lived in the gap between the suite and
the claim.