Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Export QMP functions #1340

Merged
merged 3 commits into from
Oct 30, 2024
Merged

Export QMP functions #1340

merged 3 commits into from
Oct 30, 2024

Conversation

bensmrs
Copy link
Contributor

@bensmrs bensmrs commented Oct 28, 2024

Closes: #1226

@bensmrs bensmrs requested a review from stgraber as a code owner October 28, 2024 11:47
@bensmrs bensmrs force-pushed the export-qmp-functions branch from 766d8c0 to bb39fa8 Compare October 28, 2024 11:54
@stgraber
Copy link
Member

@bensmrs I wonder, wouldn't it be cleaner if we just added a single command, run_command which would take one un-named argument (the command) and treat all kwargs as the arguments?

So we'd then have run_qmp that handles the raw JSON in/out QMP and run_command that lets you use a nicer syntax like:

run_command("qom-get", path="/machine/peripheral/dev-incus_root", property="serial")

I'm basically trying to avoid us having to duplicate the entire QMP command list in here.

@stgraber
Copy link
Member

Actually, I think I'd be willing to make a bit of a compromise because I do like the shorter syntax when you don't need to name all the arguments, but I still don't want to set a precedent which will get us to have to implement every single QMP command.

So I think we may want to go with:

Generic:

  • run_qmp(JSON)
  • run_command(CMD, key=value...)

Specific:

  • qom_{get,list,set}
  • object_{add,del}
  • device_{add,del}
  • blockdev_{add,del}
  • chardev_{add,change,remove}
  • netdev_{add,del}

Those are all modern QMP commands for core objects so not terribly likely to change or go away and the most likely to be called from the hook.

The other more niche commands can go through run_command where for commands with no arguments (quit/system_reset), this will remain pretty nice and short.

@bensmrs
Copy link
Contributor Author

bensmrs commented Oct 28, 2024

I expected the remark but I agree with your last message, I’ll look at it tomorrow

@stgraber
Copy link
Member

Thanks!

@bensmrs bensmrs force-pushed the export-qmp-functions branch from bb39fa8 to a0c30c0 Compare October 29, 2024 22:05
@bensmrs
Copy link
Contributor Author

bensmrs commented Oct 29, 2024

Just for a bit of context, I’m exploring the call stack to get the position in the Starlark code where there is a problem (in big scriptlets, it’s pretty useful). I haven’t found any other way, and Starlark doesn’t seem to offer much introspection into AST nodes, so that should do the trick…

Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
@stgraber stgraber force-pushed the export-qmp-functions branch from a0c30c0 to 24c4c0e Compare October 30, 2024 03:21
@github-actions github-actions bot added the Documentation Documentation needs updating label Oct 30, 2024
@stgraber stgraber force-pushed the export-qmp-functions branch from 24c4c0e to 8482bf6 Compare October 30, 2024 03:27
Signed-off-by: Stéphane Graber <stgraber@stgraber.org>
@stgraber stgraber force-pushed the export-qmp-functions branch from 8482bf6 to f07fd5c Compare October 30, 2024 05:06
@stgraber stgraber enabled auto-merge October 30, 2024 05:06
@stgraber stgraber merged commit 03eb8c1 into lxc:main Oct 30, 2024
30 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 22, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [lxc/incus](https://github.com/lxc/incus) | minor | `v6.6.0` -> `v6.7.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>lxc/incus (lxc/incus)</summary>

### [`v6.7.0`](https://github.com/lxc/incus/releases/tag/v6.7.0): Incus 6.7

[Compare Source](lxc/incus@v6.6.0...v6.7.0)

#### What's Changed

-   fix live update VM's limits.memory configuration when use a percentage value by [@&#8203;itviewer](https://github.com/itviewer) in lxc/incus#1287
-   fix: fix slice init length by [@&#8203;cuishuang](https://github.com/cuishuang) in lxc/incus#1285
-   incusd/instance/lxc: Remove restrictions on /run by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1288
-   Correct macvlan mode names by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1284
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1290
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1295
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1304
-   incus-simplestreams: Fix list -f json by [@&#8203;melato](https://github.com/melato) in lxc/incus#1310
-   Profile performance improvements by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1314
-   incus-agent: Add timeout for DNS query by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1313
-   incusd/instance/qemu: Don't fail on console retrival issue by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1316
-   Allow changing the parent value on physical networks by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1317
-   incus: Fix display of current project in projects list by [@&#8203;montag451](https://github.com/montag451) in lxc/incus#1318
-   Add `--format` to `incus admin sql` by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1319
-   incusd/internal/server/instance/drivers:  support for Chimera Linux (qemu/edk2) pkg layout by [@&#8203;mwyvr](https://github.com/mwyvr) in lxc/incus#1298
-   incusd/instance/common: Cleanup volatile on device add failure by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1323
-   incusd/network/bgp: Only advertise networks with BGP configuration by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1325
-   Make revert library shared by [@&#8203;gibmat](https://github.com/gibmat) in lxc/incus#1326
-   Fix to the cluster resources caching mechanism by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1324
-   Fix idmap issues by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1327
-   Make ask library shared by [@&#8203;gibmat](https://github.com/gibmat) in lxc/incus#1329
-   doc/network/resolved: Add disabling DNSSEC and DNSOverTLS by [@&#8203;ntnn](https://github.com/ntnn) in lxc/incus#1328
-   Add some application container documentation by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1331
-   incusd/device/nic/bridged: Handle invalid configuration by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1330
-   Fix handling of custom volume snapshot patterns by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1333
-   Add OCI DHCP renewal by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1334
-   doc/installing: Update for Chimera Linux by [@&#8203;mwyvr](https://github.com/mwyvr) in lxc/incus#1335
-   shared/cgo: Don't use strlcpy by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1337
-   Implement `incus webui` by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1338
-   incusd/scriptlet: Make set_target fail with invalid members by [@&#8203;bensmrs](https://github.com/bensmrs) in lxc/incus#1339
-   Export QMP functions by [@&#8203;bensmrs](https://github.com/bensmrs) in lxc/incus#1340
-   incusd/network/ovn: Add support to ipv4.dhcp.ranges by [@&#8203;jonatas-lima](https://github.com/jonatas-lima) in lxc/incus#1341
-   internal/server: Log QMP interaction to a file by [@&#8203;bensmrs](https://github.com/bensmrs) in lxc/incus#1345
-   incusd/instance/qemu: Log QEMU command line by [@&#8203;bensmrs](https://github.com/bensmrs) in lxc/incus#1346
-   Improve cluster instance placement by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1344
-   incusd/instance_logs: Update log file list by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1347
-   Add infrastructure for OVN events by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1349
-   Fix QEMU feature checks during startup by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1350
-   incusd/instance/lxc: Fix LXCFS per-instance path by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1352
-   doc/idmap: Clarify subuid/subgid configuration by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1353
-   incusd/instance/qmp: Fix logging with no log file by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1355
-   Add a GetOIDCTokens() method by [@&#8203;gibmat](https://github.com/gibmat) in lxc/incus#1357
-   Add get-current to show current project by [@&#8203;maveonair](https://github.com/maveonair) in lxc/incus#1356
-   incus/file/create: Use SFTP client instead of file API by [@&#8203;HassanAlsamahi](https://github.com/HassanAlsamahi) in lxc/incus#1354
-   internal/instance: Allow 0 as value to limits.cpu.nodes by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1358
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1361
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1362
-   Translations update from Hosted Weblate by [@&#8203;weblate](https://github.com/weblate) in lxc/incus#1368
-   Improve agent interface listing performance by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1367
-   Make `incus top` output configurable through options by [@&#8203;presztak](https://github.com/presztak) in lxc/incus#1370
-   Automatic live-migration to balance load on cluster by [@&#8203;presztak](https://github.com/presztak) in lxc/incus#1369
-   gomod: Update dependencies by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1372
-   Add refresh-exclude-older flag to only transfer new snapshots during instance/volume refresh by [@&#8203;ps-gill](https://github.com/ps-gill) in lxc/incus#1365
-   incusd/instances/publish: Fix base metadata by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1374
-   Fix TPM with long instance names by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1377
-   Don't BGP advertise OVN load-balancers when all backends are offline by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1376
-   incusd/instance/qemu: Don't take over operations on console retrieval by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1379
-   Tweak to cluster internal relocation by [@&#8203;stgraber](https://github.com/stgraber) in lxc/incus#1378

#### New Contributors

-   [@&#8203;cuishuang](https://github.com/cuishuang) made their first contribution in lxc/incus#1285
-   [@&#8203;mwyvr](https://github.com/mwyvr) made their first contribution in lxc/incus#1298
-   [@&#8203;ntnn](https://github.com/ntnn) made their first contribution in lxc/incus#1328
-   [@&#8203;jonatas-lima](https://github.com/jonatas-lima) made their first contribution in lxc/incus#1341

**Full Changelog**: lxc/incus@v6.6.0...v6.7.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Documentation Documentation needs updating
Development

Successfully merging this pull request may close these issues.

Addition of helper functions in the QEMU scriptlet
2 participants