aboutsummaryrefslogtreecommitdiff
path: root/src/igw.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-11-18 23:25:04 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2015-11-18 23:25:04 +0200
commited8a63afa3482a2036fd134e056a446a408b6357 (patch)
tree8209ee4131550a9ac0cd38dfcd25c22f8939266b /src/igw.c
parent48e8aede6696c9b26a1bb1fd92d50f838e8b3178 (diff)
downloadeclat-ed8a63afa3482a2036fd134e056a446a408b6357.tar.gz
eclat-ed8a63afa3482a2036fd134e056a446a408b6357.tar.bz2
Implement VPC and Internet Gateway commands.
New commands: lsvpc, lsvpcattr, mkvpc, setvpcattr, rmvpc, lsigw, mkigw, rmigw, atigw, deigw. * TODO: Update. * doc/Makefile.inc: Add mkvpc manpage. * etc/Makefile.am: Add create-vpc.fl and describe-vpcs.fln * etc/describe-vpc-attribute.fln: New file. * etc/describe-vpcs.fln: New file. * src/Makefile.am: Add new files. * src/igw.c: New file. * src/lsvpc.c: New file. * src/mkvpc-cl.opt: New file. * src/mkvpc.c: New file. * src/rmvpc.c: New file. * src/vpcattr.c: New file. * src/eclat.c (cmdtab): Register new subcommands. * src/eclat.h: Add new prototypes. * src/mksg-cl.opt: New option: --internet-gateway, -g * src/lsinst.c (parse_options): Define args_doc. * src/lsreg.c (parse_options): Remove useless return. * src/lstag-cl.opt: Likewise. * src/mktags-cl.opt: Remove stray character.
Diffstat (limited to 'src/igw.c')
-rw-r--r--src/igw.c133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/igw.c b/src/igw.c
new file mode 100644
index 0000000..a0f6f48
--- /dev/null
+++ b/src/igw.c
@@ -0,0 +1,133 @@
+/* This file is part of Eclat.
+ Copyright (C) 2012-2015 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_create_internet_gateway(eclat_command_env_t *env, int argc, char **argv)
+{
+ int i;
+ struct ec2_request *q = env->request;
+ generic_proginfo->args_doc = NULL;
+ generic_parse_options(env->cmd,
+ "create internet gateway",
+ argc, argv, &i);
+ if (argc > i)
+ die(EX_USAGE, "wrong number of arguments");
+ return 0;
+}
+
+int
+eclat_delete_internet_gateway(eclat_command_env_t *env, int argc, char **argv)
+{
+ int i;
+ struct ec2_request *q = env->request;
+
+ generic_proginfo->args_doc = "IGW-ID";
+ generic_parse_options(env->cmd,
+ "delete internet gateway",
+ argc, argv, &i);
+ argv += i;
+ argc -= i;
+
+ if (argc != 1)
+ die(EX_USAGE, "wrong number of arguments");
+
+ translate_ids(1, argv, MAP_IGW);
+ eclat_request_add_param(q, "InternetGatewayId", argv[0]);
+
+ return 0;
+}
+
+static struct filter_descr filters[] = {
+ { "attachment.state", FILTER_STRING },
+ { "attachment.vpc-id", FILTER_STRING },
+ { "internet-gateway-id", FILTER_STRING },
+ { "tag-key", FILTER_STRING },
+ { "tag-value", FILTER_STRING },
+ { "tag:<KEY>", FILTER_STRING },
+ { NULL }
+};
+
+int
+eclat_describe_internet_gateways(eclat_command_env_t *env,
+ int argc, char **argv)
+{
+ int i;
+
+ available_filters = filters;
+ generic_proginfo->print_help_hook = list_filters;
+ generic_proginfo->args_doc = "[FILTER...] [ID...]";
+ generic_parse_options(env->cmd,
+ "describe internet gateways",
+ argc, argv, &i);
+ argv += i;
+ argc -= i;
+ translate_ids(argc, argv, MAP_IGW);
+
+ describe_request_create(env, argc, argv, "InternetGatewayId");
+ return 0;
+}
+
+int
+eclat_attach_internet_gateway(eclat_command_env_t *env,
+ int argc, char **argv)
+{
+ int i;
+ struct ec2_request *q = env->request;
+
+ generic_proginfo->args_doc = "IGW-ID VPC-ID";
+ generic_parse_options(env->cmd,
+ "attach internet gateway to a VPC",
+ argc, argv, &i);
+ argv += i;
+ argc -= i;
+ if (argc != 2)
+ die(EX_USAGE, "wrong number of arguments");
+
+ translate_ids(1, argv, MAP_IGW);
+ translate_ids(1, argv+1, MAP_VPC);
+
+ eclat_request_add_param(q, "InternetGatewayId", argv[0]);
+ eclat_request_add_param(q, "VpcId", argv[1]);
+
+ return 0;
+}
+
+int
+eclat_detach_internet_gateway(eclat_command_env_t *env,
+ int argc, char **argv)
+{
+ int i;
+ struct ec2_request *q = env->request;
+
+ generic_proginfo->args_doc = "IGW-ID VPC-ID";
+ generic_parse_options(env->cmd,
+ "detach internet gateway from VPC",
+ argc, argv, &i);
+ argv += i;
+ argc -= i;
+ if (argc != 2)
+ die(EX_USAGE, "wrong number of arguments");
+
+ translate_ids(1, argv, MAP_IGW);
+ translate_ids(1, argv+1, MAP_VPC);
+
+ eclat_request_add_param(q, "InternetGatewayId", argv[0]);
+ eclat_request_add_param(q, "VpcId", argv[1]);
+
+ return 0;
+}

Return to:

Send suggestions and report system problems to the System administrator.