use strict;
use warnings;

use List::MoreUtils qw/uniq zip/;

my @columns = qw/env name dc id ip domain primary_domain/;

my @table = (
[qw{  prod  webadmin-s1.passport.yandex.net         s   3B  2a02:6b8:c02:764:8000:635:0:b  adm.yandex-team.ru       adm.yandex.net          }],
[qw{  prod  webadmin-f1.passport.yandex.net         f   3F  2a02:6b8:c01:54:8000:635:0:1e  adm.yandex-team.ru       adm.yandex.net          }],
[qw{  prod  webadmin-m1.passport.yandex.net         m   42  2a02:6b8:c03:78b:8000:635:0:a  adm.yandex-team.ru       adm.yandex.net          }],
[qw{  test  adm-test.yandex-team.ru                 m   3A  2a02:6b8:c0e:a0e:8000:611:0:8  adm-test.yandex-team.ru  adm-test.yandex-team.ru }],
[qw{  test  python-dev1.passport.yandex.net         s   3D  2a02:6b8:c02:764:8000:635:0:b  adm.yandex-team.ru       adm.yandex.net          }],
);

my @hosts;
for my $row (@table) {
    my %stash = zip @columns, @$row;
    my $host = {
        name  => delete $stash{name},
        stash => \%stash,
    };
    push @hosts, $host;
}

for my $host (@hosts) {
    my $name   = $host->{name};
    my $prefix = (split /\./, $name)[0];
    my $alias  = $prefix;
    $alias     =~ s/^webadmin-?//;
    $alias     =~ s/^passport-?//;
    my @keys   = uniq grep { $_ ? $_ : () } $name, $prefix, $alias;

    $host->{keys} = \@keys;

    my $stash = $host->{stash};

    $stash->{path} = '/opt/www/passport';
    $stash->{hosts} = \@hosts;

    $stash->{is_prod} = $stash->{env} eq 'prod';
    $stash->{is_test} = $stash->{env} eq 'test';
}

return \@hosts;
