Merge lp:~oubiwann/txaws/422066-fix-optional-params into lp:~txawsteam/txaws/trunk
- 422066-fix-optional-params
- Merge into trunk
Proposed by
Duncan McGreggor
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | not available | ||||
Proposed branch: | lp:~oubiwann/txaws/422066-fix-optional-params | ||||
Merge into: | lp:~txawsteam/txaws/trunk | ||||
Diff against target: | None lines | ||||
To merge this branch: | bzr merge lp:~oubiwann/txaws/422066-fix-optional-params | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Robert Collins (community) | Approve | ||
Review via email: mp+10941@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Duncan McGreggor (oubiwann) wrote : | # |
Revision history for this message
Robert Collins (lifeless) wrote : | # |
review +1
I think we should have kept the XML namespace support - its not correct
without it.
-Rob
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'txaws/ec2/client.py' |
2 | --- txaws/ec2/client.py 2009-08-31 07:52:14 +0000 |
3 | +++ txaws/ec2/client.py 2009-08-31 19:25:50 +0000 |
4 | @@ -1,4 +1,7 @@ |
5 | +# -*- coding: utf-8 -*- |
6 | # Copyright (C) 2009 Robert Collins <robertc@robertcollins.net> |
7 | +# Copyright (C) 2009 Duncan McGreggor <duncan@canonical.com> |
8 | +# Copyright (C) 2009 Thomas Hervé <thomas@canonical.com> |
9 | # Licenced under the txaws licence available at /LICENSE in the txaws source. |
10 | |
11 | """EC2 client support.""" |
12 | @@ -8,6 +11,7 @@ |
13 | |
14 | from twisted.web.client import getPage |
15 | |
16 | +from txaws import version |
17 | from txaws.credentials import AWSCredentials |
18 | from txaws.service import AWSServiceEndpoint |
19 | from txaws.util import iso8601time, XML |
20 | @@ -140,6 +144,14 @@ |
21 | return the object that most developers and their code will be |
22 | interested in: the instances. In instances reservation is available on |
23 | the instance object. |
24 | + |
25 | + The following instance attributes are optional: |
26 | + * ami_launch_index |
27 | + * key_name |
28 | + * kernel_id |
29 | + * product_codes |
30 | + * ramdisk_id |
31 | + * reason |
32 | """ |
33 | root = XML(xml_bytes) |
34 | results = [] |
35 | @@ -171,9 +183,10 @@ |
36 | placement = instance_data.find("placement").findtext( |
37 | "availabilityZone") |
38 | products = [] |
39 | - for product_data in instance_data.find("productCodesSet"): |
40 | - product_code = product_data.findtext("productCode") |
41 | - products.append(product_code) |
42 | + product_codes = instance_data.find("productCodes") |
43 | + if product_codes: |
44 | + for product_data in instance_data.find("productCodes"): |
45 | + products.append(product_data.text) |
46 | kernel_id = instance_data.findtext("kernelId") |
47 | ramdisk_id = instance_data.findtext("ramdiskId") |
48 | instance = Instance( |
49 | @@ -362,15 +375,15 @@ |
50 | """A query that may be submitted to EC2.""" |
51 | |
52 | def __init__(self, action, creds, endpoint, other_params=None, |
53 | - time_tuple=None): |
54 | + time_tuple=None, api_version=None): |
55 | """Create a Query to submit to EC2.""" |
56 | self.creds = creds |
57 | self.endpoint = endpoint |
58 | - # Require params (2008-12-01 API): |
59 | - # Version, SignatureVersion, SignatureMethod, Action, AWSAccessKeyId, |
60 | - # Timestamp || Expires, Signature, |
61 | + # Currently, txAWS only supports version 2008-12-01 |
62 | + if api_version is None: |
63 | + api_version = version.aws_api |
64 | self.params = { |
65 | - 'Version': '2008-12-01', |
66 | + 'Version': api_version, |
67 | 'SignatureVersion': '2', |
68 | 'SignatureMethod': 'HmacSHA1', |
69 | 'Action': action, |
70 | |
71 | === modified file 'txaws/ec2/tests/test_client.py' |
72 | --- txaws/ec2/tests/test_client.py 2009-08-31 07:52:14 +0000 |
73 | +++ txaws/ec2/tests/test_client.py 2009-08-31 20:07:58 +0000 |
74 | @@ -1,4 +1,7 @@ |
75 | +# -*- coding: utf-8 -*- |
76 | # Copyright (C) 2009 Robert Collins <robertc@robertcollins.net> |
77 | +# Copyright (C) 2009 Duncan McGreggor <duncan@canonical.com> |
78 | +# Copyright (C) 2009 Thomas Hervé <thomas@canonical.com> |
79 | # Licenced under the txaws licence available at /LICENSE in the txaws source. |
80 | |
81 | from datetime import datetime |
82 | @@ -9,173 +12,10 @@ |
83 | from txaws.credentials import AWSCredentials |
84 | from txaws.ec2 import client |
85 | from txaws.service import AWSServiceEndpoint, EC2_ENDPOINT_US |
86 | +from txaws.testing import payload |
87 | from txaws.testing.base import TXAWSTestCase |
88 | |
89 | |
90 | -sample_describe_instances_result = """<?xml version="1.0"?> |
91 | -<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01/"> |
92 | - <requestId>52b4c730-f29f-498d-94c1-91efb75994cc</requestId> |
93 | - <reservationSet> |
94 | - <item> |
95 | - <reservationId>r-cf24b1a6</reservationId> |
96 | - <ownerId>123456789012</ownerId> |
97 | - <groupSet> |
98 | - <item> |
99 | - <groupId>default</groupId> |
100 | - </item> |
101 | - </groupSet> |
102 | - <instancesSet> |
103 | - <item> |
104 | - <instanceId>i-abcdef01</instanceId> |
105 | - <imageId>ami-12345678</imageId> |
106 | - <instanceState> |
107 | - <code>16</code> |
108 | - <name>running</name> |
109 | - </instanceState> |
110 | - <privateDnsName>domU-12-31-39-03-15-11.compute-1.internal</privateDnsName> |
111 | - <dnsName>ec2-75-101-245-65.compute-1.amazonaws.com</dnsName> |
112 | - <reason/> |
113 | - <keyName>keyname</keyName> |
114 | - <amiLaunchIndex>0</amiLaunchIndex> |
115 | - <productCodesSet> |
116 | - <item> |
117 | - <productCode>774F4FF8</productCode> |
118 | - </item> |
119 | - </productCodesSet> |
120 | - |
121 | - <instanceType>c1.xlarge</instanceType> |
122 | - <launchTime>2009-04-27T02:23:18.000Z</launchTime> |
123 | - <placement> |
124 | - <availabilityZone>us-east-1c</availabilityZone> |
125 | - </placement> |
126 | - <kernelId>aki-b51cf9dc</kernelId> |
127 | - <ramdiskId>ari-b31cf9da</ramdiskId> |
128 | - </item> |
129 | - </instancesSet> |
130 | - </item> |
131 | - </reservationSet> |
132 | -</DescribeInstancesResponse> |
133 | -""" |
134 | - |
135 | - |
136 | -sample_terminate_instances_result = """<?xml version="1.0"?> |
137 | -<TerminateInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01/"> |
138 | - <instancesSet> |
139 | - <item> |
140 | - <instanceId>i-1234</instanceId> |
141 | - <shutdownState> |
142 | - <code>32</code> |
143 | - <name>shutting-down</name> |
144 | - </shutdownState> |
145 | - <previousState> |
146 | - <code>16</code> |
147 | - <name>running</name> |
148 | - </previousState> |
149 | - </item> |
150 | - <item> |
151 | - <instanceId>i-5678</instanceId> |
152 | - <shutdownState> |
153 | - <code>32</code> |
154 | - <name>shutting-down</name> |
155 | - </shutdownState> |
156 | - <previousState> |
157 | - <code>32</code> |
158 | - <name>shutting-down</name> |
159 | - </previousState> |
160 | - </item> |
161 | - </instancesSet> |
162 | -</TerminateInstancesResponse> |
163 | -""" |
164 | - |
165 | - |
166 | -sample_describe_volumes_result = """<?xml version="1.0"?> |
167 | -<DescribeVolumesResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01/"> |
168 | - <volumeSet> |
169 | - <item> |
170 | - <volumeId>vol-4282672b</volumeId> |
171 | - <size>800</size> |
172 | - <status>in-use</status> |
173 | - <createTime>2008-05-07T11:51:50.000Z</createTime> |
174 | - <attachmentSet> |
175 | - <item> |
176 | - <volumeId>vol-4282672b</volumeId> |
177 | - <instanceId>i-6058a509</instanceId> |
178 | - <size>800</size> |
179 | - <snapshotId>snap-12345678</snapshotId> |
180 | - <availabilityZone>us-east-1a</availabilityZone> |
181 | - <status>attached</status> |
182 | - <attachTime>2008-05-07T12:51:50.000Z</attachTime> |
183 | - </item> |
184 | - </attachmentSet> |
185 | - </item> |
186 | - </volumeSet> |
187 | -</DescribeVolumesResponse> |
188 | -""" |
189 | - |
190 | - |
191 | -sample_describe_snapshots_result = """<?xml version="1.0"?> |
192 | -<DescribeSnapshotsResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
193 | - <snapshotSet> |
194 | - <item> |
195 | - <snapshotId>snap-78a54011</snapshotId> |
196 | - <volumeId>vol-4d826724</volumeId> |
197 | - <status>pending</status> |
198 | - <startTime>2008-05-07T12:51:50.000Z</startTime> |
199 | - <progress>80%</progress> |
200 | - </item> |
201 | - </snapshotSet> |
202 | -</DescribeSnapshotsResponse> |
203 | -""" |
204 | - |
205 | - |
206 | -sample_create_volume_result = """<?xml version="1.0"?> |
207 | -<CreateVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
208 | - <volumeId>vol-4d826724</volumeId> |
209 | - <size>800</size> |
210 | - <status>creating</status> |
211 | - <createTime>2008-05-07T11:51:50.000Z</createTime> |
212 | - <availabilityZone>us-east-1a</availabilityZone> |
213 | - <snapshotId></snapshotId> |
214 | -</CreateVolumeResponse> |
215 | -""" |
216 | - |
217 | - |
218 | -sample_delete_volume_result = """<?xml version="1.0"?> |
219 | -<DeleteVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
220 | - <return>true</return> |
221 | -</DeleteVolumeResponse> |
222 | -""" |
223 | - |
224 | - |
225 | -sample_create_snapshot_result = """<?xml version="1.0"?> |
226 | -<CreateSnapshotResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
227 | - <snapshotId>snap-78a54011</snapshotId> |
228 | - <volumeId>vol-4d826724</volumeId> |
229 | - <status>pending</status> |
230 | - <startTime>2008-05-07T12:51:50.000Z</startTime> |
231 | - <progress></progress> |
232 | -</CreateSnapshotResponse> |
233 | -""" |
234 | - |
235 | - |
236 | -sample_delete_snapshot_result = """<?xml version="1.0"?> |
237 | -<DeleteSnapshotResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
238 | - <return>true</return> |
239 | -</DeleteSnapshotResponse> |
240 | -""" |
241 | - |
242 | - |
243 | -sample_attach_volume_result = """<?xml version="1.0"?> |
244 | -<AttachVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2008-12-01"> |
245 | - <volumeId>vol-4d826724</volumeId> |
246 | - <instanceId>i-6058a509</instanceId> |
247 | - <device>/dev/sdh</device> |
248 | - <status>attaching</status> |
249 | - <attachTime>2008-05-07T11:51:50.000Z</attachTime> |
250 | -</AttachVolumeResponse> |
251 | -""" |
252 | - |
253 | - |
254 | class ReservationTestCase(TXAWSTestCase): |
255 | |
256 | def test_reservation_creation(self): |
257 | @@ -251,10 +91,39 @@ |
258 | self.assertEquals(instance.kernel_id, "aki-b51cf9dc") |
259 | self.assertEquals(instance.ramdisk_id, "ari-b31cf9da") |
260 | |
261 | + def check_parsed_instances_required(self, results): |
262 | + instance = results[0] |
263 | + # check reservations |
264 | + reservation = instance.reservation |
265 | + self.assertEquals(reservation.reservation_id, "r-cf24b1a6") |
266 | + self.assertEquals(reservation.owner_id, "123456789012") |
267 | + # check groups |
268 | + group = reservation.groups[0] |
269 | + self.assertEquals(group, "default") |
270 | + # check instance |
271 | + self.assertEquals(instance.instance_id, "i-abcdef01") |
272 | + self.assertEquals(instance.instance_state, "running") |
273 | + self.assertEquals(instance.instance_type, "c1.xlarge") |
274 | + self.assertEquals(instance.image_id, "ami-12345678") |
275 | + self.assertEquals( |
276 | + instance.private_dns_name, |
277 | + "domU-12-31-39-03-15-11.compute-1.internal") |
278 | + self.assertEquals( |
279 | + instance.dns_name, |
280 | + "ec2-75-101-245-65.compute-1.amazonaws.com") |
281 | + self.assertEquals(instance.key_name, None) |
282 | + self.assertEquals(instance.ami_launch_index, None) |
283 | + self.assertEquals(instance.launch_time, "2009-04-27T02:23:18.000Z") |
284 | + self.assertEquals(instance.placement, "us-east-1c") |
285 | + self.assertEquals(instance.product_codes, []) |
286 | + self.assertEquals(instance.kernel_id, None) |
287 | + self.assertEquals(instance.ramdisk_id, None) |
288 | + |
289 | def test_parse_reservation(self): |
290 | creds = AWSCredentials("foo", "bar") |
291 | ec2 = client.EC2Client(creds=creds) |
292 | - results = ec2._parse_instances(sample_describe_instances_result) |
293 | + results = ec2._parse_instances( |
294 | + payload.sample_describe_instances_result) |
295 | self.check_parsed_instances(results) |
296 | |
297 | def test_describe_instances(self): |
298 | @@ -264,13 +133,28 @@ |
299 | self.assertEqual(creds.access_key, "foo") |
300 | self.assertEqual(creds.secret_key, "bar") |
301 | def submit(self): |
302 | - return succeed(sample_describe_instances_result) |
303 | + return succeed(payload.sample_describe_instances_result) |
304 | creds = AWSCredentials("foo", "bar") |
305 | ec2 = client.EC2Client(creds, query_factory=StubQuery) |
306 | d = ec2.describe_instances() |
307 | d.addCallback(self.check_parsed_instances) |
308 | return d |
309 | |
310 | + def test_describe_instances_required(self): |
311 | + class StubQuery(object): |
312 | + def __init__(stub, action, creds, endpoint): |
313 | + self.assertEqual(action, 'DescribeInstances') |
314 | + self.assertEqual(creds.access_key, "foo") |
315 | + self.assertEqual(creds.secret_key, "bar") |
316 | + def submit(self): |
317 | + return succeed( |
318 | + payload.sample_required_describe_instances_result) |
319 | + creds = AWSCredentials("foo", "bar") |
320 | + ec2 = client.EC2Client(creds, query_factory=StubQuery) |
321 | + d = ec2.describe_instances() |
322 | + d.addCallback(self.check_parsed_instances_required) |
323 | + return d |
324 | + |
325 | def test_terminate_instances(self): |
326 | class StubQuery(object): |
327 | def __init__(stub, action, creds, endpoint, other_params): |
328 | @@ -281,7 +165,7 @@ |
329 | {'InstanceId.1': 'i-1234', 'InstanceId.2': 'i-5678'}, |
330 | other_params) |
331 | def submit(self): |
332 | - return succeed(sample_terminate_instances_result) |
333 | + return succeed(payload.sample_terminate_instances_result) |
334 | creds = AWSCredentials("foo", "bar") |
335 | endpoint = AWSServiceEndpoint(uri=EC2_ENDPOINT_US) |
336 | ec2 = client.EC2Client(creds=creds, endpoint=endpoint, |
337 | @@ -414,7 +298,7 @@ |
338 | self.assertEquals(params, {}) |
339 | |
340 | def submit(self): |
341 | - return succeed(sample_describe_volumes_result) |
342 | + return succeed(payload.sample_describe_volumes_result) |
343 | |
344 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
345 | d = ec2.describe_volumes() |
346 | @@ -432,7 +316,7 @@ |
347 | {"VolumeId.1": "vol-4282672b"}) |
348 | |
349 | def submit(self): |
350 | - return succeed(sample_describe_volumes_result) |
351 | + return succeed(payload.sample_describe_volumes_result) |
352 | |
353 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
354 | d = ec2.describe_volumes("vol-4282672b") |
355 | @@ -458,7 +342,7 @@ |
356 | self.assertEquals(params, {}) |
357 | |
358 | def submit(self): |
359 | - return succeed(sample_describe_snapshots_result) |
360 | + return succeed(payload.sample_describe_snapshots_result) |
361 | |
362 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
363 | d = ec2.describe_snapshots() |
364 | @@ -476,7 +360,7 @@ |
365 | {"SnapshotId.1": "snap-78a54011"}) |
366 | |
367 | def submit(self): |
368 | - return succeed(sample_describe_snapshots_result) |
369 | + return succeed(payload.sample_describe_snapshots_result) |
370 | |
371 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
372 | d = ec2.describe_snapshots("snap-78a54011") |
373 | @@ -494,7 +378,7 @@ |
374 | params) |
375 | |
376 | def submit(self): |
377 | - return succeed(sample_create_volume_result) |
378 | + return succeed(payload.sample_create_volume_result) |
379 | |
380 | def check_parsed_volume(volume): |
381 | self.assertEquals(volume.id, "vol-4d826724") |
382 | @@ -519,7 +403,7 @@ |
383 | params) |
384 | |
385 | def submit(self): |
386 | - return succeed(sample_create_volume_result) |
387 | + return succeed(payload.sample_create_volume_result) |
388 | |
389 | def check_parsed_volume(volume): |
390 | self.assertEquals(volume.id, "vol-4d826724") |
391 | @@ -558,7 +442,7 @@ |
392 | params) |
393 | |
394 | def submit(self): |
395 | - return succeed(sample_delete_volume_result) |
396 | + return succeed(payload.sample_delete_volume_result) |
397 | |
398 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
399 | d = ec2.delete_volume("vol-4282672b") |
400 | @@ -576,7 +460,7 @@ |
401 | params) |
402 | |
403 | def submit(self): |
404 | - return succeed(sample_create_snapshot_result) |
405 | + return succeed(payload.sample_create_snapshot_result) |
406 | |
407 | def check_parsed_snapshot(snapshot): |
408 | self.assertEquals(snapshot.id, "snap-78a54011") |
409 | @@ -602,7 +486,7 @@ |
410 | params) |
411 | |
412 | def submit(self): |
413 | - return succeed(sample_delete_snapshot_result) |
414 | + return succeed(payload.sample_delete_snapshot_result) |
415 | |
416 | ec2 = client.EC2Client(creds="foo", query_factory=StubQuery) |
417 | d = ec2.delete_snapshot("snap-78a54011") |
418 | @@ -621,7 +505,7 @@ |
419 | params) |
420 | |
421 | def submit(self): |
422 | - return succeed(sample_attach_volume_result) |
423 | + return succeed(payload.sample_attach_volume_result) |
424 | |
425 | def check_parsed_response(response): |
426 | self.assertEquals( |
427 | |
428 | === added file 'txaws/testing/payload.py' |
429 | --- txaws/testing/payload.py 1970-01-01 00:00:00 +0000 |
430 | +++ txaws/testing/payload.py 2009-08-31 20:07:58 +0000 |
431 | @@ -0,0 +1,198 @@ |
432 | +from txaws.version import aws_api |
433 | + |
434 | + |
435 | +sample_required_describe_instances_result = """<?xml version="1.0"?> |
436 | +<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
437 | + <requestId>52b4c730-f29f-498d-94c1-91efb75994cc</requestId> |
438 | + <reservationSet> |
439 | + <item> |
440 | + <reservationId>r-cf24b1a6</reservationId> |
441 | + <ownerId>123456789012</ownerId> |
442 | + <groupSet> |
443 | + <item> |
444 | + <groupId>default</groupId> |
445 | + </item> |
446 | + </groupSet> |
447 | + <instancesSet> |
448 | + <item> |
449 | + <instanceId>i-abcdef01</instanceId> |
450 | + <imageId>ami-12345678</imageId> |
451 | + <instanceState> |
452 | + <code>16</code> |
453 | + <name>running</name> |
454 | + </instanceState> |
455 | + <privateDnsName>domU-12-31-39-03-15-11.compute-1.internal</privateDnsName> |
456 | + <dnsName>ec2-75-101-245-65.compute-1.amazonaws.com</dnsName> |
457 | + <instanceType>c1.xlarge</instanceType> |
458 | + <launchTime>2009-04-27T02:23:18.000Z</launchTime> |
459 | + <placement> |
460 | + <availabilityZone>us-east-1c</availabilityZone> |
461 | + </placement> |
462 | + </item> |
463 | + </instancesSet> |
464 | + </item> |
465 | + </reservationSet> |
466 | +</DescribeInstancesResponse> |
467 | +""" |
468 | + |
469 | + |
470 | +sample_describe_instances_result = """<?xml version="1.0"?> |
471 | +<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
472 | + <requestId>52b4c730-f29f-498d-94c1-91efb75994cc</requestId> |
473 | + <reservationSet> |
474 | + <item> |
475 | + <reservationId>r-cf24b1a6</reservationId> |
476 | + <ownerId>123456789012</ownerId> |
477 | + <groupSet> |
478 | + <item> |
479 | + <groupId>default</groupId> |
480 | + </item> |
481 | + </groupSet> |
482 | + <instancesSet> |
483 | + <item> |
484 | + <instanceId>i-abcdef01</instanceId> |
485 | + <imageId>ami-12345678</imageId> |
486 | + <instanceState> |
487 | + <code>16</code> |
488 | + <name>running</name> |
489 | + </instanceState> |
490 | + <privateDnsName>domU-12-31-39-03-15-11.compute-1.internal</privateDnsName> |
491 | + <dnsName>ec2-75-101-245-65.compute-1.amazonaws.com</dnsName> |
492 | + <reason/> |
493 | + <keyName>keyname</keyName> |
494 | + <amiLaunchIndex>0</amiLaunchIndex> |
495 | + <productCodes> |
496 | + <productCode>774F4FF8</productCode> |
497 | + </productCodes> |
498 | + |
499 | + <instanceType>c1.xlarge</instanceType> |
500 | + <launchTime>2009-04-27T02:23:18.000Z</launchTime> |
501 | + <placement> |
502 | + <availabilityZone>us-east-1c</availabilityZone> |
503 | + </placement> |
504 | + <kernelId>aki-b51cf9dc</kernelId> |
505 | + <ramdiskId>ari-b31cf9da</ramdiskId> |
506 | + </item> |
507 | + </instancesSet> |
508 | + </item> |
509 | + </reservationSet> |
510 | +</DescribeInstancesResponse> |
511 | +""" |
512 | + |
513 | + |
514 | +sample_terminate_instances_result = """<?xml version="1.0"?> |
515 | +<TerminateInstancesResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
516 | + <instancesSet> |
517 | + <item> |
518 | + <instanceId>i-1234</instanceId> |
519 | + <shutdownState> |
520 | + <code>32</code> |
521 | + <name>shutting-down</name> |
522 | + </shutdownState> |
523 | + <previousState> |
524 | + <code>16</code> |
525 | + <name>running</name> |
526 | + </previousState> |
527 | + </item> |
528 | + <item> |
529 | + <instanceId>i-5678</instanceId> |
530 | + <shutdownState> |
531 | + <code>32</code> |
532 | + <name>shutting-down</name> |
533 | + </shutdownState> |
534 | + <previousState> |
535 | + <code>32</code> |
536 | + <name>shutting-down</name> |
537 | + </previousState> |
538 | + </item> |
539 | + </instancesSet> |
540 | +</TerminateInstancesResponse> |
541 | +""" |
542 | + |
543 | + |
544 | +sample_describe_volumes_result = """<?xml version="1.0"?> |
545 | +<DescribeVolumesResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
546 | + <volumeSet> |
547 | + <item> |
548 | + <volumeId>vol-4282672b</volumeId> |
549 | + <size>800</size> |
550 | + <status>in-use</status> |
551 | + <createTime>2008-05-07T11:51:50.000Z</createTime> |
552 | + <attachmentSet> |
553 | + <item> |
554 | + <volumeId>vol-4282672b</volumeId> |
555 | + <instanceId>i-6058a509</instanceId> |
556 | + <size>800</size> |
557 | + <snapshotId>snap-12345678</snapshotId> |
558 | + <availabilityZone>us-east-1a</availabilityZone> |
559 | + <status>attached</status> |
560 | + <attachTime>2008-05-07T12:51:50.000Z</attachTime> |
561 | + </item> |
562 | + </attachmentSet> |
563 | + </item> |
564 | + </volumeSet> |
565 | +</DescribeVolumesResponse> |
566 | +""" |
567 | + |
568 | + |
569 | +sample_describe_snapshots_result = """<?xml version="1.0"?> |
570 | +<DescribeSnapshotsResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
571 | + <snapshotSet> |
572 | + <item> |
573 | + <snapshotId>snap-78a54011</snapshotId> |
574 | + <volumeId>vol-4d826724</volumeId> |
575 | + <status>pending</status> |
576 | + <startTime>2008-05-07T12:51:50.000Z</startTime> |
577 | + <progress>80%</progress> |
578 | + </item> |
579 | + </snapshotSet> |
580 | +</DescribeSnapshotsResponse> |
581 | +""" |
582 | + |
583 | + |
584 | +sample_create_volume_result = """<?xml version="1.0"?> |
585 | +<CreateVolumeResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
586 | + <volumeId>vol-4d826724</volumeId> |
587 | + <size>800</size> |
588 | + <status>creating</status> |
589 | + <createTime>2008-05-07T11:51:50.000Z</createTime> |
590 | + <availabilityZone>us-east-1a</availabilityZone> |
591 | + <snapshotId></snapshotId> |
592 | +</CreateVolumeResponse> |
593 | +""" |
594 | + |
595 | + |
596 | +sample_delete_volume_result = """<?xml version="1.0"?> |
597 | +<DeleteVolumeResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
598 | + <return>true</return> |
599 | +</DeleteVolumeResponse> |
600 | +""" |
601 | + |
602 | + |
603 | +sample_create_snapshot_result = """<?xml version="1.0"?> |
604 | +<CreateSnapshotResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
605 | + <snapshotId>snap-78a54011</snapshotId> |
606 | + <volumeId>vol-4d826724</volumeId> |
607 | + <status>pending</status> |
608 | + <startTime>2008-05-07T12:51:50.000Z</startTime> |
609 | + <progress></progress> |
610 | +</CreateSnapshotResponse> |
611 | +""" |
612 | + |
613 | + |
614 | +sample_delete_snapshot_result = """<?xml version="1.0"?> |
615 | +<DeleteSnapshotResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
616 | + <return>true</return> |
617 | +</DeleteSnapshotResponse> |
618 | +""" |
619 | + |
620 | + |
621 | +sample_attach_volume_result = """<?xml version="1.0"?> |
622 | +<AttachVolumeResponse xmlns="http://ec2.amazonaws.com/doc/""" + aws_api + """/"> |
623 | + <volumeId>vol-4d826724</volumeId> |
624 | + <instanceId>i-6058a509</instanceId> |
625 | + <device>/dev/sdh</device> |
626 | + <status>attaching</status> |
627 | + <attachTime>2008-05-07T11:51:50.000Z</attachTime> |
628 | +</AttachVolumeResponse> |
629 | +""" |
630 | |
631 | === added file 'txaws/version.py' |
632 | --- txaws/version.py 1970-01-01 00:00:00 +0000 |
633 | +++ txaws/version.py 2009-08-31 20:07:58 +0000 |
634 | @@ -0,0 +1,2 @@ |
635 | +txaws = "0.0.1" |
636 | +aws_api = "2008-12-01" |
Ready for review!