#!/usr/bin/env perl

use strict;
use warnings;
use Inca::Reporter::Version;

my $reporter = new Inca::Reporter::Version(
  name => 'cluster.mgmt.rocks.version',
  version => 2,
  description => 'Reports the version of Rocks and installed rolls',
  url => 'http://www.rocksclusters.org',
  package_name => 'rocks'
);
$reporter->processArgv(@ARGV);

my @rolls = $reporter->loggedCommand( "dbreport rolls" );
if ( $? != 0 ) {
  # if not on rocks server node, dbreport not available.  use motd
  $reporter->setVersionByExecutable("cat /etc/motd", "Rocks\\s+(\\d.+)");
  $reporter->print();
  exit;
}

if ( scalar(@rolls) < 1 ) {
  $reporter->failPrintAndExit( "no output returned from dbreport" ); 
}

for my $rollInfo ( @rolls ) {
  my ($rollName, $rollVersion) = $rollInfo =~ /^(\S+)\s+(\S+)/;
  if ( ! defined($rollName) || ! defined $rollVersion ) {
    $reporter->failPrintAndExit( "Unable to parse roll info '$rollInfo'" ); 
  }
  $reporter->setSubpackageVersion( $rollName, $rollVersion );
}

$reporter->print();


Click here to see help information for the cluster.mgmt.rocks.version reporter.