aboutsummaryrefslogtreecommitdiff
path: root/src/eclat.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2012-12-11 12:42:06 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2012-12-11 14:34:51 +0200
commit2fe31259571d24cd06292946a2a108046d3bc228 (patch)
treebdcfd00fdde244761a8c6560becf615f1e6f4d66 /src/eclat.h
parent980d465d9ea87e2123bd9a3045de5c0a45e84cd7 (diff)
downloadeclat-2fe31259571d24cd06292946a2a108046d3bc228.tar.gz
eclat-2fe31259571d24cd06292946a2a108046d3bc228.tar.bz2
Change handler invocation.
* src/eclat.c: Initialize query in main and pass it to each handler along with the curl pointer in a "runtime environment" structure. If the handler returns 0, send that query to the endpoint (from main, again). This avoids duplication of code. Reserve a CMD_NOQRY flag for commands that are supposed to do everything by themselves. Use command->tag member as the Action parameter. * src/eclat.h (eclat_command_env): New structure. Change all handler prototypes. * src/util.c (describe_query_create): Take a pointer to eclat_command_env_t as the first argument. Assume that the query structure is already initialized. The "verb" argument becomes superfluous and is removed. All uses changed. * src/allocaddr.c: Update. * src/asscaddr.c: Update. * src/attvol.c: Update. * src/cresnap.c: Update. * src/cretags.c: Update. * src/crevol.c: Update. * src/delsnap.c: Update. * src/delvol.c: Update. * src/detvol.c: Update. * src/disassaddr.c: Update. * src/dscraddrs.c: Update. * src/dscrazs.c: Update. * src/dscrinstattr.c: Update. * src/dscrinsts.c: Update. * src/dscrinststat.c: Update. * src/dscrregs.c: Update. * src/dscrsecgrps.c: Update. * src/dscrsnap.c: Update. * src/dscrtags.c: Update. * src/dscrvols.c: Update. * src/getconout.c: Update. * src/reladdr.c: Update. * src/startinst.c: Update.
Diffstat (limited to 'src/eclat.h')
-rw-r--r--src/eclat.h68
1 files changed, 37 insertions, 31 deletions
diff --git a/src/eclat.h b/src/eclat.h
index 9a21835..8494f59 100644
--- a/src/eclat.h
+++ b/src/eclat.h
@@ -63,34 +63,41 @@ void config_init(void);
void config_finish(struct grecs_node *tree);
int run_config_finish_hooks(void);
-typedef int (*eclat_command_handler_t) (CURL *curl, int argc, char **argv);
-
-int eclat_start_instance(CURL *curl, int argc, char **argv);
-int eclat_stop_instance(CURL *curl, int argc, char **argv);
-int eclat_reboot_instance(CURL *curl, int argc, char **argv);
-int eclat_describe_tags(CURL *curl, int argc, char **argv);
-int eclat_describe_instance_status(CURL *curl, int argc, char **argv);
-int eclat_describe_instances(CURL *curl, int argc, char **argv);
-int eclat_allocate_address(CURL *curl, int argc, char **argv);
-int eclat_release_address(CURL *curl, int argc, char **argv);
-int eclat_associate_address(CURL *curl, int argc, char **argv);
-int eclat_disassociate_address(CURL *curl, int argc, char **argv);
-int eclat_describe_addresses(CURL *curl, int argc, char **argv);
-int eclat_describe_volumes(CURL *curl, int argc, char **argv);
-int eclat_get_console_output(CURL *curl, int argc, char **argv);
-int eclat_describe_instance_attribute(CURL *curl, int argc, char **argv);
-int eclat_create_tags(CURL *curl, int argc, char **argv);
-int eclat_delete_tags(CURL *curl, int argc, char **argv);
-int eclat_describe_security_groups(CURL *curl, int argc, char **argv);
-int eclat_create_snapshot(CURL *curl, int argc, char **argv);
-int eclat_describe_snapshots(CURL *curl, int argc, char **argv);
-int eclat_delete_snapshot(CURL *curl, int argc, char **argv);
-int eclat_describe_avaialbility_zones(CURL *curl, int argc, char **argv);
-int eclat_describe_regions(CURL *curl, int argc, char **argv);
-int eclat_create_volume(CURL *curl, int argc, char **argv);
-int eclat_delete_volume(CURL *curl, int argc, char **argv);
-int eclat_attach_volume(CURL *curl, int argc, char **argv);
-int eclat_detach_volume(CURL *curl, int argc, char **argv);
+struct eclat_command_env {
+ CURL *curl;
+ struct ec2_query *query;
+};
+
+typedef struct eclat_command_env eclat_command_env_t;
+
+typedef int (*eclat_command_handler_t) (eclat_command_env_t *env, int argc, char **argv);
+
+int eclat_start_instance(eclat_command_env_t *env, int argc, char **argv);
+int eclat_stop_instance(eclat_command_env_t *env, int argc, char **argv);
+int eclat_reboot_instance(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_tags(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_instance_status(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_instances(eclat_command_env_t *env, int argc, char **argv);
+int eclat_allocate_address(eclat_command_env_t *env, int argc, char **argv);
+int eclat_release_address(eclat_command_env_t *env, int argc, char **argv);
+int eclat_associate_address(eclat_command_env_t *env, int argc, char **argv);
+int eclat_disassociate_address(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_addresses(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_volumes(eclat_command_env_t *env, int argc, char **argv);
+int eclat_get_console_output(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_instance_attribute(eclat_command_env_t *env, int argc, char **argv);
+int eclat_create_tags(eclat_command_env_t *env, int argc, char **argv);
+int eclat_delete_tags(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_security_groups(eclat_command_env_t *env, int argc, char **argv);
+int eclat_create_snapshot(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_snapshots(eclat_command_env_t *env, int argc, char **argv);
+int eclat_delete_snapshot(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_avaialbility_zones(eclat_command_env_t *env, int argc, char **argv);
+int eclat_describe_regions(eclat_command_env_t *env, int argc, char **argv);
+int eclat_create_volume(eclat_command_env_t *env, int argc, char **argv);
+int eclat_delete_volume(eclat_command_env_t *env, int argc, char **argv);
+int eclat_attach_volume(eclat_command_env_t *env, int argc, char **argv);
+int eclat_detach_volume(eclat_command_env_t *env, int argc, char **argv);
char *region_to_endpoint(const char *region);
@@ -98,9 +105,8 @@ void define_format(const char *name, const char *format, grecs_locus_t *locus);
void set_command_format(const char *name, const char *format,
grecs_locus_t *locus);
-struct ec2_query *describe_query_create(CURL *curl, const char *verb,
- int argc, char **argv,
- const char *uparm);
+void describe_query_create(eclat_command_env_t *env, int argc, char **argv,
+ const char *uparm);
int eclat_send_query(CURL *curl, struct ec2_query *q);
#define XML_DUMP_FILE_NAME "eclat.dump.xml"

Return to:

Send suggestions and report system problems to the System administrator.