diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-04-26 17:18:53 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-04-26 17:48:21 +0300 |
commit | 699ba6cd496d8401959a0581a1d49c448d3f3c7c (patch) | |
tree | e576553ef6531cdf7b1f9b375036f9dd28f2332d /src | |
parent | af02bbe4ab84ddd6a5ec8da3bab0fa360e8bded2 (diff) | |
download | eclat-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.c | 2 | ||||
-rw-r--r-- | src/atvol.c | 4 | ||||
-rw-r--r-- | src/cmdline.opt | 6 | ||||
-rw-r--r-- | src/config.c | 3 | ||||
-rw-r--r-- | src/deimg.c | 2 | ||||
-rw-r--r-- | src/devol.c | 4 | ||||
-rw-r--r-- | src/eclat.c | 4 | ||||
-rw-r--r-- | src/eclat.h | 14 | ||||
-rw-r--r-- | src/getconout.c | 2 | ||||
-rw-r--r-- | src/lsattr.c | 2 | ||||
-rw-r--r-- | src/lsiattr.c | 2 | ||||
-rw-r--r-- | src/lsimg.c | 2 | ||||
-rw-r--r-- | src/lsinst.c | 2 | ||||
-rw-r--r-- | src/lsistat.c | 2 | ||||
-rw-r--r-- | src/lsreg.c | 2 | ||||
-rw-r--r-- | src/lssattr.c | 6 | ||||
-rw-r--r-- | src/lssg.c | 13 | ||||
-rw-r--r-- | src/lssnap.c | 2 | ||||
-rw-r--r-- | src/lstag-cl.opt | 8 | ||||
-rw-r--r-- | src/lsvol.c | 2 | ||||
-rw-r--r-- | src/lszon.c | 2 | ||||
-rw-r--r-- | src/mkimg.c | 2 | ||||
-rw-r--r-- | src/mksnap.c | 2 | ||||
-rw-r--r-- | src/mktags-cl.opt | 8 | ||||
-rw-r--r-- | src/rmsnap.c | 2 | ||||
-rw-r--r-- | src/rmvol.c | 2 | ||||
-rw-r--r-- | src/setiattr.c | 2 | ||||
-rw-r--r-- | src/startstop.c | 2 | ||||
-rw-r--r-- | src/util.c | 22 |
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]); @@ -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); @@ -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; |