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
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