diff options
-rw-r--r-- | ansible/roles/test/tasks/main.yml | 2 | ||||
-rw-r--r-- | include/nms/util.pm | 73 |
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]; |