43
43
return d.addCallback(self._parse_describe_instances)
45
45
def _parse_instances_set(self, root, reservation):
46
"""Parse instance data out of an XML payload.
48
@param root: The root node of the XML payload.
49
@param reservation: The L{Reservation} associated with the instances
51
@return: A C{list} of L{Instance}s.
47
54
for instance_data in root.find("instancesSet"):
48
instance_id = instance_data.findtext("instanceId")
49
instance_state = instance_data.find(
50
"instanceState").findtext("name")
51
instance_type = instance_data.findtext("instanceType")
52
image_id = instance_data.findtext("imageId")
53
private_dns_name = instance_data.findtext("privateDnsName")
54
dns_name = instance_data.findtext("dnsName")
55
key_name = instance_data.findtext("keyName")
56
ami_launch_index = instance_data.findtext("amiLaunchIndex")
57
launch_time = instance_data.findtext("launchTime")
58
placement = instance_data.find("placement").findtext(
61
product_codes = instance_data.find("productCodes")
63
for product_data in instance_data.find("productCodes"):
64
products.append(product_data.text)
65
kernel_id = instance_data.findtext("kernelId")
66
ramdisk_id = instance_data.findtext("ramdiskId")
67
instance = model.Instance(
68
instance_id, instance_state, instance_type, image_id,
69
private_dns_name, dns_name, key_name, ami_launch_index,
70
launch_time, placement, products, kernel_id, ramdisk_id,
71
reservation=reservation)
72
instances.append(instance)
55
instances.append(self._parse_instance(instance_data, reservation))
58
def _parse_instance(self, instance_data, reservation):
59
"""Parse instance data out of an XML payload.
61
@param instance_data: An XML node containing instance data.
62
@param reservation: The L{Reservation} associated with the instance.
63
@return: An L{Instance}.
65
instance_id = instance_data.findtext("instanceId")
66
instance_state = instance_data.find(
67
"instanceState").findtext("name")
68
instance_type = instance_data.findtext("instanceType")
69
image_id = instance_data.findtext("imageId")
70
private_dns_name = instance_data.findtext("privateDnsName")
71
dns_name = instance_data.findtext("dnsName")
72
key_name = instance_data.findtext("keyName")
73
ami_launch_index = instance_data.findtext("amiLaunchIndex")
74
launch_time = instance_data.findtext("launchTime")
75
placement = instance_data.find("placement").findtext(
78
product_codes = instance_data.find("productCodes")
80
for product_data in instance_data.find("productCodes"):
81
products.append(product_data.text)
82
kernel_id = instance_data.findtext("kernelId")
83
ramdisk_id = instance_data.findtext("ramdiskId")
84
instance = model.Instance(
85
instance_id, instance_state, instance_type, image_id,
86
private_dns_name, dns_name, key_name, ami_launch_index,
87
launch_time, placement, products, kernel_id, ramdisk_id,
88
reservation=reservation)
75
91
def _parse_describe_instances(self, xml_bytes):
77
93
Parse the reservations XML payload that is returned from an AWS