Duncan McGreggor has proposed merging lp:~oubiwann/txaws/415491-instance-object into lp:txaws.
Requested reviews: txAWS Team (txawsteam) This is ready for review. -- https://code.launchpad.net/~oubiwann/txaws/415491-instance-object/+merge/10505 Your team txAWS Team is subscribed to branch lp:txaws.
=== modified file 'txaws/ec2/client.py' --- txaws/ec2/client.py 2009-08-19 20:55:04 +0000 +++ txaws/ec2/client.py 2009-08-21 03:26:35 +0000 @@ -32,12 +32,43 @@ """An Amazon EC2 Instance. @attrib instance_id: The instance ID of this instance. - @attrib instance_state: The state of this instance. + @attrib instance_state: The current state of this instance. + @attrib instance_type: The instance type. + @attrib image_id: Image ID of the AMI used to launch the instance. + @attrib private_dns_name: The private DNS name assigned to the instance. + This DNS name can only be used inside the Amazon EC2 network. This + element remains empty until the instance enters a running state. + @attrib dns_name: The public DNS name assigned to the instance. This DNS + name is contactable from outside the Amazon EC2 network. This element + remains empty until the instance enters a running state. + @attrib key_name: If this instance was launched with an associated key + pair, this displays the key pair name. + @attrib ami_launch_index: The AMI launch index, which can be used to find + this instance within the launch group. + @attrib product_codes: Product codes attached to this instance. + @attrib launch_time: The time the instance launched. + @attrib placement: The location where the instance launched. + @attrib kernel_id: Optional. Kernel associated with this instance. + @attrib ramdisk_id: Optional. RAM disk associated with this instance. """ - - def __init__(self, instance_id, instance_state, reservation=None): + def __init__(self, instance_id, instance_state, instance_type="", + image_id="", private_dns_name="", dns_name="", key_name="", + ami_launch_index="", launch_time="", placement="", + product_codes=[], kernel_id=None, ramdisk_id=None, + reservation=None): self.instance_id = instance_id self.instance_state = instance_state + self.instance_type = instance_type + self.image_id = image_id + self.private_dns_name = private_dns_name + self.dns_name = dns_name + self.key_name = key_name + self.ami_launch_index = ami_launch_index + self.launch_time = launch_time + self.placement = placement + self.product_codes = product_codes + self.kernel_id = kernel_id + self.ramdisk_id = ramdisk_id self.reservation = reservation @@ -103,8 +134,35 @@ instance_state = instance_data.find( self.name_space + 'instanceState').findtext( self.name_space + 'name') - instance = Instance(instance_id, instance_state, - reservation=reservation) + instance_type = instance_data.findtext( + self.name_space + 'instanceType') + image_id = instance_data.findtext(self.name_space + 'imageId') + private_dns_name = instance_data.findtext( + self.name_space + 'privateDnsName') + dns_name = instance_data.findtext(self.name_space + 'dnsName') + key_name = instance_data.findtext(self.name_space + 'keyName') + ami_launch_index = instance_data.findtext( + self.name_space + 'amiLaunchIndex') + launch_time = instance_data.findtext( + self.name_space + 'launchTime') + placement = instance_data.find( + self.name_space + 'placement').findtext( + self.name_space + 'availabilityZone') + products = [] + for product_data in instance_data.find( + self.name_space + 'productCodesSet'): + product_code = product_data.findtext( + self.name_space + 'productCode') + products.append(product_code) + kernel_id = instance_data.findtext( + self.name_space + 'kernelId') + ramdisk_id = instance_data.findtext( + self.name_space + 'ramdiskId') + instance = 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) results.extend(instances) return results === modified file 'txaws/ec2/tests/test_client.py' --- txaws/ec2/tests/test_client.py 2009-08-18 21:56:36 +0000 +++ txaws/ec2/tests/test_client.py 2009-08-21 03:26:35 +0000 @@ -35,7 +35,12 @@ <reason/> <keyName>keyname</keyName> <amiLaunchIndex>0</amiLaunchIndex> - <productCodes/> + <productCodesSet> + <item> + <productCode>774F4FF8</productCode> + </item> + </productCodesSet> + <instanceType>c1.xlarge</instanceType> <launchTime>2009-04-27T02:23:18.000Z</launchTime> <placement> @@ -91,6 +96,27 @@ self.assertEquals(reservation.groups, ["one", "two"]) +class InstanceTestCase(TXAWSTestCase): + + def test_instance_creation(self): + instance = client.Instance( + "id1", "running", "type", "id2", "dns1", "dns2", "key", "ami", + "time", "placement", ["prod1", "prod2"], "id3", "id4") + self.assertEquals(instance.instance_id, "id1") + self.assertEquals(instance.instance_state, "running") + self.assertEquals(instance.instance_type, "type") + self.assertEquals(instance.image_id, "id2") + self.assertEquals(instance.private_dns_name, "dns1") + self.assertEquals(instance.dns_name, "dns2") + self.assertEquals(instance.key_name, "key") + self.assertEquals(instance.ami_launch_index, "ami") + self.assertEquals(instance.launch_time, "time") + self.assertEquals(instance.placement, "placement") + self.assertEquals(instance.product_codes, ["prod1", "prod2"]) + self.assertEquals(instance.kernel_id, "id3") + self.assertEquals(instance.ramdisk_id, "id4") + + class TestEC2Client(TXAWSTestCase): def test_init_no_creds(self): @@ -116,6 +142,24 @@ self.assertEquals(reservation.owner_id, "123456789012") group = reservation.groups[0] self.assertEquals(group, "default") + self.assertEquals(instance.instance_id, "i-abcdef01") + self.assertEquals(instance.instance_state, "running") + self.assertEquals(instance.instance_type, "c1.xlarge") + self.assertEquals(instance.image_id, "ami-12345678") + self.assertEquals( + instance.private_dns_name, + "domU-12-31-39-03-15-11.compute-1.internal") + self.assertEquals( + instance.dns_name, + "ec2-75-101-245-65.compute-1.amazonaws.com") + self.assertEquals(instance.key_name, "keyname") + self.assertEquals(instance.ami_launch_index, "0") + self.assertEquals(instance.launch_time, "2009-04-27T02:23:18.000Z") + self.assertEquals(instance.placement, "us-east-1c") + self.assertEquals(instance.product_codes, ["774F4FF8"]) + self.assertEquals(instance.kernel_id, "aki-b51cf9dc") + self.assertEquals(instance.ramdisk_id, "ari-b31cf9da") + def test_parse_reservation(self): ec2 = client.EC2Client(creds='foo')
_______________________________________________ Mailing list: https://launchpad.net/~txawsteam Post to : txawsteam@lists.launchpad.net Unsubscribe : https://launchpad.net/~txawsteam More help : https://help.launchpad.net/ListHelp