diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2012-10-07 20:12:34 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2012-10-07 20:12:34 +0300 |
commit | 1fbcbdb432e945aa3f63be5b9170e94a0c9ef6c3 (patch) | |
tree | 209822ff7ef7766b94a714438473dcf8f12c4e1f /lib/libeclat.h | |
parent | cabb35e68d34bcccaa39a223eaa037b335c81558 (diff) | |
download | eclat-1fbcbdb432e945aa3f63be5b9170e94a0c9ef6c3.tar.gz eclat-1fbcbdb432e945aa3f63be5b9170e94a0c9ef6c3.tar.bz2 |
Implement resource identifier mapping.
Resource identifier mapping permits to use more customized identifiers
instead of the Amazon resource identifiers. For instance, you can use
hostnames instead of the instance IDs, etc.
* lib/Makefile.am: Add new files.
* lib/filemap.c: New file.
* lib/map.c: New file.
* lib/libeclat.h (eclat_map_drv,eclat_map): New structs.
(eclat_map_status): New enum.
(eclat_map_init,eclat_map_lookup,eclat_map_config)
(eclat_map_free,eclat_map_open,eclat_map_close)
(eclat_map_get,eclat_map_strerror,eclat_map_drv_register)
(eclat_map_foreach,eclat_map_free_all)
(eclat_get_string_node): New protos.
(eclat_map_drv_file): New extern.
* src/accfile.c (access_file_lookup): Fix memory leak.
* src/cmdline.opt: New option: --translate (-x)
* src/config.c (eclat_kw) <map>: New block statement.
(config_finish): Parse map configs.
* src/asscaddr.c: Translate key.
* src/dscrinstattr.c: Likewise.
* src/dscrinsts.c: Likewise.
* src/dscrinststat.c: Likewise.
* src/dscrsecgrps.c: Likewise.
* src/getconout.c: Likewise.
* src/startinst.c: Likewise.
* src/eclat.c (main): Initialize maps and free them when no
more needed.
* src/eclat.h (translate_option): New extern.
(translate_ids): New proto.
* src/util.c (translate_option): New variable.
(translate_ids): New function.
Diffstat (limited to 'lib/libeclat.h')
-rw-r--r-- | lib/libeclat.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/libeclat.h b/lib/libeclat.h index 5f37cc9..1f16d5d 100644 --- a/lib/libeclat.h +++ b/lib/libeclat.h @@ -101,6 +101,48 @@ void eclat_partial_tree_data_handler(void *data, const XML_Char *s, int len); void eclat_partial_tree_start_handler(void *data, const XML_Char *name, const XML_Char **atts); void eclat_partial_tree_end_handler(void *data, const XML_Char *name); + +#define ECLAT_MAP_OPEN 0x01 + +struct eclat_map_drv { + const char *name; + int (*map_config)(int, struct grecs_node *, void *); + int (*map_open)(int, void *); + int (*map_close)(int, void *); + int (*map_get)(int, void *, const char *, char **); + void (*map_free)(int, void *); +}; +struct eclat_map { + char *name; + char *keytrans; + struct eclat_map_drv *drv; + void *data; + int flags; +}; + +enum eclat_map_status { + eclat_map_ok, + eclat_map_failure, + eclat_map_not_found +}; +void eclat_map_init(void); +struct eclat_map *eclat_map_lookup(const char *name); +int eclat_map_config(struct grecs_node *node, struct eclat_map **return_map); +void eclat_map_free(struct eclat_map *map); +int eclat_map_open(struct eclat_map *map); +int eclat_map_close(struct eclat_map *map); +int eclat_map_get(struct eclat_map *map, const char *key, char **value); +const char *eclat_map_strerror(int rc); +int eclat_map_drv_register(struct eclat_map_drv *drv); +void eclat_map_foreach(int (*fun)(struct eclat_map *, void *), void *data); +void eclat_map_free_all(void); + +int eclat_get_string_node(struct grecs_node *node, const char *name, + int optional, + struct grecs_node **pret); + +extern struct eclat_map_drv eclat_map_drv_file; + |