#!/usr/bin/perl

use strict;
use warnings;
use v5.10;
use FindBin qw/$Bin/;
use lib "$Bin/../lib";
use Data::Dumper;
use MojoX::Aliyun;

binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');

my $InstanceName = shift @ARGV;
die "perl $0 \$InstanceName" unless $InstanceName;

die 'setup ENV ALIYUN_ACCESS_KEY, ALIYUN_ACCESS_SECRET, ALIYUN_REGION_ID'
    unless $ENV{ALIYUN_ACCESS_KEY} and $ENV{ALIYUN_REGION_ID};
my $aliyun = MojoX::Aliyun->new(
    access_key => $ENV{ALIYUN_ACCESS_KEY},
    access_secret => $ENV{ALIYUN_ACCESS_SECRET},
    region_id => $ENV{ALIYUN_REGION_ID},
);
my $data = $aliyun->request('GET', 'ecs', {
    Action => 'DescribeInstances',
    InstanceName => $InstanceName
});
die "Can not find the instance $InstanceName" unless $data->{TotalCount};
foreach my $Instance (@{ $data->{Instances}->{Instance} }) {
    my $res = $aliyun->request('GET', 'ecs', {
        Action => 'RebootInstance',
        InstanceId => $Instance->{InstanceId},
        ForceStop => 'true',
    });
    say "restart $Instance->{InstanceId} OK" if $res->{RequestId};
}
