OLD | NEW |
1 # Copyright (c) 2009 Mitch Garnaat http://garnaat.org/ | 1 # Copyright (c) 2009 Mitch Garnaat http://garnaat.org/ |
2 # | 2 # |
3 # Permission is hereby granted, free of charge, to any person obtaining a | 3 # Permission is hereby granted, free of charge, to any person obtaining a |
4 # copy of this software and associated documentation files (the | 4 # copy of this software and associated documentation files (the |
5 # "Software"), to deal in the Software without restriction, including | 5 # "Software"), to deal in the Software without restriction, including |
6 # without limitation the rights to use, copy, modify, merge, publish, dis- | 6 # without limitation the rights to use, copy, modify, merge, publish, dis- |
7 # tribute, sublicense, and/or sell copies of the Software, and to permit | 7 # tribute, sublicense, and/or sell copies of the Software, and to permit |
8 # persons to whom the Software is furnished to do so, subject to the fol- | 8 # persons to whom the Software is furnished to do so, subject to the fol- |
9 # lowing conditions: | 9 # lowing conditions: |
10 # | 10 # |
11 # The above copyright notice and this permission notice shall be included | 11 # The above copyright notice and this permission notice shall be included |
12 # in all copies or substantial portions of the Software. | 12 # in all copies or substantial portions of the Software. |
13 # | 13 # |
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | 15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | 16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | 17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | 19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
20 # IN THE SOFTWARE. | 20 # IN THE SOFTWARE. |
21 | 21 |
22 """ | 22 """ |
23 Represents a connection to the EC2 service. | 23 Represents a connection to the EC2 service. |
24 """ | 24 """ |
25 | 25 |
26 from boto.ec2.connection import EC2Connection | 26 from boto.ec2.connection import EC2Connection |
| 27 from boto.resultset import ResultSet |
27 from boto.vpc.vpc import VPC | 28 from boto.vpc.vpc import VPC |
28 from boto.vpc.customergateway import CustomerGateway | 29 from boto.vpc.customergateway import CustomerGateway |
| 30 from boto.vpc.routetable import RouteTable |
| 31 from boto.vpc.internetgateway import InternetGateway |
29 from boto.vpc.vpngateway import VpnGateway, Attachment | 32 from boto.vpc.vpngateway import VpnGateway, Attachment |
30 from boto.vpc.dhcpoptions import DhcpOptions | 33 from boto.vpc.dhcpoptions import DhcpOptions |
31 from boto.vpc.subnet import Subnet | 34 from boto.vpc.subnet import Subnet |
32 from boto.vpc.vpnconnection import VpnConnection | 35 from boto.vpc.vpnconnection import VpnConnection |
33 | 36 |
34 class VPCConnection(EC2Connection): | 37 class VPCConnection(EC2Connection): |
35 | 38 |
36 # VPC methods | 39 # VPC methods |
37 | 40 |
38 def get_all_vpcs(self, vpc_ids=None, filters=None): | 41 def get_all_vpcs(self, vpc_ids=None, filters=None): |
39 """ | 42 """ |
40 Retrieve information about your VPCs. You can filter results to | 43 Retrieve information about your VPCs. You can filter results to |
41 return information only about those VPCs that match your search | 44 return information only about those VPCs that match your search |
42 parameters. Otherwise, all VPCs associated with your account | 45 parameters. Otherwise, all VPCs associated with your account |
43 are returned. | 46 are returned. |
44 | 47 |
45 :type vpc_ids: list | 48 :type vpc_ids: list |
46 :param vpc_ids: A list of strings with the desired VPC ID's | 49 :param vpc_ids: A list of strings with the desired VPC ID's |
47 | 50 |
48 :type filters: list of tuples | 51 :type filters: list of tuples |
49 :param filters: A list of tuples containing filters. Each tuple | 52 :param filters: A list of tuples containing filters. Each tuple |
50 consists of a filter key and a filter value. | 53 consists of a filter key and a filter value. |
51 Possible filter keys are: | 54 Possible filter keys are: |
52 | 55 |
53 - *state*, the state of the VPC (pending or available) | 56 - *state*, the state of the VPC (pending or available) |
54 - *cidrBlock*, CIDR block of the VPC | 57 - *cidrBlock*, CIDR block of the VPC |
55 - *dhcpOptionsId*, the ID of a set of DHCP options | 58 - *dhcpOptionsId*, the ID of a set of DHCP options |
56 | 59 |
57 :rtype: list | 60 :rtype: list |
58 :return: A list of :class:`boto.vpc.vpc.VPC` | 61 :return: A list of :class:`boto.vpc.vpc.VPC` |
59 """ | 62 """ |
60 params = {} | 63 params = {} |
61 if vpc_ids: | 64 if vpc_ids: |
62 self.build_list_params(params, vpc_ids, 'VpcId') | 65 self.build_list_params(params, vpc_ids, 'VpcId') |
63 if filters: | 66 if filters: |
64 i = 1 | 67 i = 1 |
65 for filter in filters: | 68 for filter in filters: |
66 params[('Filter.%d.Key' % i)] = filter[0] | 69 params[('Filter.%d.Name' % i)] = filter[0] |
67 params[('Filter.%d.Value.1')] = filter[1] | 70 params[('Filter.%d.Value.1' % i)] = filter[1] |
68 i += 1 | 71 i += 1 |
69 return self.get_list('DescribeVpcs', params, [('item', VPC)]) | 72 return self.get_list('DescribeVpcs', params, [('item', VPC)]) |
70 | 73 |
71 def create_vpc(self, cidr_block): | 74 def create_vpc(self, cidr_block): |
72 """ | 75 """ |
73 Create a new Virtual Private Cloud. | 76 Create a new Virtual Private Cloud. |
74 | 77 |
75 :type cidr_block: str | 78 :type cidr_block: str |
76 :param cidr_block: A valid CIDR block | 79 :param cidr_block: A valid CIDR block |
77 | 80 |
78 :rtype: The newly created VPC | 81 :rtype: The newly created VPC |
79 :return: A :class:`boto.vpc.vpc.VPC` object | 82 :return: A :class:`boto.vpc.vpc.VPC` object |
80 """ | 83 """ |
81 params = {'CidrBlock' : cidr_block} | 84 params = {'CidrBlock' : cidr_block} |
82 return self.get_object('CreateVpc', params, VPC) | 85 return self.get_object('CreateVpc', params, VPC) |
83 | 86 |
84 def delete_vpc(self, vpc_id): | 87 def delete_vpc(self, vpc_id): |
85 """ | 88 """ |
86 Delete a Virtual Private Cloud. | 89 Delete a Virtual Private Cloud. |
87 | 90 |
88 :type vpc_id: str | 91 :type vpc_id: str |
89 :param vpc_id: The ID of the vpc to be deleted. | 92 :param vpc_id: The ID of the vpc to be deleted. |
90 | 93 |
91 :rtype: bool | 94 :rtype: bool |
92 :return: True if successful | 95 :return: True if successful |
93 """ | 96 """ |
94 params = {'VpcId': vpc_id} | 97 params = {'VpcId': vpc_id} |
95 return self.get_status('DeleteVpc', params) | 98 return self.get_status('DeleteVpc', params) |
96 | 99 |
| 100 # Route Tables |
| 101 |
| 102 def get_all_route_tables(self, route_table_ids=None, filters=None): |
| 103 """ |
| 104 Retrieve information about your routing tables. You can filter results |
| 105 to return information only about those route tables that match your |
| 106 search parameters. Otherwise, all route tables associated with your |
| 107 account are returned. |
| 108 |
| 109 :type route_table_ids: list |
| 110 :param route_table_ids: A list of strings with the desired route table |
| 111 IDs. |
| 112 |
| 113 :type filters: list of tuples |
| 114 :param filters: A list of tuples containing filters. Each tuple |
| 115 consists of a filter key and a filter value. |
| 116 |
| 117 :rtype: list |
| 118 :return: A list of :class:`boto.vpc.routetable.RouteTable` |
| 119 """ |
| 120 params = {} |
| 121 if route_table_ids: |
| 122 self.build_list_params(params, route_table_ids, "RouteTableId") |
| 123 if filters: |
| 124 self.build_filter_params(params, dict(filters)) |
| 125 return self.get_list('DescribeRouteTables', params, [('item', RouteTable
)]) |
| 126 |
| 127 def associate_route_table(self, route_table_id, subnet_id): |
| 128 """ |
| 129 Associates a route table with a specific subnet. |
| 130 |
| 131 :type route_table_id: str |
| 132 :param route_table_id: The ID of the route table to associate. |
| 133 |
| 134 :type subnet_id: str |
| 135 :param subnet_id: The ID of the subnet to associate with. |
| 136 |
| 137 :rtype: str |
| 138 :return: The ID of the association created |
| 139 """ |
| 140 params = { |
| 141 'RouteTableId': route_table_id, |
| 142 'SubnetId': subnet_id |
| 143 } |
| 144 |
| 145 result = self.get_object('AssociateRouteTable', params, ResultSet) |
| 146 return result.associationId |
| 147 |
| 148 def disassociate_route_table(self, association_id): |
| 149 """ |
| 150 Removes an association from a route table. This will cause all subnets |
| 151 that would've used this association to now use the main routing |
| 152 association instead. |
| 153 |
| 154 :type association_id: str |
| 155 :param association_id: The ID of the association to disassociate. |
| 156 |
| 157 :rtype: bool |
| 158 :return: True if successful |
| 159 """ |
| 160 params = { 'AssociationId': association_id } |
| 161 return self.get_status('DisassociateRouteTable', params) |
| 162 |
| 163 def create_route_table(self, vpc_id): |
| 164 """ |
| 165 Creates a new route table. |
| 166 |
| 167 :type vpc_id: str |
| 168 :param vpc_id: The VPC ID to associate this route table with. |
| 169 |
| 170 :rtype: The newly created route table |
| 171 :return: A :class:`boto.vpc.routetable.RouteTable` object |
| 172 """ |
| 173 params = { 'VpcId': vpc_id } |
| 174 return self.get_object('CreateRouteTable', params, RouteTable) |
| 175 |
| 176 def delete_route_table(self, route_table_id): |
| 177 """ |
| 178 Delete a route table. |
| 179 |
| 180 :type route_table_id: str |
| 181 :param route_table_id: The ID of the route table to delete. |
| 182 |
| 183 :rtype: bool |
| 184 :return: True if successful |
| 185 """ |
| 186 params = { 'RouteTableId': route_table_id } |
| 187 return self.get_status('DeleteRouteTable', params) |
| 188 |
| 189 def create_route(self, route_table_id, destination_cidr_block, gateway_id=No
ne, instance_id=None): |
| 190 """ |
| 191 Creates a new route in the route table within a VPC. The route's target |
| 192 can be either a gateway attached to the VPC or a NAT instance in the |
| 193 VPC. |
| 194 |
| 195 :type route_table_id: str |
| 196 :param route_table_id: The ID of the route table for the route. |
| 197 |
| 198 :type destination_cidr_block: str |
| 199 :param destination_cidr_block: The CIDR address block used for the |
| 200 destination match. |
| 201 |
| 202 :type gateway_id: str |
| 203 :param gateway_id: The ID of the gateway attached to your VPC. |
| 204 |
| 205 :type instance_id: str |
| 206 :param instance_id: The ID of a NAT instance in your VPC. |
| 207 |
| 208 :rtype: bool |
| 209 :return: True if successful |
| 210 """ |
| 211 params = { |
| 212 'RouteTableId': route_table_id, |
| 213 'DestinationCidrBlock': destination_cidr_block |
| 214 } |
| 215 |
| 216 if gateway_id is not None: |
| 217 params['GatewayId'] = gateway_id |
| 218 elif instance_id is not None: |
| 219 params['InstanceId'] = instance_id |
| 220 |
| 221 return self.get_status('CreateRoute', params) |
| 222 |
| 223 def delete_route(self, route_table_id, destination_cidr_block): |
| 224 """ |
| 225 Deletes a route from a route table within a VPC. |
| 226 |
| 227 :type route_table_id: str |
| 228 :param route_table_id: The ID of the route table with the route. |
| 229 |
| 230 :type destination_cidr_block: str |
| 231 :param destination_cidr_block: The CIDR address block used for |
| 232 destination match. |
| 233 |
| 234 :rtype: bool |
| 235 :return: True if successful |
| 236 """ |
| 237 params = { |
| 238 'RouteTableId': route_table_id, |
| 239 'DestinationCidrBlock': destination_cidr_block |
| 240 } |
| 241 |
| 242 return self.get_status('DeleteRoute', params) |
| 243 |
| 244 # Internet Gateways |
| 245 |
| 246 def get_all_internet_gateways(self, internet_gateway_ids=None, filters=None)
: |
| 247 """ |
| 248 Get a list of internet gateways. You can filter results to return inform
ation |
| 249 about only those gateways that you're interested in. |
| 250 |
| 251 :type internet_gateway_ids: list |
| 252 :param internet_gateway_ids: A list of strings with the desired gateway
IDs. |
| 253 |
| 254 :type filters: list of tuples |
| 255 :param filters: A list of tuples containing filters. Each tuple |
| 256 consists of a filter key and a filter value. |
| 257 """ |
| 258 params = {} |
| 259 |
| 260 if internet_gateway_ids: |
| 261 self.build_list_params(params, internet_gateway_ids, 'InternetGatewa
yId') |
| 262 if filters: |
| 263 self.build_filter_params(params, dict(filters)) |
| 264 |
| 265 return self.get_list('DescribeInternetGateways', params, [('item', Inter
netGateway)]) |
| 266 |
| 267 def create_internet_gateway(self): |
| 268 """ |
| 269 Creates an internet gateway for VPC. |
| 270 |
| 271 :rtype: Newly created internet gateway. |
| 272 :return: `boto.vpc.internetgateway.InternetGateway` |
| 273 """ |
| 274 return self.get_object('CreateInternetGateway', {}, InternetGateway) |
| 275 |
| 276 def delete_internet_gateway(self, internet_gateway_id): |
| 277 """ |
| 278 Deletes an internet gateway from the VPC. |
| 279 |
| 280 :type internet_gateway_id: str |
| 281 :param internet_gateway_id: The ID of the internet gateway to delete. |
| 282 |
| 283 :rtype: Bool |
| 284 :return: True if successful |
| 285 """ |
| 286 params = { 'InternetGatewayId': internet_gateway_id } |
| 287 return self.get_status('DeleteInternetGateway', params) |
| 288 |
| 289 def attach_internet_gateway(self, internet_gateway_id, vpc_id): |
| 290 """ |
| 291 Attach an internet gateway to a specific VPC. |
| 292 |
| 293 :type internet_gateway_id: str |
| 294 :param internet_gateway_id: The ID of the internet gateway to delete. |
| 295 |
| 296 :type vpc_id: str |
| 297 :param vpc_id: The ID of the VPC to attach to. |
| 298 |
| 299 :rtype: Bool |
| 300 :return: True if successful |
| 301 """ |
| 302 params = { |
| 303 'InternetGatewayId': internet_gateway_id, |
| 304 'VpcId': vpc_id |
| 305 } |
| 306 |
| 307 return self.get_status('AttachInternetGateway', params) |
| 308 |
| 309 def detach_internet_gateway(self, internet_gateway_id, vpc_id): |
| 310 """ |
| 311 Detach an internet gateway from a specific VPC. |
| 312 |
| 313 :type internet_gateway_id: str |
| 314 :param internet_gateway_id: The ID of the internet gateway to delete. |
| 315 |
| 316 :type vpc_id: str |
| 317 :param vpc_id: The ID of the VPC to attach to. |
| 318 |
| 319 :rtype: Bool |
| 320 :return: True if successful |
| 321 """ |
| 322 params = { |
| 323 'InternetGatewayId': internet_gateway_id, |
| 324 'VpcId': vpc_id |
| 325 } |
| 326 |
| 327 return self.get_status('DetachInternetGateway', params) |
| 328 |
97 # Customer Gateways | 329 # Customer Gateways |
98 | 330 |
99 def get_all_customer_gateways(self, customer_gateway_ids=None, filters=None)
: | 331 def get_all_customer_gateways(self, customer_gateway_ids=None, filters=None)
: |
100 """ | 332 """ |
101 Retrieve information about your CustomerGateways. You can filter result
s to | 333 Retrieve information about your CustomerGateways. You can filter result
s to |
102 return information only about those CustomerGateways that match your sea
rch | 334 return information only about those CustomerGateways that match your sea
rch |
103 parameters. Otherwise, all CustomerGateways associated with your accoun
t | 335 parameters. Otherwise, all CustomerGateways associated with your accoun
t |
104 are returned. | 336 are returned. |
105 | 337 |
106 :type customer_gateway_ids: list | 338 :type customer_gateway_ids: list |
107 :param customer_gateway_ids: A list of strings with the desired Customer
Gateway ID's | 339 :param customer_gateway_ids: A list of strings with the desired Customer
Gateway ID's |
108 | 340 |
109 :type filters: list of tuples | 341 :type filters: list of tuples |
110 :param filters: A list of tuples containing filters. Each tuple | 342 :param filters: A list of tuples containing filters. Each tuple |
111 consists of a filter key and a filter value. | 343 consists of a filter key and a filter value. |
112 Possible filter keys are: | 344 Possible filter keys are: |
113 | 345 |
114 - *state*, the state of the CustomerGateway | 346 - *state*, the state of the CustomerGateway |
115 (pending,available,deleting,deleted) | 347 (pending,available,deleting,deleted) |
116 - *type*, the type of customer gateway (ipsec.1) | 348 - *type*, the type of customer gateway (ipsec.1) |
117 - *ipAddress* the IP address of customer gateway's | 349 - *ipAddress* the IP address of customer gateway's |
118 internet-routable external inteface | 350 internet-routable external inteface |
119 | 351 |
120 :rtype: list | 352 :rtype: list |
121 :return: A list of :class:`boto.vpc.customergateway.CustomerGateway` | 353 :return: A list of :class:`boto.vpc.customergateway.CustomerGateway` |
122 """ | 354 """ |
123 params = {} | 355 params = {} |
124 if customer_gateway_ids: | 356 if customer_gateway_ids: |
125 self.build_list_params(params, customer_gateway_ids, 'CustomerGatewa
yId') | 357 self.build_list_params(params, customer_gateway_ids, 'CustomerGatewa
yId') |
126 if filters: | 358 if filters: |
127 i = 1 | 359 i = 1 |
128 for filter in filters: | 360 for filter in filters: |
129 params[('Filter.%d.Key' % i)] = filter[0] | 361 params[('Filter.%d.Name' % i)] = filter[0] |
130 params[('Filter.%d.Value.1')] = filter[1] | 362 params[('Filter.%d.Value.1')] = filter[1] |
131 i += 1 | 363 i += 1 |
132 return self.get_list('DescribeCustomerGateways', params, [('item', Custo
merGateway)]) | 364 return self.get_list('DescribeCustomerGateways', params, [('item', Custo
merGateway)]) |
133 | 365 |
134 def create_customer_gateway(self, type, ip_address, bgp_asn): | 366 def create_customer_gateway(self, type, ip_address, bgp_asn): |
135 """ | 367 """ |
136 Create a new Customer Gateway | 368 Create a new Customer Gateway |
137 | 369 |
138 :type type: str | 370 :type type: str |
139 :param type: Type of VPN Connection. Only valid valid currently is 'ips
ec.1' | 371 :param type: Type of VPN Connection. Only valid valid currently is 'ips
ec.1' |
140 | 372 |
141 :type ip_address: str | 373 :type ip_address: str |
142 :param ip_address: Internet-routable IP address for customer's gateway. | 374 :param ip_address: Internet-routable IP address for customer's gateway. |
143 Must be a static address. | 375 Must be a static address. |
144 | 376 |
145 :type bgp_asn: str | 377 :type bgp_asn: str |
146 :param bgp_asn: Customer gateway's Border Gateway Protocol (BGP) | 378 :param bgp_asn: Customer gateway's Border Gateway Protocol (BGP) |
147 Autonomous System Number (ASN) | 379 Autonomous System Number (ASN) |
148 | 380 |
149 :rtype: The newly created CustomerGateway | 381 :rtype: The newly created CustomerGateway |
150 :return: A :class:`boto.vpc.customergateway.CustomerGateway` object | 382 :return: A :class:`boto.vpc.customergateway.CustomerGateway` object |
151 """ | 383 """ |
152 params = {'Type' : type, | 384 params = {'Type' : type, |
153 'IpAddress' : ip_address, | 385 'IpAddress' : ip_address, |
154 'BgpAsn' : bgp_asn} | 386 'BgpAsn' : bgp_asn} |
155 return self.get_object('CreateCustomerGateway', params, CustomerGateway) | 387 return self.get_object('CreateCustomerGateway', params, CustomerGateway) |
156 | 388 |
157 def delete_customer_gateway(self, customer_gateway_id): | 389 def delete_customer_gateway(self, customer_gateway_id): |
158 """ | 390 """ |
159 Delete a Customer Gateway. | 391 Delete a Customer Gateway. |
160 | 392 |
161 :type customer_gateway_id: str | 393 :type customer_gateway_id: str |
162 :param customer_gateway_id: The ID of the customer_gateway to be deleted
. | 394 :param customer_gateway_id: The ID of the customer_gateway to be deleted
. |
163 | 395 |
164 :rtype: bool | 396 :rtype: bool |
165 :return: True if successful | 397 :return: True if successful |
166 """ | 398 """ |
167 params = {'CustomerGatewayId': customer_gateway_id} | 399 params = {'CustomerGatewayId': customer_gateway_id} |
168 return self.get_status('DeleteCustomerGateway', params) | 400 return self.get_status('DeleteCustomerGateway', params) |
169 | 401 |
170 # VPN Gateways | 402 # VPN Gateways |
171 | 403 |
172 def get_all_vpn_gateways(self, vpn_gateway_ids=None, filters=None): | 404 def get_all_vpn_gateways(self, vpn_gateway_ids=None, filters=None): |
173 """ | 405 """ |
174 Retrieve information about your VpnGateways. You can filter results to | 406 Retrieve information about your VpnGateways. You can filter results to |
175 return information only about those VpnGateways that match your search | 407 return information only about those VpnGateways that match your search |
176 parameters. Otherwise, all VpnGateways associated with your account | 408 parameters. Otherwise, all VpnGateways associated with your account |
177 are returned. | 409 are returned. |
178 | 410 |
179 :type vpn_gateway_ids: list | 411 :type vpn_gateway_ids: list |
180 :param vpn_gateway_ids: A list of strings with the desired VpnGateway ID
's | 412 :param vpn_gateway_ids: A list of strings with the desired VpnGateway ID
's |
181 | 413 |
182 :type filters: list of tuples | 414 :type filters: list of tuples |
183 :param filters: A list of tuples containing filters. Each tuple | 415 :param filters: A list of tuples containing filters. Each tuple |
184 consists of a filter key and a filter value. | 416 consists of a filter key and a filter value. |
185 Possible filter keys are: | 417 Possible filter keys are: |
186 | 418 |
187 - *state*, the state of the VpnGateway | 419 - *state*, the state of the VpnGateway |
188 (pending,available,deleting,deleted) | 420 (pending,available,deleting,deleted) |
189 - *type*, the type of customer gateway (ipsec.1) | 421 - *type*, the type of customer gateway (ipsec.1) |
190 - *availabilityZone*, the Availability zone the | 422 - *availabilityZone*, the Availability zone the |
191 VPN gateway is in. | 423 VPN gateway is in. |
192 | 424 |
193 :rtype: list | 425 :rtype: list |
194 :return: A list of :class:`boto.vpc.customergateway.VpnGateway` | 426 :return: A list of :class:`boto.vpc.customergateway.VpnGateway` |
195 """ | 427 """ |
196 params = {} | 428 params = {} |
197 if vpn_gateway_ids: | 429 if vpn_gateway_ids: |
198 self.build_list_params(params, vpn_gateway_ids, 'VpnGatewayId') | 430 self.build_list_params(params, vpn_gateway_ids, 'VpnGatewayId') |
199 if filters: | 431 if filters: |
200 i = 1 | 432 i = 1 |
201 for filter in filters: | 433 for filter in filters: |
202 params[('Filter.%d.Key' % i)] = filter[0] | 434 params[('Filter.%d.Name' % i)] = filter[0] |
203 params[('Filter.%d.Value.1')] = filter[1] | 435 params[('Filter.%d.Value.1')] = filter[1] |
204 i += 1 | 436 i += 1 |
205 return self.get_list('DescribeVpnGateways', params, [('item', VpnGateway
)]) | 437 return self.get_list('DescribeVpnGateways', params, [('item', VpnGateway
)]) |
206 | 438 |
207 def create_vpn_gateway(self, type, availability_zone=None): | 439 def create_vpn_gateway(self, type, availability_zone=None): |
208 """ | 440 """ |
209 Create a new Vpn Gateway | 441 Create a new Vpn Gateway |
210 | 442 |
211 :type type: str | 443 :type type: str |
212 :param type: Type of VPN Connection. Only valid valid currently is 'ips
ec.1' | 444 :param type: Type of VPN Connection. Only valid valid currently is 'ips
ec.1' |
213 | 445 |
214 :type availability_zone: str | 446 :type availability_zone: str |
215 :param availability_zone: The Availability Zone where you want the VPN g
ateway. | 447 :param availability_zone: The Availability Zone where you want the VPN g
ateway. |
216 | 448 |
217 :rtype: The newly created VpnGateway | 449 :rtype: The newly created VpnGateway |
218 :return: A :class:`boto.vpc.vpngateway.VpnGateway` object | 450 :return: A :class:`boto.vpc.vpngateway.VpnGateway` object |
219 """ | 451 """ |
220 params = {'Type' : type} | 452 params = {'Type' : type} |
221 if availability_zone: | 453 if availability_zone: |
222 params['AvailabilityZone'] = availability_zone | 454 params['AvailabilityZone'] = availability_zone |
223 return self.get_object('CreateVpnGateway', params, VpnGateway) | 455 return self.get_object('CreateVpnGateway', params, VpnGateway) |
224 | 456 |
225 def delete_vpn_gateway(self, vpn_gateway_id): | 457 def delete_vpn_gateway(self, vpn_gateway_id): |
226 """ | 458 """ |
227 Delete a Vpn Gateway. | 459 Delete a Vpn Gateway. |
228 | 460 |
229 :type vpn_gateway_id: str | 461 :type vpn_gateway_id: str |
230 :param vpn_gateway_id: The ID of the vpn_gateway to be deleted. | 462 :param vpn_gateway_id: The ID of the vpn_gateway to be deleted. |
231 | 463 |
232 :rtype: bool | 464 :rtype: bool |
233 :return: True if successful | 465 :return: True if successful |
234 """ | 466 """ |
(...skipping 18 matching lines...) Expand all Loading... |
253 return self.get_object('AttachVpnGateway', params, Attachment) | 485 return self.get_object('AttachVpnGateway', params, Attachment) |
254 | 486 |
255 # Subnets | 487 # Subnets |
256 | 488 |
257 def get_all_subnets(self, subnet_ids=None, filters=None): | 489 def get_all_subnets(self, subnet_ids=None, filters=None): |
258 """ | 490 """ |
259 Retrieve information about your Subnets. You can filter results to | 491 Retrieve information about your Subnets. You can filter results to |
260 return information only about those Subnets that match your search | 492 return information only about those Subnets that match your search |
261 parameters. Otherwise, all Subnets associated with your account | 493 parameters. Otherwise, all Subnets associated with your account |
262 are returned. | 494 are returned. |
263 | 495 |
264 :type subnet_ids: list | 496 :type subnet_ids: list |
265 :param subnet_ids: A list of strings with the desired Subnet ID's | 497 :param subnet_ids: A list of strings with the desired Subnet ID's |
266 | 498 |
267 :type filters: list of tuples | 499 :type filters: list of tuples |
268 :param filters: A list of tuples containing filters. Each tuple | 500 :param filters: A list of tuples containing filters. Each tuple |
269 consists of a filter key and a filter value. | 501 consists of a filter key and a filter value. |
270 Possible filter keys are: | 502 Possible filter keys are: |
271 | 503 |
272 - *state*, the state of the Subnet | 504 - *state*, the state of the Subnet |
273 (pending,available) | 505 (pending,available) |
274 - *vpdId*, the ID of teh VPC the subnet is in. | 506 - *vpdId*, the ID of teh VPC the subnet is in. |
275 - *cidrBlock*, CIDR block of the subnet | 507 - *cidrBlock*, CIDR block of the subnet |
276 - *availabilityZone*, the Availability Zone | 508 - *availabilityZone*, the Availability Zone |
277 the subnet is in. | 509 the subnet is in. |
278 | 510 |
279 | 511 |
280 :rtype: list | 512 :rtype: list |
281 :return: A list of :class:`boto.vpc.subnet.Subnet` | 513 :return: A list of :class:`boto.vpc.subnet.Subnet` |
282 """ | 514 """ |
283 params = {} | 515 params = {} |
284 if subnet_ids: | 516 if subnet_ids: |
285 self.build_list_params(params, subnet_ids, 'SubnetId') | 517 self.build_list_params(params, subnet_ids, 'SubnetId') |
286 if filters: | 518 if filters: |
287 i = 1 | 519 i = 1 |
288 for filter in filters: | 520 for filter in filters: |
289 params[('Filter.%d.Key' % i)] = filter[0] | 521 params[('Filter.%d.Name' % i)] = filter[0] |
290 params[('Filter.%d.Value.1' % i)] = filter[1] | 522 params[('Filter.%d.Value.1' % i)] = filter[1] |
291 i += 1 | 523 i += 1 |
292 return self.get_list('DescribeSubnets', params, [('item', Subnet)]) | 524 return self.get_list('DescribeSubnets', params, [('item', Subnet)]) |
293 | 525 |
294 def create_subnet(self, vpc_id, cidr_block, availability_zone=None): | 526 def create_subnet(self, vpc_id, cidr_block, availability_zone=None): |
295 """ | 527 """ |
296 Create a new Subnet | 528 Create a new Subnet |
297 | 529 |
298 :type vpc_id: str | 530 :type vpc_id: str |
299 :param vpc_id: The ID of the VPC where you want to create the subnet. | 531 :param vpc_id: The ID of the VPC where you want to create the subnet. |
300 | 532 |
301 :type cidr_block: str | 533 :type cidr_block: str |
302 :param cidr_block: The CIDR block you want the subnet to cover. | 534 :param cidr_block: The CIDR block you want the subnet to cover. |
303 | 535 |
304 :type availability_zone: str | 536 :type availability_zone: str |
305 :param availability_zone: The AZ you want the subnet in | 537 :param availability_zone: The AZ you want the subnet in |
306 | 538 |
307 :rtype: The newly created Subnet | 539 :rtype: The newly created Subnet |
308 :return: A :class:`boto.vpc.customergateway.Subnet` object | 540 :return: A :class:`boto.vpc.customergateway.Subnet` object |
309 """ | 541 """ |
310 params = {'VpcId' : vpc_id, | 542 params = {'VpcId' : vpc_id, |
311 'CidrBlock' : cidr_block} | 543 'CidrBlock' : cidr_block} |
312 if availability_zone: | 544 if availability_zone: |
313 params['AvailabilityZone'] = availability_zone | 545 params['AvailabilityZone'] = availability_zone |
314 return self.get_object('CreateSubnet', params, Subnet) | 546 return self.get_object('CreateSubnet', params, Subnet) |
315 | 547 |
316 def delete_subnet(self, subnet_id): | 548 def delete_subnet(self, subnet_id): |
317 """ | 549 """ |
318 Delete a subnet. | 550 Delete a subnet. |
319 | 551 |
320 :type subnet_id: str | 552 :type subnet_id: str |
321 :param subnet_id: The ID of the subnet to be deleted. | 553 :param subnet_id: The ID of the subnet to be deleted. |
322 | 554 |
323 :rtype: bool | 555 :rtype: bool |
324 :return: True if successful | 556 :return: True if successful |
325 """ | 557 """ |
326 params = {'SubnetId': subnet_id} | 558 params = {'SubnetId': subnet_id} |
327 return self.get_status('DeleteSubnet', params) | 559 return self.get_status('DeleteSubnet', params) |
328 | 560 |
329 | 561 |
330 # DHCP Options | 562 # DHCP Options |
331 | 563 |
332 def get_all_dhcp_options(self, dhcp_options_ids=None): | 564 def get_all_dhcp_options(self, dhcp_options_ids=None): |
333 """ | 565 """ |
334 Retrieve information about your DhcpOptions. | 566 Retrieve information about your DhcpOptions. |
335 | 567 |
336 :type dhcp_options_ids: list | 568 :type dhcp_options_ids: list |
337 :param dhcp_options_ids: A list of strings with the desired DhcpOption I
D's | 569 :param dhcp_options_ids: A list of strings with the desired DhcpOption I
D's |
338 | 570 |
339 :rtype: list | 571 :rtype: list |
340 :return: A list of :class:`boto.vpc.dhcpoptions.DhcpOptions` | 572 :return: A list of :class:`boto.vpc.dhcpoptions.DhcpOptions` |
341 """ | 573 """ |
342 params = {} | 574 params = {} |
343 if dhcp_options_ids: | 575 if dhcp_options_ids: |
344 self.build_list_params(params, dhcp_options_ids, 'DhcpOptionsId') | 576 self.build_list_params(params, dhcp_options_ids, 'DhcpOptionsId') |
345 return self.get_list('DescribeDhcpOptions', params, [('item', DhcpOption
s)]) | 577 return self.get_list('DescribeDhcpOptions', params, [('item', DhcpOption
s)]) |
346 | 578 |
347 def create_dhcp_options(self, vpc_id, cidr_block, availability_zone=None): | 579 def create_dhcp_options(self, vpc_id, cidr_block, availability_zone=None): |
348 """ | 580 """ |
349 Create a new DhcpOption | 581 Create a new DhcpOption |
350 | 582 |
351 :type vpc_id: str | 583 :type vpc_id: str |
352 :param vpc_id: The ID of the VPC where you want to create the subnet. | 584 :param vpc_id: The ID of the VPC where you want to create the subnet. |
353 | 585 |
354 :type cidr_block: str | 586 :type cidr_block: str |
355 :param cidr_block: The CIDR block you want the subnet to cover. | 587 :param cidr_block: The CIDR block you want the subnet to cover. |
356 | 588 |
357 :type availability_zone: str | 589 :type availability_zone: str |
358 :param availability_zone: The AZ you want the subnet in | 590 :param availability_zone: The AZ you want the subnet in |
359 | 591 |
360 :rtype: The newly created DhcpOption | 592 :rtype: The newly created DhcpOption |
361 :return: A :class:`boto.vpc.customergateway.DhcpOption` object | 593 :return: A :class:`boto.vpc.customergateway.DhcpOption` object |
362 """ | 594 """ |
363 params = {'VpcId' : vpc_id, | 595 params = {'VpcId' : vpc_id, |
364 'CidrBlock' : cidr_block} | 596 'CidrBlock' : cidr_block} |
365 if availability_zone: | 597 if availability_zone: |
366 params['AvailabilityZone'] = availability_zone | 598 params['AvailabilityZone'] = availability_zone |
367 return self.get_object('CreateDhcpOption', params, DhcpOptions) | 599 return self.get_object('CreateDhcpOption', params, DhcpOptions) |
368 | 600 |
369 def delete_dhcp_options(self, dhcp_options_id): | 601 def delete_dhcp_options(self, dhcp_options_id): |
370 """ | 602 """ |
371 Delete a DHCP Options | 603 Delete a DHCP Options |
372 | 604 |
373 :type dhcp_options_id: str | 605 :type dhcp_options_id: str |
374 :param dhcp_options_id: The ID of the DHCP Options to be deleted. | 606 :param dhcp_options_id: The ID of the DHCP Options to be deleted. |
375 | 607 |
376 :rtype: bool | 608 :rtype: bool |
377 :return: True if successful | 609 :return: True if successful |
378 """ | 610 """ |
379 params = {'DhcpOptionsId': dhcp_options_id} | 611 params = {'DhcpOptionsId': dhcp_options_id} |
380 return self.get_status('DeleteDhcpOptions', params) | 612 return self.get_status('DeleteDhcpOptions', params) |
381 | 613 |
382 def associate_dhcp_options(self, dhcp_options_id, vpc_id): | 614 def associate_dhcp_options(self, dhcp_options_id, vpc_id): |
383 """ | 615 """ |
384 Associate a set of Dhcp Options with a VPC. | 616 Associate a set of Dhcp Options with a VPC. |
385 | 617 |
386 :type dhcp_options_id: str | 618 :type dhcp_options_id: str |
387 :param dhcp_options_id: The ID of the Dhcp Options | 619 :param dhcp_options_id: The ID of the Dhcp Options |
388 | 620 |
389 :type vpc_id: str | 621 :type vpc_id: str |
390 :param vpc_id: The ID of the VPC. | 622 :param vpc_id: The ID of the VPC. |
391 | 623 |
392 :rtype: bool | 624 :rtype: bool |
393 :return: True if successful | 625 :return: True if successful |
394 """ | 626 """ |
395 params = {'DhcpOptionsId': dhcp_options_id, | 627 params = {'DhcpOptionsId': dhcp_options_id, |
396 'VpcId' : vpc_id} | 628 'VpcId' : vpc_id} |
397 return self.get_status('AssociateDhcpOptions', params) | 629 return self.get_status('AssociateDhcpOptions', params) |
398 | 630 |
399 # VPN Connection | 631 # VPN Connection |
400 | 632 |
401 def get_all_vpn_connections(self, vpn_connection_ids=None, filters=None): | 633 def get_all_vpn_connections(self, vpn_connection_ids=None, filters=None): |
402 """ | 634 """ |
403 Retrieve information about your VPN_CONNECTIONs. You can filter results
to | 635 Retrieve information about your VPN_CONNECTIONs. You can filter results
to |
404 return information only about those VPN_CONNECTIONs that match your sear
ch | 636 return information only about those VPN_CONNECTIONs that match your sear
ch |
405 parameters. Otherwise, all VPN_CONNECTIONs associated with your account | 637 parameters. Otherwise, all VPN_CONNECTIONs associated with your account |
406 are returned. | 638 are returned. |
407 | 639 |
408 :type vpn_connection_ids: list | 640 :type vpn_connection_ids: list |
409 :param vpn_connection_ids: A list of strings with the desired VPN_CONNEC
TION ID's | 641 :param vpn_connection_ids: A list of strings with the desired VPN_CONNEC
TION ID's |
410 | 642 |
411 :type filters: list of tuples | 643 :type filters: list of tuples |
412 :param filters: A list of tuples containing filters. Each tuple | 644 :param filters: A list of tuples containing filters. Each tuple |
413 consists of a filter key and a filter value. | 645 consists of a filter key and a filter value. |
414 Possible filter keys are: | 646 Possible filter keys are: |
415 | 647 |
416 - *state*, the state of the VPN_CONNECTION | 648 - *state*, the state of the VPN_CONNECTION |
417 pending,available,deleting,deleted | 649 pending,available,deleting,deleted |
418 - *type*, the type of connection, currently 'ipsec.1' | 650 - *type*, the type of connection, currently 'ipsec.1' |
419 - *customerGatewayId*, the ID of the customer gateway | 651 - *customerGatewayId*, the ID of the customer gateway |
420 associated with the VPN | 652 associated with the VPN |
421 - *vpnGatewayId*, the ID of the VPN gateway associated | 653 - *vpnGatewayId*, the ID of the VPN gateway associated |
422 with the VPN connection | 654 with the VPN connection |
423 | 655 |
424 :rtype: list | 656 :rtype: list |
425 :return: A list of :class:`boto.vpn_connection.vpnconnection.VpnConnecti
on` | 657 :return: A list of :class:`boto.vpn_connection.vpnconnection.VpnConnecti
on` |
426 """ | 658 """ |
427 params = {} | 659 params = {} |
428 if vpn_connection_ids: | 660 if vpn_connection_ids: |
429 self.build_list_params(params, vpn_connection_ids, 'Vpn_ConnectionId
') | 661 self.build_list_params(params, vpn_connection_ids, 'Vpn_ConnectionId
') |
430 if filters: | 662 if filters: |
431 i = 1 | 663 i = 1 |
432 for filter in filters: | 664 for filter in filters: |
433 params[('Filter.%d.Key' % i)] = filter[0] | 665 params[('Filter.%d.Name' % i)] = filter[0] |
434 params[('Filter.%d.Value.1')] = filter[1] | 666 params[('Filter.%d.Value.1')] = filter[1] |
435 i += 1 | 667 i += 1 |
436 return self.get_list('DescribeVpnConnections', params, [('item', VpnConn
ection)]) | 668 return self.get_list('DescribeVpnConnections', params, [('item', VpnConn
ection)]) |
437 | 669 |
438 def create_vpn_connection(self, type, customer_gateway_id, vpn_gateway_id): | 670 def create_vpn_connection(self, type, customer_gateway_id, vpn_gateway_id): |
439 """ | 671 """ |
440 Create a new VPN Connection. | 672 Create a new VPN Connection. |
441 | 673 |
442 :type type: str | 674 :type type: str |
443 :param type: The type of VPN Connection. Currently only 'ipsec.1' | 675 :param type: The type of VPN Connection. Currently only 'ipsec.1' |
444 is supported | 676 is supported |
445 | 677 |
446 :type customer_gateway_id: str | 678 :type customer_gateway_id: str |
447 :param customer_gateway_id: The ID of the customer gateway. | 679 :param customer_gateway_id: The ID of the customer gateway. |
448 | 680 |
449 :type vpn_gateway_id: str | 681 :type vpn_gateway_id: str |
450 :param vpn_gateway_id: The ID of the VPN gateway. | 682 :param vpn_gateway_id: The ID of the VPN gateway. |
451 | 683 |
452 :rtype: The newly created VpnConnection | 684 :rtype: The newly created VpnConnection |
453 :return: A :class:`boto.vpc.vpnconnection.VpnConnection` object | 685 :return: A :class:`boto.vpc.vpnconnection.VpnConnection` object |
454 """ | 686 """ |
455 params = {'Type' : type, | 687 params = {'Type' : type, |
456 'CustomerGatewayId' : customer_gateway_id, | 688 'CustomerGatewayId' : customer_gateway_id, |
457 'VpnGatewayId' : vpn_gateway_id} | 689 'VpnGatewayId' : vpn_gateway_id} |
458 return self.get_object('CreateVpnConnection', params, VpnConnection) | 690 return self.get_object('CreateVpnConnection', params, VpnConnection) |
459 | 691 |
460 def delete_vpn_connection(self, vpn_connection_id): | 692 def delete_vpn_connection(self, vpn_connection_id): |
461 """ | 693 """ |
462 Delete a VPN Connection. | 694 Delete a VPN Connection. |
463 | 695 |
464 :type vpn_connection_id: str | 696 :type vpn_connection_id: str |
465 :param vpn_connection_id: The ID of the vpn_connection to be deleted. | 697 :param vpn_connection_id: The ID of the vpn_connection to be deleted. |
466 | 698 |
467 :rtype: bool | 699 :rtype: bool |
468 :return: True if successful | 700 :return: True if successful |
469 """ | 701 """ |
470 params = {'VpnConnectionId': vpn_connection_id} | 702 params = {'VpnConnectionId': vpn_connection_id} |
471 return self.get_status('DeleteVpnConnection', params) | 703 return self.get_status('DeleteVpnConnection', params) |
472 | 704 |
473 | 705 |
OLD | NEW |