aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am3
-rw-r--r--src/cmdline.opt16
-rw-r--r--src/eclat.c8
-rw-r--r--src/startstop.c12
-rw-r--r--src/stop-cl.opt33
5 files changed, 65 insertions, 7 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 1aa8703..7ec7c66 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -104,3 +104,4 @@ OPTFILES=\
setiattr-cl.opt\
- setaattr-cl.opt
+ setaattr-cl.opt\
+ stop-cl.opt
diff --git a/src/cmdline.opt b/src/cmdline.opt
index 6da23c2..8a707ec 100644
--- a/src/cmdline.opt
+++ b/src/cmdline.opt
@@ -261,2 +261,8 @@ 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,,,
@@ -281,2 +287,12 @@ 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>])
diff --git a/src/eclat.c b/src/eclat.c
index 8cadebd..69efa8e 100644
--- a/src/eclat.c
+++ b/src/eclat.c
@@ -45,2 +45,4 @@ enum eclat_confirm_mode confirm_mode;
int translate_option = -1;
+struct grecs_list *extra_param;
+
@@ -568,5 +570,6 @@ find_format(const 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),
@@ -658,2 +661,3 @@ eclat_do_command(eclat_command_env_t *env, struct eclat_command *command,
security_token);
+ eclat_request_add_param_list(env->request, extra_param);
}
diff --git a/src/startstop.c b/src/startstop.c
index f5346c4..98f4e12 100644
--- a/src/startstop.c
+++ b/src/startstop.c
@@ -63,2 +63,7 @@ eclat_start_instance(eclat_command_env_t *env, int argc, char **argv)
+
+static int force;
+
+#include "stop-cl.h"
+
int
@@ -68,7 +73,6 @@ eclat_stop_instance(eclat_command_env_t *env, int argc, char **argv)
- 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);
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

Return to:

Send suggestions and report system problems to the System administrator.