aboutsummaryrefslogtreecommitdiffstats
path: root/include/nms
diff options
context:
space:
mode:
Diffstat (limited to 'include/nms')
-rw-r--r--include/nms/dbconfig.pm29
-rw-r--r--include/nms/oplog.pm34
-rw-r--r--include/nms/util.pm74
-rwxr-xr-xinclude/nms/web.pm2
4 files changed, 134 insertions, 5 deletions
diff --git a/include/nms/dbconfig.pm b/include/nms/dbconfig.pm
new file mode 100644
index 0000000..b67c040
--- /dev/null
+++ b/include/nms/dbconfig.pm
@@ -0,0 +1,29 @@
+# vim:ts=8:sw=8
+use strict;
+use warnings;
+use utf8;
+use DBI;
+use Data::Dumper;
+use JSON;
+use nms;
+package nms::dbconfig;
+
+use base 'Exporter';
+our @EXPORT = qw(%config);
+our %config;
+my $dbh;
+
+use Data::Dumper;
+
+
+BEGIN {
+ $dbh = nms::db_connect();
+ my $q2 = $dbh->prepare('select * from config order by id desc limit 1;');
+ $q2->execute();
+ while (my $ref = $q2->fetchrow_hashref()) {
+ %config = %$ref;
+ $config{'data'} = JSON::XS::decode_json($ref->{'data'});
+ }
+ $dbh->disconnect();
+}
+1;
diff --git a/include/nms/oplog.pm b/include/nms/oplog.pm
new file mode 100644
index 0000000..c5194cf
--- /dev/null
+++ b/include/nms/oplog.pm
@@ -0,0 +1,34 @@
+# vim:ts=8:sw=8
+use strict;
+use warnings;
+use utf8;
+use DBI;
+use Data::Dumper;
+use JSON;
+use nms;
+package nms::oplog;
+
+use base 'Exporter';
+our @EXPORT = qw(oplog);
+my $dbh;
+my $query;
+my $user;
+
+use Data::Dumper;
+
+
+sub oplog {
+ $query->execute($_[0], "[$user]" . $_[1]);
+ $dbh->commit;
+}
+
+BEGIN {
+ $user = $ENV{'REMOTE_USER'} || "internal";
+ $dbh = nms::db_connect();
+ $query = $dbh->prepare("INSERT INTO oplog (username, systems, log) VALUES('system',?,?)");
+}
+
+END {
+ $dbh->disconnect();
+}
+1;
diff --git a/include/nms/util.pm b/include/nms/util.pm
index d2382f9..f79df50 100644
--- a/include/nms/util.pm
+++ b/include/nms/util.pm
@@ -10,7 +10,6 @@ our @EXPORT = qw(guess_placement parse_switches_txt parse_switches parse_switch)
# Parse a single switches.txt-formatted switch
sub parse_switch {
my ($switch, $subnet4, $subnet6, $mgtmt4, $mgtmt6, $lolid, $distro) = split(/ /);
- my %foo = guess_placement($switch);
my %ret = (
'sysname' => "$switch",
'subnet4' => "$subnet4",
@@ -50,10 +49,77 @@ sub parse_switches {
return @switches;
}
-# Guesses placement from name to get a starting point
-#
-# FIXME: Move to configuration
+# FIXME: Derive which function from the config/db using the shortname.
+# If we care.
sub guess_placement {
+ return guess_placement_dx($_[0]);
+}
+# Guesses placement from name to get a starting point
+# Digitality X layout
+# FIXME: Basically a stub, since MRGLASS is too slow with the map.
+sub guess_placement_dx {
+ my ($x, $y, $xx, $yy);
+
+ my $name = $_[0];
+ my $src = "unknown";
+ if ($name =~ /^row\d+-\d+$/) {
+ $name =~ /row(\d+)-(\d+)/;
+ my ($e, $s) = ($1, $2);
+ $src = "main";
+
+ $x = int(1523 - (($e-1)/2) * 61);
+ $y = undef;
+
+ if ($s > 1) {
+ $y = 137;
+ } else {
+ $y = 410;
+ }
+
+ $xx = $x + 32;
+ $yy = $y + 200;
+
+ } elsif ($name =~ /^core$/) {
+ $src = "core";
+ $x = 1100;
+ $y = 650;
+ $xx = $x + 200;
+ $yy = $y + 100;
+ } elsif ($name =~ /^noc$/) {
+ $src = "noc";
+ $x = 300;
+ $y = 800;
+ $xx = $x + 230;
+ $yy = $y + 40;
+ } elsif ($name =~ /^distro(\d)$/) {
+ my $d = ($1);
+ $src = "distro";
+ $x = 1200 - $d * 700;
+ $y = 355;
+ $xx = $x + 230;
+ $yy = $y + 40;
+ } else {
+ # Fallback to have _some_ position
+ $src = "random";
+ $x = int(rand(1900));
+ $y = int(rand(900));
+ $xx = $x + 230;
+ $yy = $y + 40;
+ };
+
+
+ my %box = (
+ 'src' => "$src",
+ 'x1' => $x,
+ 'y1' => $y,
+ 'xx' => $xx,
+ 'yy' => $yy
+ );
+ return %box;
+}
+
+# Last updated for TG16
+sub guess_placement_tg {
my ($x, $y, $xx, $yy);
my $name = $_[0];
diff --git a/include/nms/web.pm b/include/nms/web.pm
index 8a20f50..18fe919 100755
--- a/include/nms/web.pm
+++ b/include/nms/web.pm
@@ -67,7 +67,7 @@ sub setwhen {
$offset = $_[1];
}
if (defined($get_params{'now'})) {
- $now = db_safe_quote('now') . "::timestamp with time zone ";
+ $now = "timestamp with time zone 'epoch' + " . db_safe_quote('now') . " * INTERVAL '1 second' ";
$cc{'max-age'} = "3600";
}
$now = "(" . $now . " - '" . $offset . "'::interval)";