← Back to team overview

txaws-dev team mailing list archive

[Merge] lp:~fwierzbicki/txaws/break-out-parse-instance into lp:txaws

 

You have been requested to review the proposed merge of lp:~fwierzbicki/txaws/break-out-parse-instance into lp:txaws.

For more details, see:
https://code.launchpad.net/~fwierzbicki/txaws/break-out-parse-instance/+merge/58340

This branch breaks out the parsing of an instance from the parsing of an instance set for use in Landscape where we need to extend Instance with our own field.

It also adds a query_factory parameter to FakeEC2Client to match the real EC2Client.

-- 
https://code.launchpad.net/~fwierzbicki/txaws/break-out-parse-instance/+merge/58340
Your team txAWS Developers is requested to review the proposed merge of lp:~fwierzbicki/txaws/break-out-parse-instance into lp:txaws.
=== modified file 'txaws/ec2/client.py'
--- txaws/ec2/client.py	2011-03-21 08:55:48 +0000
+++ txaws/ec2/client.py	2011-04-19 16:13:02 +0000
@@ -45,33 +45,36 @@
     def _parse_instances_set(self, root, reservation):
         instances = []
         for instance_data in root.find("instancesSet"):
-            instance_id = instance_data.findtext("instanceId")
-            instance_state = instance_data.find(
-                "instanceState").findtext("name")
-            instance_type = instance_data.findtext("instanceType")
-            image_id = instance_data.findtext("imageId")
-            private_dns_name = instance_data.findtext("privateDnsName")
-            dns_name = instance_data.findtext("dnsName")
-            key_name = instance_data.findtext("keyName")
-            ami_launch_index = instance_data.findtext("amiLaunchIndex")
-            launch_time = instance_data.findtext("launchTime")
-            placement = instance_data.find("placement").findtext(
-                "availabilityZone")
-            products = []
-            product_codes = instance_data.find("productCodes")
-            if product_codes:
-                for product_data in instance_data.find("productCodes"):
-                    products.append(product_data.text)
-            kernel_id = instance_data.findtext("kernelId")
-            ramdisk_id = instance_data.findtext("ramdiskId")
-            instance = model.Instance(
-                instance_id, instance_state, instance_type, image_id,
-                private_dns_name, dns_name, key_name, ami_launch_index,
-                launch_time, placement, products, kernel_id, ramdisk_id,
-                reservation=reservation)
-            instances.append(instance)
+            instances.append(self._parse_instance(instance_data, reservation))
         return instances
 
+    def _parse_instance(self, instance_data, reservation):
+        instance_id = instance_data.findtext("instanceId")
+        instance_state = instance_data.find(
+            "instanceState").findtext("name")
+        instance_type = instance_data.findtext("instanceType")
+        image_id = instance_data.findtext("imageId")
+        private_dns_name = instance_data.findtext("privateDnsName")
+        dns_name = instance_data.findtext("dnsName")
+        key_name = instance_data.findtext("keyName")
+        ami_launch_index = instance_data.findtext("amiLaunchIndex")
+        launch_time = instance_data.findtext("launchTime")
+        placement = instance_data.find("placement").findtext(
+            "availabilityZone")
+        products = []
+        product_codes = instance_data.find("productCodes")
+        if product_codes:
+            for product_data in instance_data.find("productCodes"):
+                products.append(product_data.text)
+        kernel_id = instance_data.findtext("kernelId")
+        ramdisk_id = instance_data.findtext("ramdiskId")
+        instance = model.Instance(
+            instance_id, instance_state, instance_type, image_id,
+            private_dns_name, dns_name, key_name, ami_launch_index,
+            launch_time, placement, products, kernel_id, ramdisk_id,
+            reservation=reservation)
+        return instance
+
     def _parse_describe_instances(self, xml_bytes):
         """
         Parse the reservations XML payload that is returned from an AWS

=== modified file 'txaws/testing/ec2.py'
--- txaws/testing/ec2.py	2009-10-14 14:41:28 +0000
+++ txaws/testing/ec2.py	2011-04-19 16:13:02 +0000
@@ -10,13 +10,16 @@
 
 from txaws.ec2.model import Keypair, SecurityGroup
 
+
 class FakeEC2Client(object):
 
-    def __init__(self, creds, endpoint, instances=None, keypairs=None,
-                 volumes=None, key_material="", security_groups=None,
-                 snapshots=None, addresses=None, availability_zones=None):
+    def __init__(self, creds, endpoint, query_factory=None, instances=None,
+                 keypairs=None, volumes=None, key_material="",
+                 security_groups=None, snapshots=None, addresses=None,
+                 availability_zones=None):
         self.creds = creds
         self.endpoint = endpoint
+        query_factory = query_factory
         self.instances = instances or []
         self.keypairs = keypairs or []
         self.keypairs_deleted = []
@@ -141,4 +144,3 @@
         except:
             failure = Failure()
         return fail(failure)
-


References