← Back to team overview

txaws-dev team mailing list archive

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

 

Frank Wierzbicki has proposed merging lp:~fwierzbicki/txaws/break-out-parse-instance into lp:txaws.

Requested reviews:
  txAWS Developers (txaws-dev)
  txAWS Developers (txaws-dev)
Related bugs:
  Bug #766216 in txAWS: "It will help our use of txAWS in Landscape if the instance parsing is broken out from parsing instance sets"
  https://bugs.launchpad.net/txaws/+bug/766216

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)
-


Follow ups