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

permit sending rpc commands #25

Open
clementnuss opened this issue Oct 30, 2024 · 2 comments
Open

permit sending rpc commands #25

clementnuss opened this issue Oct 30, 2024 · 2 comments

Comments

@clementnuss
Copy link

clementnuss commented Oct 30, 2024

it would be much appreciated if we were able (from the command line) to issue RPC to VMWare/ESXi. Our use case is something like:

vmtoolsd --cmd="info-get guestinfo.esxhost"

I went through the codebase but am not sure where to implement that. I gave it a shot here but am not sure if that's really the way to go, as I'm not sure if we want/can open a new nanotoolbox.Service or if we should try to reuse the already running vmtoolsd.

Let me know if my code is heading in the right direction, then I'll open a PR and I'll try to build and test it (so far I got some strange error when running make vmtoolsd... related to ARG {TOOLCHAIN} so I put that on hold before your reply.)

@clementnuss clementnuss changed the title permit sending commands permit sending rpc commands Oct 30, 2024
@jonkerj
Copy link
Collaborator

jonkerj commented Oct 30, 2024

I like this idea!

If I were to implement this, I'd implement subcommands using spf13/cobra, one for the current function (the daemon), one for issueing these commands.

It would require a bit of refactoring in cmd/*:

  • create a top-level main.go that basically imports github.com/siderolabs/talos-vmtoolsd/cmd and invokes cmd.Root.Execute() (I personally think it's good practise to have package main in root dir anyways)
  • create a cmd/root.go that setup root cobra and adds daemon and rpc-cmd
  • create a cmd/daemon.go that is a refactoring of current cmd/*
  • create a cmd/rpc-cmd.go that contains your idea

I'm a bit short on time (and typically over-optimistic when it comes to planning), so don't count on it too much, but we could do this command refactoring in the coming two weeks.

@clementnuss
Copy link
Author

cool! I've already worked with cobra, I'll try to implement that 👍🏼

one key point for me though: can we have multiple nanotoolbox.Service running ? or should we try to somehow implement an api on the daemon that the rpc-cmd subcommand would then query ?

I have a feeling it should work out-of-the box with another service, I'm just not sure how the underlying communication happens:

  1. is there a socket for the VMWare comm?
  2. and mostly, does it support parallel operations or will it crash if the daemon and the rpc-cmd try to issue an RPC all at the same time?

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

No branches or pull requests

2 participants