Ejemplo n.º 1
0
 def post(self):
     """
     Add a new EMS. The request must provide the ems details.
     used by: `katana ems add -f [yaml file]`
     """
     # TODO: Test connectivity with the EMS
     new_uuid = str(uuid.uuid4())
     # Create the object and store it in the object collection
     try:
         ems_id = request.json["id"]
         if request.json["type"] == "amarisoft-ems":
             ems = amar_emsUtils.Ems(request.json["url"])
         elif request.json["type"] == "test-ems":
             ems = test_emsUtils.Ems(request.json["url"])
         else:
             return "Error: Not supported EMS type", 400
     except KeyError:
         return f"Error: Required fields: {self.req_fields}", 400
     thebytes = pickle.dumps(ems)
     obj_json = {
         "_id": new_uuid,
         "id": request.json["id"],
         "obj": Binary(thebytes)
     }
     request.json["_id"] = new_uuid
     request.json["created_at"] = time.time()  # unix epoch
     try:
         new_uuid = mongoUtils.add("ems", request.json)
     except pymongo.errors.DuplicateKeyError:
         return f"EMS with id {ems_id} already exists", 400
     mongoUtils.add("ems_obj", obj_json)
     return f"Created {new_uuid}", 201
Ejemplo n.º 2
0
    def put(self, uuid):
        """
        Update the details of a specific EMS.
        used by: `katana ems update -f [yaml file] [uuid]`
        """
        data = request.json
        data["_id"] = uuid
        old_data = mongoUtils.get("ems", uuid)

        if old_data:
            data["created_at"] = old_data["created_at"]
            try:
                for entry in self.req_fields:
                    if data[entry] != old_data[entry]:
                        return "Cannot update field: " + entry, 400
            except KeyError:
                return f"Error: Required fields: {self.req_fields}", 400
            else:
                mongoUtils.update("ems", uuid, data)
            return f"Modified {uuid}", 200
        else:
            new_uuid = uuid
            data = request.json
            data["_id"] = new_uuid
            data["created_at"] = time.time()  # unix epoch
            new_uuid = str(uuid.uuid4())
            # Create the object and store it in the object collection
            try:
                ems_id = request.json["id"]
                if request.json["type"] == "amarisoft-ems":
                    ems = amar_emsUtils.Ems(request.json["url"])
                elif request.json["type"] == "test-ems":
                    ems = test_emsUtils.Ems(request.json["url"])
                else:
                    return "Error: Not supported EMS type", 400
            except KeyError:
                return f"Error: Required fields: {self.req_fields}", 400
            thebytes = pickle.dumps(ems)
            obj_json = {
                "_id": new_uuid,
                "id": data["id"],
                "obj": Binary(thebytes)
            }
            try:
                new_uuid = mongoUtils.add("ems", data), 201
            except pymongo.errors.DuplicateKeyError:
                return f"EMS with id {ems_id} already exists", 400
            mongoUtils.add("ems_obj", obj_json)
            return f"Created {new_uuid}", 201