1#
2# (c) Jan Gehring <jan.gehring@gmail.com>
3#
4# vim: set ts=2 sw=2 tw=0:
5# vim: set expandtab:
6
7package Rex::Virtualization::LibVirt::shutdown;
8
9use 5.010001;
10use strict;
11use warnings;
12
13our $VERSION = '1.13.4'; # VERSION
14
15use Rex::Logger;
16use Rex::Helper::Run;
17
18sub execute {
19  my ( $class, $arg1, %opt ) = @_;
20  my $virt_settings = Rex::Config->get("virtualization");
21  chomp( my $uri =
22      ref($virt_settings) ? $virt_settings->{connect} : i_run "virsh uri" );
23
24  unless ($arg1) {
25    die("You have to define the vm name!");
26  }
27
28  my $dom = $arg1;
29  Rex::Logger::debug("shutdown domain: $dom");
30
31  unless ($dom) {
32    die("VM $dom not found.");
33  }
34
35  i_run "virsh -c $uri shutdown '$dom'", fail_ok => 1;
36  if ( $? != 0 ) {
37    die("Error shutdown vm $dom");
38  }
39
40}
41
421;
43