diff options
| author | Kristian Lyngstol <kristian@bohemians.org> | 2016-05-23 20:53:04 +0200 | 
|---|---|---|
| committer | Kristian Lyngstol <kristian@bohemians.org> | 2016-05-23 20:53:04 +0200 | 
| commit | 83cf935cc8f3064345e3a5255a91224ce9d02b9a (patch) | |
| tree | e5b9b8c542206a501ec7a43c930e6950da2f1a9a | |
| parent | 8397e793cb95640b42b99f0ee41a7ee32b15adaa (diff) | |
Start tinkering with DX autoplacement.
Just want to give whoever takes over a starting point.
| -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];  | 
