#!/usr/bin/perl -w

my $VERSION = "1.02, 2010-11-14";

my $ctid = $ARGV[0] or usage();
my $opt = lc($ARGV[1]) or usage();
$ctid =~ /^\d+$/s or usage();
$opt =~ /^\w+$/s or usage();

my $cmd = "vzlist -H -o $opt.b,$opt.l,hostname $ctid";
my $cur = `$cmd`;
my ($barrier, $limit, $host) = $cur =~ /^\s*(\d+)\s+(\d+)\s+(\S+)/s or die "Command '$cmd' output cannot be parsed\n";

print "$host: $opt = $barrier:$limit\n";
print "Enter new value (format is BARRIER:LIMIT or just LIMIT): ";
my $bl = scalar <STDIN>;

$bl =~ /^\s*(\d+)(?::(\d+))?\s*$/s or die "Invalid input format.\n";
$barrier = $1;
$limit = $2 || $1;

print "Accepted new value $barrier:$limit. Apply (y/n)? ";
my $yn = scalar <STDIN>;
if ($yn =~ /y/i) {
    my $cmd = "vzctl set $ctid --$opt $barrier:$limit --save";
    print $cmd . "\n";
    system($cmd);
}


sub usage {
	die 
		"dkLab vzset: set barier/limit for OpenVZ UBC option interactively.\n" .
		"Homepage: http://en.dklab.ru/lib/dklab_vzset/\n" .
		"Usage:\n" .
		"    $0 CTID option-name \n";
}
