diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2018-11-17 17:54:07 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2018-11-17 17:59:40 +0200 |
commit | 3e2360d383d8e7503a8afe07291ab8c0b1182a14 (patch) | |
tree | 69725e6a523701dd297a7bc5d228dac43371b32d | |
parent | 966cc92ffcc7e5d070103d33f605bc1691229022 (diff) | |
download | eclat-3e2360d383d8e7503a8afe07291ab8c0b1182a14.tar.gz eclat-3e2360d383d8e7503a8afe07291ab8c0b1182a14.tar.bz2 |
Implement the terminate-instances command
* TODO: Update.
* doc/Makefile.inc: Add new files.
* doc/eclat-mkinst.1: Mention the terminate command.
* doc/eclat-terminate.1: New file.
* etc/Makefile.am: Add new files.
* etc/terminate-instances.fln: New file.
* src/eclat.c (cmdtab): Register new command.
* src/eclat.h (eclat_terminate_instances): New proto.
* src/startstop.c (eclat_terminate_instances): New function.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Likewise.
* tests/terminate-instances.at: New test.
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | doc/Makefile.inc | 1 | ||||
-rw-r--r-- | doc/eclat-mkinst.1 | 5 | ||||
-rw-r--r-- | doc/eclat-reboot.1 | 4 | ||||
-rw-r--r-- | doc/eclat-terminate.1 | 58 | ||||
-rw-r--r-- | etc/Makefile.am | 3 | ||||
-rw-r--r-- | etc/terminate-instances.fln | 23 | ||||
-rw-r--r-- | src/eclat.c | 4 | ||||
-rw-r--r-- | src/eclat.h | 1 | ||||
-rw-r--r-- | src/startstop.c | 14 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/terminate-instances.at | 39 | ||||
-rw-r--r-- | tests/testsuite.at | 1 |
13 files changed, 149 insertions, 7 deletions
@@ -153,3 +153,3 @@ StartInstances start [X] [X] StopInstances stop [X] [X] -TerminateInstances killinst [ ] [ ] +TerminateInstances terminate [X] [X] UnassignPrivateIpAddresses - [ ] [ ] diff --git a/doc/Makefile.inc b/doc/Makefile.inc index 143f579..43b62b3 100644 --- a/doc/Makefile.inc +++ b/doc/Makefile.inc @@ -63,2 +63,3 @@ MANPAGES1=\ eclat-stop.1\ + eclat-terminate.1\ ispeek.1 diff --git a/doc/eclat-mkinst.1 b/doc/eclat-mkinst.1 index f934484..4db3c7e 100644 --- a/doc/eclat-mkinst.1 +++ b/doc/eclat-mkinst.1 @@ -15,3 +15,3 @@ .\" along with Eclat. If not, see <http://www.gnu.org/licenses/>. -.TH ECLAT-MKINST 1 "January 26, 2015" "ECLAT" "Eclat User Reference" +.TH ECLAT-MKINST 1 "November 17, 2018" "ECLAT" "Eclat User Reference" .SH NAME @@ -168,2 +168,3 @@ command .BR eclat (1), +.BR eclat\-terminate (1), .BR eclat\-lsiattr (1), @@ -180,3 +181,3 @@ Report bugs to <bug\-eclat@gnu.org.ua>. .SH COPYRIGHT -Copyright \(co 2012-2015 Sergey Poznyakoff +Copyright \(co 2012-2018 Sergey Poznyakoff .br diff --git a/doc/eclat-reboot.1 b/doc/eclat-reboot.1 index 1addd87..d234808 100644 --- a/doc/eclat-reboot.1 +++ b/doc/eclat-reboot.1 @@ -15,3 +15,3 @@ .\" along with Eclat. If not, see <http://www.gnu.org/licenses/>. -.TH ECLAT-REBOOT 1 "January 26, 2015" "ECLAT" "Eclat User Reference" +.TH ECLAT-REBOOT 1 "November 17, 2018" "ECLAT" "Eclat User Reference" .SH NAME @@ -31,3 +31,3 @@ reboots running Amazon EBS-backed instances. .SH OUTPUT -The default output format lists o each line the instance ID, its +The default output format lists on each line the instance ID, its previous and current states, separated by single horizontal tab diff --git a/doc/eclat-terminate.1 b/doc/eclat-terminate.1 new file mode 100644 index 0000000..a70a1ee --- /dev/null +++ b/doc/eclat-terminate.1 @@ -0,0 +1,58 @@ +.\" This file is part of Eclat -*- nroff -*- +.\" Copyright (C) 2012-2018 Sergey Poznyakoff +.\" +.\" Eclat is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 3, or (at your option) +.\" any later version. +.\" +.\" Eclat is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with Eclat. If not, see <http://www.gnu.org/licenses/>. +.TH ECLAT-TERMINATE 1 "November 17, 2018" "ECLAT" "Eclat User Reference" +.SH NAME +eclat-terminate, eclat-terminate-instances \- terminate EC2 instances +.SH SYNOPSIS +.nh +.na +\fBeclat terminate\fR \fIID\fR [\fIID\fR...] +.PP +\fBeclat terminate\fR \fB\-\-help\fR +.ad +.hy +.SH DESCRIPTION +Terminates the listed Amazon EBS-backed instances. +.SH OUTPUT +The default output format lists on each line the instance ID, its +previous and current states, separated by single horizontal tab +characters. +.SH "SEE ALSO" +.BR eclat (1), +.BR eclat\-mkinst (1), +.BR eclat\-start (1), +.BR eclat\-stop (1). +.SH AUTHORS +Sergey Poznyakoff +.SH "BUG REPORTS" +Report bugs to <bug\-eclat@gnu.org.ua>. +.SH COPYRIGHT +Copyright \(co 2012-2018 Sergey Poznyakoff +.br +.na +License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> +.br +.ad +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +.\" Local variables: +.\" eval: (add-hook 'write-file-hooks 'time-stamp) +.\" time-stamp-start: ".TH [A-Z_][A-Z0-9_.\\-]* [0-9] \"" +.\" time-stamp-format: "%:B %:d, %:y" +.\" time-stamp-end: "\"" +.\" time-stamp-line-limit: 20 +.\" end: + diff --git a/etc/Makefile.am b/etc/Makefile.am index 21b958b..2376583 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -83,3 +83,4 @@ FLNFILES=\ start-instances.fln\ - stop-instances.fln + stop-instances.fln\ + terminate-instances.fln diff --git a/etc/terminate-instances.fln b/etc/terminate-instances.fln new file mode 100644 index 0000000..12995c3 --- /dev/null +++ b/etc/terminate-instances.fln @@ -0,0 +1,23 @@ +/* This file is part of Eclat. + Copyright (C) 2012-2018 Sergey Poznyakoff. + + Eclat is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + Eclat is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Eclat. If not, see <http://www.gnu.org/licenses/>. */ + +if (.TerminateInstancesResponse) { + for (var in .TerminateInstancesResponse.instancesSet.item) { + print(var.instanceId,": ", + var.previousState.name," => ", + var.currentState.name,"\n"); + } +} diff --git a/src/eclat.c b/src/eclat.c index 12b4dd1..26a8f9f 100644 --- a/src/eclat.c +++ b/src/eclat.c @@ -92,2 +92,5 @@ struct eclat_command cmdtab[] = { CMD_MOD }, + { "terminate", "terminate-instances", "TerminateInstances", + eclat_terminate_instances, CMD_MOD|CMD_DESTR }, + { "lsaddr", "describe-addresses", "DescribeAddresses", @@ -207,2 +210,3 @@ struct eclat_command cmdtab[] = { { "route", NULL, NULL, eclat_route }, + }; diff --git a/src/eclat.h b/src/eclat.h index 21e89e1..1948234 100644 --- a/src/eclat.h +++ b/src/eclat.h @@ -128,2 +128,3 @@ int eclat_stop_instance(eclat_command_env_t *env, int argc, char **argv); int eclat_reboot_instance(eclat_command_env_t *env, int argc, char **argv); +int eclat_terminate_instances(eclat_command_env_t *env, int argc, char **argv); int eclat_describe_tags(eclat_command_env_t *env, int argc, char **argv); diff --git a/src/startstop.c b/src/startstop.c index 2460682..78c581c 100644 --- a/src/startstop.c +++ b/src/startstop.c @@ -46,3 +46,2 @@ start_stop_instance(eclat_command_env_t *env, int argc, char **argv) } - return 0; @@ -92 +91,14 @@ eclat_reboot_instance(eclat_command_env_t *env, int argc, char **argv) } + +int +eclat_terminate_instances(eclat_command_env_t *env, int argc, char **argv) +{ + int i; + + parse_options(env->cmd, + "Terminate named instances", + argc, argv, &i); + + debug(ECLAT_DEBCAT_MAIN, 1, ("terminate instances")); + return start_stop_instance(env, argc - i, argv + i); +} diff --git a/tests/Makefile.am b/tests/Makefile.am index 61046ba..36927c7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -86,2 +86,3 @@ TESTSUITE_AT = \ stop-instances.at\ + terminate-instances.at\ tagshairy.at\ diff --git a/tests/terminate-instances.at b/tests/terminate-instances.at new file mode 100644 index 0000000..7242986 --- /dev/null +++ b/tests/terminate-instances.at @@ -0,0 +1,39 @@ +# This file is part of Eclat -*- Autotest -*- +# Copyright (C) 2012-2018 Sergey Poznyakoff +# +# Eclat is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# Eclat is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Eclat. If not, see <http://www.gnu.org/licenses/>. + +ECLAT_TEST_FORMAT([TerminateInstances], +[TerminateInstances], +[terminate-instances.fln], +[<TerminateInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/"> + <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> + <instancesSet> + <item> + <instanceId>i-1234567890abcdef0</instanceId> + <currentState> + <code>32</code> + <name>shutting-down</name> + </currentState> + <previousState> + <code>16</code> + <name>running</name> + </previousState> + </item> + </instancesSet> +</TerminateInstancesResponse> +], +[i-1234567890abcdef0: running => shutting-down +]) + diff --git a/tests/testsuite.at b/tests/testsuite.at index 6583b89..0d25b97 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -80,2 +80,3 @@ m4_include([start-instances.at]) m4_include([stop-instances.at]) +m4_include([terminate-instances.at]) |