comparison env/lib/python3.9/site-packages/boto/vpc/vpc.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 # Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including
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
8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions:
10 #
11 # The above copyright notice and this permission notice shall be included
12 # in all copies or substantial portions of the Software.
13 #
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-
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,
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
20 # IN THE SOFTWARE.
21
22 """
23 Represents a Virtual Private Cloud.
24 """
25
26 from boto.ec2.ec2object import TaggedEC2Object
27
28 class VPC(TaggedEC2Object):
29
30 def __init__(self, connection=None):
31 """
32 Represents a VPC.
33
34 :ivar id: The unique ID of the VPC.
35 :ivar dhcp_options_id: The ID of the set of DHCP options you've associated with the VPC
36 (or default if the default options are associated with the VPC).
37 :ivar state: The current state of the VPC.
38 :ivar cidr_block: The CIDR block for the VPC.
39 :ivar is_default: Indicates whether the VPC is the default VPC.
40 :ivar instance_tenancy: The allowed tenancy of instances launched into the VPC.
41 :ivar classic_link_enabled: Indicates whether ClassicLink is enabled.
42 """
43 super(VPC, self).__init__(connection)
44 self.id = None
45 self.dhcp_options_id = None
46 self.state = None
47 self.cidr_block = None
48 self.is_default = None
49 self.instance_tenancy = None
50 self.classic_link_enabled = None
51
52 def __repr__(self):
53 return 'VPC:%s' % self.id
54
55 def endElement(self, name, value, connection):
56 if name == 'vpcId':
57 self.id = value
58 elif name == 'dhcpOptionsId':
59 self.dhcp_options_id = value
60 elif name == 'state':
61 self.state = value
62 elif name == 'cidrBlock':
63 self.cidr_block = value
64 elif name == 'isDefault':
65 self.is_default = True if value == 'true' else False
66 elif name == 'instanceTenancy':
67 self.instance_tenancy = value
68 elif name == 'classicLinkEnabled':
69 self.classic_link_enabled = value
70 else:
71 setattr(self, name, value)
72
73 def delete(self):
74 return self.connection.delete_vpc(self.id)
75
76 def _update(self, updated):
77 self.__dict__.update(updated.__dict__)
78
79 def _get_status_then_update_vpc(self, get_status_method, validate=False,
80 dry_run=False):
81 vpc_list = get_status_method(
82 [self.id],
83 dry_run=dry_run
84 )
85 if len(vpc_list):
86 updated_vpc = vpc_list[0]
87 self._update(updated_vpc)
88 elif validate:
89 raise ValueError('%s is not a valid VPC ID' % (self.id,))
90
91 def update(self, validate=False, dry_run=False):
92 self._get_status_then_update_vpc(
93 self.connection.get_all_vpcs,
94 validate=validate,
95 dry_run=dry_run
96 )
97 return self.state
98
99 def update_classic_link_enabled(self, validate=False, dry_run=False):
100 """
101 Updates instance's classic_link_enabled attribute
102
103 :rtype: bool
104 :return: self.classic_link_enabled after update has occurred.
105 """
106 self._get_status_then_update_vpc(
107 self.connection.get_all_classic_link_vpcs,
108 validate=validate,
109 dry_run=dry_run
110 )
111 return self.classic_link_enabled
112
113 def disable_classic_link(self, dry_run=False):
114 """
115 Disables ClassicLink for a VPC. You cannot disable ClassicLink for a
116 VPC that has EC2-Classic instances linked to it.
117
118 :type dry_run: bool
119 :param dry_run: Set to True if the operation should not actually run.
120
121 :rtype: bool
122 :return: True if successful
123 """
124 return self.connection.disable_vpc_classic_link(self.id,
125 dry_run=dry_run)
126
127 def enable_classic_link(self, dry_run=False):
128 """
129 Enables a VPC for ClassicLink. You can then link EC2-Classic instances
130 to your ClassicLink-enabled VPC to allow communication over private IP
131 addresses. You cannot enable your VPC for ClassicLink if any of your
132 VPC's route tables have existing routes for address ranges within the
133 10.0.0.0/8 IP address range, excluding local routes for VPCs in the
134 10.0.0.0/16 and 10.1.0.0/16 IP address ranges.
135
136 :type dry_run: bool
137 :param dry_run: Set to True if the operation should not actually run.
138
139 :rtype: bool
140 :return: True if successful
141 """
142 return self.connection.enable_vpc_classic_link(self.id,
143 dry_run=dry_run)
144
145 def attach_classic_instance(self, instance_id, groups, dry_run=False):
146 """
147 Links an EC2-Classic instance to a ClassicLink-enabled VPC through one
148 or more of the VPC's security groups. You cannot link an EC2-Classic
149 instance to more than one VPC at a time. You can only link an instance
150 that's in the running state. An instance is automatically unlinked from
151 a VPC when it's stopped. You can link it to the VPC again when you
152 restart it.
153
154 After you've linked an instance, you cannot change the VPC security
155 groups that are associated with it. To change the security groups, you
156 must first unlink the instance, and then link it again.
157
158 Linking your instance to a VPC is sometimes referred to as attaching
159 your instance.
160
161 :type intance_id: str
162 :param instance_is: The ID of a ClassicLink-enabled VPC.
163
164 :tye groups: list
165 :param groups: The ID of one or more of the VPC's security groups.
166 You cannot specify security groups from a different VPC. The
167 members of the list can be
168 :class:`boto.ec2.securitygroup.SecurityGroup` objects or
169 strings of the id's of the security groups.
170
171 :type dry_run: bool
172 :param dry_run: Set to True if the operation should not actually run.
173
174 :rtype: bool
175 :return: True if successful
176 """
177 return self.connection.attach_classic_link_vpc(
178 vpc_id=self.id,
179 instance_id=instance_id,
180 groups=groups,
181 dry_run=dry_run
182 )
183
184 def detach_classic_instance(self, instance_id, dry_run=False):
185 """
186 Unlinks a linked EC2-Classic instance from a VPC. After the instance
187 has been unlinked, the VPC security groups are no longer associated
188 with it. An instance is automatically unlinked from a VPC when
189 it's stopped.
190
191 :type intance_id: str
192 :param instance_is: The ID of the VPC to which the instance is linked.
193
194 :type dry_run: bool
195 :param dry_run: Set to True if the operation should not actually run.
196
197 :rtype: bool
198 :return: True if successful
199 """
200 return self.connection.detach_classic_link_vpc(
201 vpc_id=self.id,
202 instance_id=instance_id,
203 dry_run=dry_run
204 )