Beispiel #1
0
    def _Response_ListSubscriptions(self, status, reason, data):
        """Response handler for listSubscriptions, and listSubscriptionsByTopic"""
        def findadd(m, node, attr):
            node = node.find('{%s}%s' % (self.xmlns, attr))
            if node is not None:
                m[attr] = node.text

        # Handle response to ListSubscriptions, and ListSubscriptionsByTopic
        if status == 200:
            root = ET.fromstring(data)
            token = None
            node = root.find('.//{%s}NextToken' % self.xmlns)
            if node is not None:
                token = node.text
            subs = []
            for node in root.findall('.//{%s}member' % self.xmlns):
                sub = {}
                findadd(sub, node, 'TopicArn')
                findadd(sub, node, 'Protocol')
                findadd(sub, node, 'SubscriptionArn')
                findadd(sub, node, 'Owner')
                findadd(sub, node, 'Endpoint')
                subs.append(sub)
            return subs, token
        raise AWSError(status, reason, data)
Beispiel #2
0
        def response(status, reason, data):
            if status == 200:
                #				print data
                root = ET.fromstring(data)
                alarms = []
                nodeAlarms = root.find('.//{%s}MetricAlarms' % self.xmlns)
                if nodeAlarms is not None:
                    for node in nodeAlarms.findall('{%s}member' % self.xmlns):
                        alarm = {}
                        findadd(alarm, node, 'AlarmDescription')
                        findadd(alarm, node, 'StateUpdatedTimestamp')
                        findadd(alarm, node, 'StateReasonData')
                        findadd(alarm, node, 'AlarmArn')
                        findadd(alarm, node,
                                'AlarmConfigurationUpdatedTimestamp')
                        findadd(alarm, node, 'AlarmName')
                        findadd(alarm, node, 'StateValue')
                        findadd(alarm, node, 'Period')
                        findadd(alarm, node, 'ActionsEnabled')
                        findadd(alarm, node, 'Namespace')
                        findadd(alarm, node, 'EvaluationPeriods')
                        findadd(alarm, node, 'Threshold')
                        findadd(alarm, node, 'Statistic')
                        findadd(alarm, node, 'StateReason')
                        findadd(alarm, node, 'ComparisonOperator')
                        findadd(alarm, node, 'MetricName')
                        alarms.append(alarm)

                # XXX: Dimensions, OKActions, InsufficientDataActions, AlarmActions (all lists)
                token = None
                node = root.find('.//{%s}NextToken' % self.xmlns)
                if node is not None:
                    token = node.text
                return alarms, token
            raise AWSError(status, reason, data)
Beispiel #3
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         node = root.find('.//{%s}MessageId' % self.xmlns)
         if node is not None:
             return node.text
     raise AWSError(status, reason, data)
Beispiel #4
0
 def response(status, reason, data):
     if status == 200:
         #				print data
         root = ET.fromstring(data)
         instances = []
         for node in root.findall('.//{%s}instancesSet' % self.xmlns):
             for item in node.findall('{%s}item' % self.xmlns):
                 i = {}
                 for attr in ('instanceId', 'imageId', 'privateDnsName',
                              'dnsName', 'keyName', 'amiLaunchIndex',
                              'instanceType', 'launchTime', 'kernelId',
                              'privateIpAddress', 'ipAddress',
                              'architecture', 'rootDeviceType',
                              'rootDeviceName', 'virtualizationType',
                              'instanceState.code',
                              'instanceState.name',
                              'placement.availabilityZone',
                              'placement.tenancy', 'monitoring.state',
                              'hypervisor'):
                     findadd(i, item, attr)
                 # XXX: groupSet, blockDeviceMapping
                 tags = {}
                 tagSet = item.find('{%s}tagSet' % self.xmlns)
                 if tagSet is not None:
                     for tagitem in tagSet.findall('{%s}item' %
                                                   self.xmlns):
                         tags[tagitem.find(
                             '{%s}key' %
                             self.xmlns).text] = tagitem.find(
                                 '{%s}value' % self.xmlns).text
                 i['tags'] = tags
                 instances.append(i)
         return instances
     raise AWSError(status, reason, data)
Beispiel #5
0
		def response(status, reason, data):
			if status == 200:
				root = ET.fromstring(data)
				node = root.find('.//{http://queue.amazonaws.com/doc/2009-02-01/}QueueUrl')
				if node is not None:
					return node.text
			raise AWSError(status, reason, data)
Beispiel #6
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         node = root.find(
             './/{http://sns.amazonaws.com/doc/2010-03-31/}EndpointArn')
         if node is not None:
             return node.text
     raise AWSError(status, reason, data)
Beispiel #7
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         node = root.find('.//{%s}SubscriptionArn' % self.xmlns)
         if node is not None:
             return node.text
         return None
     raise AWSError(status, reason, data)
Beispiel #8
0
 def response(status, reason, data):
     if status == 201:  # created
         #                               print 'created', data
         #                               <CreateHostedZoneResponse xmlns="https://route53.amazonaws.com/doc/2011-05-05/"><HostedZone><Id>/hostedzone/Z2U5C08S9HUMHF</Id><Name>aksah.com.</Name><CallerReference>1315700475.06</CallerReference><Config/></HostedZone><ChangeInfo><Id>/change/C1T9NL5J086BV6</Id><Status>PENDING</Status><SubmittedAt>2011-09-11T00:21:16.044Z</SubmittedAt></ChangeInfo><DelegationSet><NameServers><NameServer>ns-1623.awsdns-10.co.uk</NameServer><NameServer>ns-752.awsdns-30.net</NameServer><NameServer>ns-287.awsdns-35.com</NameServer><NameServer>ns-1499.awsdns-59.org</NameServer></NameServers></DelegationSet></CreateHostedZoneResponse>
         root = ET.fromstring(data)
         return root.find('.//{%s}HostedZone' % self.xmlns).find(
             '{%s}Id' % self.xmlns).text
     raise AWSError(status, reason, data)
Beispiel #9
0
		def response(status, reason, data):
			if status == 200:
				root = ET.fromstring(data)
				queues = []
				for node in root.findall('.//{http://queue.amazonaws.com/doc/2009-02-01/}QueueUrl'):
					queues.append(node.text)
				return queues
			raise AWSError(status, reason, data)
Beispiel #10
0
		def response(status, reason, data):
			if status == 200:
				root = ET.fromstring(data)
				n1 = root.find('.//{http://queue.amazonaws.com/doc/2009-02-01/}MD5OfMessageBody')
				n2 = root.find('.//{http://queue.amazonaws.com/doc/2009-02-01/}MessageId')
				if n1 is not None and n2 is not None:
					return n2.text, n1.text
			raise AWSError(status, reason, data)
Beispiel #11
0
		def response(status, reason, data):
			if status == 200:
#				print data
				root = ET.fromstring(data)
				result = root.find('.//{%s}GetAttributesResult' % self.xmlns)
				attribs = []
				for node in result.findall('{%s}Attribute' % self.xmlns):
					attribs.append((node.find('{%s}Name' % self.xmlns).text, node.find('{%s}Value' % self.xmlns).text))
				return attribs
			raise AWSError(status, reason, data)
Beispiel #12
0
		def response(status, reason, data):
			if status == 200:
#				print data
				root = ET.fromstring(data)
				metadata = {}
				result = root.find('.//{%s}DomainMetadataResult' % self.xmlns)
				for node in result:
					metadata[node.tag[len(self.xmlns) + 2:]] = node.text
				return metadata
			raise AWSError(status, reason, data)
Beispiel #13
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         attributes = {}
         for node in root.findall('.//{%s}Attribute' % self.xmlns):
             name = node.find('{%s}Name' % self.xmlns).text
             value = node.find('{%s}Value' % self.xmlns).text
             attributes[name] = value
         return attributes
     raise AWSError(status, reason, data)
Beispiel #14
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         attrib = {}
         for node in root.findall('.//{%s}entry' % self.xmlns):
             name = node.find('{%s}key' % self.xmlns)
             val = node.find('{%s}value' % self.xmlns)
             attrib[name.text] = val.text
         return attrib
     raise AWSError(status, reason, data)
Beispiel #15
0
 def response(status, reason, data):
     if status == 200:
         print data
         root = ET.fromstring(data)
         ret = {}
         info = root.find('{%s}ChangeInfo' % self.xmlns)
         self.findadd(ret, info, 'Id')
         self.findadd(ret, info, 'Status')
         self.findadd(ret, info, 'SubmittedAt')
         return ret
     raise AWSError(status, reason, data)
Beispiel #16
0
        def response(status, reason, data):
            if status == 200:
#                               print data
                root = ET.fromstring(data)
                buckets = []
                for node in root.findall('.//{%s}Bucket' % self.xmlns):
                    b = {}
                    findadd(b, node, 'Name')
                    findadd(b, node, 'CreationDate')
                    buckets.append(b)
                return buckets
            raise AWSError(status, reason, data)
Beispiel #17
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         zones = {}
         for node in root.findall('.//{%s}HostedZone' % self.xmlns):
             zone = {}
             for attr in ('Id', 'Name', 'CallerReference',
                          'Config.Comment'):
                 self.findadd(zone, node, attr)
             zones[zone['Name']] = zone
         return zones
     raise AWSError(status, reason, data)
Beispiel #18
0
 def error(self, code, resource='', requestid='', hostid=''):
     self.set_header("Content-Type", "application/xml; charset=UTF-8")
     ae = AWSError(code)
     error = ({
         "Code": ae.getKey(),
         "Message": ae.getMessage(),
         "Resource": self.get_argument('Resource', default="?"),
         "RequestId": self.get_argument('RequestId', default="?"),
         "HostId": self.get_argument('HostId', default="?"),
     })
     self.set_status(ae.getCode())
     return self.render("templates/ErrorResponse.xml", error=error)
Beispiel #19
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         token = None
         node = root.find('.//{%s}NextToken' % self.xmlns)
         if node is not None:
             token = node.text
         topics = []
         for node in root.findall('.//{%s}TopicArn' % self.xmlns):
             topics.append(node.text)
         return topics, token
     raise AWSError(status, reason, data)
Beispiel #20
0
        def response(status, reason, data):
            if status == 200:
                root = ET.fromstring(data)
                n1 = root.findall(
                    './/{http://queue.amazonaws.com/doc/%s/}MD5OfMessageBody' %
                    self.version)
                n2 = root.findall(
                    './/{http://queue.amazonaws.com/doc/%s/}MessageId' %
                    self.version)
                if n1 is not None and n2 is not None:
                    return [(a.text, b.text) for a, b in zip(n1, n2)]

            raise AWSError(status, reason, data)
Beispiel #21
0
		def response(status, reason, data):
			if status == 200:
#				print data
				root = ET.fromstring(data)
				result = root.find('.//{%s}ListDomainsResult' % self.xmlns)
				domains = []
				for node in result.findall('{%s}DomainName' % self.xmlns):
					domains.append(node.text)
				token = None
				node = root.find('.//{%s}NextToken' % self.xmlns)
				if node is not None:
					token = node.text
				return domains, token
			raise AWSError(status, reason, data)
Beispiel #22
0
        def response(status, reason, data):
            if status == 200:
#                               print data
                root = ET.fromstring(data)
                attrib = {}
                for node in root.findall('.//{http://sns.amazonaws.com/doc/2010-03-31/}AlarmHistoryItem'):
                    name = node.find('{http://sns.amazonaws.com/doc/2010-03-31/}key')
                    val = node.find('{http://sns.amazonaws.com/doc/2010-03-31/}value')
                    attrib[name.text] = val.text
                token = None
                node = root.find('.//{%s}NextToken' % self.xmlns)
                if node is not None:
                    token = node.text
                return attrib, token
            raise AWSError(status, reason, data)
Beispiel #23
0
 def response(status, reason, data):
     if status == 200:
         root = ET.fromstring(data)
         records = []
         for node in root.findall('.//{%s}ResourceRecordSet' %
                                  self.xmlns):
             name = node.find('{%s}Name' % self.xmlns).text
             if name.startswith('\\052'):
                 name = '*' + name[
                     4:]  # XXX: perform correct replacement here
             typ = node.find('{%s}Type' % self.xmlns).text
             ttl = node.find('{%s}TTL' % self.xmlns).text
             values = []
             for v in node.findall('.//{%s}Value' % self.xmlns):
                 values.append(v.text)
             records.append((name, typ, int(ttl), values))
         return records
     raise AWSError(status, reason, data)
Beispiel #24
0
		def response(status, reason, data):
			if status == 200:
#				print data
				root = ET.fromstring(data)
				if boxusage is not None:
					boxusage.append(root.find('.//{%s}BoxUsage' % self.xmlns).text)
				items = []
				for node in root.findall('.//{%s}Item' % self.xmlns):
					name = node.find('{%s}Name' % self.xmlns).text
					attribs = []
					for attr in node.findall('{%s}Attribute' % self.xmlns):
						attribs.append((attr.find('{%s}Name' % self.xmlns).text, attr.find('{%s}Value' % self.xmlns).text))
					items.append((name, attribs))
				token = None
				node = root.find('.//{%s}NextToken')
				if node is not None:
					token = node.text
				return items, token
			raise AWSError(status, reason, data)
Beispiel #25
0
        def response(status, reason, data):
            def findadd(m, node, attr):
                node = node.find('{%s}%s' % (self.xmlns, attr))
                if node is not None:
                    m[attr] = node.text

            if status == 200:
                root = ET.fromstring(data)
                msgs = []
                for node in root.findall('.//{%s}Message' % self.xmlns):
                    m = {}
                    findadd(m, node, 'Body')
                    findadd(m, node, 'MD5OfBody')
                    findadd(m, node, 'MessageId')
                    findadd(m, node, 'ReceiptHandle')
                    for attrnode in node.findall('{%s}Attribute' % self.xmlns):
                        name = attrnode.find('{%s}Name' % self.xmlns).text
                        value = attrnode.find('{%s}Value' % self.xmlns).text
                        m[name] = value
                    msgs.append(m)
                return msgs
            raise AWSError(status, reason, data)
Beispiel #26
0
        def response(status, reason, data):
            if status == 200:
#                               print data
                root = ET.fromstring(data)
                objects = {}
                limited = root.find('.//{%s}IsTruncated' % self.xmlns).text == 'true'
                for node in root.findall('.//{%s}CommonPrefixes' % self.xmlns):
                    prefix = node.find('{%s}Prefix' % self.xmlns).text
                    objects[prefix] = None
                for node in root.findall('.//{%s}Contents' % self.xmlns):
                    obj = {}
                    key = node.find('{%s}Key' % self.xmlns).text
                    findadd(obj, node, 'LastModified')
                    findadd(obj, node, 'ETag')
                    findadd(obj, node, 'Size')
                    findadd(obj, node, 'StorageClass')
                    owner = node.find('{%s}Owner' % self.xmlns)
                    findadd(obj, owner, 'ID', 'Owner.ID')
                    findadd(obj, owner, 'DisplayName', 'Owner.DisplayName')
                    objects[key] = obj
                return objects, limited
            raise AWSError(status, reason, data)
Beispiel #27
0
 def response(status, reason, data):
     if status == 200:
         return True
     raise AWSError(status, reason, data)