BusyBee Tips & Tricks

How to run Busybee as executable

This will allow you to use "busybee"-command to be able to use it from anywhere in your system.

 Windows
  1.  Run the command: "python build.py" from your busybee project.
  2. Open "dist" folder which was newly generated. Select "busybee.exe"-file there and click "Properties". Copy your location property. (example: C:\FOLIO\folioModules\busybee\dist)
  3. Click Win+S and type: "Edit the system environment variables"
  4. Click "Edit" in the User variables.
  5. Add copied value example: (C:\FOLIO\folioModules\busybee\dist)
  6. Re-run your Powershell.
  7. Now you can just type: "busybee" from any directory to utilize BusyBee.
 MacOS/Linux
  1. Run the command: "python build.py" from your busybee project.
  2. A dist directory will be created that will contain the busybee executable. Get the full path to the dist directory
  3. Add the full path of the dist folder to the PATH variable of your terminal. For bash, that would mean updating .bash_profile or similar.

How to start your env in the morning

  1. Run your "Rancher desktop" application.
  2. Run "docker compose up -d" from the folder where your docker file "docker-compose.yml" is situated.
  3. Run "busybee"
  4. Run "start"
  5. Run "yarn start" from the platform-complete module. It should be on the "snapshot"-branch.
  6. Feel free to use your environment on "localhost:3000"

How to stop your env in the evening

  1. Input "Ctrl+C" in the terminal where you ran "yarn start" to stop your UI env.
  2. Run "docker compose stop"
  3. Close your "Rancher desktop" application.

How to set snapshot versions from local install.json

  1. Clone the platform-complete repo at https://github.com/folio-org/platform-complete
  2. Get the path of the install.json at the top level of the platform-complete
  3. Go to the busybee config in your home directory and update install-json-path property in the YAML.

How to run integration tests 

  1. Start your local env as usual (see above).
  2. Open your "folio-integration-tests" module via IntelliJIdea (or another IDE)
  3. Checkout on the main branch.
  4. Edit your "Run Configuration" as "Junit" and set "Environment variables" as "karate.env=dev"
  5. Feel free to run your tests via the current configuration. Example:

How to create "Run configuration" in IntellijIdea

This is needed for debugging purposes. Just select "Edit Configurations..."→"Add New Configuration"->"JAR Application" and configure:

  1. "VM options:" "-Dhttp.port=8132" or other port on which you started your module before  (in our example 7000). 
  2. "Path to JAR:" "{path to your .fat jar}"

You can see an example here:

How to enable local Modules in Busybee

Use depCheck=false param to avoid interface required module problem.

/_/proxy/tenants/{{xokapitenant}}/install?depCheck=false&tenantParameters=loadSample%3Dfalse%2CloadReference%3Dfalse

If you don't use this param, you will this issue below:

If progress took more than you expected. You can add folio IP address to work properly

sudo ip addr add 10.0.2.2/24 brd 10.0.2.255 dev lo

or

sudo ifconfig lo:1 10.0.2.15 up" and "sudo ifconfig lo:0 10.0.2.2 up

How to run consortia karate tests on busybee

To run consortia related karate tests on busybee, you need configure busybee by following steps

Add consortia to the install.json file manually (mod-consortia module is not existing in platform-complete snapshot install.json)
you can find latest version from jenkins: github folio org → module → master(branch) or custom branch

Add mod-consorta, mod-password-validator to the .busybee/config.yml file

(Optional) Alternatively you can populate an optional additional-json-path key in your .busybee/config.yml with an absolute file path (e.g. additional-json-path: C:\Users\User\.busybee\additional_modules.json), to be able to to deploy additional modules with custom versions. Also note that using allow additional-json-path allows receiving and deploying latest SNAPHOT module versions from the registry alongside any additional modules.

Configuration config.yml file with additional-json-path key being included: 

(Optional) Additional json file with custom module version:  

(Optional) Output of python -m busybee reload command with this setup:

 

Finally, after everything is completed, you can now run mod-consortia karate tests with using karate.env=dev environment variable:

Docker Volume Storage Management

There is a Docker volume accumulation. It will occupy storage space on your machine. You can see the list of all of them via, for example, "VS Code" IDE. In the section: "Volumes" via Docker plugin there. 

So to remove all of them you can run this command and free some GBs on your machine:

docker volume prune

How to update snapshot versions

  1. First of all, wipe your environment with the command: "docker compose down"
  2. Pull the latest updates from the "snapshot" branch of the platform-complete repo. The main thing is that it will update your "install.json"-file with the latest versions and builds of the modules.
  3. Initialize another environment with the command: "docker compose up -d"
  4. Run the command "busybee". There will be such a message: "Using existing module descriptor cache at [C:\Users\{USER}\.busybee\.mod_descriptors.json]"
  5. Copy this value: C:\Users\{USER}\.busybee\.mod_descriptors.json
  6. Run command: "quit"
  7. Run command: "rm C:\Users\Volodymyr_Rohach\.busybee\.mod_descriptors.json"
  8. Run command: "busybee"
  9. Start your environment as usual.

Docker-compose mem_limit

With a similar error when starting modules:

EXCEPTION of type 'Exception' occurred with message: could not create enable module(mod-entities-links-3.0.0-SNAPSHOT.242) for tenant(diku): Deployment failed for service mod-entities-links-3.0.0-SNAPSHOT.242. Could not connect to 172.17.0.1:9145: finishConnect(..) failed: Connection refused: /172.17.0.1:9145

Try increasing mem_limit in docker-compose.yml (for instance 2g).

Connection issue to the registry URL

There can be an issue regarding failing to connect to the registry URL when starting busybee env: Could not start BusyBee: HTTPConnectionPool(host='folio-registry.aws.indexdata.com', port=80): Max retried exceed with url.... Failed to establish connection

To fix it just change every  "folio-registry.aws.indexdata.com" to "http://folio-registry.dev.folio.org" inside the config.yml-file and it should work as expected.