Esempio n. 1
0
def action_peek_xml(body):
    """Determine action to invoke."""

    dom = utils.safe_minidom_parse_string(body)
    action_node = dom.childNodes[0]

    return action_node.tagName
Esempio n. 2
0
    def test_safe_parse_xml(self):

        normal_body = ('<?xml version="1.0" ?>'
                       '<foo><bar><v1>hey</v1><v2>there</v2></bar></foo>')

        def killer_body():
            return (("""<!DOCTYPE x [
                    <!ENTITY a "%(a)s">
                    <!ENTITY b "%(b)s">
                    <!ENTITY c "%(c)s">]>
                <foo>
                    <bar>
                        <v1>%(d)s</v1>
                    </bar>
                </foo>""") % {
                'a': 'A' * 10,
                'b': '&a;' * 10,
                'c': '&b;' * 10,
                'd': '&c;' * 9999,
            }).strip()

        dom = utils.safe_minidom_parse_string(normal_body)
        # Some versions of minidom inject extra newlines so we ignore them
        result = str(dom.toxml()).replace('\n', '')
        self.assertEqual(normal_body, result)

        self.assertRaises(ValueError,
                          utils.safe_minidom_parse_string,
                          killer_body())
Esempio n. 3
0
    def test_safe_parse_xml(self):

        normal_body = ("""
                 <?xml version="1.0" ?><foo>
                    <bar>
                        <v1>hey</v1>
                        <v2>there</v2>
                    </bar>
                </foo>""").strip()

        def killer_body():
            return (("""<!DOCTYPE x [
                    <!ENTITY a "%(a)s">
                    <!ENTITY b "%(b)s">
                    <!ENTITY c "%(c)s">]>
                <foo>
                    <bar>
                        <v1>%(d)s</v1>
                    </bar>
                </foo>""") % {
                'a': 'A' * 10,
                'b': '&a;' * 10,
                'c': '&b;' * 10,
                'd': '&c;' * 9999,
            }).strip()

        dom = utils.safe_minidom_parse_string(normal_body)
        self.assertEqual(normal_body, str(dom.toxml()))

        self.assertRaises(ValueError,
                          utils.safe_minidom_parse_string,
                          killer_body())
Esempio n. 4
0
    def test_safe_parse_xml(self):

        normal_body = '<?xml version="1.0" ?>' "<foo><bar><v1>hey</v1><v2>there</v2></bar></foo>"

        def killer_body():
            return (
                (
                    """<!DOCTYPE x [
                    <!ENTITY a "%(a)s">
                    <!ENTITY b "%(b)s">
                    <!ENTITY c "%(c)s">]>
                <foo>
                    <bar>
                        <v1>%(d)s</v1>
                    </bar>
                </foo>"""
                )
                % {"a": "A" * 10, "b": "&a;" * 10, "c": "&b;" * 10, "d": "&c;" * 9999}
            ).strip()

        dom = utils.safe_minidom_parse_string(normal_body)
        # Some versions of minidom inject extra newlines so we ignore them
        result = str(dom.toxml()).replace("\n", "")
        self.assertEqual(normal_body, result)

        self.assertRaises(ValueError, utils.safe_minidom_parse_string, killer_body())
Esempio n. 5
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     key_node = self.find_first_child_named(dom, "keys")
     if not key_node:
         LOG.info(_("Unable to parse XML input."))
         msg = _("Unable to parse XML request. " "Please provide XML in correct format.")
         raise webob.exc.HTTPBadRequest(explanation=msg)
     return {"body": {"keys": self._extract_keys(key_node)}}
Esempio n. 6
0
    def _from_xml(self, datastring):
        plurals = set(self.metadata.get('plurals', {}))

        try:
            node = utils.safe_minidom_parse_string(datastring).childNodes[0]
            return {node.nodeName: self._from_xml_node(node, plurals)}
        except expat.ExpatError:
            msg = _("cannot understand XML")
            raise exception.MalformedRequestBody(reason=msg)
Esempio n. 7
0
    def default(self, string):
        try:
            node = utils.safe_minidom_parse_string(string)
        except expat.ExpatError:
            msg = _("cannot understand XML")
            raise exception.MalformedRequestBody(reason=msg)

        updates = {}
        for child in node.childNodes[0].childNodes:
            updates[child.tagName] = self.extract_text(child)

        return dict(body=updates)
Esempio n. 8
0
    def default(self, string):
        dom = utils.safe_minidom_parse_string(string)
        action_node = dom.childNodes[0]
        action_name = action_node.tagName

        action_data = {}
        attributes = ["force", "image_name", "container_format", "disk_format"]
        for attr in attributes:
            if action_node.hasAttribute(attr):
                action_data[attr] = action_node.getAttribute(attr)
        if 'force' in action_data and action_data['force'] == 'True':
            action_data['force'] = True
        return {'body': {action_name: action_data}}
Esempio n. 9
0
    def default(self, string):
        dom = utils.safe_minidom_parse_string(string)
        action_node = dom.childNodes[0]
        action_name = action_node.tagName

        action_data = {}
        attributes = ["force", "image_name", "container_format", "disk_format",
                      "protected"]
        if CONF.glance_api_version == 2:
            attributes.append('visibility')
        else:
            attributes.append('is_public')
        for attr in attributes:
            if action_node.hasAttribute(attr):
                action_data[attr] = action_node.getAttribute(attr)
        if 'force' in action_data and action_data['force'] == 'True':
            action_data['force'] = True
        return {'body': {action_name: action_data}}
Esempio n. 10
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     backup = self._extract_backup(dom)
     return {"body": {"backup": backup}}
Esempio n. 11
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     consistencygroup = self._extract_consistencygroup(dom)
     return {'body': {'consistencygroup': consistencygroup}}
Esempio n. 12
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     backup = self._extract_backup(dom)
     retval = {'body': {'backup-record': backup}}
     return retval
Esempio n. 13
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     restore = self._extract_restore(dom)
     return {'body': {'restore': restore}}
Esempio n. 14
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     cgsnapshot = self._extract_cgsnapshot(dom)
     return {'body': {'cgsnapshot': cgsnapshot}}
Esempio n. 15
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     consistencygroup = self._extract_consistencygroup(dom)
     return {'body': {'consistencygroup': consistencygroup}}
Esempio n. 16
0
 def deserialize(self, text):
     dom = utils.safe_minidom_parse_string(text)
     metadata_node = self.find_first_child_named(dom, "metadata")
     metadata = self.extract_metadata(metadata_node)
     return {'body': {'metadata': metadata}}
Esempio n. 17
0
 def default(self, string):
     """Deserialize an xml-formatted volume create request."""
     dom = utils.safe_minidom_parse_string(string)
     volume = self._extract_volume(dom)
     return {'body': {'volume': volume}}
Esempio n. 18
0
 def _extract_metadata_container(self, datastring):
     dom = utils.safe_minidom_parse_string(datastring)
     metadata_node = self.find_first_child_named(dom, "metadata")
     metadata = self.extract_metadata(metadata_node)
     return {'body': {'metadata': metadata}}
Esempio n. 19
0
 def update(self, datastring):
     dom = utils.safe_minidom_parse_string(datastring)
     metadata_item = self.extract_metadata(dom)
     return {'body': {'meta': metadata_item}}
Esempio n. 20
0
 def _extract_metadata_container(self, datastring):
     dom = utils.safe_minidom_parse_string(datastring)
     metadata_node = self.find_first_child_named(dom, "metadata")
     metadata = self.extract_metadata(metadata_node)
     return {'body': {'metadata': metadata}}
Esempio n. 21
0
 def deserialize(self, text):
     dom = utils.safe_minidom_parse_string(text)
     metadata_item = self.extract_metadata(dom)
     return {'body': {'meta': metadata_item}}
Esempio n. 22
0
 def deserialize(self, text):
     dom = utils.safe_minidom_parse_string(text)
     metadata_node = self.find_first_child_named(dom, "metadata")
     metadata = self.extract_metadata(metadata_node)
     return {'body': {'metadata': metadata}}
Esempio n. 23
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     restore = self._extract_restore(dom)
     return {"body": {"restore": restore}}
Esempio n. 24
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     consistencygroup = self._extract_consistencygroup(dom)
     retval = {"body": {"consistencygroup-from-src": consistencygroup}}
     return retval
Esempio n. 25
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     backup = self._extract_backup(dom)
     retval = {'body': {'backup-record': backup}}
     return retval
Esempio n. 26
0
 def deserialize(self, text):
     dom = utils.safe_minidom_parse_string(text)
     metadata_item = self.extract_metadata(dom)
     return {'body': {'meta': metadata_item}}
Esempio n. 27
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     cgsnapshot = self._extract_cgsnapshot(dom)
     return {'body': {'cgsnapshot': cgsnapshot}}
Esempio n. 28
0
 def update(self, datastring):
     dom = utils.safe_minidom_parse_string(datastring)
     metadata_item = self.extract_metadata(dom)
     return {'body': {'meta': metadata_item}}
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     transfer = self._extract_transfer(dom)
     return {'body': {'accept': transfer}}
Esempio n. 30
0
 def default(self, string):
     """Deserialize an xml-formatted volume create request."""
     dom = utils.safe_minidom_parse_string(string)
     volume = self._extract_volume(dom)
     return {'body': {'volume': volume}}
Esempio n. 31
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     restore = self._extract_restore(dom)
     return {'body': {'restore': restore}}
Esempio n. 32
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     transfer = self._extract_transfer(dom)
     return {'body': {'accept': transfer}}
Esempio n. 33
0
 def default(self, string):
     dom = utils.safe_minidom_parse_string(string)
     cgsnapshot = self._extract_cgsnapshot(dom)
     return {"body": {"cgsnapshot": cgsnapshot}}