diff --git a/api/server/server_main.py b/api/server/server_main.py index 8b68771..f9cb65b 100644 --- a/api/server/server_main.py +++ b/api/server/server_main.py @@ -1,3 +1,4 @@ +import argparse import uvicorn from fastapi import FastAPI @@ -15,14 +16,43 @@ aas_registry_router = aas_registry_server.AasRegistryRouter(central_object_store) submodel_registry_router = submodel_registry_server.SubmodelRegistryRouter(central_object_store) -# Register router -# TODO: This can be done dynamically based on startup params -app.include_router(submodel_router.router, prefix=prefix + "/submodels") -app.include_router(aasx_file_router.router, prefix=prefix + "/aasx") -app.include_router(aas_registry_router.router, prefix=prefix + "/registry") -app.include_router(submodel_registry_router.router, prefix=prefix + "/submodels") -app.include_router(aas_router.router, prefix=prefix + "/aas") +# Parse command-line arguments +parser = argparse.ArgumentParser(description="Start the AAS Server with optional components") +parser.add_argument("--enable-submodels", action="store_true", help="Enable submodels API") +parser.add_argument("--enable-aasx", action="store_true", help="Enable AASX API") +parser.add_argument("--enable-registry", action="store_true", help="Enable registry API") +parser.add_argument("--enable-submodel-registry", action="store_true", help="Enable submodel registry API") +parser.add_argument("--enable-aas", action="store_true", help="Enable AAS API") -# Start the server if this file is executed directly +args = parser.parse_args() +has_args = any(vars(args).values()) + +# Enable all by default if no arguments were passed +if has_args: + enable_submodels = args.enable_submodels + enable_aasx = args.enable_aasx + enable_registry = args.enable_registry + enable_submodel_registry = args.enable_submodel_registry + enable_aas = args.enable_aas +else: + enable_submodels = enable_aasx = enable_registry = enable_submodel_registry = enable_aas = True + +# Conditional router registration +if enable_submodels: + app.include_router(submodel_router.router, prefix=prefix + "/submodels") + +if enable_aasx: + app.include_router(aasx_file_router.router, prefix=prefix + "/aasx") + +if enable_registry: + app.include_router(aas_registry_router.router, prefix=prefix + "/registry") + +if enable_submodel_registry: + app.include_router(submodel_registry_router.router, prefix=prefix + "/submodels") + +if enable_aas: + app.include_router(aas_router.router, prefix=prefix + "/aas") + +# Run server (if needed) if __name__ == "__main__": - uvicorn.run("server:app", host="127.0.0.1", port=8000, reload=True) + uvicorn.run(app, host="0.0.0.0", port=8000)