def render_POST(self, request):
     request_raw = json.loads(request.content.read())
     try:
         if "meta" in request_raw:
             request_raw["metadata"] = process_metadata(request_raw.pop("meta"))
         if "size" in request_raw:
             request_raw["maximum_size"] = parse_num(request_raw.pop("size"))
     except Exception, e:
         request.setHeader("content-type", "application/json")
         request.setHeader("access-control-allow-origin", "*")
         request.setResponseCode(400)
         return json.dumps(dict(error=str(e)))
 def render_POST(self, request):
     request_raw = json.loads(request.content.read())
     try:
         if "meta" in request_raw:
             request_raw["metadata"] = process_metadata(
                 request_raw.pop("meta"))
         if "size" in request_raw:
             request_raw["maximum_size"] = parse_num(
                 request_raw.pop("size"))
     except Exception, e:
         request.setHeader("content-type", "application/json")
         request.setHeader("access-control-allow-origin", "*")
         request.setResponseCode(400)
         return json.dumps(dict(error=str(e)))
        def got_nodes(nodes):
            args = {}

            # size
            if self["size"]:
                args["maximum_size"] = parse_num(self["size"])

            # primary node
            args["primary"] = filter_primary_node(self["node"], nodes)

            # metadata
            args["metadata"] = process_metadata(self["metadata"])

            # TODO: don't allow non-unique name in metadata (by
            # convention)

            d = self.client.post(
                self.base_url + "/configuration/datasets",
                json.dumps(args),
                headers={'Content-Type': ['application/json']})
            d.addCallback(treq.json_content)
            return d
        def got_nodes(nodes):
            args = {}

            # size
            if self["size"]:
                args["maximum_size"] = parse_num(self["size"])

            # primary node
            args["primary"] = filter_primary_node(self["node"], nodes)

            # metadata
            args["metadata"] = process_metadata(self["metadata"])

            # TODO: don't allow non-unique name in metadata (by
            # convention)

            d = self.client.post(
                    self.base_url + "/configuration/datasets",
                    json.dumps(args),
                    headers={'Content-Type': ['application/json']})
            d.addCallback(treq.json_content)
            return d