Skip to content

Commit

Permalink
Merge pull request #103 from beer-garden/update-user-guides
Browse files Browse the repository at this point in the history
Update user guides
  • Loading branch information
TheBurchLog authored Sep 25, 2024
2 parents 5b27291 + 436f668 commit bcce9af
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 19 deletions.
10 changes: 5 additions & 5 deletions docs/app/architecture/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,17 @@ Beer Garden takes the request body and attempts to transform it into the `Operat
After the object is evaluated, if it is determined to be forwarded to a child Beer Garden the forwarding logic is invoked,
else it is passed for local processing.

Beer Garden takes the request body and attempts to parse it into a valid Beer Garden request and save it to Mongo. These steps require passing the first-level validation check. This ensures that the request is syntactically valid and meets certain basic requirements (such as the ``status`` field being a valid value). If it fails at this it will return a 400 status code, otherwise the request ID is passed to Bartender for processing.
Beer Garden takes the request body and attempts to parse it into a valid Beer Garden request and save it to Mongo. These steps require passing the first-level validation check. This ensures that the request is syntactically valid and meets certain basic requirements (such as the ``status`` field being a valid value). If it fails at this it will return a 400 status code, otherwise the request will continue processing.

Beer Garden then *validates* the request (either locally or on child Beer Garden). This validation is significantly more involved than the preliminary validation done by Brew View. Here are some of the validation steps:
Beer Garden then *validates* the request (either locally or on child Beer Garden). Here are some of the validation steps:

- Ensure that a system (which the correct version) exists that can service the request
- That system has an instance matching the instance the request is addressed to
- That system has a command matching the request's command
- The request's command parameters meet all the constraints placed on them by the command definition
- There are no extra command parameters

If all of these conditions are met Bartender will send the request to RabbitMQ using a routing key that ensures the request will be processed by the correct plugin.
If all of these conditions are met Beer Garden will send the request to RabbitMQ using a routing key that ensures the request will be processed by the correct plugin.

RabbitMQ will place the request in the specified plugin's request queue.

Expand All @@ -61,7 +61,7 @@ If the 'final' update fails then the completed request is placed back on the Rab

If the 'final' update succeeds the plugin will send an acknowledgement of the message to RabbitMQ. This lets RabbitMQ know the message was successfully processed, which ends the request lifecycle.

If at any time an attempt to update a request fails because Brew View appears to be down the plugin will enter a wait state. While in this state no new requests will be processed (since status can't be communicated to Beer Garden). The plugin will periodically attempt to contact Brew View and will resume normal operation once successful.
If at any time an attempt to update a request fails because Beer Garden appears to be down the plugin will enter a wait state. While in this state no new requests will be processed (since status can't be communicated to Beer Garden). The plugin will periodically attempt to contact Beer Garden and will resume normal operation once successful.


=== Plugins
Expand Down Expand Up @@ -90,7 +90,7 @@ The plugin then continues listening on its queues until it receives a stop messa
==== Local
Local plugins use the same underlying implementation as remote plugins. The difference is that local plugins are packaged with some additional metadata that allows Beer Garden to manage the plugin process for you.

When Beer Garden starts it will attempt to start all the plugins in its configured plugins directory. Since Beer Garden is the one starting the process you don't need to worry about providing Beer Garden connection information - Beer Garden already knows how to talk to Brew View and will pass that information to the plugin by setting the correct environment variables. Beer Garden will read a special file named ``beer.conf`` and use it to pass additional parameter to the plugin as well.
When Beer Garden starts it will attempt to start all the plugins in its configured plugins directory. Since Beer Garden is the one starting the process you don't need to worry about providing Beer Garden connection information - Beer Garden will pass that information to the plugin by setting the correct environment variables. Beer Garden will read a special file named ``beer.conf`` and use it to pass additional parameter to the plugin as well.

The actual implementation of starting, initialization, running, and stopping is exactly the same for local plugins as it is for remote plugins. The difference is how the Python process is created. With remote plugins starting the plugin process is the plugin developer's responsibility, but with local plugins Beer Garden assumes that responsibility.

Expand Down
2 changes: 1 addition & 1 deletion docs/plugins/python/remote-guide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ The best way to stop a plugin is to use the Systems Management page to send a st

You should see your plugin log that it has terminated and stop executing, and if you go to the `Admin -> Systems` page in `Beer Garden` you should see the `hello-world` plugin is 'STOPPED'.

NOTE: You can also use Ctrl-c to stop the plugin from the terminal. This works, but it doesn't tell Beer Garden that the plugin is stopping. You'll still see the plugin terminate and stop executing, but the status in `Brew View` will still be 'RUNNING'. After a short period the status will change to 'UNRESPONSIVE'.
NOTE: You can also use Ctrl-c to stop the plugin from the terminal. This works, but it doesn't tell Beer Garden that the plugin is stopping. You'll still see the plugin terminate and stop executing, but the status in `Beer Garden` will still be 'RUNNING'. After a short period the status will change to 'UNRESPONSIVE'.

== Exception Handling
include::{includedir}/exceptions.adoc[]
Expand Down
7 changes: 4 additions & 3 deletions docs/startup/installation-guides/git.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ Sweet. Now for each of the projects you can install the dependencies:

[source]
----
make deps
cd brewtils; make deps
cd beer-garden/src/app; make deps
----

At this point we need a little sidebar about how beer-garden is structured. Beer-Garden is the application that
Expand All @@ -69,7 +70,7 @@ distributions in 'editable' mode. From the beer-garden root directory:

[source]
----
cd beer-garden; pip uninstall -y brewtils; pip install -e ../../brewtils
cd beer-garden; pip uninstall -y brewtils; pip install -e ../brewtils
----

The Beer Garden UI utilizes NPM to install Javascript dependencies.
Expand All @@ -86,7 +87,7 @@ and more. To generate coverage:

[source]
----
make coverage
cd beer-garden/src/app; make coverage
----

And you should see all the tests pass.
Expand Down
16 changes: 8 additions & 8 deletions docs/training/example-1.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -125,23 +125,23 @@ It will start up and print some logging showing the plugin registering with Beer

=== Use the code

At this point you should see your plugin on the `Available Systems` page in `Brew View`. Click the big blue `Explore hello_world commands` button to see a list of all commands available for the Plugin you made.
At this point you should see your plugin on the `Systems` page in `Beer Garden`. Click the big blue `Explore` button next to `hello-world` to see a list of all commands available for the Plugin you made.

As part of this tutorial the only command listed should be the `say_hello` command because we only defined one command. Click the `Make it Happen!` button to go to the page for that command.
Since we only defined one command as part of this tutorial the only command listed should be the `say_hello` command. Click the `Make it Happen!` button to go to the page for that command.

The command page is where you can specify options and customization for individual executions of that command. Since we didn't define any options (this command always prints 'Hello World!') the only customization available is the comment field. You can add free-form text here and it will be included as part of the request you're generating.
The command page is where you can specify options and customization for individual executions of that command. Since we didn't define any options (this command always prints 'Hello World!') the only customization available is the comment field. You can add free-form text here and it will be included as part of the request you're about to generate.

Are you ready? Click the `Make Request` button when you're ready.
Are you ready? Click the `Make Request` button once you're ready.

Making a request takes you to the Request page for the request you just generated. You can see the unique ID as part of the page title. You should see the status start as `IN PROGRESS` and then change to `SUCCESS` once the request completes. Also notice that the output changes when the request is finished.

If you didn't catch those changes on the first try, don't worry. Use the `Pour it Again` button in the top-right corner to go back to the command screen you just left. From there you can use the `Make Request` button to make another request.
If you didn't catch those changes on the first try, don't worry. Use the `Pour it Again` button in the top-right corner to go back to the command screen you just left. From here you can use the `Make Request` button to make another request.

NOTE: This command doesn't have any parameters, but for commands that do the `Pour it Again` button will default them to exactly how they were for the original request.

=== Stop the code
The best way to stop a plugin is to use the 'Systems Management' page to send a stop message. In `Brew View` find the `Systems Management` option under the `Administration` menu. Then click the stop icon next to the `hello-world` listing.
The best way to stop a plugin is to use the Systems Management page to send a stop message. In `Beer Garden` find the `Systems` option under the `Admin` menu. Then click the stop icon next to the `hello-world` listing.

You should see your plugin log that it has terminated and stop executing, and if you go to the main page in `Brew View` you should see the `hello-world` plugin is 'STOPPED'.
You should see your plugin log that it has terminated and stop executing, and if you go to the `Admin -> Systems` page in `Beer Garden` you should see the `hello-world` plugin is 'STOPPED'.

NOTE: You can also use Ctrl-c to stop the plugin from the terminal. This works, but it doesn't tell Beer Garden that the plugin is stopping. You'll still see the plugin terminate and stop executing, but the status in `Brew View` will still be 'RUNNING'. After a short period the status will change to 'UNRESPONSIVE'.
NOTE: You can also use Ctrl-c to stop the plugin from the terminal. This works, but it doesn't tell Beer Garden that the plugin is stopping. You'll still see the plugin terminate and stop executing, but the status in `Beer Garden` will still be 'RUNNING'. After a short period the status will change to 'UNRESPONSIVE'.
4 changes: 2 additions & 2 deletions docs/training/ui-orientation.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
:imagesdir: ../../images
:imagesdir: images

== UI Orientation

Expand All @@ -20,7 +20,7 @@ image::navigation-user.png[Navigation User]

Admin users have additional areas where they can navigate to.

image::navigation-admin.png[Naviagation Admin]
image::navigation-admin.png[Navigation Admin]

. `System Management` - Administrative page to start/stop/rescan/delete connected systems
. `Queue Management` - Administrative page to manage the queues that systems are listening to
Expand Down

0 comments on commit bcce9af

Please sign in to comment.