diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/cmdline.opt | 16 | ||||
-rw-r--r-- | src/eclat.c | 8 | ||||
-rw-r--r-- | src/startstop.c | 14 | ||||
-rw-r--r-- | src/stop-cl.opt | 33 |
5 files changed, 66 insertions, 8 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 1aa8703..7ec7c66 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -102,7 +102,8 @@ OPTFILES=\ rmsg-cl.opt\ sg-cl.opt\ setiattr-cl.opt\ - setaattr-cl.opt + setaattr-cl.opt\ + stop-cl.opt eclat_SOURCES += $(OPTFILES:.opt=.h) diff --git a/src/cmdline.opt b/src/cmdline.opt index 6da23c2..8a707ec 100644 --- a/src/cmdline.opt +++ b/src/cmdline.opt @@ -259,6 +259,12 @@ BEGIN parse_debug_level("curl.1"); END +OPTION(check-permissions,p,, + [<check if the requested action is permitted for current account>]) +BEGIN + ec2_param_list_append(&extra_param, "DryRun", "true"); +END + OPTION(dump-grammar-trace,,, [<dump configuration grammar traces>]) BEGIN @@ -279,6 +285,16 @@ BEGIN } END +OPTION(add-parameter,A,NAME=VALUE, + [<pass additional parameter to the AWS request>]) +BEGIN + char *p = strchr(optarg, '='); + if (!p) + die(EX_USAGE, "malformed parameter: %s", optarg); + *p++ = 0; + ec2_param_list_append(&extra_param, optarg, p); +END + GROUP([<Additional help>]) OPTION(config-help,,, [<show configuration file summary>]) diff --git a/src/eclat.c b/src/eclat.c index 8cadebd..69efa8e 100644 --- a/src/eclat.c +++ b/src/eclat.c @@ -43,6 +43,8 @@ char *format_file; char *test_map_name; enum eclat_confirm_mode confirm_mode; int translate_option = -1; +struct grecs_list *extra_param; + FILE *xml_dump_file; @@ -566,9 +568,10 @@ find_format(const char *name) return NULL; key.name = (char*) name; defn = grecs_symtab_lookup_or_install(format_table, &key, NULL); - if (!defn) + if (!defn) { + err("no such format: %s", name); return NULL; - + } env = forlan_parse_buffer(defn->text, strlen(defn->text), &defn->locus.beg); return env; @@ -656,6 +659,7 @@ eclat_do_command(eclat_command_env_t *env, struct eclat_command *command, endpoint, "/", region_name, access_key, security_token); + eclat_request_add_param_list(env->request, extra_param); } if (command->tag) diff --git a/src/startstop.c b/src/startstop.c index f5346c4..98f4e12 100644 --- a/src/startstop.c +++ b/src/startstop.c @@ -61,19 +61,23 @@ eclat_start_instance(eclat_command_env_t *env, int argc, char **argv) return start_stop_instance(env, argc - i, argv + i); } + +static int force; + +#include "stop-cl.h" + int eclat_stop_instance(eclat_command_env_t *env, int argc, char **argv) { int i; - parse_options(env->cmd, - "Stop named instances", - argc, argv, &i); - + parse_stop_options(env, argc, argv, &i); debug(ECLAT_DEBCAT_MAIN, 1, ("stopping instances")); + if (force) + eclat_request_add_param(env->request, "Force", "1"); return start_stop_instance(env, argc - i, argv + i); } - + int eclat_reboot_instance(eclat_command_env_t *env, int argc, char **argv) { diff --git a/src/stop-cl.opt b/src/stop-cl.opt new file mode 100644 index 0000000..a2aae61 --- /dev/null +++ b/src/stop-cl.opt @@ -0,0 +1,33 @@ +/* This file is part of Eclat. + Copyright (C) 2012-2015 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_CL_BEGIN([<Stop named instances>], + [<ID [ID...]>]) + + +OPTION(force,f,, + [<force stopping the instance>]) +BEGIN + force = 1; +END + +ECLAT_CL_END + +ECLAT_CL_PARSER(parse_stop_options, [<int argc, char *argv[], int *index>], [< +{ + GETOPT(argc, argv, *index) +} +>])
\ No newline at end of file |