#! /usr/bin/perl

$opt_n=50;
$opt_l=3;
$opt_basedn="dc=farmnet,dc=nikhef,dc=nl";
$opt_nfs="hooimijt:/export/cache/edgdevtb/poolaccounts";

@optdef=qw( v vo=s n:i basedn l:i b|uidbase:i g|gid=i );

use Getopt::Long;
$Getopt::Long::ignorecase=0;
&GetOptions(@optdef);

$opt_vo or die "No VO specified\n";
length($opt_vo)>5 and die "VO name too long\n";
$opt_g or die "No GroupID specified\n";
$opt_b or die "No start of UID numbering specified\n";

$opt_v and print "Generating VO $opt_vo with $opt_n accounts\n";
$opt_v and print "in DIT position $opt_basedn\n";

$fmtstring='%s%0'.$opt_l.'d';

for($i=1;$i<=$opt_n;$i++) {
  $uid=sprintf($fmtstring,$opt_vo,$i);
  $n=$i+$opt_b;

  print "dn: uid=$uid, ou=PoolAccounts, $opt_basedn\n";
  print "objectclass: top\n";
  print "objectclass: posixAccount\n";
  print "cn: VO $opt_vo member no $i\n";
  print "uid: $uid\n";
  print "uidNumber: $n\n";
  print "gidNumber: $opt_g\n";
  print "homeDirectory: /home/$uid\n";
  print "loginShell: /bin/sh\n";
  print "description: $opt_nfs/$uid\n";
  print "\n";

  print "dn: cn=$uid,ou=pool,ou=auto.home,ou=automount,$opt_basedn\n";
  print "objectclass: top\n";
  print "objectclass: automount\n";
  print "cn: $uid\n";
  print "automountInformation: $opt_nfs/$uid\n";
  print "description: EDG dev testbed pool account $uid\n";
  print "\n";
}

