summaryrefslogtreecommitdiffstats
path: root/update_master_from_slaves.pl
diff options
context:
space:
mode:
authorroot <root@no.no.james.local>2019-05-14 11:41:19 +0100
committerroot <root@no.no.james.local>2019-05-14 11:41:19 +0100
commit9dfebdb7499c2d927ca63100f45535926198c106 (patch)
tree8e9e8d020867ac8bfb7ba5fe198bbf5c6e37f41b /update_master_from_slaves.pl
parent5cb8c234f0ce52b4c79851854f9830b092b42dd7 (diff)
downloadinf-9dfebdb7499c2d927ca63100f45535926198c106.tar.gz
inf-9dfebdb7499c2d927ca63100f45535926198c106.tar.bz2
inf-9dfebdb7499c2d927ca63100f45535926198c106.zip
topology and update master from slaves
Diffstat (limited to 'update_master_from_slaves.pl')
-rw-r--r--update_master_from_slaves.pl80
1 files changed, 80 insertions, 0 deletions
diff --git a/update_master_from_slaves.pl b/update_master_from_slaves.pl
new file mode 100644
index 0000000..5746049
--- /dev/null
+++ b/update_master_from_slaves.pl
@@ -0,0 +1,80 @@
+#!/usr/bin/env perl
+
+BEGIN { push @INC, "/usr/local/share/inf"; }
+
+use INF;
+use Data::Dumper;
+
+sub get_inf_by_name($) {
+ my $name = shift;
+ for my $h (@$INF::infs) {
+ if ( ( $h->{nice_name} eq $name )
+ or ( $h->{host} eq $name ) )
+ {
+ return INF->new($h);
+ }
+ }
+}
+
+my $master = get_inf_by_name("slithrugtanni");
+
+#print Dumper($inf);
+#
+#
+
+my $slaves = {
+ 'ottar' => 1,
+ 'fjathrhams' => 2,
+ 'fressa' => 3,
+ 'gullinbursti' => 4,
+ 'hildisvini' => 5
+};
+
+my $slave_map = [];
+
+for my $slave_name ( keys %$slaves ) {
+ my $slave = get_inf_by_name($slave_name);
+ my $slave_port = $slaves->{$slave_name};
+
+ for ( my $i = 1 ; $i <= 16 ; ++$i ) {
+ $slave_map->[$slave_port]->[$i] =
+ $slave_name . sprintf( "%02d", $i );
+ }
+
+ my $n = $slave->port_count();
+ for ( my $i = 1 ; $i <= $n ; ++$i ) {
+ my $port_id = $slave->port_id_get_by_number($i);
+ next unless $port_id =~ /^K/;
+ my $port_name = $slave->port_name_get($port_id);
+ my $port_topology = $slave->port_get_topology($port_id);
+ next unless defined $port_topology;
+ next unless $port_topology->[1] == 0;
+ $slave_map->[$slave_port]->[ $port_topology->[0] ] = $port_name;
+ }
+ print Dumper($slave_map);
+}
+
+print Dumper($slave_map);
+
+my $n = $master->port_count();
+for ( my $i = 1 ; $i <= $n ; ++$i ) {
+ my $port_id = $master->port_id_get_by_number($i);
+ my $port_name = $master->port_name_get($port_id);
+ my $port_topology = $master->port_get_topology($port_id);
+
+ next unless defined $port_topology;
+ next unless $port_topology->[1] != 0;
+
+ $slave_name = $slave_map->[ $port_topology->[0] ]->[ $port_topology->[1] ];
+
+ next unless defined $slave_name;
+
+ printf "| +---%-5s %-30s %d.%d => %s\n", $port_id, $port_name,
+ $port_topology->[0], $port_topology->[1], $slave_name;
+
+ next if $slave_name eq $port_name;
+
+ $master->port_name_set( $port_id, $slave_name );
+ $master->get_names();
+}
+