App-FargateStack
view release on metacpan or search on metacpan
lib/App/FargateStack.pm view on Meta::CPAN
}
########################################################################
sub cmd_update_service {
########################################################################
my ( $self, @args ) = @_;
my $service_name = $self->check_service_name( @args, $self->get_args );
my ($cluster) = $self->common_args(qw(cluster));
my $cluster_name = $cluster->{name};
$self->verify_service($service_name);
my $ecs = $self->fetch_ecs;
my $task_definition_arn = $self->get_latest_task_definition($service_name);
my @elems = qw(status running_count desired_count pending_count task_definition);
my $result = $ecs->update_service(
cluster_name => $cluster_name,
service_name => $service_name,
task_definition => basename($task_definition_arn),
query => jmespath_mapping( service => \@elems ),
);
$ecs->check_result( message => 'ERROR: could not update service: [%s]', $service_name );
$self->log_debug( sub { return Dumper( [ result => $result ] ) } );
my @data = {
'Status' => $self->maybe_color( bright_white => $result->{status} ),
'Running Count' => $self->maybe_color( green => $result->{running_count} ),
'Desired Count' => $self->maybe_color( bright_white => $result->{desired_count} ),
'Pending Count' => $self->maybe_color( yellow => $result->{pending_count} ),
};
print {*STDOUT} easy_table(
table_options => {
allowANSI => $TRUE,
headingText => sprintf "Service Status\nTask Definition: %s",
$result->{task_definition}
},
data => \@data,
columns => [ 'Status', 'Running Count', 'Pending Count', 'Desired Count' ]
);
print {*STDOUT} <<'END_OF_NOTE';
* Note that this command will not force redeployment of your services! To force redeployment of your servicce:
app-FargateStack redeploy [service-name]
END_OF_NOTE
return;
}
########################################################################
sub update_task_count {
########################################################################
my ( $self, $task_name, $desired_count ) = @_;
my ( $config, $cluster ) = $self->common_args(qw(config cluster));
my $cluster_name = $cluster->{name};
$self->verify_service($task_name);
my $ecs = $self->get_ecs;
my $result = $ecs->update_service(
cluster_name => $cluster_name,
desired_count => $desired_count,
service_name => $task_name,
);
log_die( $self, "ERROR: could not update service: [%s]\n%s", $task_name, $ecs->get_error )
if !$result;
return $result;
}
########################################################################
sub cmd_start_stop_service {
########################################################################
my ($self) = @_;
my ( $task_name, $count ) = $self->get_args;
if ( looks_like_number $task_name ) {
$count = $task_name;
$task_name = $EMPTY;
}
$task_name = $self->check_service_name($task_name);
my $command = $self->command;
if ( $command eq 'start-service' ) {
$count ||= 1;
}
elsif ( $command eq 'update-service' ) {
}
else {
$count = 0;
}
if ( !$task_name ) {
if ( $count == 0 ) {
die sprintf "usage: %s -c config-name stop-service task-name\n", $ENV{SCRIPT_NAME};
}
die sprintf "usage: %s -c config-name start-service task-name [count]\n", $ENV{SCRIPT_NAME};
}
my $result = $self->update_task_count( $task_name, $count );
sleep 2; # wait a few seconds for status to be updated
return $self->cmd_service_status($task_name);
( run in 0.721 second using v1.01-cache-2.11-cpan-39bf76dae61 )