OVS: validate distributed VPC topology updates - #13792
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## main #13792 +/- ##
=============================================
- Coverage 19.65% 3.41% -16.24%
=============================================
Files 6368 487 -5881
Lines 574881 41867 -533014
Branches 70351 7912 -62439
=============================================
- Hits 112970 1429 -111541
+ Misses 449639 40238 -409401
+ Partials 12272 200 -12072
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Updates OVS distributed-router topology handling to scope updates to OVS-owned distributed VPCs, add validation for malformed topology inputs, and isolate per‑VPC failures so one bad VPC doesn’t abort processing.
Changes:
- Add
isOvsDistributedRouterVpc(...)and use it to limit topology/policy updates to OVS connectivity VPCs. - Wrap per‑VPC topology update work in
try/catchto continue processing other VPCs on failures. - Add validation and actionable exceptions for malformed Vswitch broadcast URI / broadcast key / missing gateway NIC, plus unit tests.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| plugins/network-elements/ovs/src/main/java/com/cloud/network/ovs/OvsTunnelManagerImpl.java | Adds OVS-specific VPC filtering, per‑VPC failure containment, and stricter topology validation. |
| plugins/network-elements/ovs/src/test/java/com/cloud/network/ovs/OvsTunnelManagerImplTest.java | Adds focused unit coverage for OVS ownership checks, topology validation, and continuation behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
42863fd to
35f55cc
Compare
35f55cc to
42863fd
Compare
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 18783 |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
Last changes being reviewed. |
|
[SF] Trillian test result (tid-16723)
|
|
@Dogface2k I am also wondering if anyone else in the community is currently using OVS/GRE. |
If you think this is no good for main/community just lmk and I'll remove it no worries. OVS/GRE are being used not by me personally but by someone who put this on a list for me to sort so yeah just lmk. and I’m checking CloudStack 4.23’s native KVM VXLAN options |
|
@weizhouapache Thanks. Just to clarify where this came from OVS/GRE was on a list of CloudStack areas/issues given to me by someone else running CloudStack to look into. It isn't something from my own deployment. We use VMware NSX and aren't using OVS/GRE. I've looked further into the alternatives as well. CloudStack's native KVM VXLAN path is separate from the OVS/GRE implementation. Native VXLAN provides the L2 overlay and network-isolation transport, but CloudStack does not use that native VXLAN path to implement its distributed VPC router. The OVS provider additionally maintains VPC-wide host/tier/VM topology, distributed gateway information and ACL/routing policy on each participating host. Therefore native KVM VXLAN is an alternative to OVS/GRE for basic overlay transport, but it is not a direct replacement for the distributed-router functionality exercised by this PR. I'm not attached to OVS/GRE as a direction for CloudStack. The PR fixes issues in code CloudStack currently carries, but if there aren't meaningful users of that path anymore and the better direction is to deprecate or remove it rather than continue maintaining it, that's completely fine with me and I'll drop the PR. If OVS/GRE is still considered supported functionality, I'll continue with the testing and the fix. |
thanks @Dogface2k Your PRs are always more than welcome. The feature is still supported, but it may not be widely used. Personally, I don't know of any users who are actively using it at the moment. So there is no need to withdraw the PR. |
Summary
longvalues and validate the network GRE range declared by CloudStack,0..4294967295;Setup,Implementing, orImplementedstate in active topology generation, so allocated or teardown-state tiers are not treated as malformed;Behaviour and compatibility
The VM state listener can observe VPCs whose distributed routing is owned by another network provider. Those VPCs are now ignored by the OVS callback rather than receiving OVS topology updates. The ACL replacement subscriber applies the same provider ownership check.
Provider/VPC eligibility lookup is inside the per-VPC failure boundary. An exception while resolving or generating one VPC's topology is logged for that VPC, and subsequent VPCs continue to be processed.
The active-tier state filter matches the existing OVS VPC tunnel-creation lifecycle. Active tiers still require a Vswitch broadcast URI in the exact
vpcId.greKeyform and a gateway NIC.Topology GRE keys are carried by the existing
longfield inOvsVpcPhysicalTopologyConfigCommand.Tier. Values above the signed integer range remain valid up to4294967295, while negative, non-numeric, malformed, wrong-VPC, and above-range values fail before a topology command is produced.No database schema, API contract, or non-OVS network implementation is changed.
Validation
OvsTunnelManagerImplTestcovers:0,2147483648, and4294967295;