bernardodemarco opened a new pull request, #11016: URL: https://github.com/apache/cloudstack/pull/11016
### Description Currently, details about console sessions are stored in the `cloud.console_session` table in the database. Operators can only access this information by querying the database directly, while end users have no way to view console session data at all. To address this, this PR proposes to create the `listConsoleSessions` API. It allows listing the console sessions, with optional filters by domain, account, user, host, instance, IP address, and date. The API is accessible to all account types and, thus, performs proper access validation on the queried resources. The API supports the following parameters: | Parameter | Description | Required | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | | `id` | Console session ID. | No | | `activeonly` | Indicates whether only currently active console sessions should be listed. Defaults to `true`. Active sessions are the ones that have been acquired and have not been removed. | No | | `isrecursive` | Lists console sessions recursively per domain. Defaults to `false`. | No | | `clientaddress` | IP address of the client that accessed the console. | No | | `consoleendpointcreatoraddress` | IP address of the client that generated the console session endpoint. | No | | `hostid` | ID of the host where the VM was running when the console session endpoint was generated. Only available for Root Admins. | No | | `instanceid` | ID of the VM associated with the console session. | No | | `startdate` | If provided, only console sessions that were acquired from this date onward will be listed. | No | | `enddate` | If provided, only console sessions that were acquired up to this date will be listed. | No | | `domainid` | Domain ID of the account that generated the console session endpoint. | No | | `accountid` | ID of the account that generated the console session endpoint. | No | | `userid` | ID of the user that generated the console session endpoint. | No | | `page` | Used for pagination along with `pagesize`. | No | | `pagesize` | User for pagination along with `page`. | No | This PR only encompasses the creation of the API `listConsoleSessions` API. UI support will be implemented in a future PR. ### 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 - [X] Major - [ ] Minor ### Screenshots (if appropriate): ### How Has This Been Tested? #### Tests Setup 1. Created the following domain hierarchy: ```bash ROOT ├── d1 │ └── d1-d1 └── d2 ``` 2. Created the following accounts: | Name | Role Type | Domain | |--------------|--------------|-------------------| | admin | Admin | ROOT | | u1 | User | ROOT | | d1-admin | DomainAdmin | ROOT/d1 | | d1-user | User | ROOT/d1 | | d1-d1-admin | DomainAdmin | ROOT/d1/d1-d1 | | d1-d1-user | User | ROOT/d1/d1-d1 | | d2-admin | DomainAdmin | ROOT/d2 | 3. Deployed a VM for each account: | ID | Name | Instance Name | Account Name | |----|-----------------------------------------|----------------|---------------| | 5 | v-5-VM | v-5-VM | system | | 6 | s-6-VM | s-6-VM | system | | 7 | VM-fb5fa7ab-c5a0-4943-88bd-dedec9007c7b | i-7-7-VM | d1-d1-user | | 8 | r-8-VM | r-8-VM | d1-d1-user | | 9 | VM-16febbcd-a35e-4f05-87d3-1a27db077136 | i-6-9-VM | d1-user | | 10 | r-10-VM | r-10-VM | d1-user | | 11 | VM-d3208889-d3fd-43fe-9087-3cf5d863a3b1 | i-4-11-VM | d1-admin | | 12 | r-12-VM | r-12-VM | d1-admin | | 13 | VM-dea9f800-afd0-4054-9160-3a676a0df3d3 | i-2-13-VM | admin | | 14 | r-14-VM | r-14-VM | admin | | 15 | VM-766b6485-330e-4ec9-9516-59e17b52c1c7 | i-8-15-VM | u1 | | 16 | r-16-VM | r-16-VM | u1 | | 17 | VM-d2d7ded1-e210-4191-9a0e-75c3914de043 | i-9-17-VM | d2-admin | | 18 | r-18-VM | r-18-VM | d2-admin | | 19 | VM-266b73ff-2684-46b9-b36e-830ac83c5c14 | i-5-19-VM | d1-d1-admin | | 20 | r-20-VM | r-20-VM | d1-d1-admin | 4. With each account, I accessed all available VM consoles through the CPVM. #### `listConsoleSessions` tests - With the `admin` account, verified that the API lists console sessions correctly according to the specified parameters - With the `u1` account, verified that it is only possible to access the account's console sessions - With the `d2-admin` account, verified that it is only possible to list the console sessions of the `d2` domain - With the `d1-admin` account, verified that it is only possible to list the console sessions of the `d1` and `d1/d1-d1` domains - With the `d1-user` account, verified that it is only possible to list the `d1-user` console sessions - With the `d1-d1-admin` account, verified that it is only possible to list the console sessions of the `d1/d1-d1` domain - With the `d1-d1-user` account, verified that it is only possible to list the `d1-d1-user` console sessions - With accounts of the `User` type, verified that the `hostid` parameter is not considered in the API workflow - With accounts of the `User` type, verified that the `hostid` and `hostname` response attributes are not included in the API's return -- 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: commits-unsubscr...@cloudstack.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org