Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
Changes | 1 +
Virt.xs | 23 +++++++++++++++++++++
lib/Sys/Virt/Domain.pm | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 80 insertions(+)
diff --git a/Changes b/Changes
index 06f66c8..ebc6548 100644
--- a/Changes
+++ b/Changes
@@ -3,6 +3,7 @@ Revision history for perl module Sys::Virt
3.9.0 2017-11-00
- Add VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE constant
+ - Add set_lifecycle_action
3.8.0 2017-10-04
diff --git a/Virt.xs b/Virt.xs
index eb8465f..c123769 100644
--- a/Virt.xs
+++ b/Virt.xs
@@ -6310,6 +6310,16 @@ set_block_threshold(dom, dev, thresholdsv, flags=0)
_croak_error();
void
+set_lifecycle_action(dom, type, action, flags=0)
+ virDomainPtr dom;
+ unsigned int type;
+ unsigned int action;
+ unsigned int flags;
+PPCODE:
+ if (virDomainSetLifecycleAction(dom, type, action, flags) < 0)
+ _croak_error();
+
+void
destroy(dom_rv, flags=0)
SV *dom_rv;
unsigned int flags;
@@ -9091,6 +9101,19 @@ BOOT:
REGISTER_CONSTANT(VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED, REVERT_PAUSED);
REGISTER_CONSTANT(VIR_DOMAIN_SNAPSHOT_REVERT_FORCE, REVERT_FORCE);
+ stash = gv_stashpv( "Sys::Virt::Lifecycle", TRUE );
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_POWEROFF, LIFECYCLE_POWEROFF);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_REBOOT, LIFECYCLE_REBOOT);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_CRASH, LIFECYCLE_CRASH);
+
+ stash = gv_stashpv( "Sys::Virt::LifecycleAction", TRUE );
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY, LIFECYCLE_ACTION_DESTROY);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_RESTART, LIFECYCLE_ACTION_RESTART);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_RESTART_RENAME,
LIFECYCLE_ACTION_RESTART_RENAME);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE,
LIFECYCLE_ACTION_PRESERVE);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY,
LIFECYCLE_ACTION_COREDUMP_DESTROY);
+ REGISTER_CONSTANT(VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART,
LIFECYCLE_ACTION_COREDUMP_RESTART);
+
stash = gv_stashpv( "Sys::Virt::StoragePool", TRUE );
REGISTER_CONSTANT(VIR_STORAGE_POOL_INACTIVE, STATE_INACTIVE);
REGISTER_CONSTANT(VIR_STORAGE_POOL_BUILDING, STATE_BUILDING);
diff --git a/lib/Sys/Virt/Domain.pm b/lib/Sys/Virt/Domain.pm
index 273e6e6..38b9c9b 100644
--- a/lib/Sys/Virt/Domain.pm
+++ b/lib/Sys/Virt/Domain.pm
@@ -1999,6 +1999,11 @@ level. The threshold level is unset once the event fires. The
event might not be delivered at all if libvirtd was not running
at the moment when the threshold was reached.
+=item $dom->set_lifecycle_action($type, $action, $flags=0)
+
+Changes the actions of lifecycle events for domain represented as
+<on_$type>$action</on_$type> in the domain XML.
+
=back
=head1 CONSTANTS
@@ -4544,6 +4549,57 @@ The I/O threads pinning
=back
+=head2 DOMAIN LIFECYCLE CONSTANTS
+
+The following constants are useful when setting action for
+lifecycle events.
+
+=over 4
+
+=item Sys::Virt::Domain::LIFECYCLE_POWEROFF
+
+The poweroff lifecycle event type
+
+=item Sys::Virt::Domain::LIFECYCLE_REBOOT
+
+The reboot lifecycle event type
+
+=item Sys::Virt::Domain::LIFECYCLE_CRASH
+
+The crash lifecycle event type
+
+=back
+
+=head2 DOMAIN LIFECYCLE ACTION CONSTANTS
+
+=over 4
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_DESTROY
+
+The destroy lifecycle action
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_RESTART
+
+The restart lifecycle action
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_RESTART_RENAME
+
+The restart-rename lifecycle action
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_PRESERVE
+
+The preserve lifecycle action
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_COREDUMP_DESTROY
+
+The coredump-destroy lifecycle action
+
+=item Sys::Virt::Domain::LIFECYCLE_ACTION_COREDUMP_RESTART
+
+The coredump-restart lifecycle action
+
+=back
+
=head1 AUTHORS
Daniel P. Berrange <berrange(a)redhat.com>
--
2.13.6