aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/test/tasks/main.yml2
-rw-r--r--include/nms/util.pm73
2 files changed, 71 insertions, 4 deletions
diff --git a/ansible/roles/test/tasks/main.yml b/ansible/roles/test/tasks/main.yml
index 8f105b9..92eedb1 100644
--- a/ansible/roles/test/tasks/main.yml
+++ b/ansible/roles/test/tasks/main.yml
@@ -28,6 +28,6 @@
body_format: json
user: demo
password: demo
- body: '[{"mgmt_v4_addr":"127.0.0.1","sysname":"core"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.2","sysname":"distro0"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.3","sysname":"row1-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.4","sysname":"row1-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.5","sysname":"row3-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.6","sysname":"row3-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.7","sysname":"row5-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.8","sysname":"row5-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.9","sysname":"row7-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.10","sysname":"row7-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.11","sysname":"row9-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.12","sysname":"row9-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.13","sysname":"distro1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.14","sysname":"row11-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.15","sysname":"row11-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.16","sysname":"row13-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.17","sysname":"row13-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.18","sysname":"row15-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.19","sysname":"row15-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.20","sysname":"row17-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.21","sysname":"row17-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.22","sysname":"row19-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.23","sysname":"row19-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.24","sysname":"distro2"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.25","sysname":"row21-1"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.26","sysname":"row21-2"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.27","sysname":"row23-1"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.28","sysname":"row23-2"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.29","sysname":"row25-1"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.30","sysname":"row25-2"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.31","sysname":"row27-1"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.32","sysname":"row27-2"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.33","sysname":"row29-1"},{"distro_name":"distro2","mgmt_v4_addr":"127.0.0.34","sysname":"row29-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.35","sysname":"distro3"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.36","sysname":"row31-1"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.37","sysname":"row31-2"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.38","sysname":"row33-1"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.39","sysname":"row33-2"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.40","sysname":"row35-1"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.41","sysname":"row35-2"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.42","sysname":"row37-1"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.43","sysname":"row37-2"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.44","sysname":"row39-1"},{"distro_name":"distro3","mgmt_v4_addr":"127.0.0.45","sysname":"row39-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.46","sysname":"noc"}]'
+ body: '[{"mgmt_v4_addr":"127.0.0.1","sysname":"core"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.2","sysname":"distro0"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.3","sysname":"row1-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.4","sysname":"row1-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.5","sysname":"row3-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.6","sysname":"row3-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.7","sysname":"row5-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.8","sysname":"row5-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.9","sysname":"row7-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.10","sysname":"row7-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.11","sysname":"row9-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.12","sysname":"row9-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.14","sysname":"row11-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.15","sysname":"row11-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.16","sysname":"row13-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.17","sysname":"row13-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.18","sysname":"row15-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.19","sysname":"row15-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.20","sysname":"row17-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.21","sysname":"row17-2"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.22","sysname":"row19-1"},{"distro_name":"distro0","mgmt_v4_addr":"127.0.0.23","sysname":"row19-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.24","sysname":"distro1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.25","sysname":"row21-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.26","sysname":"row21-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.27","sysname":"row23-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.28","sysname":"row23-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.29","sysname":"row25-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.30","sysname":"row25-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.31","sysname":"row27-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.32","sysname":"row27-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.33","sysname":"row29-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.34","sysname":"row29-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.36","sysname":"row31-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.37","sysname":"row31-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.38","sysname":"row33-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.39","sysname":"row33-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.40","sysname":"row35-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.41","sysname":"row35-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.42","sysname":"row37-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.43","sysname":"row37-2"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.44","sysname":"row39-1"},{"distro_name":"distro1","mgmt_v4_addr":"127.0.0.45","sysname":"row39-2"},{"distro_name":"core","mgmt_v4_addr":"127.0.0.46","sysname":"noc"}]'
diff --git a/include/nms/util.pm b/include/nms/util.pm
index 898aa9a..b71d5a2 100644
--- a/include/nms/util.pm
+++ b/include/nms/util.pm
@@ -49,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(1400 - (($e-1)/2) * 60);
+ $y = undef;
+
+ if ($s > 1) {
+ $y = 100;
+ } else {
+ $y = 500;
+ }
+
+ $xx = $x + 32;
+ $yy = $y + 300;
+
+ } elsif ($name =~ /^core$/) {
+ $src = "core";
+ $x = 800;
+ $y = 850;
+ $xx = $x + 200;
+ $yy = $y + 100;
+ } elsif ($name =~ /^noc$/) {
+ $src = "noc";
+ $x = 400;
+ $y = 900;
+ $xx = $x + 230;
+ $yy = $y + 40;
+ } elsif ($name =~ /^distro(\d)$/) {
+ my $d = ($1);
+ $src = "distro";
+ $x = 1200 - $d * 900;
+ $y = 415;
+ $xx = $x + 230;
+ $yy = $y + 40;
+ } else {
+ # Fallback to have _some_ position
+ $src = "random";
+ $x = int(rand(1900));
+ $y = int(rand(900));
+ $xx = $x + 20;
+ $yy = $y + 130;
+ };
+
+
+ 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];