Ignore:
Timestamp:
05/16/13 16:43:45 (11 years ago)
Author:
Kris Deugau
Message:

/branches/stable

Introduce informational VRF tags on allocations to match uncomitted patch
in production.
Also add a minor main.cgi error-log-cleanup hack around deleting routed
blocks and master blocks instead of bending getBlockData() out of shape
only to have to put it back when the database structure changes get merged.

Location:
branches/stable/cgi-bin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/stable/cgi-bin/IPDB.pm

    r595 r598  
    396396
    397397  # Snag the allocations for this block
    398   my $sth = $dbh->prepare("SELECT cidr,city,type,custid,swip,description".
     398  my $sth = $dbh->prepare("SELECT cidr,city,type,custid,swip,description,vrf".
    399399        " FROM allocations WHERE cidr <<= ? ORDER BY cidr");
    400400  $sth->execute($routed);
     
    405405
    406406  my @blocklist;
    407   while (my ($cidr,$city,$type,$custid,$swip,$desc) = $sth->fetchrow_array()) {
     407  while (my ($cidr,$city,$type,$custid,$swip,$desc,$vrf) = $sth->fetchrow_array()) {
     408    $desc .= " - vrf:$vrf" if $desc && $vrf;
     409    $desc = "vrf:$vrf" if !$desc && $vrf;
    408410    $custsth->execute($custid);
    409411    my ($ncust) = $custsth->fetchrow_array();
     
    462464  my $pool = shift;
    463465
    464   my $sth = $dbh->prepare("SELECT ip,custid,available,description,type".
     466  my $sth = $dbh->prepare("SELECT ip,custid,available,description,type,vrf".
    465467        " FROM poolips WHERE pool = ? ORDER BY ip");
    466468  $sth->execute($pool);
    467469  my @poolips;
    468   while (my ($ip,$custid,$available,$desc,$type) = $sth->fetchrow_array) {
     470  while (my ($ip,$custid,$available,$desc,$type,$vrf) = $sth->fetchrow_array) {
     471    $desc .= " - vrf:$vrf" if $desc && $vrf;
     472    $desc = "vrf:$vrf" if !$desc && $vrf;
    469473    my %row = (
    470474        ip => $ip,
     
    673677# Returns a success code and optional error message.
    674678sub allocateBlock {
    675   my ($dbh,undef,undef,$custid,$type,$city,$desc,$notes,$circid,$privdata,$nodeid) = @_;
     679  my ($dbh,undef,undef,$custid,$type,$city,$desc,$notes,$circid,$privdata,$nodeid,$vrf) = @_;
    676680  $privdata = '' if !defined($privdata);
     681  $vrf = '' if !defined($vrf);
    677682
    678683  my $cidr = new NetAddr::IP $_[1];
     
    720725                undef, ($alloc_from) );
    721726      }
    722       $dbh->do("UPDATE poolips SET custid=?,city=?,available='n',description=?,notes=?,circuitid=?,privdata=? ".
    723         "WHERE ip=?", undef, ($custid, $city, $desc, $notes, $circid, $privdata, $cidr) );
     727      $dbh->do("UPDATE poolips SET custid=?,city=?,available='n',description=?,".
     728        "notes=?,circuitid=?,privdata=?,vrf=? ".
     729        "WHERE ip=?", undef, ($custid, $city, $desc, $notes, $circid, $privdata, $vrf, $cidr) );
    724730
    725731# node hack
     
    771777          }
    772778          $sth = $dbh->prepare("insert into allocations".
    773                 " (cidr,custid,type,city,description,notes,maskbits,circuitid,privdata)".
    774                 " values (?,?,?,?,?,?,?,?,?)");
    775           $sth->execute("$cidr", $custid, $type, $city, $desc, $notes, $cidr->masklen, $circid, $privdata);
     779                " (cidr,custid,type,city,description,notes,maskbits,circuitid,privdata,vrf)".
     780                " values (?,?,?,?,?,?,?,?,?,?)");
     781          $sth->execute("$cidr", $custid, $type, $city, $desc, $notes, $cidr->masklen, $circid, $privdata, $vrf);
    776782
    777783          # And initialize the pool, if necessary
     
    884890          # Insert the allocations entry
    885891          $sth = $dbh->prepare("insert into allocations (cidr,custid,type,city,".
    886                 "description,notes,maskbits,circuitid,privdata)".
    887                 " values (?,?,?,?,?,?,?,?,?)");
    888           $sth->execute("$cidr", $custid, $type, $city, $desc, $notes, $cidr->masklen, $circid, $privdata);
     892                "description,notes,maskbits,circuitid,privdata,vrf)".
     893                " values (?,?,?,?,?,?,?,?,?,?)");
     894          $sth->execute("$cidr", $custid, $type, $city, $desc, $notes, $cidr->masklen, $circid, $privdata, $vrf);
    889895
    890896          # And initialize the pool, if necessary
     
    9971003  my @fieldlist;
    9981004  my @vallist;
    999   foreach ('custid', 'city', 'description', 'notes', 'circuitid', 'privdata') {
     1005  foreach ('custid', 'city', 'description', 'notes', 'circuitid', 'privdata', 'vrf') {
    10001006    if ($args{$_}) {
    10011007      push @fieldlist, $_;
     
    11001106    $msg = "Unable to delete master block $cidr";
    11011107    eval {
    1102       $sth = $dbh->prepare("delete from masterblocks where cidr='$cidr'");
    1103       $sth->execute;
    1104       $sth = $dbh->prepare("delete from freeblocks where cidr <<= '$cidr'");
    1105       $sth->execute;
     1108      $sth = $dbh->prepare("delete from masterblocks where cidr=?");
     1109      $sth->execute($cidr);
     1110      $sth = $dbh->prepare("delete from freeblocks where cidr <<= ?");
     1111      $sth->execute($cidr);
    11061112      $dbh->commit;
    11071113    };
     
    12641270## IPDB::getBlockData()
    12651271# Get CIDR or IP, custid, type, city, circuit ID, description, notes, modification time, private/restricted
    1266 # data, for a CIDR block or pool IP
     1272# data, and VRF tag, for a CIDR block or pool IP
    12671273# Also returns SWIP status flag for CIDR blocks
    12681274# Takes the block/IP to look up
     
    12861292  }
    12871293  my $binfo = $dbh->selectrow_hashref("SELECT $keycol AS block, custid, type, city, circuitid, description,".
    1288         " notes, modifystamp AS lastmod, privdata".($poolip ? '' : ', swip')." FROM $blocktable".
     1294        " notes, modifystamp AS lastmod, privdata, vrf".($poolip ? '' : ', swip')." FROM $blocktable".
    12891295        " WHERE $keycol = ?", undef, ($block) );
    12901296  return $binfo;
  • branches/stable/cgi-bin/ipdb.psql

    r592 r598  
    3333);
    3434
    35 CREATE TABLE "temp" (
    36         "ofs" integer
    37 );
    38 
    3935CREATE TABLE "freeblocks" (
    4036        "cidr" cidr DEFAULT '255.255.255.255/32' NOT NULL PRIMARY KEY,
     
    5753        "createstamp" timestamp DEFAULT now(),
    5854        "modifystamp" timestamp DEFAULT now(),
     55        "vrf" character varying(128) DEFAULT '' NOT NULL,
    5956        CHECK (((available = 'y'::bpchar) OR (available = 'n'::bpchar)))
    6057);
     
    7370        "custid" character varying(16) DEFAULT '',
    7471        swip character(1) DEFAULT 'n'
     72        "vrf" character varying(128) DEFAULT '' NOT NULL,
    7573);
    7674
    77 CREATE VIEW "searchme" as SELECT allocations.cidr, allocations.custid, allocations."type", allocations.city, allocations.description, allocations.notes, allocations.circuitid FROM allocations UNION SELECT poolips.ip, poolips.custid, poolips.type, poolips.city, poolips.description, poolips.notes, poolips.circuitid FROM poolips;
     75CREATE VIEW "searchme" as SELECT allocations.cidr, allocations.custid, allocations."type", allocations.city, allocations.description, allocations.notes, allocations.circuitid, allocations.vrf FROM allocations UNION SELECT poolips.ip, poolips.custid, poolips.type, poolips.city, poolips.description, poolips.notes, poolips.circuitid, poolips.vrf FROM poolips;
    7876
    7977CREATE TABLE "alloctypes" (
     
    154152
    155153CREATE TABLE "users" (
    156         "username" varchar(16) NOT NULL PRIMARY KEY,
    157         "password" varchar(16) DEFAULT '',
    158         "acl" varchar(16) DEFAULT 'b'
     154        "username" varchar(40) NOT NULL PRIMARY KEY,
     155        "password" varchar(60) DEFAULT '',
     156        "acl" varchar(30) DEFAULT 'b'
    159157);
    160158
    161159-- Default password is admin
    162160INSERT INTO users VALUES ('admin','luef5C4XumqIs','bacdsA');
    163 
    164 CREATE TABLE "dns" (
    165         "ip" inet NOT NULL PRIMARY KEY,
    166         "hostname" character varying(128),
    167         "auto" character(1) DEFAULT 'y'
    168 );
    169161
    170162-- Network nodes - allows finding customers affected by a broken <x> quickly
  • branches/stable/cgi-bin/main.cgi

    r596 r598  
    331331        type => $ipinfo->{type},
    332332        allocfrom => $pool,
     333        vrf => $ipinfo->{vrf},
    333334        );
    334335    } elsif ($webvar{fbtype} eq 'n') {
     
    477478  $page->param(cidr => $cidr);
    478479  $page->param(city => $q->escapeHTML($webvar{city}));
     480  $page->param(vrf => $webvar{vrf});
    479481  $page->param(custid => $webvar{custid});
    480482  $page->param(circid => $q->escapeHTML($webvar{circid}));
     
    521523  my ($code,$msg) = allocateBlock($ip_dbh, $webvar{fullcidr}, $webvar{alloc_from},
    522524        $webvar{custid}, $webvar{alloctype}, $webvar{city}, $webvar{desc}, $webvar{notes},
    523         $webvar{circid}, $webvar{privdata}, $webvar{node});
     525        $webvar{circid}, $webvar{privdata}, $webvar{node}, $webvar{vrf});
    524526
    525527  if ($code eq 'OK' || $code eq 'WARN') {
     
    695697## end node hack
    696698
     699  $page->param(vrf => $blockinfo->{vrf});
     700
    697701  my ($lastmod,undef) = split /\s+/, $blockinfo->{lastmod};
    698702  $page->param(lastmod => $lastmod);
     
    735739        type            => $webvar{alloctype},
    736740        swip            => $webvar{swip},
     741        vrf             => $webvar{vrf},
    737742        );
    738743
     
    784789  $page->param(city => $webvar{city});
    785790  $page->param(disptype => $disp_alloctypes{$webvar{alloctype}});
     791  $page->param(vrf => $webvar{vrf});
    786792  $page->param(custid => $webvar{custid});
    787793  $page->param(swip => $webvar{swip} eq 'on' ? 'Yes' : 'No');
     
    869875  # need to retrieve block data before deleting so we can notify on that
    870876  my $blockinfo = getBlockData($ip_dbh, $webvar{block});
     877# hack pthui.  This goes away with the new structure, since routed
     878# and master blocks can be retrieved with getBlockData()
     879if ($webvar{alloctype} eq 'rm') {
     880  $blockinfo = { custid => 'N/A', city => $webvar{city}, description => 'N/A' };
     881} elsif ($webvar{alloctype} eq 'mm') {
     882  $blockinfo = { custid => 'N/A', city => 'N/A', description => 'N/A' };
     883}
    871884
    872885  my ($code,$msg) = deleteBlock($ip_dbh, $webvar{block}, $webvar{alloctype});
Note: See TracChangeset for help on using the changeset viewer.