aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2019-11-26 14:09:09 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2019-11-26 14:09:09 +0200
commit0f78a1684e0119adceba8e9fd99a8bc33fa826b1 (patch)
tree8ad56bbc1d748f4fa2fc8af6a0b7522ee3723735
parentce1af46af7a84d061676ede08dab2a0be3fadbaf (diff)
downloadeclat-0f78a1684e0119adceba8e9fd99a8bc33fa826b1.tar.gz
eclat-0f78a1684e0119adceba8e9fd99a8bc33fa826b1.tar.bz2
Implement MoveAddressToVpc (addr2vpc) and RestoreAddressToClassic (addr2ec2)
* TODO: Document changes. * doc/Makefile.inc: Add new files. * doc/eclat-addr2ec2.1: New file. * doc/eclat-addr2vpc.1: New file. * etc/Makefile.am: Add new files. * etc/move-address-to-vpc.fln: New file. * etc/restore-address-to-classic.fln: New file. * src/Makefile.am: Add new file. * src/mvaddr.c: New file. * src/eclat.c (cmdtab): New commands: addr2vpc and addr2ec2. * src/eclat.h (eclat_move_address): New proto. * etc/describe-images.fln: List creation date.
-rw-r--r--TODO2
-rw-r--r--doc/Makefile.inc4
-rw-r--r--doc/eclat-addr2ec2.166
-rw-r--r--doc/eclat-addr2vpc.159
-rw-r--r--etc/Makefile.am2
-rw-r--r--etc/describe-images.fln1
-rw-r--r--etc/move-address-to-vpc.fln23
-rw-r--r--etc/restore-address-to-classic.fln22
-rw-r--r--src/Makefile.am1
-rw-r--r--src/eclat.c6
-rw-r--r--src/eclat.h1
-rw-r--r--src/mvaddr.c39
12 files changed, 224 insertions, 2 deletions
diff --git a/TODO b/TODO
index 65034a0..03960c4 100644
--- a/TODO
+++ b/TODO
@@ -136,2 +136,3 @@ ModifyVpcAttribute setvpcattr [X] [ ]
136MonitorInstances - [ ] [ ] 136MonitorInstances - [ ] [ ]
137MoveAddressToVpc addr2vpc [X] [X]
137PurchaseReservedInstancesOffering - [ ] [ ] 138PurchaseReservedInstancesOffering - [ ] [ ]
@@ -150,2 +151,3 @@ ResetNetworkInterfaceAttribute - [ ] [ ]
150ResetSnapshotAttribute clrsattr [X] [X] 151ResetSnapshotAttribute clrsattr [X] [X]
152RestoreAddressToClassic addr2ec2 [X] [X]
151RevokeSecurityGroupEgress sg [X] [X] 153RevokeSecurityGroupEgress sg [X] [X]
diff --git a/doc/Makefile.inc b/doc/Makefile.inc
index e55c607..ab6c2a7 100644
--- a/doc/Makefile.inc
+++ b/doc/Makefile.inc
@@ -1,3 +1,3 @@
1# This file is part of Eclat -*- Makefile -*- 1# This file is part of Eclat -*- Makefile -*-
2# Copyright (C) 2012-2018 Sergey Poznyakoff 2# Copyright (C) 2012-2019 Sergey Poznyakoff
3# 3#
@@ -22,2 +22,4 @@ MANPAGES1=\
22 eclat.1\ 22 eclat.1\
23 eclat-addr2ec2.1\
24 eclat-addr2vpc.1\
23 eclat-assocaddr.1\ 25 eclat-assocaddr.1\
diff --git a/doc/eclat-addr2ec2.1 b/doc/eclat-addr2ec2.1
new file mode 100644
index 0000000..983fc8f
--- /dev/null
+++ b/doc/eclat-addr2ec2.1
@@ -0,0 +1,66 @@
1.\" This file is part of Eclat -*- nroff -*-
2.\" Copyright (C) 2012-2019 Sergey Poznyakoff
3.\"
4.\" Eclat is free software; you can redistribute it and/or modify
5.\" it under the terms of the GNU General Public License as published by
6.\" the Free Software Foundation; either version 3, or (at your option)
7.\" any later version.
8.\"
9.\" Eclat is distributed in the hope that it will be useful,
10.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
11.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12.\" GNU General Public License for more details.
13.\"
14.\" You should have received a copy of the GNU General Public License
15.\" along with Eclat. If not, see <http://www.gnu.org/licenses/>.
16.TH ECLAT-ADDR2EC2 1 "November 26, 2019" "ECLAT" "Eclat User Reference"
17.SH NAME
18eclat-addr2ec2 \- Move VPC IP address back to EC2 Classic
19.SH SYNOPSIS
20.nh
21.na
22\fBeclat addr2ec2\fR \fIIP\fR
23.PP
24\fBeclat restore-address-to-classic\fR \fIIP\fR
25.PP
26\fBeclat addr2ec2\fR \fB\-\-help\fR
27.ad
28.hy
29.SH DESCRIPTION
30Restores an Elastic IP address that was previously moved to the
31EC2-VPC platform back to the EC2-Classic platform (addresses are
32moved to EC2-VPC using the
33.BR eclat\-addr2vpc (1)
34command).
35You cannot move an
36Elastic IP address that was originally allocated for use in
37EC2-VPC. The Elastic IP address must not be associated with an
38instance or network interface.
39.PP
40.PP
41To move the address back to EC2 classic, use
42.BR "eclat addr2ec2".
43.SH "SEE ALSO"
44.BR eclat (1),
45.BR eclat\-addr2vpc (1).
46.SH AUTHORS
47Sergey Poznyakoff
48.SH "BUG REPORTS"
49Report bugs to <bug\-eclat@gnu.org.ua>.
50.SH COPYRIGHT
51Copyright \(co 2012-2019 Sergey Poznyakoff
52.br
53.na
54License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
55.br
56.ad
57This is free software: you are free to change and redistribute it.
58There is NO WARRANTY, to the extent permitted by law.
59.\" Local variables:
60.\" eval: (add-hook 'write-file-hooks 'time-stamp)
61.\" time-stamp-start: ".TH [A-Z_][A-Z0-9_.\\-]* [0-9] \""
62.\" time-stamp-format: "%:B %:d, %:y"
63.\" time-stamp-end: "\""
64.\" time-stamp-line-limit: 20
65.\" end:
66
diff --git a/doc/eclat-addr2vpc.1 b/doc/eclat-addr2vpc.1
new file mode 100644
index 0000000..dec6bda
--- /dev/null
+++ b/doc/eclat-addr2vpc.1
@@ -0,0 +1,59 @@
1.\" This file is part of Eclat -*- nroff -*-
2.\" Copyright (C) 2012-2019 Sergey Poznyakoff
3.\"
4.\" Eclat is free software; you can redistribute it and/or modify
5.\" it under the terms of the GNU General Public License as published by
6.\" the Free Software Foundation; either version 3, or (at your option)
7.\" any later version.
8.\"
9.\" Eclat is distributed in the hope that it will be useful,
10.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
11.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12.\" GNU General Public License for more details.
13.\"
14.\" You should have received a copy of the GNU General Public License
15.\" along with Eclat. If not, see <http://www.gnu.org/licenses/>.
16.TH ECLAT-ADDR2VPC 1 "November 26, 2019" "ECLAT" "Eclat User Reference"
17.SH NAME
18eclat-addr2vpc \- Move IP address from EC2 to EC2-VPC
19.SH SYNOPSIS
20.nh
21.na
22\fBeclat addr2vpc\fR \fIIP\fR
23.PP
24\fBeclat move-address-to-vpc\fR \fIIP\fR
25.PP
26\fBeclat addr2vpc\fR \fB\-\-help\fR
27.ad
28.hy
29.SH DESCRIPTION
30Moves the Elastic IP address \fIIP\fR from the EC2-Classic platform to
31the EC2-VPC platform. \fIIP\fR must be allocated to your account for
32more than 24 hours, and it must not be associated with an instance.
33.PP
34To move the address back to EC2 classic, use
35.BR "eclat addr2ec2".
36.SH "SEE ALSO"
37.BR eclat (1),
38.BR eclat\-addr2ec2 (1).
39.SH AUTHORS
40Sergey Poznyakoff
41.SH "BUG REPORTS"
42Report bugs to <bug\-eclat@gnu.org.ua>.
43.SH COPYRIGHT
44Copyright \(co 2012-2019 Sergey Poznyakoff
45.br
46.na
47License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
48.br
49.ad
50This is free software: you are free to change and redistribute it.
51There is NO WARRANTY, to the extent permitted by law.
52.\" Local variables:
53.\" eval: (add-hook 'write-file-hooks 'time-stamp)
54.\" time-stamp-start: ".TH [A-Z_][A-Z0-9_.\\-]* [0-9] \""
55.\" time-stamp-format: "%:B %:d, %:y"
56.\" time-stamp-end: "\""
57.\" time-stamp-line-limit: 20
58.\" end:
59
diff --git a/etc/Makefile.am b/etc/Makefile.am
index 7d0b355..d508fbf 100644
--- a/etc/Makefile.am
+++ b/etc/Makefile.am
@@ -77,2 +77,3 @@ FLNFILES=\
77 modify-vpc-attribute.fln\ 77 modify-vpc-attribute.fln\
78 move-address-to-vpc.fln\
78 reboot-instances.fln\ 79 reboot-instances.fln\
@@ -80,2 +81,3 @@ FLNFILES=\
80 replace-route.fln\ 81 replace-route.fln\
82 restore-address-to-classic.fln\
81 route.fln\ 83 route.fln\
diff --git a/etc/describe-images.fln b/etc/describe-images.fln
index ac2fc79..01ebd5f 100644
--- a/etc/describe-images.fln
+++ b/etc/describe-images.fln
@@ -19,2 +19,3 @@ if (.DescribeImagesResponse.imagesSet) {
19 print("\nImage ID: ", var.imageId, "\n"); 19 print("\nImage ID: ", var.imageId, "\n");
20 print("\tCreated on: ", var.creationDate, "\n");
20 print("\tName: ", var.name, "\n"); 21 print("\tName: ", var.name, "\n");
diff --git a/etc/move-address-to-vpc.fln b/etc/move-address-to-vpc.fln
new file mode 100644
index 0000000..24dab40
--- /dev/null
+++ b/etc/move-address-to-vpc.fln
@@ -0,0 +1,23 @@
1/* This file is part of Eclat.
2 Copyright (C) 2019 Sergey Poznyakoff.
3
4 Eclat is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 3, or (at your option)
7 any later version.
8
9 Eclat is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with Eclat. If not, see <http://www.gnu.org/licenses/>. */
16
17if (.MoveAddressToVpcResponse.status) {
18 print(.MoveAddressToVpcResponse.status);
19 if (.MoveAddressToVpcResponse.allocationId)
20 print("\t", .MoveAddressToVpcResponse.allocationId);
21 print("\n");
22}
23
diff --git a/etc/restore-address-to-classic.fln b/etc/restore-address-to-classic.fln
new file mode 100644
index 0000000..4750d63
--- /dev/null
+++ b/etc/restore-address-to-classic.fln
@@ -0,0 +1,22 @@
1/* This file is part of Eclat.
2 Copyright (C) 2019 Sergey Poznyakoff.
3
4 Eclat is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 3, or (at your option)
7 any later version.
8
9 Eclat is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with Eclat. If not, see <http://www.gnu.org/licenses/>. */
16
17if (.RestoreAddressToClassicResponse.status) {
18 print(.RestoreAddressToClassicResponse.status);
19 if (.RestoreAddressToClassicResponse.publicIp)
20 print("\t", .RestoreAddressToClassicResponse.publicIp);
21 print("\n");
22}
diff --git a/src/Makefile.am b/src/Makefile.am
index c4fc211..637beb2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -62,2 +62,3 @@ eclat_SOURCES=\
62 mkvpc.c\ 62 mkvpc.c\
63 mvaddr.c\
63 rmaddr.c\ 64 rmaddr.c\
diff --git a/src/eclat.c b/src/eclat.c
index 43387be..1c87314 100644
--- a/src/eclat.c
+++ b/src/eclat.c
@@ -213,3 +213,7 @@ struct eclat_command cmdtab[] = {
213 { "lschvol", "describe-volumes-modifications", "DescribeVolumesModifications", 213 { "lschvol", "describe-volumes-modifications", "DescribeVolumesModifications",
214 eclat_describe_volumes_modifications } 214 eclat_describe_volumes_modifications },
215 { "addr2vpc", "move-address-to-vpc", "MoveAddressToVpc",
216 eclat_move_address },
217 { "addr2ec2", "restore-address-to-classic", "RestoreAddressToClassic",
218 eclat_move_address },
215}; 219};
diff --git a/src/eclat.h b/src/eclat.h
index f314476..d0f47a1 100644
--- a/src/eclat.h
+++ b/src/eclat.h
@@ -137,2 +137,3 @@ int eclat_disassociate_address(eclat_command_env_t *env, int argc, char **argv);
137int eclat_describe_addresses(eclat_command_env_t *env, int argc, char **argv); 137int eclat_describe_addresses(eclat_command_env_t *env, int argc, char **argv);
138int eclat_move_address(eclat_command_env_t *env, int argc, char **argv);
138int eclat_describe_volumes(eclat_command_env_t *env, int argc, char **argv); 139int eclat_describe_volumes(eclat_command_env_t *env, int argc, char **argv);
diff --git a/src/mvaddr.c b/src/mvaddr.c
new file mode 100644
index 0000000..dbe9986
--- /dev/null
+++ b/src/mvaddr.c
@@ -0,0 +1,39 @@
1/* This file is part of Eclat.
2 Copyright (C) 2019 Sergey Poznyakoff.
3
4 Eclat is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 3, or (at your option)
7 any later version.
8
9 Eclat is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with Eclat. If not, see <http://www.gnu.org/licenses/>. */
16
17#include "eclat.h"
18
19int
20eclat_move_address(eclat_command_env_t *env, int argc, char **argv)
21{
22 int i;
23
24 generic_proginfo->args_doc = "IP";
25 generic_parse_options(env->cmd,
26 strcmp(env->cmd->tag, "MoveAddressToVpc") == 0
27 ? "Move IP address from EC2-Classic to EC2-VPC"
28 : "Restore a VPC address back to EC2-Classic",
29 argc, argv, &i);
30 argc -= i;
31 argv += i;
32
33 if (argc != 1)
34 die(EX_USAGE, "wrong number of arguments to move-address-to-vpc");
35
36 eclat_request_add_param(env->request, "PublicIp", argv[0]);
37
38 return 0;
39}

Return to:

Send suggestions and report system problems to the System administrator.