# Starting The Backend The clan-cli contains the command line interface as well as the graphical webui through the `clan webui` command. Start the web ui with ```bash clan webui --reload --no-open --log-level debug --populate --emulate ``` - The `--populate` flag will automatically populate the database with dummy data - To look into the endpoints open up a swagger instance by visiting: http://localhost:2979/docs - The `--emulate` flag will automatically run servers the database with dummy data for the fronted to communicate with (ap, dlg, c1 and c2) - To look into the emulated endpoints go to http://localhost:2979/emulate # Using the Uploaded Docker Image Pull the image ```bash docker pull git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest ``` Run the image ```bash docker run -p 127.0.0.1:2979:2979 git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest ``` # API Documentation Api documentation can be found in the folder `pkgs/clan-cli/tests/openapi_client/docs/` For Entity object go to - [tests/openapi_client/docs/EntitiesApi.md](tests/openapi_client/docs/EntitiesApi.md) - [tests/openapi_client/docs/EventmessagesApi.md](tests/openapi_client/docs/EventmessagesApi.md) - [tests/openapi_client/docs/ServicesApi.md](tests/openapi_client/docs/ServicesApi.md) - [tests/openapi_client/docs/ResolutionApi.md](tests/openapi_client/docs/ResolutionApi.md) - [tests/openapi_client/docs/RepositoriesApi.md](tests/openapi_client/docs/RepositoriesApi.md) # Building a Docker Image if the Frontend Changed To build a new docker image when the frontend code and/or backend code changed you first need to get the `GITLAB_TOKEN` go to [repo access tokens](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens) and generate one. - Make sure the Gitlab token has access to package registry. Then execute ```bash export GITLAB_TOKEN="" ``` Afterwards you can execute: ```bash ./build_docker.sh ``` This will create a symlink directory called `result` to a tar.gz docker file. Import it by executing: ```bash docker load < result ``` And then run the docker file by executing: ```bash docker run -p 127.0.0.1:2979:2979 clan-docker:latest ``` # Uploading a Docker Image You can use the script: ```bash ./push_docker.sh ``` ### The Script Explained Login to the tu docker image server ```bash docker login git.tu-berlin.de:5000 ``` Tag the imported image ```bash docker image tag clan-docker:latest git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest ``` Push the image to the git registry ```bash docker image push git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest ``` # Upload UI assets as a package To upload the release build UI assets to gitlab as a package first get the `GITLAB_TOKEN`. Go to [repo access tokens](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens) and generate one. - Make sure the Gitlab token has access to package registry. To upload the UI assets as a package then execute: ```bash ./upload_ui_assets.sh ``` Please commit the changes to ui-assets.nix and push them to the repository. If you want clan webui to use the new ui assets. ```bash $ git commit -m "Update ui-assets.nix" "$PROJECT_DIR/pkgs/ui/nix/ui-assets.nix" $ git push ``` If you execute `clan webui` the page you will see is a precompiled release version of the UI. This above script will update said precompiled release version. The `./build_docker.sh` script execute this to make sure that the included UI in the docker is up to date. ### The Script Explained If changes to the UI have been made, and you want them to propagate to the docker container and the `clan webui` command edit the file: [../ui/nix/ui-assets.nix](../ui/nix/ui-assets.nix). This is where a release version of the frontend is downloaded and integrated into the cli and the docker build. To do this first execute ```bash nix build .#ui --out-link ui-release ``` Make a tarball out of it called `ui-assets.tar.gz` ```bash tar --transform 's,^\.,assets,' -czvf "ui-assets.tar.gz" -C ui-release/result/lib/node_modules/*/out . ``` Upload ui-assets.tar.gz to gitlab. ```bash curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --upload-file ./ui-assets.tar.gz \ "https://git.tu-berlin.de/api/v4/projects/internet-of-services-lab%2Fservice-aware-network-front-end/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz" ``` You can find your uploaded package at the [package registry](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/packages) And export the download url into a variable: ``` export url="https://git.tu-berlin.de/api/v4/projects/internet-of-services-lab%2Fservice-aware-network-front-end/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz" ``` Now execute the command: ```bash cat > "../ui/nix/ui-assets.nix" < ``` These debugging and testing methods will help you identify and fix issues in your backend code efficiently, ensuring the reliability and robustness of your application. ## Run Web UI in VSCode Useful for vscode run and debug option ```bash python -m clan_cli.webui --reload --no-open ``` Add this `launch.json` to your .vscode directory to have working breakpoints in your vscode editor. ```json { "version": "0.2.0", "configurations": [ { "name": "Clan Webui", "type": "python", "request": "launch", "module": "clan_cli.webui", "justMyCode": true, "args": ["--reload", "--no-open", "--log-level", "debug"] } ] } ```