def _to_image(self, element): n = NodeImage(id=findtext(element=element, xpath='imageId', namespace=NAMESPACE), name=findtext(element=element, xpath='imageLocation', namespace=NAMESPACE), driver=self.connection.driver, extra={ 'state': findattr(element=element, xpath="imageState", namespace=NAMESPACE), 'ownerid': findattr(element=element, xpath="imageOwnerId", namespace=NAMESPACE), 'owneralias': findattr(element=element, xpath="imageOwnerAlias", namespace=NAMESPACE), 'ispublic': findattr(element=element, xpath="isPublic", namespace=NAMESPACE), 'architecture': findattr(element=element, xpath="architecture", namespace=NAMESPACE), 'imagetype': findattr(element=element, xpath="imageType", namespace=NAMESPACE), 'platform': findattr(element=element, xpath="platform", namespace=NAMESPACE), 'rootdevicetype': findattr(element=element, xpath="rootDeviceType", namespace=NAMESPACE), 'virtualizationtype': findattr(element=element, xpath="virtualizationType", namespace=NAMESPACE), 'hypervisor': findattr(element=element, xpath="hypervisor", namespace=NAMESPACE) }) return n
def _to_image(self, element): n = NodeImage(id=findtext(element=element, xpath='imageId', namespace=NAMESPACE), name=findtext(element=element, xpath='imageLocation', namespace=NAMESPACE), driver=self.connection.driver, extra={ 'state': findattr(element=element, xpath="imageState", namespace=NAMESPACE), 'ownerid': findattr(element=element, xpath="imageOwnerId", namespace=NAMESPACE), 'owneralias': findattr(element=element, xpath="imageOwnerAlias", namespace=NAMESPACE), 'ispublic': findattr(element=element, xpath="isPublic", namespace=NAMESPACE), 'architecture': findattr(element=element, xpath="architecture", namespace=NAMESPACE), 'imagetype': findattr(element=element, xpath="imageType", namespace=NAMESPACE), 'platform': findattr(element=element, xpath="platform", namespace=NAMESPACE), 'rootdevicetype': findattr(element=element, xpath="rootDeviceType", namespace=NAMESPACE), 'virtualizationtype': findattr(element=element, xpath="virtualizationType", namespace=NAMESPACE), 'hypervisor': findattr(element=element, xpath="hypervisor", namespace=NAMESPACE) } ) return n
def ex_describe_keypairs(self, name): """Describes a keypiar by name @note: This is a non-standard extension API, and only works for EC2. @type name: C{str} @param name: The name of the keypair to describe. """ params = {'Action': 'DescribeKeyPairs', 'KeyName.1': name} response = self.connection.request(self.path, params=params).object key_name = findattr(element=response, xpath='keySet/item/keyName', namespace=NAMESPACE) return {'keyName': key_name}
def ex_describe_keypairs(self, name): """Describes a keypair by name @note: This is a non-standard extension API, and only works for EC2. @type name: C{str} @param name: The name of the keypair to describe. """ params = {'Action': 'DescribeKeyPairs', 'KeyName.1': name } response = self.connection.request(self.path, params=params).object key_name = findattr(element=response, xpath='keySet/item/keyName', namespace=NAMESPACE) return { 'keyName': key_name }
def _to_node(self, element, groups=None): try: state = self.NODE_STATE_MAP[ findattr(element=element, xpath="instanceState/name", namespace=NAMESPACE) ] except KeyError: state = NodeState.UNKNOWN instance_id = findtext(element=element, xpath='instanceId', namespace=NAMESPACE) tags = dict((findtext(element=item, xpath='key', namespace=NAMESPACE), findtext(element=item, xpath='value', namespace=NAMESPACE)) for item in findall(element=element, xpath='tagSet/item', namespace=NAMESPACE)) name = tags.get('Name', instance_id) n = Node( id=findtext(element=element, xpath='instanceId', namespace=NAMESPACE), name=name, state=state, public_ip=[findtext(element=element, xpath='ipAddress', namespace=NAMESPACE)], private_ip=[findtext(element=element, xpath='privateIpAddress', namespace=NAMESPACE)], driver=self.connection.driver, extra={ 'dns_name': findattr(element=element, xpath="dnsName", namespace=NAMESPACE), 'instanceId': findattr(element=element, xpath="instanceId", namespace=NAMESPACE), 'imageId': findattr(element=element, xpath="imageId", namespace=NAMESPACE), 'private_dns': findattr(element=element, xpath="privateDnsName", namespace=NAMESPACE), 'status': findattr(element=element, xpath="instanceState/name", namespace=NAMESPACE), 'keyname': findattr(element=element, xpath="keyName", namespace=NAMESPACE), 'launchindex': findattr(element=element, xpath="amiLaunchIndex", namespace=NAMESPACE), 'productcode': [p.text for p in findall(element=element, xpath="productCodesSet/item/productCode", namespace=NAMESPACE )], 'instancetype': findattr(element=element, xpath="instanceType", namespace=NAMESPACE), 'launchdatetime': findattr(element=element, xpath="launchTime", namespace=NAMESPACE), 'availability': findattr(element, xpath="placement/availabilityZone", namespace=NAMESPACE), 'kernelid': findattr(element=element, xpath="kernelId", namespace=NAMESPACE), 'ramdiskid': findattr(element=element, xpath="ramdiskId", namespace=NAMESPACE), 'clienttoken': findattr(element=element, xpath="clientToken", namespace=NAMESPACE), 'groups': groups, 'tags': tags } ) return n
def _to_node(self, element, groups=None): try: state = self.NODE_STATE_MAP[ findattr(element=element, xpath="instanceState/name", namespace=NAMESPACE) ] except KeyError: state = NodeState.UNKNOWN instance_id = findtext(element=element, xpath='instanceId', namespace=NAMESPACE) tags = dict((findtext(element=item, xpath='key', namespace=NAMESPACE), findtext(element=item, xpath='value', namespace=NAMESPACE)) for item in findall(element=element, xpath='tagSet/item', namespace=NAMESPACE)) name = tags.get('Name', instance_id) public_ip = findtext(element=element, xpath='ipAddress', namespace=NAMESPACE) public_ips = [public_ip] if public_ip else [] private_ip = findtext(element=element, xpath='privateIpAddress', namespace=NAMESPACE) private_ips = [private_ip] if private_ip else [] n = Node( id=findtext(element=element, xpath='instanceId', namespace=NAMESPACE), name=name, state=state, public_ips=public_ips, private_ips=private_ips, driver=self.connection.driver, extra={ 'dns_name': findattr(element=element, xpath="dnsName", namespace=NAMESPACE), 'instanceId': findattr(element=element, xpath="instanceId", namespace=NAMESPACE), 'imageId': findattr(element=element, xpath="imageId", namespace=NAMESPACE), 'private_dns': findattr(element=element, xpath="privateDnsName", namespace=NAMESPACE), 'status': findattr(element=element, xpath="instanceState/name", namespace=NAMESPACE), 'keyname': findattr(element=element, xpath="keyName", namespace=NAMESPACE), 'launchindex': findattr(element=element, xpath="amiLaunchIndex", namespace=NAMESPACE), 'productcode': [p.text for p in findall(element=element, xpath="productCodesSet/item/productCode", namespace=NAMESPACE )], 'instancetype': findattr(element=element, xpath="instanceType", namespace=NAMESPACE), 'launchdatetime': findattr(element=element, xpath="launchTime", namespace=NAMESPACE), 'availability': findattr(element, xpath="placement/availabilityZone", namespace=NAMESPACE), 'kernelid': findattr(element=element, xpath="kernelId", namespace=NAMESPACE), 'ramdiskid': findattr(element=element, xpath="ramdiskId", namespace=NAMESPACE), 'clienttoken': findattr(element=element, xpath="clientToken", namespace=NAMESPACE), 'groups': groups, 'tags': tags } ) return n