示例#1
0
    def on_get(self, req, resp):
        start_time = time.time()

        metadata = etree.Element("ResponseMetadata")
        etree.SubElement(metadata, "RequestId").text = str(uuid.uuid4())

        owner = os.environ['REMOTE_USER']

        action = req.get_param("Action")
        if action == "CreateDomain":
            domain_name = req.get_param("DomainName")

            backend.create_domain(owner, domain_name)

            resp.status = falcon.HTTP_200  # This is the default status
            dom = etree.Element("CreateDomainResponse")
        elif action == "DeleteDomain":
            domain_name = req.get_param("DomainName")

            backend.delete_domain(owner, domain_name)

            resp.status = falcon.HTTP_200  # This is the default status
            dom = etree.Element("DeleteDomainResponse")
        elif action == "ListDomains":
            resp.status = falcon.HTTP_200
            dom = etree.Element("ListDomainsResponse")

            result = etree.SubElement(dom, "ListDomainsResult")
            for name in backend.list_domains(owner):
                domain_name = etree.SubElement(result, "DomainName")
                domain_name.text = name
        elif action == "DeleteAttributes":
            domain_name = req.get_param("DomainName")
            item_name = req.get_param("ItemName")

            deletions = utils.extract_deletions_from_query_params(req)
            expectations = utils.extract_expectations_from_query_params(req)

            backend.delete_attributes(owner, domain_name, item_name, deletions)

            resp.status = falcon.HTTP_200
            dom = etree.Element("DeleteAttributesResponse")
        elif action == "PutAttributes":
            domain_name = req.get_param("DomainName")
            item_name = req.get_param("ItemName")

            additions, replacements = utils.extract_additions_and_replacements_from_query_params(req)
            expectations = utils.extract_expectations_from_query_params(req)

            try:
                backend.put_attributes(owner, domain_name, item_name, additions,
                                       replacements, expectations)
                resp.status = falcon.HTTP_200
                dom = etree.Element("PutAttributesResponse")
            except basicdb.exceptions.APIException, e:
                resp.status = e.http_status
                dom = etree.Element(e.root_element)
示例#2
0
    def test_extract_deletions_from_query_params(self):
        request = self._create_request({'Attribute.1.Name': 'attr1',
                                        'Attribute.1.Value': 'attr1val1',
                                        'Attribute.3.Name': 'attr3',
                                        'Attribute.3.Value': 'attr3val1',
                                        'Attribute.6.Name': 'attr6',
                                        'Attribute.12.Value': 'attr12val1',
                                        'Attribute.7.Name': 'attr7',
                                        'Attribute.7.Value': 'attr7val1',
                                        'Attribute.7.Replace': 'true',
                                        'Attribute.8.Foobar': 'blah'})

        deletions = utils.extract_deletions_from_query_params(request)

        self.assertEquals(deletions, {'attr1': set(['attr1val1']),
                                      'attr3': set(['attr3val1']),
                                      'attr6': set([basicdb.AllAttributes]),
                                      'attr7': set(['attr7val1'])})
示例#3
0
    def test_extract_deletions_from_query_params(self):
        request = self._create_request({
            'Attribute.1.Name': 'attr1',
            'Attribute.1.Value': 'attr1val1',
            'Attribute.3.Name': 'attr3',
            'Attribute.3.Value': 'attr3val1',
            'Attribute.6.Name': 'attr6',
            'Attribute.12.Value': 'attr12val1',
            'Attribute.7.Name': 'attr7',
            'Attribute.7.Value': 'attr7val1',
            'Attribute.7.Replace': 'true',
            'Attribute.8.Foobar': 'blah'
        })

        deletions = utils.extract_deletions_from_query_params(request)

        self.assertEquals(
            deletions, {
                'attr1': set(['attr1val1']),
                'attr3': set(['attr3val1']),
                'attr6': set([basicdb.AllAttributes]),
                'attr7': set(['attr7val1'])
            })