From: "Denis V. Lunev" <den-lists@parallels.com>
To: "Gabriel L. Somlo" <gsomlo@gmail.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] RFC: Proposal to add QEMU "Guest Environment Variables"
Date: Wed, 4 Feb 2015 00:49:22 +0300 [thread overview]
Message-ID: <54D14262.2080802@parallels.com> (raw)
In-Reply-To: <20150203213858.GU3354@HEDWIG.INI.CMU.EDU>
On 04/02/15 00:38, Gabriel L. Somlo wrote:
> On Tue, Feb 03, 2015 at 02:11:12PM -0600, Michael Roth wrote:
>>
>> This does seem like useful functionality, but I think I'd like to know
>> more about the actual use-cases being looked at.
>
> The proposed functionality is mostly equivalent to that offered by
> "GuestInfo variables". So yes, initial activation scripts :)
>
>> Is this mostly about executing initial activation scripts? Because after
>> that point, a key-value store can be managed through the
>> guest-file-read/write interfaces for anything on the guest-side that's
>> interested in these variables.
>>
>> Even activation could be done using this approach, where the
>> scripts start QGA and wait for the host to coordinate the initial creation
>> of the file containing those variables, then setting a file marker that
>> allows activation to proceed. And if that seems wonky, I'm fairly sure you
>> could script the creation of the initial key-value store prior to starting
>> the guest using libguestfs:
>>
>> http://libguestfs.org/
>
> Specifically, I'm trying to port to QEMU a simulation/training setup
> where multiple VMs are started from the same base image, and guestinfo
> environment variables help each instance determine its "personality".
>
> Editing the disk image is not feasible, since the idea is to share the
> base disk image across multiple VMs. And needing to connect to each VM
> after having started it, wait for it to bring up the QGA, then get it
> to accept environment variables, that's precisely the wonkiness I'm
> trying to avoid :)
>
> I can certainly start small and implement read-only, host->guest startup
> time values (the smbios type11 strings plus a way to read them via a
> guest-side binary associated with a guest-tools package), and we can
> decide whether we want to support "set-env" operations and exporting
> set-env and get-env via the agent at a later stage. That functionality
> is available with GuestInfo variables, but the system I'm trying to port
> to QEMU doesn't require it as far as I can tell.
>
guest exec with ability to pass an environment could solve your
problem even without read/write. Boot guest, wait guest agent
startup, start something you need from agent with desired
environment.
this is a quote from the patchset being discussed at the moment.
[PATCH v2 0/8] qemu: guest agent: implement guest-exec command for Linux
+##
+# @guest-exec:
+#
+# Execute a command in the guest
+#
+# @path: path or executable name to execute
+# @params: #optional parameter list to pass to executable
+# @env: #optional environment variables to pass to executable
+# @handle_stdin: #optional handle to associate with process' stdin.
+# @handle_stdout: #optional handle to associate with process' stdout
+# @handle_stderr: #optional handle to associate with process' stderr
+#
+# Returns: PID on success.
+#
+# Since: 2.3
+##
+{ 'command': 'guest-exec',
+ 'data': { 'path': 'str', '*params': ['str'], '*env': ['str'],
+ '*handle_stdin': 'int', '*handle_stdout': 'int',
+ '*handle_stderr': 'int' },
+ 'returns': 'int' }
> Thanks much,
> --Gabriel
>
>>
>> I think we'd need a very strong argument to bake what seems to be
>> high-level guest management tasks into QEMU. If that can
>> avoided with some automated image modifications beforehand that seems
>> to me the more reasonable approach. Libvirt could ostensibly even
>> handle the task of writing those XML strings into the image's
>> key-value store to make management easier, but I suspect even that is
>> a bit too low in the stack for this level of management.
>
>
>
next prev parent reply other threads:[~2015-02-03 21:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-03 19:09 [Qemu-devel] RFC: Proposal to add QEMU "Guest Environment Variables" Gabriel L. Somlo
2015-02-03 19:14 ` Denis V. Lunev
2015-02-03 20:14 ` Gabriel L. Somlo
2015-02-03 20:23 ` Denis V. Lunev
2015-02-03 19:26 ` Eric Blake
2015-02-03 20:54 ` Gabriel L. Somlo
2015-02-03 20:11 ` Michael Roth
2015-02-03 21:38 ` Gabriel L. Somlo
2015-02-03 21:49 ` Denis V. Lunev [this message]
2015-02-03 22:14 ` Gabriel L. Somlo
2015-02-03 22:08 ` Michael Roth
2015-02-04 9:31 ` Daniel P. Berrange
2015-02-04 15:20 ` Gabriel L. Somlo
2015-02-04 15:24 ` Daniel P. Berrange
2015-02-04 15:59 ` Gabriel L. Somlo
2015-02-04 16:12 ` Daniel P. Berrange
2015-02-04 9:29 ` Daniel P. Berrange
2015-02-04 15:55 ` Christopher Covington
2015-02-04 16:00 ` Richard W.M. Jones
2015-02-04 16:06 ` Gabriel L. Somlo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54D14262.2080802@parallels.com \
--to=den-lists@parallels.com \
--cc=gsomlo@gmail.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).