Commit 81310e91 authored by Leigh Stoller's avatar Leigh Stoller

Helper script to generate some CH stats.

parent 3f97953b
#!/usr/bin/perl -w
#
# Copyright (c) 2008-2013 University of Utah and the Flux Group.
#
# {{{GENIPUBLIC-LICENSE
#
# GENI Public License
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and/or hardware specification (the "Work") to
# deal in the Work without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Work, and to permit persons to whom the Work
# is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Work.
#
# THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS
# IN THE WORK.
#
# }}}
#
use strict;
use English;
use Data::Dumper;
use Getopt::Std;
use POSIX;
#
# Stats!
#
sub usage()
{
print STDERR "Usage: chstats\n";
exit(1);
}
my $optlist = "";
#
# Configure variables
#
my $TB = "@prefix@";
my $TBOPS = "@TBOPSEMAIL@";
my $PGENISUPPORT = @PROTOGENI_SUPPORT@;
my $ISCLRHOUSE = @PROTOGENI_ISCLEARINGHOUSE@;
# un-taint path
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin:/usr/site/bin';
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
# Protos
sub fatal($);
#
# Turn off line buffering on output
#
$| = 1;
# We always use the CH db.
use vars qw($GENI_DBNAME);
$GENI_DBNAME = "geni-ch";
# Now we can load the libraries after setting the proper DB.
use lib '@prefix@/lib';
use libaudit;
require GeniDB;
import GeniDB;
require GeniCertificate;
require GeniAuthority;
#
# Check args.
#
my %options = ();
if (! getopts($optlist, \%options)) {
usage();
}
usage()
if (@ARGV);
my $query_result =
DBQueryFatal("select count(slice_uuid) from aggregate_history");
my ($count) = $query_result->fetchrow_array();
print "Total slivers: $count\n";
$query_result =
DBQueryFatal("select count(distinct slice_uuid) from aggregate_history");
($count) = $query_result->fetchrow_array();
print "Distinct slices: $count\n";
$query_result =
DBQueryFatal("select count(distinct creator_urn) from aggregate_history");
($count) = $query_result->fetchrow_array();
print "Distinct users: $count (includes guest,tutorial,etc users)\n";
$query_result =
DBQueryFatal("select distinct creator_urn from aggregate_history ".
"where creator_urn not regexp ".
"'user\\\\+(gemini|gpousr|guest|user)'");
$count = $query_result->numrows;
print "Distinct users: $count (no guest users)\n";
$query_result =
DBQueryFatal("select count(distinct creator_urn) from aggregate_history ".
"where hrn like '%emulab.net%'");
($count) = $query_result->fetchrow_array();
print "-> Used Utah: $count\n";
$query_result =
DBQueryFatal("select count(distinct creator_urn) from aggregate_history ".
"where hrn not like '%emulab.net%'");
($count) = $query_result->fetchrow_array();
print "-> Used Other: $count\n";
$query_result =
DBQueryFatal("select distinct creator_urn from aggregate_history");
my %creator_places = ();
while (my ($creator_place) = $query_result->fetchrow_array()) {
if (defined($creator_place) && $creator_place =~ /\+(.*)\+/) {
$creator_places{$1} = 1;
}
}
$count = scalar(keys(%creator_places));
print "Distinct institutions: $count (includes guest,tutorial,etc users)\n";
#print Dumper(\%creator_places);
sub fatal($)
{
my ($msg) = @_;
die("*** $0:\n".
" $msg\n");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment