From b8314f8319f00c9bb507d67f11ab8e75d1ca659f Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Thu, 10 Mar 2016 18:19:10 +0000 Subject: nms: Fix comments (presumably) --- include/nms/web.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/nms/web.pm b/include/nms/web.pm index 74f40c1..184cd90 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -12,7 +12,7 @@ package nms::web; use base 'Exporter'; our %get_params; our %json; -our @EXPORT = qw(finalize_output json dbh db_safe_quote %get_params get_input %json); +our @EXPORT = qw(finalize_output json $dbh db_safe_quote %get_params get_input %json); our $dbh; our $now; our $when; -- cgit v1.2.3 From 865dd759a0f14fea418124c2f90a1f7f928938af Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Thu, 10 Mar 2016 20:54:25 +0000 Subject: NMS: Prep for frontend poller-rewrite The biggest thing here is the addition of a generic poller and a generic "hash" from the backend so equality can easily be checked. --- include/nms/web.pm | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include') diff --git a/include/nms/web.pm b/include/nms/web.pm index 184cd90..d22a060 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -7,6 +7,8 @@ use DBI; use Data::Dumper; use JSON; use nms; +use Digest::SHA qw(sha512_base64); +use FreezeThaw qw(freeze); package nms::web; use base 'Exporter'; @@ -62,10 +64,12 @@ sub setwhen { sub finalize_output { my $query; + my $hash = Digest::SHA::sha512_base64(FreezeThaw::freeze(%json)); $query = $dbh->prepare ('select ' . $now . ' as time;'); $query->execute(); $json{'time'} = $query->fetchrow_hashref()->{'time'}; + $json{'hash'} = $hash; printcc; print "Content-Type: text/jso; charset=utf-8\n\n"; -- cgit v1.2.3 From d139059181888f85b1c3c0cd46e4812410eea8f5 Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Fri, 11 Mar 2016 12:03:25 +0100 Subject: NMS: Add (back) offset. The use case is primarily about supporting generic ?offset=5m independently from now=2015-04-02T15:00:30. Two reasons for this: 1. It allows easy generic client-side code to get two slightly offset time series. 2. It makes it possible to get the most recent data + an offset without having to refer to set now=(clock) to real time. Also: Untested, so its probably broken. --- include/nms/web.pm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include') diff --git a/include/nms/web.pm b/include/nms/web.pm index d22a060..ddc1be0 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -58,6 +58,9 @@ sub setwhen { $now = db_safe_quote('now') . "::timestamp "; $cc{'max-age'} = "3600"; } + if (defined($get_params{'offset'})) { + $now = "(" . $now . " - " . db_safe_quote('offset') . "::interval)"; + } $when = " time > " . $now . " - '5m'::interval and time < " . $now . " "; return $when; } -- cgit v1.2.3 From 8b22ddd85a92eddadd679ac1e51fe1792defb241 Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Sat, 12 Mar 2016 16:13:31 +0000 Subject: NMS: Do URL decoding and ISO 8601 time formating Finally found something that lacks correctness in postgres. --- include/nms/web.pm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/nms/web.pm b/include/nms/web.pm index ddc1be0..0f37a59 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -7,8 +7,9 @@ use DBI; use Data::Dumper; use JSON; use nms; -use Digest::SHA qw(sha512_base64); -use FreezeThaw qw(freeze); +use Digest::SHA; +use FreezeThaw; +use URI::Escape; package nms::web; use base 'Exporter'; @@ -58,9 +59,6 @@ sub setwhen { $now = db_safe_quote('now') . "::timestamp "; $cc{'max-age'} = "3600"; } - if (defined($get_params{'offset'})) { - $now = "(" . $now . " - " . db_safe_quote('offset') . "::interval)"; - } $when = " time > " . $now . " - '5m'::interval and time < " . $now . " "; return $when; } @@ -68,7 +66,7 @@ sub setwhen { sub finalize_output { my $query; my $hash = Digest::SHA::sha512_base64(FreezeThaw::freeze(%json)); - $query = $dbh->prepare ('select ' . $now . ' as time;'); + $query = $dbh->prepare('select to_char(' . $now . ', \'YYYY-MM-DD"T"HH24:MI:SS\') as time;'); $query->execute(); $json{'time'} = $query->fetchrow_hashref()->{'time'}; @@ -81,9 +79,10 @@ sub finalize_output { } sub populate_params { - foreach my $hdr (split("&",$ENV{'QUERY_STRING'} || "")) { + my $querystring = $ENV{'QUERY_STRING'} || ""; + foreach my $hdr (split("&",$querystring)) { my ($key, $value) = split("=",$hdr,"2"); - $get_params{$key} = $value; + $get_params{$key} = URI::Escape::uri_unescape($value); } } -- cgit v1.2.3 From cec01c54e85054c1679897d9be85181f1e4e850e Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Sun, 13 Mar 2016 02:11:42 +0000 Subject: NMS: Update placement-guessing for TG16 Skew skew, push push. At least regular e-switches look ok, as does creativia. Crew looks ok-ish. --- include/nms/util.pm | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'include') diff --git a/include/nms/util.pm b/include/nms/util.pm index c97572b..4623f92 100644 --- a/include/nms/util.pm +++ b/include/nms/util.pm @@ -62,13 +62,13 @@ sub guess_placement { my ($e, $s) = ($1, $2); $src = "main"; - $x = int(232 + (($e-1)/2) * 31.1); + $x = int(292 + (($e-1)/2) * 31.1); $y = undef; - $x += 14 if ($e >= 17); - $x += 14 if ($e >= 29); - $x += 14 if ($e >= 45); - $x += 14 if ($e >= 63); + $x += 14 if ($e >= 13); + $x += 14 if ($e >= 25); + $x += 14 if ($e >= 41); + $x += 14 if ($e >= 59); if ($s > 2) { $y = 405 - 120 * ($s-2); @@ -83,17 +83,18 @@ sub guess_placement { $y += 45 if $name eq "e1-4"; $y += 20 if $name eq "e3-4"; $y += 15 if $name eq "e5-4"; - $yy -= 25 if $name eq "e11-1"; + $yy -= 25 if $name eq "e7-1"; + $y += 10 if $name eq "e5-2"; + $yy -= 25 if $name eq "e5-2"; + $y += 20 if ($e >= 81 and $s == 2); + $yy -= 20 if ($e >= 79 and $s == 1); + $yy -= 30 if ($e >= 81 and $s == 1); - #$yy -= 14 if $name eq "e77-1"; - #$yy -= 28 if $name eq "e79-1"; - #$yy -= 15 if $name eq "e81-1"; - #$yy -= 56 if $name eq "e83-1"; } elsif ($name =~ /^sw(\d+)-creativia$/) { my ($s) = ($1); $src = "creativia"; $x = 1535; - $y = int(130 + 32.2 * $s); + $y = int(160 + 32.2 * $s); $yy = $y + 20; if ($s == 1) { $xx = $x + 70; @@ -108,14 +109,11 @@ sub guess_placement { } elsif ($name =~ /^crew(\d+)-(\d+)$/) { my ($s, $n) = ($1, $2); $src = "crew"; - $x = 1023 + 45 * $n; - $y = int(329 + 20.5 * $s); - $xx = $x + 45; + $x = 550 + 65 * $n; + $y = int(759 + 20.5 * $s); + $xx = $x + 65; $yy = $y + 14; - if ($s == 1 && $n == 1) { - $xx += 25; - } } else { # Fallback to have _some_ position $src = "random"; -- cgit v1.2.3 From 9f992ae24299d81643188530bc6f79e76f141c03 Mon Sep 17 00:00:00 2001 From: Kristian Lyngstol Date: Sun, 13 Mar 2016 12:55:06 +0000 Subject: NMS: Pick up IP's properly Nobody look because I just defaulted to ipv4. --- include/nms/util.pm | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/nms/util.pm b/include/nms/util.pm index 4623f92..79598d7 100644 --- a/include/nms/util.pm +++ b/include/nms/util.pm @@ -18,6 +18,7 @@ sub parse_switch { 'mgtmt4' => "$mgtmt4", 'mgtmt6' => "$mgtmt6", 'lolid' => "$lolid", + 'ip' => "$mgtmt4", 'distro' => "$distro" ); %{$ret{'placement'}} = guess_placement($switch); -- cgit v1.2.3