Skip to content

Add OpenVMM guest provider#4411

Open
vyadavmsft wants to merge 6 commits intomainfrom
vyadav_openvmm_provider
Open

Add OpenVMM guest provider#4411
vyadavmsft wants to merge 6 commits intomainfrom
vyadav_openvmm_provider

Conversation

@vyadavmsft
Copy link
Copy Markdown
Collaborator

@vyadavmsft vyadavmsft commented Apr 8, 2026

Description

This PR adds the initial OpenVMM guest support in LISA. It adds the installer, schema, tool wrapper, transformers, guest-node plumbing, and the OpenVMM node/lifecycle implementation required to provision and manage OpenVMM guests

Related Issue

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Documentation update

Checklist

  • Description is filled in above
  • No credentials, secrets, or internal details are included
  • Peer review requested (if not, add required peer reviewers after raising PR)
  • Tests executed and results posted below

Test Validation

Key Test Cases:
Tested verify_cloud_hypervisor_integration tests with internal ADO pipeline.

Impacted LISA Features:
Kernel source installer tansformer

Tested Azure Marketplace Images:
None

Test Results

Image VM Size Result
PASSED / FAILED / SKIPPED

Add the OpenVMM CLI wrapper and tool exports, plus the source installer and deployment transformer needed to provision OpenVMM on a host node.
Teach the platform and runbook schema to load typed guest nodes, preserve optional parent capability inheritance, and recognize OpenVMM as a guest orchestrator type.
Copilot AI review requested due to automatic review settings April 8, 2026 21:48
@vyadavmsft vyadavmsft changed the title Vyadav openvmm provider Add openvmm provider Apr 8, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds an OpenVMM-based guest orchestrator/provider and supporting tooling, plus schema/runtime updates to allow typed guest-node runbooks and optional capability inheritance.

Changes:

  • Added OpenVmm tool wrapper and OpenVMM guest orchestrator implementation (node/controller, installer, transformer, schemas).
  • Updated Cargo tool installation flow to set a stable toolchain and resolve toolchain cargo path more robustly.
  • Updated core schema/platform logic for typed guest nodes and conditional parent capability inheritance (use_parent_capability).

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
lisa/tools/openvmm.py New Tool wrapper to build/launch OpenVMM VMs and query version.
lisa/tools/cargo.py Adjusts rustup/cargo linking and stable toolchain selection.
lisa/tools/init.py Exposes OpenVmm tool in tools package exports.
lisa/sut_orchestrator/openvmm/transformers.py Adds transformer to install/verify OpenVMM on host nodes.
lisa/sut_orchestrator/openvmm/start_stop.py Implements Start/Stop feature hooks for OpenVMM guests.
lisa/sut_orchestrator/openvmm/schema.py Adds OpenVMM runbook schemas (installer + guest node + networking/serial/UEFI).
lisa/sut_orchestrator/openvmm/node.py Implements OpenVMM guest node provisioning, launch, and lifecycle control.
lisa/sut_orchestrator/openvmm/installer.py Adds source-based OpenVMM installer (cargo build + install + symlink).
lisa/sut_orchestrator/openvmm/context.py Adds per-node context for OpenVMM runtime state and artifact paths.
lisa/sut_orchestrator/openvmm/init.py New package init for OpenVMM orchestrator module.
lisa/sut_orchestrator/init.py Registers OPENVMM orchestrator constant.
lisa/schema.py Adds typed guest-node loading and use_parent_capability; changes Platform.guests type.
lisa/platform_.py Applies parent capability to guests conditionally via use_parent_capability.
lisa/mixin_modules.py Imports OpenVMM orchestrator modules for registration/discovery.

@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from 09ea552 to e937071 Compare April 8, 2026 22:15
Copilot AI review requested due to automatic review settings April 8, 2026 22:16
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from 073c4b7 to ad62bd4 Compare April 8, 2026 22:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 6 comments.

Copilot AI review requested due to automatic review settings April 8, 2026 22:35
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from 2be93bc to b7e89bf Compare April 8, 2026 22:37
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 6 comments.

Comments suppressed due to low confidence (1)

lisa/sut_orchestrator/openvmm/schema.py:1

  • The installer field is marked required in metadata but is typed as Optional with a default of None. This makes the schema contract ambiguous and forces a runtime assert later. Prefer making installer non-Optional with no default (mandatory), or make it truly optional by removing required=True and handling None explicitly.
# Copyright (c) Microsoft Corporation.

@vyadavmsft
Copy link
Copy Markdown
Collaborator Author

@copilot please resolve below issues :
Check failure on line 760 in lisa/util/init.py

Code scanning
/ CodeQL

This expression stores sensitive data (password)
as clear text.
This expression stores sensitive data (secret) as clear text.
This expression stores sensitive data (password) as clear text.

Copilot AI review requested due to automatic review settings April 8, 2026 23:38
@vyadavmsft vyadavmsft review requested due to automatic review settings April 8, 2026 23:38
Copilot AI changed the title Add OpenVMM provider Fix CodeQL: prevent cleartext serialization of sensitive schema fields Apr 8, 2026
@vyadavmsft vyadavmsft changed the title Fix CodeQL: prevent cleartext serialization of sensitive schema fields Add OpenVMM provider Apr 8, 2026
@vyadavmsft
Copy link
Copy Markdown
Collaborator Author

@copilot apply changes based on the comments in this thread

Copilot AI review requested due to automatic review settings April 8, 2026 23:47
Copilot AI review requested due to automatic review settings April 9, 2026 17:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 6 comments.

Copilot AI review requested due to automatic review settings April 9, 2026 20:35
@microsoft microsoft deleted a comment from Copilot AI Apr 9, 2026
@microsoft microsoft deleted a comment from Copilot AI Apr 9, 2026
@microsoft microsoft deleted a comment from Copilot AI Apr 9, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.

Implement the OpenVMM guest node controller, lifecycle feature support, and module registration needed to activate the orchestrator in LISA.
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from efe359b to c07b677 Compare April 9, 2026 20:42
Copilot AI review requested due to automatic review settings April 9, 2026 20:48
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from d752fd5 to 39a9d2b Compare April 9, 2026 20:55
Replace OpenVMM process sleep loops with bounded wait helpers and clearer timeout failures during start/stop handling.

Use typing.Dict in lisa/secret.py so the annotation remains compatible with the repo's Python 3.8 minimum.
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from 39a9d2b to 587e2d0 Compare April 9, 2026 20:56
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 9 comments.

@vyadavmsft vyadavmsft changed the title openvmm/schema.py: fix Black formatting after adding repr=False to sensitive fields Add OpenVMM guest provider Apr 9, 2026
Copilot AI review requested due to automatic review settings April 9, 2026 21:55
@vyadavmsft vyadavmsft force-pushed the vyadav_openvmm_provider branch from d3a22b8 to 3cb2c80 Compare April 9, 2026 21:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated no new comments.

priority=1,
requirement=simple_requirement(supported_features=[StartStop]),
)
def verify_stop_start_in_platform(self, node: Node) -> None:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this already is verify_***

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't use the same names, when only specify the name, two cases will be picked up.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok i see. fixed

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 9 comments.

Fix OpenVMM guest capability isolation, host-path handling, installer path
normalization, and stop-timeout cleanup behavior. Add focused selftests for
guest-node parsing, OpenVMM node and installer regressions, schema validation,
and stdout secret logging, plus minimal OpenVMM smoke coverage.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 6 comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants