#!/usr/bin/perl

use strict;
use warnings;
use open ':std', ':encoding(UTF-8)';

use YAML::Syck;
use Filesys::Df;
use Sys::Hostname;

use lib '/app/tools/common/lib';
use Common::Amazon::Mail;

my $errors;
my $mount_points = YAML::Syck::LoadFile( $ENV{'HOME'} . "/.db_lowspace.yml" );
map {
    my $df      = df($_);
    my $alert   = $mount_points->{$_}->{'alert'};
    my $avail   = $df->{'blocks'} - $df->{'bfree'};
    my $percent = 100 * $avail / $df->{'blocks'};
    if ( $percent > $alert ) {
        $errors .= "$_ => blocks: $df->{'blocks'} avail: $avail % used: ";
        $errors .= sprintf( "%.2f", $percent ) . " is over % alert: $alert\n";
    }
} keys %{$mount_points};

if ( defined $errors ) {
    print "$errors\n";
    my $amz_mail = Common::Amazon::Mail->new;
    $amz_mail->to( $amz_mail->list->system );
    $amz_mail->subject( "ERROR: " . Sys::Hostname::hostname . " mount point storage error" );
    $amz_mail->body("Mount point statistics:\n\n$errors\n");
    $amz_mail->sendit;
}
