Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: third_party/gsutil/boto/ec2/reservedinstance.py

Issue 12042069: Scripts to download files from google storage based on sha1 sums (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Removed gsutil/tests and gsutil/docs Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
22 from boto.resultset import ResultSet
23 from boto.ec2.ec2object import EC2Object
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 EC2Object.__init__(self, 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):
93 return self.connection.purchase_reserved_instance_offering(self.id, inst ance_count)
94
95
96 class RecurringCharge(object):
97 def __init__(self, connection=None, frequency=None, amount=None):
98 self.frequency = frequency
99 self.amount = amount
100
101 def startElement(self, name, attrs, connection):
102 return None
103
104 def endElement(self, name, value, connection):
105 setattr(self, name, value)
106
107
108 class PricingDetail(object):
109 def __init__(self, connection=None, price=None, count=None):
110 self.price = price
111 self.count = count
112
113 def startElement(self, name, attrs, connection):
114 return None
115
116 def endElement(self, name, value, connection):
117 setattr(self, name, value)
118
119
120 class ReservedInstance(ReservedInstancesOffering):
121
122 def __init__(self, connection=None, id=None, instance_type=None,
123 availability_zone=None, duration=None, fixed_price=None,
124 usage_price=None, description=None,
125 instance_count=None, state=None):
126 ReservedInstancesOffering.__init__(self, connection, id, instance_type,
127 availability_zone, duration, fixed_pr ice,
128 usage_price, description)
129 self.instance_count = instance_count
130 self.state = state
131 self.start = None
132
133 def __repr__(self):
134 return 'ReservedInstance:%s' % self.id
135
136 def endElement(self, name, value, connection):
137 if name == 'reservedInstancesId':
138 self.id = value
139 if name == 'instanceCount':
140 self.instance_count = int(value)
141 elif name == 'state':
142 self.state = value
143 elif name == 'start':
144 self.start = value
145 else:
146 ReservedInstancesOffering.endElement(self, name, value, connection)
147
148
149 class ReservedInstanceListing(EC2Object):
150 def __init__(self, connection=None, listing_id=None, id=None,
151 create_date=None, update_date=None,
152 status=None, status_message=None, client_token=None):
153 self.connection = connection
154 self.listing_id = listing_id
155 self.id = id
156 self.create_date = create_date
157 self.update_date = update_date
158 self.status = status
159 self.status_message = status_message
160 self.client_token = client_token
161
162 def startElement(self, name, attrs, connection):
163 if name == 'instanceCounts':
164 self.instance_counts = ResultSet([('item', InstanceCount)])
165 return self.instance_counts
166 elif name == 'priceSchedules':
167 self.price_schedules = ResultSet([('item', PriceSchedule)])
168 return self.price_schedules
169 return None
170
171 def endElement(self, name, value, connection):
172 if name == 'reservedInstancesListingId':
173 self.listing_id = value
174 elif name == 'reservedInstancesId':
175 self.id = value
176 elif name == 'createDate':
177 self.create_date = value
178 elif name == 'updateDate':
179 self.update_date = value
180 elif name == 'status':
181 self.status = value
182 elif name == 'statusMessage':
183 self.status_message = value
184 else:
185 setattr(self, name, value)
186
187
188 class InstanceCount(object):
189 def __init__(self, connection=None, state=None, instance_count=None):
190 self.state = state
191 self.instance_count = instance_count
192
193 def startElement(self, name, attrs, connection):
194 return None
195
196 def endElement(self, name, value, connection):
197 if name == 'state':
198 self.state = value
199 elif name == 'instanceCount':
200 self.instance_count = int(value)
201 else:
202 setattr(self, name, value)
203
204
205 class PriceSchedule(object):
206 def __init__(self, connection=None, term=None, price=None,
207 currency_code=None, active=None):
208 self.connection = connection
209 self.term = term
210 self.price = price
211 self.currency_code = currency_code
212 self.active = active
213
214 def startElement(self, name, attrs, connection):
215 return None
216
217 def endElement(self, name, value, connection):
218 if name == 'term':
219 self.term = int(value)
220 elif name == 'price':
221 self.price = value
222 elif name == 'currencyCode':
223 self.currency_code = value
224 elif name == 'active':
225 self.active = True if value == 'true' else False
226 else:
227 setattr(self, name, value)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698