#!/usr/bin/perl

## imports
use strict;
use Switch;
use Nagios::Plugin;

## init
# setup NP
my $np = Nagios::Plugin->new ( 
	shortname => "ZONE",
	version => 1.0,
	usage => "Usage: %s -z <zone>",
	blurb => "checks a zone's status"
);

$np->add_arg(
	spec => 'zone|z=s',
	help => '-z, --zone=<zone>',
	required => 1
);

# main
$np->getopts;

open(my $zones, '-|', 'zoneadm list -vic | awk \'{print $2,$3}\'') or 
	$np->nagios_exit( UNKNOWN, "Error executing zoneadm");

my $zone_state = 'unknown';
while(<$zones>) {
	chomp;

	my @zone = split(/\s/);
	if ($zone[0] ne 'NAME') {
		if ($zone[0] eq $np->opts->zone ) {
			$zone_state = $zone[1];
		}
	}
}

close($zones);

# plugin logic
my $status, my $message;
switch ($zone_state) {
	case "running"       { $status = OK; }
	case "ready"         { $status = WARNING; }
	case "shutting_down" { $status = WARNING; }
	case "installed"     { $status = CRITICAL; }
	case "incomplete"    { $status = CRITICAL; }
	case "configured"    { $status = CRITICAL; }
	else                 { $status = UNKNOWN; }
}

$message = sprintf("Zone %s is %s.", $np->opts->zone, $zone_state);

# return result
$np->nagios_exit( $status, $message);
