comparison env/lib/python3.9/site-packages/boto/ec2/reservedinstance.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) 2006-2009 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 from boto.resultset import ResultSet
22 from boto.ec2.ec2object import EC2Object
23 from boto.utils import parse_ts
24
25
26 class ReservedInstancesOffering(EC2Object):
27
28 def __init__(self, connection=None, id=None, instance_type=None,
29 availability_zone=None, duration=None, fixed_price=None,
30 usage_price=None, description=None, instance_tenancy=None,
31 currency_code=None, offering_type=None,
32 recurring_charges=None, pricing_details=None):
33 super(ReservedInstancesOffering, self).__init__(connection)
34 self.id = id
35 self.instance_type = instance_type
36 self.availability_zone = availability_zone
37 self.duration = duration
38 self.fixed_price = fixed_price
39 self.usage_price = usage_price
40 self.description = description
41 self.instance_tenancy = instance_tenancy
42 self.currency_code = currency_code
43 self.offering_type = offering_type
44 self.recurring_charges = recurring_charges
45 self.pricing_details = pricing_details
46
47 def __repr__(self):
48 return 'ReservedInstanceOffering:%s' % self.id
49
50 def startElement(self, name, attrs, connection):
51 if name == 'recurringCharges':
52 self.recurring_charges = ResultSet([('item', RecurringCharge)])
53 return self.recurring_charges
54 elif name == 'pricingDetailsSet':
55 self.pricing_details = ResultSet([('item', PricingDetail)])
56 return self.pricing_details
57 return None
58
59 def endElement(self, name, value, connection):
60 if name == 'reservedInstancesOfferingId':
61 self.id = value
62 elif name == 'instanceType':
63 self.instance_type = value
64 elif name == 'availabilityZone':
65 self.availability_zone = value
66 elif name == 'duration':
67 self.duration = int(value)
68 elif name == 'fixedPrice':
69 self.fixed_price = value
70 elif name == 'usagePrice':
71 self.usage_price = value
72 elif name == 'productDescription':
73 self.description = value
74 elif name == 'instanceTenancy':
75 self.instance_tenancy = value
76 elif name == 'currencyCode':
77 self.currency_code = value
78 elif name == 'offeringType':
79 self.offering_type = value
80 elif name == 'marketplace':
81 self.marketplace = True if value == 'true' else False
82
83 def describe(self):
84 print('ID=%s' % self.id)
85 print('\tInstance Type=%s' % self.instance_type)
86 print('\tZone=%s' % self.availability_zone)
87 print('\tDuration=%s' % self.duration)
88 print('\tFixed Price=%s' % self.fixed_price)
89 print('\tUsage Price=%s' % self.usage_price)
90 print('\tDescription=%s' % self.description)
91
92 def purchase(self, instance_count=1, dry_run=False):
93 return self.connection.purchase_reserved_instance_offering(
94 self.id,
95 instance_count,
96 dry_run=dry_run
97 )
98
99
100 class RecurringCharge(object):
101 def __init__(self, connection=None, frequency=None, amount=None):
102 self.frequency = frequency
103 self.amount = amount
104
105 def startElement(self, name, attrs, connection):
106 return None
107
108 def endElement(self, name, value, connection):
109 setattr(self, name, value)
110
111
112 class PricingDetail(object):
113 def __init__(self, connection=None, price=None, count=None):
114 self.price = price
115 self.count = count
116
117 def startElement(self, name, attrs, connection):
118 return None
119
120 def endElement(self, name, value, connection):
121 setattr(self, name, value)
122
123
124 class ReservedInstance(ReservedInstancesOffering):
125
126 def __init__(self, connection=None, id=None, instance_type=None,
127 availability_zone=None, duration=None, fixed_price=None,
128 usage_price=None, description=None,
129 instance_count=None, state=None):
130 super(ReservedInstance, self).__init__(connection, id, instance_type,
131 availability_zone, duration,
132 fixed_price, usage_price,
133 description)
134 self.instance_count = instance_count
135 self.state = state
136 self.start = None
137 self.end = None
138
139 def __repr__(self):
140 return 'ReservedInstance:%s' % self.id
141
142 def endElement(self, name, value, connection):
143 if name == 'reservedInstancesId':
144 self.id = value
145 if name == 'instanceCount':
146 self.instance_count = int(value)
147 elif name == 'state':
148 self.state = value
149 elif name == 'start':
150 self.start = value
151 elif name == 'end':
152 self.end = value
153 else:
154 super(ReservedInstance, self).endElement(name, value, connection)
155
156
157 class ReservedInstanceListing(EC2Object):
158 def __init__(self, connection=None, listing_id=None, id=None,
159 create_date=None, update_date=None,
160 status=None, status_message=None, client_token=None):
161 self.connection = connection
162 self.listing_id = listing_id
163 self.id = id
164 self.create_date = create_date
165 self.update_date = update_date
166 self.status = status
167 self.status_message = status_message
168 self.client_token = client_token
169
170 def startElement(self, name, attrs, connection):
171 if name == 'instanceCounts':
172 self.instance_counts = ResultSet([('item', InstanceCount)])
173 return self.instance_counts
174 elif name == 'priceSchedules':
175 self.price_schedules = ResultSet([('item', PriceSchedule)])
176 return self.price_schedules
177 return None
178
179 def endElement(self, name, value, connection):
180 if name == 'reservedInstancesListingId':
181 self.listing_id = value
182 elif name == 'reservedInstancesId':
183 self.id = value
184 elif name == 'createDate':
185 self.create_date = value
186 elif name == 'updateDate':
187 self.update_date = value
188 elif name == 'status':
189 self.status = value
190 elif name == 'statusMessage':
191 self.status_message = value
192 else:
193 setattr(self, name, value)
194
195
196 class InstanceCount(object):
197 def __init__(self, connection=None, state=None, instance_count=None):
198 self.state = state
199 self.instance_count = instance_count
200
201 def startElement(self, name, attrs, connection):
202 return None
203
204 def endElement(self, name, value, connection):
205 if name == 'state':
206 self.state = value
207 elif name == 'instanceCount':
208 self.instance_count = int(value)
209 else:
210 setattr(self, name, value)
211
212
213 class PriceSchedule(object):
214 def __init__(self, connection=None, term=None, price=None,
215 currency_code=None, active=None):
216 self.connection = connection
217 self.term = term
218 self.price = price
219 self.currency_code = currency_code
220 self.active = active
221
222 def startElement(self, name, attrs, connection):
223 return None
224
225 def endElement(self, name, value, connection):
226 if name == 'term':
227 self.term = int(value)
228 elif name == 'price':
229 self.price = value
230 elif name == 'currencyCode':
231 self.currency_code = value
232 elif name == 'active':
233 self.active = True if value == 'true' else False
234 else:
235 setattr(self, name, value)
236
237
238 class ReservedInstancesConfiguration(object):
239 def __init__(self, connection=None, availability_zone=None, platform=None,
240 instance_count=None, instance_type=None):
241 self.connection = connection
242 self.availability_zone = availability_zone
243 self.platform = platform
244 self.instance_count = instance_count
245 self.instance_type = instance_type
246
247 def startElement(self, name, attrs, connection):
248 return None
249
250 def endElement(self, name, value, connection):
251 if name == 'availabilityZone':
252 self.availability_zone = value
253 elif name == 'platform':
254 self.platform = value
255 elif name == 'instanceCount':
256 self.instance_count = int(value)
257 elif name == 'instanceType':
258 self.instance_type = value
259 else:
260 setattr(self, name, value)
261
262
263 class ModifyReservedInstancesResult(object):
264 def __init__(self, connection=None, modification_id=None):
265 self.connection = connection
266 self.modification_id = modification_id
267
268 def startElement(self, name, attrs, connection):
269 return None
270
271 def endElement(self, name, value, connection):
272 if name == 'reservedInstancesModificationId':
273 self.modification_id = value
274 else:
275 setattr(self, name, value)
276
277
278 class ModificationResult(object):
279 def __init__(self, connection=None, modification_id=None,
280 availability_zone=None, platform=None, instance_count=None,
281 instance_type=None):
282 self.connection = connection
283 self.modification_id = modification_id
284 self.availability_zone = availability_zone
285 self.platform = platform
286 self.instance_count = instance_count
287 self.instance_type = instance_type
288
289 def startElement(self, name, attrs, connection):
290 return None
291
292 def endElement(self, name, value, connection):
293 if name == 'reservedInstancesModificationId':
294 self.modification_id = value
295 elif name == 'availabilityZone':
296 self.availability_zone = value
297 elif name == 'platform':
298 self.platform = value
299 elif name == 'instanceCount':
300 self.instance_count = int(value)
301 elif name == 'instanceType':
302 self.instance_type = value
303 else:
304 setattr(self, name, value)
305
306
307 class ReservedInstancesModification(object):
308 def __init__(self, connection=None, modification_id=None,
309 reserved_instances=None, modification_results=None,
310 create_date=None, update_date=None, effective_date=None,
311 status=None, status_message=None, client_token=None):
312 self.connection = connection
313 self.modification_id = modification_id
314 self.reserved_instances = reserved_instances
315 self.modification_results = modification_results
316 self.create_date = create_date
317 self.update_date = update_date
318 self.effective_date = effective_date
319 self.status = status
320 self.status_message = status_message
321 self.client_token = client_token
322
323 def startElement(self, name, attrs, connection):
324 if name == 'reservedInstancesSet':
325 self.reserved_instances = ResultSet([
326 ('item', ReservedInstance)
327 ])
328 return self.reserved_instances
329 elif name == 'modificationResultSet':
330 self.modification_results = ResultSet([
331 ('item', ModificationResult)
332 ])
333 return self.modification_results
334 return None
335
336 def endElement(self, name, value, connection):
337 if name == 'reservedInstancesModificationId':
338 self.modification_id = value
339 elif name == 'createDate':
340 self.create_date = parse_ts(value)
341 elif name == 'updateDate':
342 self.update_date = parse_ts(value)
343 elif name == 'effectiveDate':
344 self.effective_date = parse_ts(value)
345 elif name == 'status':
346 self.status = value
347 elif name == 'statusMessage':
348 self.status_message = value
349 elif name == 'clientToken':
350 self.client_token = value
351 else:
352 setattr(self, name, value)