Metabrik-Repository
view release on metacpan or search on metacpan
lib/Metabrik/System/Freebsd/Iocage.pm view on Meta::CPAN
sub list {
my $self = shift;
my ($arg) = @_;
$arg ||= '';
my $cmd = "iocage list $arg";
my $lines = $self->capture($cmd) or return;
my $header = 0;
my @jails = ();
for (@$lines) {
if (! $header) {
$header++;
next;
}
if (/non iocage jails currently active/) {
last;
}
my @toks = split(/\s+/, $_);
my ($ip, $interface) = split(/,/, $toks[5]);
$ip ||= '';
$interface ||= '';
push @jails, {
jid => $toks[0],
uuid => $toks[1],
boot => $toks[2],
state => $toks[3],
tag => $toks[4],
ip => $ip,
interface => $interface,
};
}
return \@jails;
}
sub list_template {
my $self = shift;
return $self->list('-t');
}
sub show {
my $self = shift;
my $cmd = "iocage list";
return $self->system($cmd);
}
sub fetch {
my $self = shift;
my $cmd = "iocage fetch";
return $self->sudo_system($cmd);
}
sub update {
my $self = shift;
return $self->fetch(@_);
}
sub create {
my $self = shift;
my ($tag, $interface, $ipv4_address, $ipv6_address) = @_;
$self->brik_help_run_undef_arg('create', $tag) or return;
my $cmd = "iocage create tag=$tag";
if (defined($interface) && defined($ipv4_address)) {
$cmd .= " ip4_addr=\"$interface|$ipv4_address\"";
}
if (defined($interface) && defined($ipv6_address)) {
$cmd .= " ip6_addr=\"$interface|$ipv6_address\"";
}
return $self->sudo_system($cmd);
}
sub start {
my $self = shift;
my ($tag) = @_;
$self->brik_help_run_undef_arg('start', $tag) or return;
my $cmd = "iocage start $tag";
return $self->sudo_system($cmd);
}
sub stop {
my $self = shift;
my ($tag) = @_;
$self->brik_help_run_undef_arg('stop', $tag) or return;
my $cmd = "iocage stop $tag";
return $self->sudo_system($cmd);
}
sub restart {
my $self = shift;
my ($tag) = @_;
$self->brik_help_run_undef_arg('restart', $tag) or return;
my $cmd = "iocage restart $tag";
return $self->sudo_system($cmd);
}
sub destroy {
my $self = shift;
my ($tag) = @_;
( run in 2.662 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )