aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2013-04-26 17:18:53 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2013-04-26 17:48:21 +0300
commit699ba6cd496d8401959a0581a1d49c448d3f3c7c (patch)
treee576553ef6531cdf7b1f9b375036f9dd28f2332d /src
parentaf02bbe4ab84ddd6a5ec8da3bab0fa360e8bded2 (diff)
downloadeclat-699ba6cd496d8401959a0581a1d49c448d3f3c7c.tar.gz
eclat-699ba6cd496d8401959a0581a1d49c448d3f3c7c.tar.bz2
Improve ID mapping.
* doc/eclat.conf.5: Update. * src/cmdline.opt: New option --no-translate (-X) * src/config.c (eclat_kw): New statement: translate. * src/eclat.c (main): override the value of translation_enabled from the command line. * src/eclat.h (translate_option): Rename to translation_enabled. All uses changed. (MAP_IMAGE,MAP_INSTANCE) (MAP_GROUPID,MAP_GROUPNAME) (MAP_SNAPSHOT,MAP_VOLUME) (MAP_AZ,MAP_REG): New defines, to use instead of literal map names. All sources updated accordingly. * src/util.c (translate_option): Rename to translation_enabled. (translate_ids): It is not an error if the name is not found in the map. Use it as the resource ID in that case.
Diffstat (limited to 'src')
-rw-r--r--src/asscaddr.c2
-rw-r--r--src/atvol.c4
-rw-r--r--src/cmdline.opt6
-rw-r--r--src/config.c3
-rw-r--r--src/deimg.c2
-rw-r--r--src/devol.c4
-rw-r--r--src/eclat.c4
-rw-r--r--src/eclat.h14
-rw-r--r--src/getconout.c2
-rw-r--r--src/lsattr.c2
-rw-r--r--src/lsiattr.c2
-rw-r--r--src/lsimg.c2
-rw-r--r--src/lsinst.c2
-rw-r--r--src/lsistat.c2
-rw-r--r--src/lsreg.c2
-rw-r--r--src/lssattr.c6
-rw-r--r--src/lssg.c13
-rw-r--r--src/lssnap.c2
-rw-r--r--src/lstag-cl.opt8
-rw-r--r--src/lsvol.c2
-rw-r--r--src/lszon.c2
-rw-r--r--src/mkimg.c2
-rw-r--r--src/mksnap.c2
-rw-r--r--src/mktags-cl.opt8
-rw-r--r--src/rmsnap.c2
-rw-r--r--src/rmvol.c2
-rw-r--r--src/setiattr.c2
-rw-r--r--src/startstop.c2
-rw-r--r--src/util.c22
29 files changed, 84 insertions, 44 deletions
diff --git a/src/asscaddr.c b/src/asscaddr.c
index 8ec3998..cbe5a2d 100644
--- a/src/asscaddr.c
+++ b/src/asscaddr.c
@@ -35,3 +35,3 @@ eclat_associate_address(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(1, argv, "InstanceId");
+ translate_ids(1, argv, MAP_INSTANCE);
eclat_query_add_param(env->query, "InstanceId", argv[0]);
diff --git a/src/atvol.c b/src/atvol.c
index 2ee452b..6ad4f5d 100644
--- a/src/atvol.c
+++ b/src/atvol.c
@@ -34,4 +34,4 @@ eclat_attach_volume(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(1, argv, "VolumeId");
- translate_ids(1, argv + 1, "InstanceId");
+ translate_ids(1, argv, MAP_VOLUME);
+ translate_ids(1, argv + 1, MAP_INSTANCE);
diff --git a/src/cmdline.opt b/src/cmdline.opt
index 561d7e2..b1faf5e 100644
--- a/src/cmdline.opt
+++ b/src/cmdline.opt
@@ -182,2 +182,8 @@ END
+OPTION(no-translate,X,,
+ [<disable resource ID translation>])
+BEGIN
+ translate_option = 0;
+END
+
OPTION(map,M,[<MAPNAME>],
diff --git a/src/config.c b/src/config.c
index c237e52..5495d41 100644
--- a/src/config.c
+++ b/src/config.c
@@ -294,2 +294,5 @@ static struct grecs_keyword eclat_kw[] = {
grecs_type_string, GRECS_LIST, NULL, 0, cb_confirm },
+ { "translate", NULL,
+ "Use ID translation by default",
+ grecs_type_bool, GRECS_DFLT, &translation_enabled },
{ NULL }
diff --git a/src/deimg.c b/src/deimg.c
index 4a76d39..345c586 100644
--- a/src/deimg.c
+++ b/src/deimg.c
@@ -31,3 +31,3 @@ eclat_deregister_image(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(argc, argv, "ImageId");
+ translate_ids(argc, argv, MAP_IMAGE);
eclat_query_add_param(env->query, "ImageId", argv[0]);
diff --git a/src/devol.c b/src/devol.c
index b575352..dfc7f31 100644
--- a/src/devol.c
+++ b/src/devol.c
@@ -33,3 +33,3 @@ eclat_detach_volume(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(1, argv, "VolumeId");
+ translate_ids(1, argv, MAP_VOLUME);
@@ -37,3 +37,3 @@ eclat_detach_volume(eclat_command_env_t *env, int argc, char **argv)
if (argc > 1) {
- translate_ids(1, argv + 1, "InstanceId");
+ translate_ids(1, argv + 1, MAP_INSTANCE);
eclat_query_add_param(q, "InstanceId", argv[1]);
diff --git a/src/eclat.c b/src/eclat.c
index b78e079..c00c795 100644
--- a/src/eclat.c
+++ b/src/eclat.c
@@ -39,2 +39,3 @@ char *test_map_name;
enum eclat_confirm_mode confirm_mode;
+int translate_option = -1;
@@ -852,2 +853,5 @@ main(int argc, char **argv)
+ if (translate_option != -1)
+ translation_enabled = translate_option;
+
if (test_map_name) {
diff --git a/src/eclat.h b/src/eclat.h
index e328b15..72691ca 100644
--- a/src/eclat.h
+++ b/src/eclat.h
@@ -52,3 +52,3 @@ extern char *secret_key;
extern char *format_file;
-extern int translate_option;
+extern int translation_enabled;
extern char *custom_map;
@@ -171,3 +171,13 @@ void list_attrs(FILE *fp);
int get_scr_cols(void);
-void translate_ids(int argc, char **argv, const char *mapname);
+
+#define MAP_IMAGE "ImageId"
+#define MAP_INSTANCE "InstanceId"
+#define MAP_GROUPID "GroupId"
+#define MAP_GROUPNAME "GroupName"
+#define MAP_SNAPSHOT "SnapshotId"
+#define MAP_VOLUME "VolumeId"
+#define MAP_AZ "AZ"
+#define MAP_REG "reg"
+
+void translate_ids(int argc, char **argv, const char *map);
void translate_resource_ids(int argc, char **argv);
diff --git a/src/getconout.c b/src/getconout.c
index a00f4cb..e8ff9b7 100644
--- a/src/getconout.c
+++ b/src/getconout.c
@@ -35,3 +35,3 @@ eclat_get_console_output(eclat_command_env_t *env, int argc, char **argv)
die(EX_USAGE, "only one argument is allowed");
- translate_ids(argc, argv, "InstanceId");
+ translate_ids(argc, argv, MAP_INSTANCE);
diff --git a/src/lsattr.c b/src/lsattr.c
index 9b49ca3..13d43aa 100644
--- a/src/lsattr.c
+++ b/src/lsattr.c
@@ -49,3 +49,3 @@ eclat_lsattr(eclat_command_env_t *env, int argc, char **argv)
abort();
- translate_option = 0;
+ translation_enabled = 0;
argv--;
diff --git a/src/lsiattr.c b/src/lsiattr.c
index 633e94d..77d1ea1 100644
--- a/src/lsiattr.c
+++ b/src/lsiattr.c
@@ -52,3 +52,3 @@ eclat_describe_instance_attribute(eclat_command_env_t *env, int argc, char **arg
- translate_ids(1, argv, "InstanceId");
+ translate_ids(1, argv, MAP_INSTANCE);
diff --git a/src/lsimg.c b/src/lsimg.c
index db3c98b..973487e 100644
--- a/src/lsimg.c
+++ b/src/lsimg.c
@@ -29,3 +29,3 @@ eclat_describe_images(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(argc, argv, "ImageId");
+ translate_ids(argc, argv, MAP_IMAGE);
describe_query_create(env, argc, argv, "ImageId");
diff --git a/src/lsinst.c b/src/lsinst.c
index 4cf4a34..cc45a70 100644
--- a/src/lsinst.c
+++ b/src/lsinst.c
@@ -147,3 +147,3 @@ eclat_describe_instances(eclat_command_env_t *env, int argc, char **argv)
argc -= i;
- translate_ids(argc, argv, "InstanceId");
+ translate_ids(argc, argv, MAP_INSTANCE);
diff --git a/src/lsistat.c b/src/lsistat.c
index c9a518a..7ec5a0d 100644
--- a/src/lsistat.c
+++ b/src/lsistat.c
@@ -28,3 +28,3 @@ eclat_describe_instance_status(eclat_command_env_t *env, int argc, char **argv)
argc -= i;
- translate_ids(argc, argv, "InstanceId");
+ translate_ids(argc, argv, MAP_INSTANCE);
diff --git a/src/lsreg.c b/src/lsreg.c
index ef2cafb..cddd11a 100644
--- a/src/lsreg.c
+++ b/src/lsreg.c
@@ -44,3 +44,3 @@ eclat_describe_regions(eclat_command_env_t *env, int argc, char **argv)
argc -= i;
- translate_ids(argc, argv, "reg");
+ translate_ids(argc, argv, MAP_REG);
diff --git a/src/lssattr.c b/src/lssattr.c
index c3deb23..aa852bb 100644
--- a/src/lssattr.c
+++ b/src/lssattr.c
@@ -65,3 +65,3 @@ eclat_describe_snapshot_attribute(eclat_command_env_t *env,
- translate_ids(1, argv, "SnapshotId");
+ translate_ids(1, argv, MAP_SNAPSHOT);
eclat_query_add_param(q, "SnapshotId", argv[0]);
@@ -141,3 +141,3 @@ eclat_modify_snapshot_attribute(eclat_command_env_t *env,
- translate_ids(1, argv + i, "SnapshotId");
+ translate_ids(1, argv + i, MAP_SNAPSHOT);
eclat_query_add_param(q, "SnapshotId", argv[i]);
@@ -164,3 +164,3 @@ eclat_reset_snapshot_attribute(eclat_command_env_t *env,
- translate_ids(1, argv, "SnapshotId");
+ translate_ids(1, argv, MAP_SNAPSHOT);
eclat_query_add_param(q, "SnapshotId", argv[0]);
diff --git a/src/lssg.c b/src/lssg.c
index b3bd633..9068a08 100644
--- a/src/lssg.c
+++ b/src/lssg.c
@@ -24,3 +24,10 @@ eclat_describe_security_groups(eclat_command_env_t *env, int argc, char **argv)
int i;
- const char *resid = name_option ? "GroupName" : "GroupId";
+ static struct {
+ char *resid;
+ char *map;
+ } rt[] = {
+ { "GroupId", MAP_GROUPID },
+ { "GroupName", MAP_GROUPNAME }
+ };
+ int n = !!name_option;
@@ -29,5 +36,5 @@ eclat_describe_security_groups(eclat_command_env_t *env, int argc, char **argv)
argc -= i;
- translate_ids(argc, argv, resid);
+ translate_ids(argc, argv, rt[n].map);
- describe_query_create(env, argc, argv, resid);
+ describe_query_create(env, argc, argv, rt[n].resid);
return 0;
diff --git a/src/lssnap.c b/src/lssnap.c
index d60e048..2392bf7 100644
--- a/src/lssnap.c
+++ b/src/lssnap.c
@@ -53,3 +53,3 @@ eclat_describe_snapshots(eclat_command_env_t *env, int argc, char **argv)
argv += i;
- translate_ids(argc, argv, "SnapshotId");
+ translate_ids(argc, argv, MAP_SNAPSHOT);
diff --git a/src/lstag-cl.opt b/src/lstag-cl.opt
index dfb8fc0..56f051f 100644
--- a/src/lstag-cl.opt
+++ b/src/lstag-cl.opt
@@ -46,3 +46,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "InstanceId";
+ res->map = MAP_INSTANCE;
res->resid = optarg;
@@ -55,3 +55,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "VolumeId";
+ res->map = MAP_VOLUME;
res->resid = optarg;
@@ -64,3 +64,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "ImageId";
+ res->map = MAP_IMAGE;
res->resid = optarg;
@@ -73,3 +73,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "SnapshotId";
+ res->map = MAP_SNAPSHOT;
res->resid = optarg;
diff --git a/src/lsvol.c b/src/lsvol.c
index d52722d..de25b29 100644
--- a/src/lsvol.c
+++ b/src/lsvol.c
@@ -58,3 +58,3 @@ eclat_describe_volumes(eclat_command_env_t *env, int argc, char **argv)
argc -= i;
- translate_ids(argc, argv, "VolumeId");
+ translate_ids(argc, argv, MAP_VOLUME);
diff --git a/src/lszon.c b/src/lszon.c
index d5c06df..67550c6 100644
--- a/src/lszon.c
+++ b/src/lszon.c
@@ -51,3 +51,3 @@ eclat_describe_avaialbility_zones(eclat_command_env_t *env,
argc -= i;
- translate_ids(argc, argv, "AZ");
+ translate_ids(argc, argv, MAP_AZ);
diff --git a/src/mkimg.c b/src/mkimg.c
index a34c302..5fc388a 100644
--- a/src/mkimg.c
+++ b/src/mkimg.c
@@ -34,3 +34,3 @@ eclat_create_image(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(1, argv+1, "InstanceId");
+ translate_ids(1, argv+1, MAP_INSTANCE);
eclat_query_add_param(q, "Name", argv[0]);
diff --git a/src/mksnap.c b/src/mksnap.c
index 66a12f3..aaaa8fa 100644
--- a/src/mksnap.c
+++ b/src/mksnap.c
@@ -34,3 +34,3 @@ eclat_create_snapshot(eclat_command_env_t *env, int argc, char **argv)
die(EX_USAGE, "not enough arguments");
- translate_ids(1, argv, "VolumeId");
+ translate_ids(1, argv, MAP_VOLUME);
if (argc == 2)
diff --git a/src/mktags-cl.opt b/src/mktags-cl.opt
index e622db8..58111e3 100644
--- a/src/mktags-cl.opt
+++ b/src/mktags-cl.opt
@@ -47,3 +47,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "InstanceId";
+ res->map = MAP_INSTANCE;
res->resid = optarg;
@@ -56,3 +56,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "VolumeId";
+ res->map = MAP_VOLUME;
res->resid = optarg;
@@ -65,3 +65,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "ImageId";
+ res->map = MAP_IMAGE;
res->resid = optarg;
@@ -74,3 +74,3 @@ BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
- res->map = "SnapshotId";
+ res->map = MAP_SNAPSHOT;
res->resid = optarg;
diff --git a/src/rmsnap.c b/src/rmsnap.c
index 1446433..51e23b4 100644
--- a/src/rmsnap.c
+++ b/src/rmsnap.c
@@ -32,3 +32,3 @@ eclat_delete_snapshot(eclat_command_env_t *env, int argc, char **argv)
die(EX_USAGE, "bad number of arguments");
- translate_ids(argc, argv, "SnapshotId");
+ translate_ids(argc, argv, MAP_SNAPSHOT);
eclat_query_add_param(q, "SnapshotId", argv[0]);
diff --git a/src/rmvol.c b/src/rmvol.c
index 856b245..a90b79e 100644
--- a/src/rmvol.c
+++ b/src/rmvol.c
@@ -33,3 +33,3 @@ eclat_delete_volume(eclat_command_env_t *env, int argc, char **argv)
die(EX_USAGE, "bad number of arguments");
- translate_ids(argc, argv, "VolumeId");
+ translate_ids(argc, argv, MAP_VOLUME);
eclat_query_add_param(q, "VolumeId", argv[0]);
diff --git a/src/setiattr.c b/src/setiattr.c
index decfcbb..8a62c1a 100644
--- a/src/setiattr.c
+++ b/src/setiattr.c
@@ -94,3 +94,3 @@ eclat_modify_instance_attribute(eclat_command_env_t *env, int argc, char **argv)
- translate_ids(1, argv, "InstanceId");
+ translate_ids(1, argv, MAP_INSTANCE);
eclat_query_add_param(q, "InstanceId", argv[0]);
diff --git a/src/startstop.c b/src/startstop.c
index 7ffb5bb..fa36ed7 100644
--- a/src/startstop.c
+++ b/src/startstop.c
@@ -37,3 +37,3 @@ start_stop_instance(eclat_command_env_t *env, int argc, char **argv)
die(EX_USAGE, "no instance ids");
- translate_ids(argc, argv, "InstanceId");
+ translate_ids(argc, argv, MAP_INSTANCE);
diff --git a/src/util.c b/src/util.c
index 65b8385..85a7e02 100644
--- a/src/util.c
+++ b/src/util.c
@@ -20,3 +20,3 @@
-int translate_option;
+int translation_enabled;
char *custom_map;
@@ -31,4 +31,5 @@ translate_ids(int argc, char **argv, const char *mapname)
int dir;
+ int rc;
- if (!translate_option || argc == 0)
+ if (!translation_enabled || argc == 0)
return;
@@ -52,4 +53,14 @@ translate_ids(int argc, char **argv, const char *mapname)
if (!strchr(argv[i], '=')) {
- int rc = eclat_map_get(map, dir, argv[i], &val);
- if (rc != eclat_map_ok) {
+ switch (rc = eclat_map_get(map, dir, argv[i], &val)) {
+ case eclat_map_ok:
+ argv[i] = val;
+ break;
+
+ case eclat_map_not_found:
+ debug(ECLAT_DEBCAT_MAIN, 1,
+ ("%s not found in map %s",
+ argv[i], mapname));
+ break;
+
+ default:
die(EX_UNAVAILABLE, "cannot translate %s: %s",
@@ -57,3 +68,2 @@ translate_ids(int argc, char **argv, const char *mapname)
}
- argv[i] = val;
}
@@ -83,3 +93,3 @@ translate_resource_ids(int argc, char **argv)
- if (!translate_option || argc == 0)
+ if (!translation_enabled || argc == 0)
return;

Return to:

Send suggestions and report system problems to the System administrator.