Ericreeses opened a new pull request, #13870:
URL: https://github.com/apache/cloudstack/pull/13870
### Description
This PR adds support for multiple simultaneous console viewers for the same
KVM user VM.
Currently, console proxy sessions for a VM use the VM client tag as the
viewer key. When a second user opens the console for the same VM, the existing
viewer is replaced and the first user's console session is disconnected.
CloudStack already supports using a unique console session UUID as the
viewer key when `sessionRequiresNewViewer` is enabled. This change exposes that
existing capability for KVM user VMs through a new global setting:
`consoleproxy.kvm.multiple.viewers.enabled`
The setting defaults to `false`, preserving the existing single-viewer
behavior.
When enabled for a KVM user VM, each console request uses a unique viewer
session, allowing multiple users to access the same VM console simultaneously.
The change is limited to KVM user VMs. System VMs and other hypervisors
retain their existing console behavior.
Fixes: #13869
### Types of changes
* [ ] Breaking change (fix or feature that would cause existing
functionality to change)
* [x] New feature (non-breaking change which adds functionality)
* [ ] Bug fix (non-breaking change which fixes an issue)
* [ ] Enhancement (improves an existing feature and functionality)
* [ ] Cleanup (Code refactoring and cleanup, that may add test cases)
* [ ] Build/CI
* [ ] Test (unit or integration test code)
### Feature/Enhancement Scale or Bug Severity
#### Feature/Enhancement Scale
* [ ] Major
* [x] Minor
#### Bug Severity
* [ ] BLOCKER
* [ ] Critical
* [ ] Major
* [ ] Minor
* [ ] Trivial
### Screenshots (if appropriate)
N/A
### How Has This Been Tested?
Unit tests were added to `ConsoleAccessManagerImplTest` covering:
* KVM user VM with multiple console viewers enabled: a new viewer is
required.
* KVM user VM with multiple console viewers disabled: existing single-viewer
behavior is preserved.
* KVM system VM with the setting enabled: multiple-viewer behavior is not
applied.
Focused unit test:
`mvn -pl server -Dtest=ConsoleAccessManagerImplTest test`
Result:
`Tests run: 39, Failures: 0, Errors: 0, Skipped: 0`
`BUILD SUCCESS`
The CloudStack CI-style build was also executed:
`mvn -B -P developer,systemvm -Dsimulator -Dnoredist clean install
-T$(nproc)`
Result:
`BUILD SUCCESS`
The feature was additionally validated manually with CloudStack 4.22.1.0 and
KVM. With the existing behavior, opening the same VM console from a second user
disconnects the first user. After enabling per-session viewers, two users were
able to remain connected to the same KVM VM console simultaneously.
### How did you try to break this feature and the system with this change?
The global setting defaults to `false`, and unit testing verifies that the
existing single-viewer behavior remains unchanged when it is disabled.
The feature is explicitly restricted to KVM user VMs. A unit test verifies
that KVM system VMs do not receive the new viewer behavior even when the
setting is enabled.
Existing Hyper-V and external-console tests in
`ConsoleAccessManagerImplTest` also continue to pass.
The complete CloudStack developer/systemvm simulator build passed after the
change.
### Reviewer Test Procedure
1. Deploy the change to a CloudStack environment using KVM.
2. In **Global Settings**, locate:
`consoleproxy.kvm.multiple.viewers.enabled`
3. Set the value to `true`.
4. Open the console of the same running KVM user VM from two separate
CloudStack user sessions or browser sessions.
5. Verify that:
- Both console sessions remain connected.
- Opening the second console does not disconnect the first.
- Both users can view the same VM console.
- Keyboard and mouse input continue to function from both sessions.
6. Close one of the console sessions and verify that the other session
remains connected.
7. Open another console session for the same VM and verify that it can
connect without disconnecting the existing viewer.
8. Set `consoleproxy.kvm.multiple.viewers.enabled` back to `false`.
9. Open two fresh console sessions for the same KVM user VM.
10. Verify that the existing single-viewer behavior is restored: opening the
second console replaces/disconnects the first viewer.
11. Optionally verify that enabling the setting does not change console
behavior for KVM system VMs or non-KVM hypervisors.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]