aboutsummaryrefslogtreecommitdiff
path: root/src/descrtags.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/descrtags.c')
-rw-r--r--src/descrtags.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/descrtags.c b/src/descrtags.c
new file mode 100644
index 0000000..2fc44ef
--- /dev/null
+++ b/src/descrtags.c
@@ -0,0 +1,81 @@
+/* This file is part of Eclat.
+ Copyright (C) 2012 Sergey Poznyakoff.
+
+ Eclat is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ Eclat is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Eclat. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "eclat.h"
+
+int
+eclat_describe_tags(CURL *curl, int argc, char **argv)
+{
+ int i, j, k;
+ struct ec2_query *q;
+ char *url;
+ char *bufptr = NULL;
+ size_t bufsize = 0;
+ size_t bs;
+ CURLcode res;
+ struct wordsplit ws;
+ int wsflags;
+
+ q = eclat_query_create(use_ssl ? EC2_QF_HTTPS : 0, endpoint, "/");
+ eclat_query_add_param(q, "Action", "DescribeTags");
+
+ ws.ws_delim = ",";
+ wsflags = WRDSF_DEFFLAGS | WRDSF_DELIM;
+ for (i = 0, j = 1; i < argc; i++) {
+ char *p = strchr(argv[i], '=');
+ if (!p)
+ die(EX_USAGE, "maformed filter: %s", argv[i]);
+ *p++ = 0;
+ grecs_asprintf(&bufptr, &bufsize, "Filter.%d.Name", j);
+ eclat_query_add_param(q, bufptr, argv[i]);
+
+ if (wordsplit(p, &ws, wsflags))
+ die(EX_SOFTWARE, "wordsplit failed at \"%s\": %s",
+ p, wordsplit_strerror(&ws));
+ wsflags |= WRDSF_REUSE;
+
+ for (k = 0; k < ws.ws_wordc; k++) {
+ grecs_asprintf(&bufptr, &bufsize, "Filter.%d.Value.%d",
+ j, k+1);
+ eclat_query_add_param(q, bufptr, ws.ws_wordv[k]);
+ }
+ }
+ if (wsflags & WRDSF_REUSE)
+ wordsplit_free(&ws);
+ free(bufptr);
+
+ eclat_query_add_param(q, "AWSAccessKeyId", access_key);
+
+ eclat_query_signature(q, secret_key);
+ url = eclat_query_to_url(q, NULL);
+
+ debug(ECLAT_DEBCAT_MAIN, 1, ("using URL: %s", url));
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+
+ free(url);
+ eclat_query_free(q);
+
+ if (dry_run_mode)
+ debug(ECLAT_DEBCAT_MAIN, 1, ("not sending request"));
+ else {
+ res = curl_easy_perform(curl);
+
+ if (res != CURLE_OK)
+ err("CURL: %s", curl_easy_strerror(res));
+ }
+
+ return 0;
+}

Return to:

Send suggestions and report system problems to the System administrator.