aboutsummaryrefslogtreecommitdiff
path: root/lib/libeclat.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2012-10-07 20:12:34 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2012-10-07 20:12:34 +0300
commit1fbcbdb432e945aa3f63be5b9170e94a0c9ef6c3 (patch)
tree209822ff7ef7766b94a714438473dcf8f12c4e1f /lib/libeclat.h
parentcabb35e68d34bcccaa39a223eaa037b335c81558 (diff)
downloadeclat-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.h42
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;
+

Return to:

Send suggestions and report system problems to the System administrator.