diff mbox series

[3/4] qmp: Allow setting -action parameters on the fly

Message ID 1607454890-3339-4-git-send-email-alejandro.j.jimenez@oracle.com (mailing list archive)
State New, archived
Headers show
Series Add a new -action parameter | expand

Commit Message

Alejandro Jimenez Dec. 8, 2020, 7:14 p.m. UTC
Add QMP commands to allow for the behaviors specified by the
-action event=action command line option to be set at runtime,
mimicking the watchdog-set-action QMP command.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
Reviewed-by: David Edmondson <david.edmondson@oracle.com>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
---
 qapi/run-state.json       | 27 +++++++++++++++++++++++++++
 softmmu/runstate-action.c |  6 +++---
 2 files changed, 30 insertions(+), 3 deletions(-)

Comments

Paolo Bonzini Dec. 8, 2020, 7:57 p.m. UTC | #1
On 08/12/20 20:14, Alejandro Jimenez wrote:
>   ##
> +# @reboot-set-action:
> +#
> +# Set reboot action
> +#
> +# Since: 6.0
> +##
> +{ 'command': 'reboot-set-action', 'data' : {'action': 'RebootAction'} }
> +
> +##
> +# @shutdown-set-action:
> +#
> +# Set shutdown action
> +#
> +# Since: 6.0
> +##
> +{ 'command': 'shutdown-set-action', 'data' : {'action': 'ShutdownAction'} }
> +
> +##
> +# @panic-set-action:
> +#
> +# Set panic action
> +#
> +# Since: 6.0
> +##
> +{ 'command': 'panic-set-action', 'data' : {'action': 'PanicAction'} }
> +
> +##

What about a single action-set command with arguments reboot, shutdown 
and panic?

Paolo
Paolo Bonzini Dec. 8, 2020, 7:58 p.m. UTC | #2
On 08/12/20 20:57, Paolo Bonzini wrote:
> On 08/12/20 20:14, Alejandro Jimenez wrote:
>>   ##
>> +# @reboot-set-action:
>> +#
>> +# Set reboot action
>> +#
>> +# Since: 6.0
>> +##
>> +{ 'command': 'reboot-set-action', 'data' : {'action': 'RebootAction'} }
>> +
>> +##
>> +# @shutdown-set-action:
>> +#
>> +# Set shutdown action
>> +#
>> +# Since: 6.0
>> +##
>> +{ 'command': 'shutdown-set-action', 'data' : {'action': 
>> 'ShutdownAction'} }
>> +
>> +##
>> +# @panic-set-action:
>> +#
>> +# Set panic action
>> +#
>> +# Since: 6.0
>> +##
>> +{ 'command': 'panic-set-action', 'data' : {'action': 'PanicAction'} }
>> +
>> +##
> 
> What about a single action-set command with arguments reboot, shutdown 
> and panic?

(and watchdog, of course)?

Paolo
Alejandro Jimenez Dec. 8, 2020, 8:59 p.m. UTC | #3
On 12/8/2020 2:58 PM, Paolo Bonzini wrote:
> On 08/12/20 20:57, Paolo Bonzini wrote:
>> On 08/12/20 20:14, Alejandro Jimenez wrote:
>>>   ##
>>> +# @reboot-set-action:
>>> +#
>>> +# Set reboot action
>>> +#
>>> +# Since: 6.0
>>> +##
>>> +{ 'command': 'reboot-set-action', 'data' : {'action': 
>>> 'RebootAction'} }
>>> +
>>> +##
>>> +# @shutdown-set-action:
>>> +#
>>> +# Set shutdown action
>>> +#
>>> +# Since: 6.0
>>> +##
>>> +{ 'command': 'shutdown-set-action', 'data' : {'action': 
>>> 'ShutdownAction'} }
>>> +
>>> +##
>>> +# @panic-set-action:
>>> +#
>>> +# Set panic action
>>> +#
>>> +# Since: 6.0
>>> +##
>>> +{ 'command': 'panic-set-action', 'data' : {'action': 'PanicAction'} }
>>> +
>>> +##
>>
>> What about a single action-set command with arguments reboot, 
>> shutdown and panic?
>
> (and watchdog, of course)?
Just to make sure I understand the request: an action-set QMP command 
would need to take two arguments: an event 
(reboot|shutdown|panic|watchdog), and a valid action for that event 
type, akin to what set_runstate_action() does. I'll work on it.

Alejandro
>
> Paolo
diff mbox series

Patch

diff --git a/qapi/run-state.json b/qapi/run-state.json
index 27b62ce..de27516 100644
--- a/qapi/run-state.json
+++ b/qapi/run-state.json
@@ -451,6 +451,33 @@ 
 { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} }
 
 ##
+# @reboot-set-action:
+#
+# Set reboot action
+#
+# Since: 6.0
+##
+{ 'command': 'reboot-set-action', 'data' : {'action': 'RebootAction'} }
+
+##
+# @shutdown-set-action:
+#
+# Set shutdown action
+#
+# Since: 6.0
+##
+{ 'command': 'shutdown-set-action', 'data' : {'action': 'ShutdownAction'} }
+
+##
+# @panic-set-action:
+#
+# Set panic action
+#
+# Since: 6.0
+##
+{ 'command': 'panic-set-action', 'data' : {'action': 'PanicAction'} }
+
+##
 # @GUEST_PANICKED:
 #
 # Emitted when guest OS panic is detected
diff --git a/softmmu/runstate-action.c b/softmmu/runstate-action.c
index 9c92595..aef23b8 100644
--- a/softmmu/runstate-action.c
+++ b/softmmu/runstate-action.c
@@ -29,7 +29,7 @@  static void runstate_action_help(void)
  * Set the internal state to react to a guest reboot event
  * as specified by the action parameter.
  */
-static void qmp_reboot_set_action(RebootAction act, Error **errp)
+void qmp_reboot_set_action(RebootAction act, Error **errp)
 {
     switch (act) {
     case REBOOT_ACTION_NONE:
@@ -47,7 +47,7 @@  static void qmp_reboot_set_action(RebootAction act, Error **errp)
  * Set the internal state to react to a guest shutdown event
  * as specified by the action parameter.
  */
-static void qmp_shutdown_set_action(ShutdownAction act, Error **errp)
+void qmp_shutdown_set_action(ShutdownAction act, Error **errp)
 {
     switch (act) {
     case SHUTDOWN_ACTION_PAUSE:
@@ -65,7 +65,7 @@  static void qmp_shutdown_set_action(ShutdownAction act, Error **errp)
  * Set the internal state to react to a guest panic event
  * as specified by the action parameter.
  */
-static void qmp_panic_set_action(PanicAction action, Error **errp)
+void qmp_panic_set_action(PanicAction action, Error **errp)
 {
     switch (action) {
     case PANIC_ACTION_NONE: