Example #1
0
 def faults(self, fault_id=None):
     method = cherrypy.request.method
     params = cherrypy.request.params
     json = None if method == 'DELETE' else cherrypy.request.json
     print(f'fault_id={fault_id}')
     print(f'method={method}')
     print(f'params={params}')
     print(f'json={json}')
     if method == 'GET':
         if fault_id is None:
             ids = {'faults ids': Configuration.get_all_faults_ids()}
             return ids
         else:
             return self.faults[fault_id]
     if method == 'POST' or method == 'CREATE' or method == 'PUT':
         fault_id = str(uuid.uuid4())
         faultobj = Root.create_object_from_json_extract_classname(json)
         if faultobj:
             Configuration.set_fault(fault_id, faultobj)
         else:
             fault_id = "0"
         return {'fault_id': fault_id}
     if method == 'DELETE':
         removed_uuid = Configuration.remove_fault(fault_id)
         if removed_uuid:
             cherrypy.response.status = 200
         else:
             cherrypy.response.status = 404
         return {'fault_id': fault_id}
Example #2
0
 def remove_fault(uuid):
     uuid_removed = Configuration.remove_fault(uuid)
     return uuid_removed
Example #3
0
            if (fault := create_fault_from_dict(
                    data=cherrypy.request.json)) is None:
                raise cherrypy.HTTPError(
                    message="Unable to create a fault from provided JSON data")
            try:
                fault_id = generate_fault_id()
                Configuration.add_fault(fault_id=fault_id, fault=fault)
            except ValueError as exc:
                raise cherrypy.HTTPError(
                    message=
                    f"Unable to add a fault {fault} with {fault_id=}: {exc}"
                ) from None
            return {"fault_id": fault_id}

        elif method == "DELETE":
            if Configuration.remove_fault(fault_id=fault_id):
                return {"fault_id": fault_id}
            raise cherrypy.NotFound()


def start_charybdisfs_api_server(port: int = DEFAULT_PORT) -> None:
    conf = {
        "global": {
            "server.socket_host": "0.0.0.0",
            "server.socket_port": port,
            "server.thread_pool": 1,
            "engine.autoreload.on": False,
        },
    }
    cherrypy.quickstart(root=CharybdisFsApiServer(), config=conf)