ci: add OCE compliance test (DHCP VIVSO discovery + install)#1126
Open
bhouse-nexthop wants to merge 1 commit into
Open
ci: add OCE compliance test (DHCP VIVSO discovery + install)#1126bhouse-nexthop wants to merge 1 commit into
bhouse-nexthop wants to merge 1 commit into
Conversation
This was referenced Jul 9, 2026
52147f0 to
d463d29
Compare
bhouse-nexthop
added a commit
to bhouse-nexthop/onie
that referenced
this pull request
Jul 9, 2026
Squashed content of PR opencomputeproject#1126, pulled in as a dependency. Signed-off-by: Brad House <bhouse@nexthop.ai>
bhouse-nexthop
added a commit
to bhouse-nexthop/onie
that referenced
this pull request
Jul 10, 2026
Squashed content of PR opencomputeproject#1126, pulled in as a dependency. Signed-off-by: Brad House <bhouse@nexthop.ai>
bhouse-nexthop
added a commit
to bhouse-nexthop/onie
that referenced
this pull request
Jul 13, 2026
Squashed content of PR opencomputeproject#1126, pulled in as a dependency. Signed-off-by: Brad House <bhouse@nexthop.ai>
Add a CI job that runs ONIE's own OCE (ONIE Compliance Environment, contrib/oce/test-onie.py) compliance suite against the kvm_x86_64 image, headless under QEMU. The existing install-test job hands ONIE the installer URL directly (install_url= on the kernel command line), which bypasses discovery. This job exercises the real OCP discovery path instead: OCE stands up an isc-dhcp-server advertising the ONIE VIVSO vendor option (DHCP option 125) and an nginx HTTP server, and ONIE must DHCP, read the VIVSO installer URL from the lease, and fetch and install the image itself. The harness asserts each step from the serial console (DHCP lease, service discovery, the VIVSO URL fetch, and "NOS install successful"). OCE provides only the server side -- it does not drive or detect the DUT (its hands/pdu power-control modules are stubs) -- so the harness (emulation/ci-oce-test.sh) embeds ONIE on a disk, starts OCE's services, boots ONIE in OS-install mode, and watches the serial console. OCE requires L2 connectivity to the DUT (test-onie.py validates that the DUT address is in the host interface's subnet), so the VM runs on a tap interface rather than user-mode SLIRP. isc-dhcp-server is confined by AppArmor to system paths, so the generated dhcpd config and leases are placed under /etc/dhcp and /var/lib/dhcp rather than weakening the profile. This job is stacked on the python2-to-3 port because contrib/oce is python3 only after that change, and the GitHub runner is python3. Signed-off-by: Brad House <bhouse@nexthop.ai>
d463d29 to
5f9e62c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
ci: add OCE compliance test (DHCP VIVSO discovery + install)— a new CI gate that runs ONIE's own OCE (ONIE Compliance Environment,contrib/oce) against the freshly builtkvm_x86_64image, exercising the real OCP discovery path end-to-end:oce-testjob chained afterinstall-test(build → boot-test → install-test → oce-test), so it runs against the same validated image.workflow_dispatchgains anoce_scopeinput:default(a fast representative subset, also what push/PR runs) orfull(the entire OCE installer+updater sweep).emulation/ci-oce-test.sh.